20174311 唐嘉《网络对抗技术》Exp4 恶意代码分析
一、实验目标
-
监控你自己系统的运行状态,看有没有可疑的程序在运行。
-
分析一个恶意软件,就分析Exp2或Exp3中生成后门软件;分析工具尽量使用原生指令或sysinternals,systracer套件。
-
假定将来工作中你觉得自己的主机有问题,就可以用实验中的这个思路,先整个系统监控看能不能找到可疑对象,再对可疑对象进行进一步分析,好确认其具体的行为与性质。
二、实践内容及步骤
2.1 系统运行监控
2.1.1 Windows计划任务schtasks
输入以下命令,schtasks /create /TN 20174311netstat /sc MINUTE /MO 5 /TR "cmd /c netstat -bn > c:\netstatlog.txt",每五分钟记录下有哪些程序在连接网络。在主机端输入命令完成后,每五分钟就会监测哪些程序在使用网络,并把结果记录在netstatlog.txt文档里。
为了显示日期和时间,可以通过bat批处理文件来实现。首先创建bat文件,在C盘下建一个文件c:\netstatlog.bat,内容为(修改文件后缀名即可):
date /t
接着打开控制面板,在管理工具搜索任务计划程序,找到任务20174311netstat。
选中该任务,找到操作选项,点击所有项里的属性选项。
找到操作选项卡,双击详细信息,把框中原本的cmd改成c:\netstatlog.bat。
此时打开c:\netstatlog.bat文件(用记事本方式打开),就可以看到时间信息了。(这里需要等一段时间,可以干点别的)
下面就是把数据导入excel表里进行数据分析处理的操作了,打开Excel,点击数据
选项卡,在获取外部数据的方式上选择自文本
,选择记录连接情况的netstatlog.txt。
(这里要说一下,等一段时间后点击bat文件就会自己更新一个txt文件)按照下图所示选择导入的格式:
之后就可以看到数据导入成功了:
选中某一列,在这里我选择的B列,因为B列是软件使用情况。找到插入
选项卡,点击数据透视图
,来生成一个数据透视图。(这里说明一下下,点击数据透视图后会让你设置一些参数,要在右侧“选择要添加到报表的字段”中点击对应字段右侧的小箭头,取消选择没有意义的字段,只保留软件信息,然后点击确定,接着将该字段拖动到下方的数值区域中即可)
这里说明一下,由于电脑比较卡嘿嘿,所以说做网络对抗实验的时候我习惯把软件都关了,然后呢在上面等的这段时间里我就听了听歌,没用电脑上的太多软件,所以软件频次可能不太高嘿嘿。
做一下简单分析,这段时间总的软件使用频次不高,主要是微信聊天,然后用百度网盘下了点东西,当然也听着歌,但有点奇怪的是qq音乐的频次却不是特别高,而且本人在电脑上跑的软件比较少,所以说从数量上还是频次上都偏小。
2.1.2 sysmon
首先是下载安装这个软件。我下载的是下面这个版本:
创建配置文件sysmon.xml
,文件中写入以下指令:
<Sysmon schemaversion="4.12">
<!-- 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>
<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>
接着以管理员身份打开cmd命令行,使用指令Sysmon.exe -i sysmon.xml
安装sysmon。输入命令之后会弹出下面这个框,点击Agree
进行安装。
然后就发现安装成功了。
下面是修改配置文件的操作,更新版本号为4.23,增加对端口4311、443、80的监听服务:
<Sysmon schemaversion="4.23">
<!-- 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">iexplorer.exe</Image>
<SourcePort condition="is">137</SourcePort>
<SourceIp condition="is">127.0.0.1</SourceIp>
</NetworkConnect>
<NetworkConnect onmatch="include">
<DestinationPort condition="is">4311</DestinationPort>
<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>
配置文件修改完要更新,指令为:sysmon.exe -c sysmon.xml
下面开始查看日志,在任务管理器中搜索并打开事件查看器。在应用程序和服务日志
下,查看Microsoft->Windows->Sysmon->Operational
。随便点开一个看看:
下面开始回连查看操作。运行实验三生成的bbskali hyperion.exe,可以看到在21时44分回连成功。
根据回连成功的时间,可以在日志信息中可以成功找到这个事件:
运行回连实验二生成的后门文件4311_backdoor.exe,也可以找到相关的日志信息:
进程创建日志:
回连后产生的网络连接日志:
从图中可以看到,程序为4311_backdoor.exe,协议为tcp协议,源IP地址为192.168.80.1,目标IP地址为192.168.0.101,目的端口为4311。
2.2 恶意软件分析
2.2.1 静态分析
静态分析的方法有很多,这里我主要选用的是文件扫描、peid工具和PE Explorer工具。
(1) 文件扫描(VirusTotal)
由于这个方式在上个实验中已经详细做过,这里就不再赘述操作了。
(2)文件格式识别(peid工具)
先看一下没有加壳的后门程序:
再看一下加过压缩壳的后门程序:
再看一下加过加密壳的后门程序:
通过上面的对比可以看出,使用壳加密后这个软件就不能查到了。
(3) 反编译、反汇编(PE Explorer工具)
文件头信息:
调用的DDL文件,而且指出了DDL文件调用的函数。
msvcrt.dll是微软在windows操作系统中提供的C语言运行库执行文件;kernel32.dll是非常重要的32位动态链接库文件,属于内核级文件;wsock32.dll是Windows Sockets应用程序接口,用于支持很多Internet和网络应用程序;ws2_32.dll是Windows Sockets应用程序接口, 用于支持Internet和网络应用程序。
2.2.2 动态分析
动态分析的方法也有很多,这里我选择SysTracer和wireshark工具。
(1)使用SysTracer分析
下载SysTracer并安装
选择中间的选项。
端口设置为4311。
为方便对比观察,这里选择四个快照:
在打开后门前先快照一下,选择->take snapshot,完成后显示Snapshop #1。(要等它自己完成)
Kali开始监听,Windows运行后门后,回连成功后拍摄快照,完成后显示Snapshop #2。
在kali中使用MSF截屏操作screenshot,完成后显示Snapshop #3。
结束连接后exit退出,快照,显示Snapshop #4。
对比#1和#2,在Applications里的Running Processes里可以发现后门程序的添加。
下图可视的后门程序的入侵。
可以查看回连地址及端口号。
在registry选项卡里可以直接找到注册表的变化项。
HKEY_CLASSES_ROOT:这个项包含所有的文件类型,文件关系,图标文件名,com对象等信息。
HKEY_USERS:所有WINDOWS用户的文件都会记录在这个项里面,每个用户会有自己的项以保存个人设置。
HKEY_CURRENT_USER:这个项保存了目前登陆的用户文件,以及个性化的设置,如桌面外观,软件设置,开始菜单等。会随着登陆的用户不同而有所改变。
HKEY_LOCAL_MACHINE:这个项保存了绝大部分的系统信息,包括硬件配置,网络设置,以及你所安装的软件等,是注册表里最重要也最庞大的项,当你用设备管理器更改了硬件的设置时,这个项里的文件也会跟着变动。
HKEY_CURRENT_CONFIG :此项主要记录PNP设备及硬件的设置值。
详细view查看一下可以发现注册表的许多变化。
对比#3和#4,可以发现后门程序的断连。
这里有个小问题,对比项的时候会出现下面的情况:
往下细分项会出现systracer not registered,往下的信息没办法搜索到,但我看有的同学的博客往下还有分支,我觉得可能是版本的不同吧,但是可以清楚的查看注册表的前后变化。
(2)抓包分析(WireShark工具)
回连成功后捕获数据包:
通过分析可以看出后门程序使用的通信方式为TCP传输。在被植入后门的Windows主机入侵时,主机与虚拟机首先进行了完整的三次握手,并且可以明显看出是从4311端口传输的数据。
输入dir
之后捕获到的数据包:
从数据包中可以看到源IP、目的IP、源端口、目的端口以及传输的数据。
输入mkdir test
之后捕获到的数据包。
从数据包中可以看到源IP、目的IP、源端口、目的端口以及传输的数据。
三、实验心得与体会
3.1实验后回答问题
(1)如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么。请设计下你想监控的操作有哪些,用什么方法来监控。
主要还是用本次实验用到的方法吧:
使用schtasks指令设置一个计划任务,观察一段时间的联网情况,对其进行分析查看是否有可疑的联网程序;
使用Sysmon,编写配置文件,在事件查看器中的日志查看有无异常事件;
使用Process Explorer,查看系统中是否存在可疑进程;
使用Systracer拍摄几个时间点的快照,对比不同时间的快照,查看是否有可疑的增删注册表、启动项的行为;
使用wireshark查看自己计算机的端口开放情况,查看是否有多余端口进行可疑的数据传输。
(2)如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息。
也是主要用本次实验的方法吧(最简单我觉得还是使用VirusTotal分析恶意软件):
使用PEiD查看程序是否加壳,加的什么壳;
使用wireshark查看他在运行时传输信息的方式以及内容、端口以及目的地址是哪里;
使用Systracer工具拍摄快照,查看其对注册表和文件的修改。
3.2 实验心得体会
这次实验内容我觉得比较实用,起码知道一些监控恶意进程的操作哈哈哈。这次实验碰到的是一些小问题,慢慢的就可以解决,但是我电脑有点卡,有几个地方还是耽误了一些时间。
通过本次实验,我提升了利用软件分析恶意代码的能力,学会了一些检测系统进程的方法,希望在之后的学习中能够有更加深入的了解。