20155330 《网络攻防》 Exp4 恶意代码分析
实验后回答问题
(1)如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么。请设计下你想监控的操作有哪些,用什么方法来监控。
- 使用Windows自带的schtasks指令设置一个计划任务,指定每隔一定时间记录主机的联网记录或端口开放、注册表信息等;
- 通过sysmon工具,配置需要记录事件的文件,之后在事件查看器里找到相关日志文件查看;
- 使用Process Explorer工具,监视进程执行情况,查看是否有程序调用了异常的dll库之类的。
(2)如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息
- 使用systracer工具分析某个程序执行前后,计算机注册表、文件、端口的一些变化情况。
实验过程
使用schtasks指令监控系统
- 在C盘目录下建立一个netstatlog.bat文件,用来将记录的联网结果格式化输出到netstatlog.txt文件中,netstatlog.bat内容为:
date /t >> c:\netstatlog.txt
time /t >> c:\netstatlog.txt
netstat -bn >> c:\netstatlog.txt
- 此时C盘中的文件:
- 打开Windows下命令提示符,输入指令
schtasks /create /TN netstat /sc MINUTE /MO 2 /TR "c:\netstatlog.bat"
创建一个每隔两分钟记录计算机联网情况的任务
- 右键点击“计算机”|“管理”,在计算机管理中点击“任务程序计划”|“任务程序计划库”,双击
netstat
任务计划项目,点击“操作”页签,“编辑”|修改“程序或脚本”为C:\netstatlog.bat
- 在“操作”中,将“只有在计算机使用交流电源时才启动此任务”选项取消
- 过了一会查看
netstatlog.txt
文件……
- 再次双击
netstat
任务计划项目,在“常规”页签中勾选“使用最高权限运行”
- 隔了大约一天之后,再次查看记录的主机联网日志。
- 根据张竞予同学的博客,制作了相关表格和饼状图。由于使用的是虚拟机进行实践,所以联网的应用程序种类较少。
使用sysmon工具监控系统
- 首先创建配置文件
Sysmon20155303.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>
</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:\Sysmon20155330.xml
安装Sysmon
- 在“事件查看器”中查看程序相关信息。
-
Sysmon.exe -c C:\Sysmon20155330.xml
更改配置文件,监听443和80端口,无异常发生。
<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">SogouExplorer.exe</Image>
</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>
使用VirusTotal分析恶意软件
- 把后门软件上传到VirusTotal进行扫描,只有16个软件没有检测出病毒……
- 查看这个恶意代码的基本属性
- 算法库支持情况
使用Process Monitor分析恶意软件
- Process Monitor是一个高级的 Windows 系统和应用程序监视工具,使用者可以对系统中的任何文件和注册表操作同时进行监视和记录,通过注册表和文件读写的变化,诊断系统故障或是发现恶意软件、病毒或木马。
- 以下为软件记录情况(部分)。
使用Process Explorer分析恶意软件
- Process Explorer让使用者能了解看不到的在后台执行的处理程序,能显示目前已经载入哪些模块,分别是正在被哪些程序使用着,还可显示这些程序所调用的 DLL进程,以及他们所打开的句柄。
- 后门软件运行情况记录:
使用PEiD分析恶意软件
- PEiD(PE Identifier)是一款著名的查壳工具。
- 未加壳扫描结果:
- 加壳后:
使用systracer分析恶意软件
- 在kali对windows主机进行回连前后使用软件进行快照,然后对比。
- 首先是注册表发生了变化:
- 端口情况
实验体会
通过这次的学习和实践,主要对恶意代码的分析方式有了一定的了解。恶意代码分析主要分为静态分析和动态分析两种方式。通过和上一次的实践相结合,对恶意代码的隐蔽性有了更加深刻的了解。