20191218 Exp4 恶意代码分析
1.实践目标
1.1监控你自己系统的运行状态,看有没有可疑的程序在运行。
1.2分析一个恶意软件,就分析Exp2或Exp3中生成后门软件;分析工具尽量使用原生指令或sysinternals,systracer套件。
1.3假定将来工作中你觉得自己的主机有问题,就可以用实验中的这个思路,先整个系统监控看能不能找到可疑对象,再对可疑对象进行进一步分析,好确认其具体的行为与性质。
2.实践内容
2.1系统运行监控
(1)计划任务
首先写好批处理脚本netcontrol1218.bat
date /t >> C:\Users\Lenovo\Desktop\netstatlog.txt
time /t >> C:\Users\Lenovo\Desktop\netstatlog.txt
netstat -bn >> C:\Users\Lenovo\Desktop\netstatlog.txt
用命令行创建任务计划
schtasks /create /TN netcontrol1218 /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > C:\Users\Lenovo\Desktop\netstatlog1218.txt"
Win+R
再输入taskschd.msc
打开任务计划管理窗口
在常规中选择“使用最高权限运行”
将“只有在计算机使用交流电源时才启动此任务”勾掉
在操作栏清空参数
,选择批处理文件
等待一段时间即可获得在所创建任务计划netcontrol1218
监视下获得的数据
在收集一定数量的数据后停止任务,将所得数据导入Excel中,在“数据”选项栏中选择“导入数据”
选择数据源netstaslog1218.txt
勾选所有的分隔符号
插入数据透视图,获得“协议”的统计分析
可以发现其中TCP检测到次数最多,为874次,第二多的是[Firefox.exe]火狐浏览器,是浏览器和其他联网应用发起了共计874次TCP连接
同理可获得“外部IP” 的数据透视图,,下面列举出来连接最多的一些外部网站,端口基本上都是通过443端口(https)
查询其中访问次数最多的一个外部IP110.242.68.4
可以发现其(ASN归属地来源于河北省保定是顺平县,是联通的网络
(2)sysmon实现系统运行监控
sysmon是由Windows Sysinternals出品的一款Sysinternals系列中的工具,用来监视和记录系统活动,并记录到Windows事件日志,可以提供有关进程创建、网络链接和文件创建时间更改的详细信息。
编写xml配置文件,xml关系如下
<Sysmon schemaversion="4.81">
<!-- 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>
<Image condition="end with">QQBrowser.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>
启动sysmon,输入.\Sysmon.exe -i sysmon1218.xml
开始安装sysmon
安装完成
Win+R
再输入eventvwr.msc
打开事件查看器
找到Operational
用Kali的windows/meterpreter
组件生成Windows下的exe后门
按照后门程序进行配置
输入exploit
,并在Windows中运行20191218_backdoor.exe
,成功连接到Windows
在Kali获取的反弹窗口中输入时间指令
根据回显的时间在WIndows事件查看器中查找sysmon的进程创建事件
2.2恶意软件分析
(1)用wireshark分析TCP流量包
reverse_tcp反弹端口攻击原理
反弹shell(reverse shell),就是控制端监听在某TCP/UDP端口,被控端发起请求到该端口,并将其命令行的输入输出转到控制端。reverse shell与telnet,ssh等标准shell对应,本质上是网络概念的客户端与服务端的角色反转。
下面结合Windows下用wireshark捕获的流量包进行分析
TCP在建立连接时有三次握手,如上图所示,下面我们在Kali中打开msfconsole并进行监听,在Windows上运行20191218backdoor_exp4.exe
后门程序,Kali攻击机中通过TCP反弹获取到Windows端口
过滤wireshark捕获的包,筛选ip.addr == 192.168.174.141 && tcp
可以用wireshark自带的对TCP流量进行分析的工具将TCP流的数据图形化
上图是wireshark截获到的TCP时间序列的信息图
上图是勾中“限制显示过滤器”后的流量图,也就是TCP流在靶机(主机,IP为192.168.174.1
,端口号为1331
)和攻击机(Kali,IP为192.168.174.141
,端口号为1218
)间的往返情况
上图是192.168.174.1:1331
和192.168.174.141:1218
之间TCP流的往返时间
下面具体来分析TCP流中的一个包
在wireshark中追踪TCP流可以发现包的内容全部为密文,下面直接查看wireshark分析出来包的信息
对第一个[SYN]包,我们在Internet Protocol层可以看到各种信息,包括原地址和目的地址
传输控制协议(Transmission Control Protocol)可以看到第一个包中TCP选项内容
对紧接着的[ACK]包,我们可以看到其中的ack number(Acknowledgent Number)为1,表示已经成功接收到[SYN]报的内容
接下来TCP流中的包也可以以同样方法进行分析
(2)通过已生成任务计划进行分析
可以检测到20191218backdoor_exp4.exe
的记录
(3)使用SysTracer分析
systracer可以记录下计算机某个时刻的状态。然后过一段时间后再次记录。通过比较两次记录中计算机的不同进行相应的分析。
我进行了三次snapshot,其中snapshot1是未进行操作时的初始状态,snapshot2是攻击机已经通过reverse_tcp攻击成功后的状态,snapshot3是攻击机进入到靶机的shell后的状态
第一次捕获
snapshot1
snapshot2
snapshot3
compare snapshot2 and snapshot3
增添了cmd.exe
增添了cohost.exe
删除掉了svchost.exe
也删除了wmiprvse.exe
compare snapshot1 and snapshot2
也是同理,可以看到2比1增添了后门程序、增添了svchost.exe,删除了svchost.exe又增添了svchost.exe,最后增添了WmiApSrv.exe
(4)使用Process Explorer分析恶意软件
使用Process Explorer分析恶意软件
下载Process Explorer v16.22并解压
打开Process Explorer.exe
Process Explorer可以监听到电脑上所有正在运行的程序,找到可疑行为,仔细观察是否有后门程序。
通过Process Explorer中的Find工具查找使用了cmd的进行,直接定位到后门程序20191218backdoor_exp4.exe
选中此后门程序后,可以直接点击Kill Progress杀死进程
3.1实验后回答问题
(1)如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所以想监控下系统具体行为。请设计下你想监控的操作有哪些,用什么方法来监控。
大概可分为动态分析和静态分析两部分。
- 静态分析
分析其函数链接库、壳的情况、特征库比对等操作,可以分出一部分恶意代码。
恶意代码编写者经常使用加壳或混淆技术,让他们的文件更难被检测或分析。混淆程序是恶意代码编写者尝试去隐藏其执行过程的代码。而加壳程序则是混淆程序中的一类,加壳后的恶意程序会被压缩,并且难以分析。这两种技术将严重阻碍你对恶意代码的静态分析。
合法程序大多总是会包含很多字符串。而由被加壳或者混淆的恶意代码直接分析获取得到的可打印字符串则很少。如果使用Strings程序来搜索一个程序,发现它的字符串很少时,它就很可能是混淆的或是加壳的,也表明它可能是恶意的。
- 动态分析
我们可以通过进程随时观察我们的计算机,还可以通过观察注册表的变化来监控恶意代码,分析计算机中的日志,上一些网站时还可以通过抓包来进行分析。
(2)如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息。
- 查看任务计划情况,对统计到的数据进行分析,查看其是否有可疑行为;
- 使用systracer工具建立不同的快照,然后进一步分析注册表、端口、文件等变化情况;
- 使用IDA对程序进行静态分析,反汇编代码并进行进一步分析;
- 将程序放入sandbox中进行动态分析;
- 使用Process Explorer监视主机状态,查找与该进程相关的句柄,看看其是否进行了危险操作(如运行cmd.exe等);
- wireshark可以进行网络抓包,直接分析是否有外部IP对本机进行数据包的传送。
3.2实验总结与体会
本次实验算是对之前Exp1-Exp3的内容形成一个闭环,完成对后门、恶意代码等的一个综合实验,多次用到实验二和实验三的内容,也涉及到实验一的思想(缓冲区溢出注入是比较常用的一种获取shell的方法)。本次实验模拟了怀疑电脑被注入后门、恶意代码后我们应该如何做的场景,照理说在sandbox(沙盒)中才更加还原真实情况,但限于时间、我的电脑有没有自带sandbox,因此本次试验中所有后门程序、恶意代码等都是直接在本机上跑的(希望对电脑没有影响……)。本次实验我主要是对各种恶意代码和后门程序进行了动态分析(静态分析可以用IDA PRO实现),采用了wireshark流量分析、sysmon检测、任务计划分析、systracer、Process Explorer等多个分析方法,对平日如何查找、发现恶意代码和后门又有了新的认识和想法,如在分析可疑行为时我们可以重点看对cmd
、shell
等的调用情况,从而锁定是否右后门程序。