Exp4 恶意代码分析
一、基础问题
问题1:
如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所以想监控下系统一天天的到底在干些什么。请设计下你想监控的操作有哪些,用什么方法来监控?
答:
- 利用系统命令查看系统各项状态,并将查看结果保存为日志。使用计划任务为命令设置执行间隔,通过监控系统一段时间的运行状态来监控系统。
- 使用具有监控系统功能的可靠软件来实现系统监控。
问题2:
如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息?
答:
- 使用systracer工具对确定的恶意软件进行行为分析。
- 使用wireshark网络嗅探工具对该软件的网络通信情况进行分析。
二、系统监控
1. 系统命令监控
恶意软件的目的大多都是希望通过非正常手段进入你的计算机系统,然而这个过程避免不了的就是需要进行数据的网络传输,因此,我们只要把握好网络的实时状态就可以有效防止大部分恶意软件的入侵。
Windows下为我们内置了查看网络状态的命令netstat
,通过它我们可以随时查看当前计算机所有的网络连接状态,包括当前状态下的联网应用,所有网络服务的源目的IP和端口。具体功能如图:
由上图我们可以判断,我们主要使用的参数为
-a -b -n -o
但是输入一次命令我们只能看见一次结果,这时我们需要让命令可以自动运行,并且将运行结果写到文件中,方便我们统计和查看,这时就需要用到我们的计划任务了。
在设置计划任务之前我们需要将命令写为脚本,如下:
date /t >> C:\Users\Administrator\Desktop\netstat_162329.txt
//获取系统日期 追加至桌面的 netstat_162329.txt文件中
time /t >> C:\Users\Administrator\Desktop\netstat_162329.txt
//获取系统时间 追加至桌面的 netstat_162329.txt文件中
netstat -abon >>C:\Users\Administrator\Desktop\netstat_162329.txt
//获取当前网络状态信息 追加至桌面的 netstat_162329.txt文件中
为了方便查看我们还添加了获取系统日期和时间的命令,方便查看多时间的网络状态。我们需要将以上代码写入一个空白的批处理文件中,结果如下图:
然后为该批处理文件设置计划任务
Win10系统下:控制面板-->系统和安全-->管理工具-->计划任务
进入后界面如下:
点击创建任务进入创建界面:
名称可以随意取一个,然后进入操作选项卡点击新建设置执行操作。
在触发器选项卡中设置执行间隔和时间。
查看监测结果。
2. 使用Windows系统工具集sysmon监控系统状态
首先先下载软件,sysmon官方下载地址
下载解压后再文件夹中进入命令行,准备安装该工具。
根据官方说明,该工具的运行需要一个配置文件的支持,该配置文件中可表明监测内容,我的文件如下:
<Sysmon schemaversion="4.20">
<!-- 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>
<Image condition="end with">QQBrowser.exe</Image>
<SourcePort condition="is">137</SourcePort>
<SourceIp condition="is">127.0.0.1</SourceIp>
</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
命令的主要参数有三个,功能如下:
-i : 需要指定配置文件安装(启用)该工具
-c : 需要用指定文件更新当前运行状态下的配置文件继续运行
-u : 不需要参数值,卸载(停止)该工具运行
由于我们下载的工具是最新版,而老师给出的配置文件版本设置较低,所以直接运行会出现版本不匹配的问题,需要在配置文件的第一行将Schemaversion
的值修改为相应版本。
安装执行,输入命令sysmon -i config_20162329.txt
如图:
查看监控信息
控制面板-->系统和安全-->管理攻击-->查看事件日志
界面如图:
如图转到以下目录可以查看监控信息:
应用程序和服务日志-->Microsoft-->Windows-->sysmon-->Operational
可以点开任意事件查看其详细信息,如图:
三、恶意软件分析
1. virustotal分析恶意软件
实验使用程序为上次实验制作的后门程序,文件名为20162329_backdoor_vile1
将文件上传至virustotal网站,可以看到对该程序的行为分析如下:
2. 用wrieshark分析软件网络行为
首先用程序测试回连,成功:
打开wrieshark软件,选择当前使用的网卡,我使用的是有线所以选择以太网。
重新回连,然后找到wrieshark对应连接结果:
Windows IP为:172.16.3.212
kali IP为:172.16.3.36
只需要在源目的地址中找到相应IP就可以了,如下图:
根据wrieshark结果,我发现光是连接就发送了有480个以上TCP数据包,连续从NO.1310开始到NO.1790结束全都是,之前还有一些不连续的。
我们可以打开一个看看其中的内容:
从图中可以看到,这是一个携带数据的TCP数据包,但从数据上我们还看不出是什么,但是他足有687个字节。
接下来我们获取一下他的摄像头看看会有什么结果
可以看到他们是有一个通信过程的,而且是有数据传递的。
四、实验总结和体会
本次实验中最大的特点就是重在防御,并不再像之前几次实验一样,需要作出一个能控制或查看别人计算机的程序,而是要检测自己的计算机有没有被别人注入恶意程序,也就是老师说的从一个坏人变为了一个害怕被攻击的好人。
通过本次实验,我们学会了使用多种工具来对计算机系统进行状态分析,从而抓出我们系统里可能存在的恶意程序或软件。这些工具不仅有最基础的命令这样的“土工具”,也有像wrieshark
、sysmon
这样的系统工具和网络工具,既拓宽了我们的知识面又学到了一项新的技能,真的是受益匪浅。