2018-2019-2 20165331《网络对抗技术》Exp4 恶意代码分析
实验收获与感想
本次实验相较于之前的实验繁琐程度较小,难度也不算很高,主要内容就是了解可以通过哪些方式在一个不确定是否被植入恶意代码的主机上进行监控以及学会使用各种工具对恶意代码进行分析(比如查看数据流向的地址、哪些文件被修改等等)。不过本次实验也有很多收获,比如学会了多种多种对恶意代码行为进行监控以及分析的工具的使用方法。
如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么。请设计下你想监控的操作有哪些,用什么方法来监控
可以通过使用windows自带的schtasks指令设置计划任务;使用Sysmon,编写配置文件,记录有关的系统日志;使用systracer对不同时刻的系统快照进行分析等方式对系统的网络连接、进程、系统日志、注册表项等进行监控。
如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息
可以使用wireshark进行抓包分析从而获取恶意程序与主机的通信
实验流程
Ⅰ使用schtasks指令监控系统
(1)首先建立计划任务,在Windows命令行中输入schtasks /create /TN netstat5331 /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > c:
etstatlog.txt"
,表名创建一个名称为netstat5331、每隔一分钟运行一次、输出重定向到netstatlog.txt
的计划任务
(2)然后在C盘中创建一个netstat5331.bat文本文档,在其中输入
date /t >> c:
etstatlog.txt
time /t >> c:
etstatlog.txt
netstat -bn >> c:
etstatlog.txt
然后使用“另存为”将该.txt文件以.bat批处理文件形式保存
(3)之后在计划任务项中编辑netstat5331,选中“操作”一栏,将“程序或脚本”改为上面创建的批处理文件,并将“添加参数”一栏置空(图中未置空,导致输出文件netstatlog.txt中为无意义数据,之后进行了改正),一路确定保存
(4)可以打开netstatlog.txt文件看到输出结果
(5)通过将存储的数据通过excel表进行整理,可以进行统计
Ⅱ使用sysmon工具监控系统
(1)首先下载sysmon,解压缩后在Windows命令行中进入sysmon文件夹,输入命令sysmon -accepteula -i -n
以自动安装sysmon,下图为安装成功例子
附:sysmon命令格式为:sysmon.exe -* 。“*”号可替换为各种参数,如-c
更新或显示配置;-h
指定hash记录的算法;-i
安装,可用xml文件来更新配置文件;-l
记录加载模块,可指定进程;-m
安装事件清单;-n
记录网络链接;-r
检测证书是否撤销;-u
卸载服务和驱动
-c
更新或显示配置;-h
指定hash记录的算法;-i
安装,可用xml文件来更新配置文件;-l
记录加载模块,可指定进程;-m
安装事件清单;-n
记录网络链接;-r
检测证书是否撤销;-u
卸载服务和驱动(2)之后编辑.xml配置文件,注意修改版本号,并添加自己想要监控的事件。.xml文件的创建方法类似于上文提到的.bat文件
附:可选择的事件过滤器有ProcessCreate 进程创建;FileCreateTime 进程创建时间;NetworkConnect 网络链接;ProcessTermina 进程结束;DriverLoad 驱动加载;ImageLoad 镜像加载;CreateRemoteTh 远程线程创建;RawAccessRead 驱动器读取;ProcessAccess 进程访问;FileCreate 文件创建;RegistryEvent 注册表事件;FileCreateStre 文件流创建
<Sysmon schemaversion="9.01">
<!-- 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">firefox.exe</Image>
</ProcessCreate>
<ProcessCreate onmatch="include">
<ParentImage condition="end with">cmd.exe</ParentImage>
</ProcessCreate>
<FileCreateTime onmatch="exclude" >
<Image condition="end with">chrome.exe</Image>
<Image condition="end with">firefox.exe</Image>
</FileCreateTime>
<NetworkConnect onmatch="exclude">
<Image condition="end with">chrome.exe</Image>
<Image condition="end with">firefox.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>