Exp4 恶意代码分析
1、基础知识
监控你自己系统的运行状态,看有没有可疑的程序在运行。
分析一个恶意软件,就分析Exp2或Exp3中生成后门软件;分析工具尽量使用原生指令或sysinternals,systracer套件。
假定将来工作中你觉得自己的主机有问题,就可以用实验中的这个思路,先整个系统监控看能不能找到可疑对象,再对可疑对象进行进一步分析,好确认其具体的行为与性质。
2、实践过程记录
2.1系统运行监控(2分)
2.1.1schtasks创建定时netstat计划任务监控网络
1.写好脚本(实际上就是命令行语句)netcontrol1326.bat,再新建一个txt文档netstatlog.txt用于接收数据
date /t >> C:\Users\Administrator\Desktop\netstatlog.txt
time /t >> C:\Users\Administrator\Desktop\netstatlog.txt
netstat -bn >> C:\Users\Administrator\Desktop\netstatlog.txt
2.用命令行创建一个计划任务
win+R
cmd
schtasks /create /TN netcontrol1227 /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > C:\Users\86166\lab4\netstatlog.txt"
TN是创建的计划任务名是netcontrol1227,sc表示计时方式,TR表示执行的指令,>表示输出重定向
#### 3. “WIN+R”调出“运行”窗口,输入“taskschd.msc”按回车
4.在常规中选择使用最高权限运行,在条件中关闭电源限制
电源限制可以选择性使用,此处只是为了收集更多的信息,所以关闭了电源限制
5.在操作栏清空参数,选择批处理文件
6.等待一段时间后就可以得到想要的数据了
7.收集了较多数据后,停止任务,将所得数据在excel中进行分析
- 新建excel,数据→自文本→选择数据源→netcontrol1326.txt,勾选分隔符号
- 勾选所有分隔符号
- 列数据格式勾选常规→完成
- 选择要分析的列——>选择插入——>选择数据透视图——>直接默认值确认
- 右侧选择分析的日期,拖入下方的轴和值
同样的方法,可以得到连接的外部ip地址的统计图
7. 分析结果
出现最多的是TCP,established,established意思是TCP连接成功,再下来就是[QQBrowser.exe],是浏览器发起了678次TCP连接,下面列举出来连接最多的一些外部网站,端口基本上都是通过443端口(https)
3.系统运行监控—sysmon
sysmon是由Windows Sysinternals出品的一款Sysinternals系列中的工具,用来监视和记录系统活动,并记录到windows事件日志,可以提供有关进程创建,网络链接和文件创建时间更改的详细信息。
3.1 安装sysmon
- 确定监控目标
- 进程创建ProcessCreate
过滤事件选项:
UtcTime, ProcessGuid, ProcessId, Image, CommandLine, CurrentDirectory, User, LogonGuid, LogonId, TerminalSessionId, IntegrityLevel, Hashes, ParentProcessGuid, ParentProcessId, ParentImage, ParentCommandLine
- 进程创建时间FileCreatTime
过滤事件选项:
UtcTime, ProcessGuid, ProcessId, Image, TargetFilename, CreationUtcTime, PreviousCreationUtcTime
- 网络连接NetworkConnect
过滤事件选项:
UtcTime, ProcessGuid, ProcessId, Image, User, Protocol, Initiated, SourceIsIpv6, SourceIp, SourceHostname, SourcePort, SourcePortName, DestinationIsIpv6, DestinationIp, DestinationHostname, DestinationPort, DestinationPortName
- 远程线程创建CreateRemoteThread
过滤事件选项:
UtcTime, SourceProcessGuid, SourceProcessId, SourceImage, TargetProcessGuid, TargetProcessId, TargetImage, NewThreadId, StartAddress, StartModule, StartFunction
编写配置文件
创建一个txt文件,写好配置文件后将文件后缀改为.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>
解释一下:
onmatch选项只能设置为include或者exclude,exclude相当于白名单,不用记录;include相当于黑名单
第一行的sysmon版本号要跟使用的sysmon一致(当前版本是4.81)
Image condition根据自己使用的浏览器更改,如谷歌浏览器是“chrome.exe”,IE浏览器是“iexplore.exe”,火狐浏览器是“firefox.exe”,QQ浏览器是“QQBrowser.exe”,写在exclude中就是不记录由谷歌浏览器创建的进程
进程创建时间类似,也是不创建浏览器创建进程的时间
网络连接过滤掉了浏览器的网络连接、源IP为127.0.0.1(localhost)的网络连接和目的端口为137的连接服务,且查看目的端口为80(http)和443(https)的网络连接。
137端口的主要作用是在局域网中提供计算机的名字或IP地址查询服务,一般安装了NetBIOS协议后,该端口会自动处于开放状态
127.0.0.1表示回环地址
远程线程创建记录了目标为explorer.exe、svchost.exe、winlogon.exe和powershell.exe 的远程线程
explorer.exe是Windows程序管理器或者文件资源管理器
svchost.exe是一个属于微软Windows操作系统的系统程序,是从动态链接库 (DLL) 中运行的服务的通用主机进程名称
winlogon.exe是Windows NT 用户登陆程序,用于管理用户登录和退出
powershell.exe是专为系统管理员设计的新 Windows 命令行外壳程序。该外壳程序包括交互式提示和脚本环境,两者既可以独立使用也可以组合使用.
3.2 启动sysmon
cd进入包含sysmom.exe的文件夹
输入指令.\Sysmon.exe -i sysmon1326.xml
安装Sysmon,点击Agree
-i第一次启动时用,之后更新xml配置可以-c完成
3.3 打开日志
打开事件查看器(win+R运行eventvwr.msc)——>应用程序和服务日志->Microsoft->Windows->Sysmon->`Operational
这里可以点击框内空白部分,然后用输入法输入一部分字母快速查找,也可以直接按字母表顺序一直往下翻
打开kali,Win运行后门文件20191326_backdoor.exe,回连到kali,kali执行shell获取win10的cmd
再次查看日志
根据时间观察对应的事件
打开事件查看器搜索(Ctrl+F)后门文件名,可以看到日志记录
可以看到协议、ip地址、回连kali的ip地址、源端口和目标端口等信息。
4.恶意软件分析
4.1用wireshark分析TCP包
这里使用实验二生成的加压缩壳后门程序20191326_backdoor.exe,在VirusTotal进行扫描,结果如下:
4.2 动态恶意软件分析
此处采用 SysTracer 监控后门启动前后信息变化
systracer直接去官网下载就行了,安装的时候点击第一个,一直下一步就行了
systracer可以记录下计算机某个时刻的状态。然后过一段时间后再次记录。通过比较两次记录中计算机的不同进行相应的分析。
不要点击stop!!!!!!!
2.开启后门并回连成功,记录为Snapshot1
3.使用dir获取主机的shell,记录为Snapshot2
下面我们点击右下角的compare,将执行前后的快照进行对比
文件发生了改动。
有变化的地方会用亮色标注出来
下面对部分内容进行分析:
为了方便查看注册表中被修改的内容,我将注册表对比结果导出为pdf文件:
生成的pdf文件如下: