Exp4 恶意代码分析
一、实践目标
1.是监控你自己系统的运行状态,看有没有可疑的程序在运行。
2.是分析一个恶意软件,就分析Exp2或Exp3中生成后门软件;分析工具尽量使用原生指令或sysinternals,systracer套件。
3.假定将来工作中你觉得自己的主机有问题,就可以用实验中的这个思路,先整个系统监控看能不能找到可疑对象,再对可疑对象进行进一步分析,好确认其具体的行为与性质。
二、实践内容
1.系统运行监控(2分)
(1)使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述一下分析结果。目标就是找出所有连网的程序,连了哪里,大约干了什么(不抓包的情况下只能猜),你觉得它这么干合适不。如果想进一步分析的,可以有针对性的抓包。
(2)安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控自己主机的重点事可疑行为。
实际日志的分析还需要发挥下自己的创造力,结合以前学过的知识如linux的文本处理指令等进行。分析的难点在于从大量数据中理出规律、找出问题。这都依赖对结果过滤、统计、分类等进一步处理,这就得大家会什么用什么了。
2.恶意软件分析(1.5分)
分析该软件在(1)启动回连,(2)安装到目标机(3)及其他任意操作时(如进程迁移或抓屏,重要是你感兴趣)。该后门软件
(3)读取、添加、删除了哪些注册表项
(4)读取、添加、删除了哪些文件
(5)连接了哪些外部IP,传输了什么数据(抓包分析)
三、实验内容
1.系统运行监控
(1)使用计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述一下分析结果。目标就是找出所有连网的程序,连了哪里,大约干了什么(不抓包的情况下只能猜),你觉得它这么干合适不。
- 创建一个计划任务: schtasks /create /TN netstat5113 /sc MINUTE /MO 5 /TR "cmd /c netstat -bn > c: etstat20175113.txt"
- 在C盘新建一个bat文件,文件内容:
date /t >> c: etstat20175113.txt time /t >> c: etstat20175113.txt netstat -bn >> c: etstat20175113.txt
- 在任务计划程序中,我们修改之前新创建的任务,将操作的目标文件夹改为我们上一步创建的文件并去掉运行参数。过一段时间后,我们就可以在c盘中看到我们收集到的数据输出到了一个txt文本文件中了。
- 接下来对数据进行处理,导入到Excel中制作一个图表。
- 从统计出的数据可以看出使用网络的频繁程度以及对应的软件,算是比较基础的分析。
(2)安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控自己主机的重点事可疑行为。
- 首先是下Sysinternals套件中的sysmon工具,下载好后需要自己写一个配置文件,配置文件如下(schemaversion=""需要根据Sysmon版本来配置,可以根据命令行给出的提示修改)
<Sysmon schemaversion="3.10"> <!-- Capture all hashes --> <HashAlgorithms>*</HashAlgorithms> <EventFiltering> <!-- Log all drivers except if the signature --> <!-- contains Microsoft or Windows --> <ProcessCreate onmatch="exclude"> <Image condition="end with">chrome.exe</Image> </ProcessCreate> <FileCreateTime onmatch="exclude" > <Image condition="end with">chrome.exe</Image> </FileCreateTime> <NetworkConnect onmatch="exclude"> <Image condition="end with">chrome.exe</Image> <SourcePort condition="is">137</SourcePort> <SourceIp condition="is">127.0.0.1</SourceIp> </NetworkConnect> <NetworkConnect onmatch="include"> <DestinationPort condition="is">80</DestinationPort> <DestinationPort condition="is">443</DestinationPort> </NetworkConnect> <CreateRemoteThread onmatch="include"> <TargetImage condition="end with">explorer.exe</TargetImage> <TargetImage condition="end with">svchost.exe</TargetImage> <TargetImage condition="end with">winlogon.exe</TargetImage> <SourceImage condition="end with">powershell.exe</SourceImage> </CreateRemoteThread> </EventFiltering> </Sysmon>
- 将写好的配置文件保存为 sysmon20175113.xml 放C盘
- 安装Sysmon: sysmon.exe -i C:sysmon20175113.xml
- 查看我们记录的事件:控制面板→系统和安全→管理工具→事件查看器→应用程序和服务日志→Microsoft→Windows→Sysmon→Operational
- 下面对成功连接的后门事件进行分析,kali中尝试 ls 和 getuid
- 打开任务管理器可以发现后台程序,事件查看器中也发现程序调用了 SearchFilterHost.exe 和 SearchPortHost.exe ,看来这就是刚才 kali 命令产生的结果
2.恶意软件分析
- 之前实验检测只是看后门程序被杀软检测出的数量,这次看一下具体行为和细节,可以发现该程序尝试打开mswsock.dll系统文件,调用命令控制行程序
- 我们使用PE Explorer分析后门程序,可以清楚地发现这个后门程序调用的dll文件
- 使用systracer拍快照对比分析
- 先创建了3个快照,1是系统初始状态,2是kail成功通过后门获得了系统的操作,3是用查看文件和截屏的命令
-
- 对比快照1和2,即后门程序连接前后,可以清楚地发现后门程序调用的系统文件和注册表信息
-
- 我们进入Applications下具体查看该后门程序进行的通信,发现目的地址:192.168.81.129,端口:5113,协议:TCP协议
- 接下来我们使用wireshark抓包分析kali使用命令 ls、getuid 时的数据包交互,可以发现主机与kali进行了TCP三次握手连接交互数据包
- 我们再使用火绒剑分析杀软对后门程序行为的监测力度
- 在安全日志中已经发现后门程序及其特征码
- 在进程里发现后门程序和对应的进程以及后门程序文件位置
-
- 点击查看进程信息:发现目的地址和端口
-
- 同样可以通过网络行为发现后门程序的具体信息
四、基础问题回答
(1)如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么。请设计下你想监控的操作有哪些,用什么方法来监控。
①schtasks建立每隔一段时间对主机联网状态的记录
②sysmon工具记录有关的日志文件
③autorun查看自启动项;
④regedit查看注册表;
(2)如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息。
①用wireshark抓包并分析主机与恶意代码的传输方式、端口、和远端ip以及传输数据;
②netstat查看端口及服务;
③用systrace创建快照来对比发现恶意代码的具体操作以及对主机进行了哪些更改。
五、实验体会
本次实验主要是利用一些工具来对自己的电脑中运行的进程进行一些分析,为了分析恶意代码的一些特征,我们进行了钓鱼执法,用Kali去攻击Windows,在Windows中运行该后门程序。
我们对这个后门程序主要从两个方面进行分析,一是静态分析,一是动态分析,静态分析是可以使用一些软件和现有的在线资源对软件本身的机器指令进行分析,来判断其是否为病毒;动态分析主要是在程序运行过程中对它所进行的行为进行分析。
我个人认为动态分析的效果应该会更好一些,因为特征库监测的好坏和病毒库的及时更新有莫大关系,而行为这个是后门程序比较相似的一些特征,虽然指令不同但是最后实现的操作还是一样的(有些程序不运行的时候并不会报出来病毒信息,但是一运行起来有些杀毒软件就可以识别该程序为病毒程序了)。