2018-2019-2 20165315 《网络对抗技术》Exp4 恶意代码分析
一、实验要求
1、系统运行监控
- 使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述一下分析结果。
- 安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控自己主机的重点事可疑行为。
2、恶意软件分析
分析该软件在
- 启动回连
- 安装到目标机
- 及其他任意操作时(如进程迁移或抓屏)
该后门软件
- 读取、添加、删除了哪些注册表项
- 读取、添加、删除了哪些文件
- 连接了哪些外部IP,传输了什么数据(抓包分析)
二、实验步骤
1、windows计划任务
- 以管理员身份打开cmd,使用指令
schtasks /create /TN 5315netstat /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > c:\netstatlog.txt''
创建计划任务5315netstat,记录每1分钟计算机联网情况:
- 在桌面建立一个
netstatlog.txt
文件,内容为:
date /t >> c:\netstatlog.txt
time /t >> c:\netstatlog.txt
netstat -bn >> c:\netstatlog.txt
这些指令是用来将记录的联网结果格式化输出到netstatlog.txt
文件中
-
将后缀名改为.bat后,用管理员身份将该文件放入C盘
-
打开计算机管理的“任务计划程序库”,可以查看到
5315netstat
任务就绪,打开其属性,修改其指令为c:\netstatlog.bat
- 在属性中“常规”一栏最下面勾选“使用最高权限运行”,不然程序不会自动运行
- 在属性中“条件”这一选项中的“电源”一栏中,取消勾选“只有计算机使用交流电源才启动此任务”,防止电脑一断电任务就停止
- 可以在C盘的
netstat5315.txt
文件中查看到本机在该时间段内的联网记录:
- 等待一段时间(如一天),将存储的数据通过excel表进行整理,过程参考学姐的博客
总结:
由上图得知,最常用的几个进程是lkads.exe、lkcitdl.exe、lktsrv.exe、nidmsrv.exe,它们是National Instruments安装后,在系统启动后多出的5个进程,涉及到五项服务,不是异常程序,但是好像外部地址是127.0.0.1。大体上没有什么异常程序。而且自己生成的backdoor.exe对应的外部地址是125.39.52.123,是天津的IP...难道是因为veil之类的工具经过天津某公司的开发?不是很清楚...
2、使用sysmon工具
- 首先创建配置文件
sysmon5315.xml
,文件中包含指令(我先使用老师的代码试试看):
<Sysmon schemaversion="3.10">
<!-- Capture all hashes -->
<HashAlgorithms>*</HashAlgorithms>
<EventFiltering>
<!-- Log all drivers except if the signature -->
<!-- contains Microsoft or Windows -->
<DriverLoad onmatch="exclude">
<Signature condition="contains">microsoft</Signature>
<Signature condition="contains">windows</Signature>
</DriverLoad>
<NetworkConnect onmatch="exclude">
<Image condition="end with">chrome.exe</Image>
<Image condition="end with">iexplorer.exe</Image>
<SourcePort condition="is">137</SourcePort>
<SourceIp condition="is">127.0.0.1</SourceIp>
</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 C:\sysmon5315.xml
安装sysmon - 出现如下错误:
- 下载的sysmon版本号和老师配置的版本号不匹配,在.xml文件中改一下就好了~
- 安装成功!
- 在事件查看器中的应用程序和服务日志下,查看
Microsoft->Windows->Sysmon->Operational
。在这里,我们可以看到按照配置文件的要求记录的新事件,以及事件ID、任务类别、详细信息等等。
我很好奇这是个啥,于是查了查,发现是腾讯电脑管家的程序被我关掉了...
捕捉任务一中运行的任务计划监控程序
- 将配置文件修改为符合自己虚拟机需要监控的信息,代码如下:
<Sysmon schemaversion="4.20">
<!-- Capture all hashes -->
<HashAlgorithms>*</HashAlgorithms>
<EventFiltering>
<!-- Log all drivers except if the signature -->
<!-- contains Microsoft or Windows -->
<DriverLoad onmatch="exclude">
<Signature condition="contains">microsoft</Signature>
<Signature condition="contains">windows</Signature>
</DriverLoad>
<NetworkConnect onmatch="exclude">
<Image condition="end with">iexplorer.exe</Image>
<SourcePort condition="is">137</SourcePort>
<SourceIp condition="is">127.0.0.1</SourceIp>
</NetworkConnect>
<NetworkConnect onmatch="include">
<DestinationPort condition="is">5315</DestinationPort>
<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.exe -i C:\sysmon5315.xml
重新配置
- 运行实验三中生成的后门程序,并用kali进行回连
在服务日志中发现了后门程序的痕迹
还发现了上网浏览的纪录
3、恶意软件分析
静态分析
- 文件扫描(VirusTotal、VirusScan工具等)
- 文件格式识别(peid、file、FileAnalyzer工具等)
- 字符串提取(Strings工具等)
- 反汇编(GDB、IDAPro、VC工具等)
- 反编译(REC、DCC、JAD工具等)
- 逻辑结构分析(Ollydbg、IDAPro工具等)
- 加壳脱壳(UPX、VMUnPacker工具等)
我主要选取以下几种方法和工具来进行分析
(1) 文件扫描(VirScan工具)
- 使用在线VirusScan工具对上次实验中生成的.jar文件进行扫描,有(6/49)个软件发现病毒:
点击扫描结果下方的的哈勃文件分析
查看详细分析结果:
- 在
进程行为
中可以看到,可疑行为包括隐藏窗口创建进程、创建进程和创建本地线程
- 在
文件行为
中可以看到,可疑行为包括创建文件、修改文件内容、删除文件和查找文件
- 在
网络行为
中可以看到,可疑行为包括建立到一个指定的套接字连接和按名称获取主机地址,其中建立到一个指定的套接字连接就是实现kali反弹连接,获取受害机权限的方法。
- 在
其他行为
中可以看到,可疑行为包括打开互斥体、打开事件和创建事件对象
总结:
此恶意代码主要就是通过建立一个反弹连接,受害机一旦运行该程序,攻击机就会自动获取该受害机的控制权限,并在受害机中创建进程、修改删除文件、创建事件对象等等,对受害机造成很大的威胁。
(2)文件格式识别(peid工具)
PEiD(PE Identifier)是一款著名的查壳工具,其功能强大,几乎可以侦测出所有的壳,其数量已超过470种PE文档的加壳类型和签名。
- 下载Peid工具,对上次实验中用Veil生成的加壳的后门程序进行查壳
从上面我们可以看到该程序加的是UPX的壳,版本为0.89.6
- 换一个使用加密壳的试试
这个查壳软件查不出加密的壳...看来它的性能有待提升啊!
- PEiD最常用的插件就是脱壳。PEiD的插件里面有个通用脱壳器,能脱大部分的壳,还有专门针对一些壳进行脱壳的专用脱壳器,效果要比通用脱壳器好
总结:
我们最常用到的Peid工具的功能一般就是查看软件加的什么壳和查看入口点(即程序的入口地址)。但是加密壳无论换哪种查壳模式都查不出来。
(3) 反编译、反汇编(PE Explorer工具)
PE Explorer是功能超强的可视化Delphi、C++、VB程序解析器,能快速对32位可执行程序进行反编译,并修改其中资源。该软件支持插件,你可以通过增加插件加强该软件的功能,原公司在该工具中捆绑了UPX的脱壳插件、扫描器和反汇编器,非常好用。
- 下载PE Explorer工具
- 可以查看程序头部信息(默认界面)、程序静态数据目录、程序结头信息、对程序反汇编等等,这里就不一一截图
- 关键是通过点击
导入
查看其引用的dll库分析KERNEL32.dll
:控制着系统的内存管理、数据的输入输出操作和中断处理。msvcrt.dll
:是微软编译软件的函数库。USER32.dll
:Windows用户界面相关应用程序接口,用于包括Windows处理,基本用户界面等特性,如创建窗口和发送消息。它是一个对系统很关键或很可疑的文件,易遭受木马病毒破坏导致系统找不到此文件,出现错误提示框。WSOCK32.dll
:Windows Sockets应用程序接口,用于支持很多Internet和网络应用程序。是一个对系统很关键或很可疑的文件,易遭受木马病毒破坏导致系统找不到此文件,出现错误提示框。
动态分析
- 快照比对(SysTracer、Filesnap、Regsnap工具等)
- 抓包分析(WireShark工具等)
- 行为监控(Filemon、Regmon、ProcessExplorer工具等)
- 沙盒(NormanSandbox、CWSandbox工具等)
- 动态跟踪调试(Ollydbg、IDAPro工具等)
我主要选取以下几种方法和工具来进行分析:
(1)快照比对(SysTracer工具)
- 下载SysTracer工具
- 点击右侧的
take snapshot
,存储快照- 快照一:未移植后门程序
- 快照二:移植后门程序
- 快照三:运行后门程序并在kali中实现回连
- 快照四:在kali中使用
dir
指令 - 快照五:在kali中使用
record_mic
指令
- 通过右下角的
compare
键或者View Differences Lists
比对各快照,进行分析 - 快照一和快照二:增加了我的后门程序,后面还有很多增加或删减的键值,增加或删减的.dll文件
- 快照二和快照三:增加了后门程序并获取了windows桌面权限,还有很多增加或删减的键值,增加或删减的.dll文件,我还找到桌面目录先被删除,然后又被添加,估计是和获取权限有关系吧
- 快照三和快照四:增加了很多TCP连接,应该是为了获取windows的目录所以发出了TCP连接请求
- 快照四和快照五:删除了快照四中建立的TCP连接,创建了新的TCP连接,应该是为了发出录音功能请求
(2)抓包分析(WireShark工具)
Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。
- 下载WireShark工具,选择本地连接接口,点击左上角蓝色鲨鱼按钮开始抓包
- Kali攻击机打开监控,win7打开后门程序进行回连,此时Wireshark上捕获到了巨大的流量:
经过观察,发现都是大量的TCP三次握手过程,而且大部分都是192.168.43.207(攻击机)向192.168.43.163(受害机)发出的请求;标黑的TCP包大都是192.168.43.163(受害机)向192.168.43.207(攻击机)发出的请求,但是我也也有一些标黑的TCP包,显示交互的对象是另外的IP地址58.251.80.181,经过查询是广东的ip地址...令人害怕...
使用dir
指令后,依旧是这样的
总结:
连接了外部IP 58.251.80.181、203.208.40.77。
传输的数据包括Windows向Kali发出TCP同步请求包SYN,Kali给Windows发出的SYN同步请求包和确认包ACK,Kali给Windows传的ACK包、PSH+ACK包等等(PSH表示有DATA数据传输)
Windows向Kali发的SYN包,Kali给Windows发的SYN包和ACK包:
Kali给Windows传的ACK包、PSH+ACK包:
三、实验中遇到的问题
任务一中找不到
netstat5315.txt
文件...目录下只有之前创建的netstat5315.bat
文件
解决过程:
没有自动生成我就自己创建了一个netstat5315.txt
文件,然后文件里就生成东西...真不知道之前折腾了半天以为是代码有问题的自己是不是傻...
任务一中打开
netstat5315.txt
时,显示“请求的操作需要提升”
解决过程:
查询了网络后发现这是权限的问题,将cmd以管理员身份打开,再执行指令就可以了。
四、实验总结
1、实验后回答问题
(1)如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么。请设计下你想监控的操作有哪些,用什么方法来监控。
使用windows自带的schtasks指令设置一个计划任务,每隔一定的时间对主机的联网记录等进行记录。
使用sysmon工具,通过配置想要监控的端口、注册表信息、网络连接等信息,记录相关的日志文件。
利用wireshark查看数据包
(2)如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息。
使用Wireshark进行抓包分析,监视其与主机进行的通信过程。
使用systracer工具分析恶意软件,进行快照的对比(注册表、文件等).
使用Process Explorer查看调用的程序库等等
2、实验感想
本次实验的操作并没有什么难度,重点在分析恶意代码。我们尝试学习和使用了数款用于检测恶意代码的指令或是软件,例如SysTracer、Sysmon等。这些工具都能很好地辅助我们对主机进行监控,以发现恶意行为并进行及时处理。
通过学习了解到,恶意代码的分析方法主要分为静态分析方法和动态分析方法。这两种方法在本次实验中都有所涉及。静态分析方法是指在不执行二进制程序的条件下进行分析,如反汇编分析等;而动态分析方法是指在恶意代码执行的情况下,利用调试工具对恶意代码实施跟踪和观察,确定恶意代码的工作过程,以便作进一步分析。
随着这几次实验对恶意代码的分析,可以看出目前的恶意代码越来越有隐蔽性,很多时候单纯靠杀软已经不能实现对恶意代码的查杀了,这也就要求我们要学会利用一些工具来对系统中的软件进行监控并分析。
虽然恶意代码的分析工具多种多样、日趋完善,但作为计算机用户的我们更不能掉以轻心,而应该时刻保持警惕。要时常对电脑的行为进行监控,不要只寄希望于杀毒软件,并不是所有的恶意代码都会被杀毒软件拒之门外。