2019-2020-2 20175222罗雨石 《网络对抗技术》 Exp4 恶意代码分析
实践目标
- 是监控你自己系统的运行状态,看有没有可疑的程序在运行。
- 是分析一个恶意软件,就分析Exp2或Exp3中生成后门软件;分析工具尽量使用原生指令或sysinternals,systracer套件。
- 假定将来工作中你觉得自己的主机有问题,就可以用实验中的这个思路,先整个系统监控看能不能找到可疑对象,再对可疑对象进行进一步分析,好确认其具体的行为与性质。
回答实验问题
-
如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么。请设计下你想监控的操作有哪些,用什么方法来监控。
答:
- Windows schtasks指令计划任务、Sysmon等编写配置文件、记录有关的系统日志的程序
- 查看数据包:使用wireshark捕包,进行数据流分析
- 查看端口:使用nmap查看可疑端口
- 使用Process Monitor工具,监视文件系统、注册表、进程/线程的活动。
-
如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息。
答:
- 使用systracer工具分析恶意软件,快摄拍照,对比进程运行前后有没有可疑端口、注册表或可疑的大量变化。
- 使用Wireshark进行抓包分析,监视其与主机进行的通信过程。
- 使用Process Explorer工具或Process Monitor工具,监视文件系统、注册表、进程/线程的活动。
- 直接利用静态分析工具如:PEID、ExeinfoPE等工具反汇编查看指令是否攻击或收集信息等。
- 使用PE explorer查看PE文件头中包含代码信息
实践内容
1. 系统运行监控
使用schtasks指令监控系统
-
输入指令,每五分钟记录下有哪些程序在连接网络,每 3 分钟就会监测哪些程序使用网络,结果记录在 c:\netstatlog.txt 中。
schtasks /create /TN netstat5222 /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > c:\netstatlog.txt
TN:TaskName 的缩写;sc:计时方式,以分钟计时填 MINUTE;TR:Task Run缩写,要运行的指令是 netstatbn:b表示显示可执行文件名,n 表示以数字来显示 IP 和端口;>:表示输出重定向,将输出存放在 c:\netstatlog.txt 文件中
![]()
-
c 盘中新建
netstat5222.bat,写入内容:date /t >> c:\netstat5222.txt time /t >> c:\netstat5222.txt netstat -bn >> c:\netstat5222.txt
-
右键“我的电脑”图标,选择“管理”,在“系统工具 -> 任务计划程序 -> 任务计划程序库”中找到创建的计划任务 “netstat5222”。
![]()
-
双击任务,在“常规”中勾选:
- “不管用户是否登陆都要运行”
- “使用最高权限运行”
-
“操作”设置
- 点击“操作”,选中“启动程序”,使之高亮。
- 点击“编辑”,设置“程序或脚本”为之前创建的脚本程序:D:\netstat5223.bat 。
- 点击“确定”。
-
输入密码。
![]()
-
等待设置的计划任务时间长度,kail与win7回连后,打开
c:\netstat5222.bat设置的输出文件,可以看到如下信息。![]()
-
sysmon配置监控主机可疑行为
安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控自己主机的重点可疑行为。
-
官网下载 sysinternals 工具包,解压 sysmon 工具:Sysinternals Suite 。
-
在 sysmon 工具目录下创建配置文件
sysmon20175222.xml。<Sysmon schemaversion="10.42"> <!-- 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> <ProcessCreate onmatch="include"> <ParentImage condition="end with">cmd.exe</ParentImage> </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">firefox.exe</TargetImage> <TargetImage condition="end with">winlogon.exe</TargetImage> <SourceImage condition="end with">powershell.exe</SourceImage> </CreateRemoteThread> </EventFiltering> </Sysmon>
相关事件管理器:
进程创建ProcessCreate,进程创建时间FileCreateTime,网络连接NetworkConnect,远程线程创建CreateRemoteThread。 -
管理员权限打开 Terminal 在 Sysmon64.exe 可执行文件目录下执行,并点击 “Agree”:
Sysmon64.exe -i sysmon20175222.xml![]()
-
打开“事件查看器”,在“应用程序和服务日志 -> Microsoft -> Windows -> Sysmon -> Operational”可以看到按照配置文件的要求记录的新事件,以及事件ID、任务类别、详细信息等等
![]()
2. 恶意软件分析
动态分析
使用systracer分析恶意软件
-
下载systracer,安装并进行捕包分析systracer 。
-
捕获 3 个快照如下:
Snapshot #1:初始快照。Snapshot #2:后门程序回连快照。Snapshot #3:kali 执行 dir 命令快照。Snapshot #4:kali 执行 exit 命令快照。
-
对比
Snapshot #1和Snapshot #2:增加了后门程序20175223_exp3_sc_upx.exe -
![]()
-
对比
Snapshot #2和Snapshot #3,可以看到新增的后门进程,而且可以详细看到其的目的IP和端口号、源IP和端口号以及连接的协议。![]()
-
修改了注册表。
![]()
-
对比
Snapshot #3和Snapshot #4:断开了 80 端口连接,保存了过程中的修改。![]()
使用wireshark对流量进行抓包分析
-
kali中监控回连,win7执行重新后门程序
20175222upx.exe进行回连。![]()
-
wireshark 筛选条件是 “ ip.addr == 192.168.28.129”(kali IP地址)。
-
![]()
Process Explorer
-
在ProcessExplorer查找后门程序
![]()
静态分析
使用VirusTotal分析恶意软件
可以分析出 SHA-1、MD5摘要值、文件类型、文件大小,TRiD文件类型、加壳情况、算法库支持等。

使用PEID进行外壳检测
-
PEID分析后门程序。
-
![]()
实验总结与体会
上一次实验是使用恶意代码攻击,这次是对它进行分析,更深入地了解了恶意代码在系统中的工作进程。也看出我们目前掌握的恶意代码还过于低级,不仅入侵困难还极易被检测
出来,要真正学以致用还要多加努力,














