2018-2019-2 网络对抗技术 20165230 Exp4 恶意代码分析
1.实验内容
- 系统运行监控
- 使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述分析结果。
- 安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控自己主机的重点事可疑行为。
- 分析该软件在(1)启动回连,(2)安装到目标机(3)及其他任意操作时(如进程迁移或抓屏,重要是你感兴趣)。该后门软件
- 读取、添加、删除了哪些注册表项
- 读取、添加、删除了哪些文件
- 连接了哪些外部IP,传输了什么数据
2.实验过程
任务一:系统运行监控
每隔五分钟记录自己的电脑,并进行分析
- 看有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述一下分析结果。目标就是找出所有连网的程序,连了哪里,大约干了什么(不抓包的情况下只能猜),你觉得它这么干合适不。如果想进一步分析的,可以有针对性的抓包。
结合windows计划任务与netstat命令
- netstat是一个监控TCP/IP网络的非常有用的命令行工具,我们可以结合windows自带的计划任务
- 每5分钟执行netstat
-bn
这条指令,并将结果重定向到一个txt文件当中。 -b
可显示在创建网络连接和侦听端口时所涉及的可执行程序,-n显示所有已建立的有效连接。- 我们先写出如下的批处理文件:
date /t >> D:\5230exp4\netstat.txt
time /t >> D:\5230exp4\netstat.txt
netstat -bn >> D:\5230exp4\netstat.txt
接着在“控制面板”中搜索“计划任务”,并创建新任务:
记住一定要在标红这里勾选使用最高权限运行。否则会出错
-
创建触发器,选择每隔5分钟触发一次
-
新建操作,选择5230netstat.bat的脚本
-
然后就开始漫长的等待;
【注】:这里需要一直保持开机联网状态,此外,如果发现netstatlog.txt没有每分钟更新一次,可能是因为设置时默认选择了“只有计算机使用交流电源时才启用此任务”,所以一旦我们不给电脑充电,任务就没法运行。解决方法就是在netstat任务属性的设置中取消选中该选项,如下图所示,然后就可以发现每隔一分钟命令行会闪现一下,其中包含netstatlog.bat中的三行指令,netstatlog.txt自己就随之更新了。
-
一天过去后,用excel分析数据。
1.导入文本数据:新建excel文件->选择上方“数据”->选择“获取外部数据”->选择“自文本”
2.选择记录连接情况的文本netstat.txt,点击“导入” -> 选中“分隔符号”,
3.点击“下一步”->选中全部分隔符号,点击“下一步” -> 列数据格式选择常规,点击“完成”。
4.鼠标选中左上角第一个单元格,然后点击“确定”
- 对数据进行统计学分析:
1.首先查看所有联网程序的联网次数,具体excel操作如下:
①首先选中我们要分析的列
②其次点击上方“插入”->“数据透视图”
③默认选择在一个新工作表中生成
④在右侧“选择要添加到报表的字段”中点击对应字段右侧的小箭头->然后点击“确定”
⑤将该字段拖动到下方的“轴字段”和“数值”两个区域中
⑥然后就可以看到我们的统计图进行分析了:
由上图所示,联网最多的是浏览器对应的程序“MicrosoftEdge.exe”,排名第二的是“vmware.exe”,其次是“有道云”和“网易云音乐”,没发现什么其他可疑的程序。
安装配置sysinternals里的sysmon工具
第一步:根据自己想要监控的事件写对应的配置文件
- 5230sysmoncfig.xml内容如下
<Sysmon schemaversion="3.10">
<!-- 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>
</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>
第二步:安装sysmon
-
下载老师提供的SysinternalsSuite201608压缩包,并解压。
-
在命令提示符(管理员)中进入到解压的目录下。
-
安装sysmon:
.\Sysmon.exe -i C:\5230sysmoncfig.xml
-
弹出的窗口点击agree:
第三步:在事件查看器里查看日志
-
在电脑搜索里输入“查看事件日志”,就可以进入
-
选择日志的位置:应用程序和服务日志/Microsoft/Windows/Sysmon/Operational。
-
利用Sysmon具体分析日志的例子选择了有道云程序进行分析。
-
在详细信息里可以看到显示得有具体时间、运行的程序、使用的协议、源IP、目的IP等等。
-
再看一下本次实验中运行的.bat文件事件。
-
有点好奇svchost.exe这是什么文件,于是去百度了一下,大概是要执行.bat这个文件得注入到svchost.exe这个程序中启动,属于系统进程。
svchost.exe是微软Windows操作系统中的系统文件,微软官方对它的解释是:svchost.exe 是从动态链接库 (DLL) 中运行的服务的通用主机进程名称。这个程序对系统的正常运行是非常重要,而且是不能被结束的。许多服务通过注入到该程序中启动,所以会有多个该文件的进程。
-
还了解到这个进程在windows进程中占据很大一部分的资源,svchost.exe非常容易被病毒所利用,于是在任务管理器中搜了一下,天呐,确实占了非常大的部分,也许这是导致电脑卡的原因之一。
-
找到了回连时执行的back.exe
-
回连以后,在kali中执行了dir的命令,于是在上一条日志紧接着就找到了这个!
-
SearchFilterHost.exe是桌面搜索引擎的索引程序,其主要作用是建立快速索引文件,让用户能够更好的搜索出电脑中的任意资料。它会在计算机空闲时自动扫描索引位置的文件名、属性信息和给定类别的文件内容,这些索引位置默认包括桌面、收藏夹、开始菜单、系统目录。
任务二:恶意软件分析
分析该软件在
- (1)启动回连
- (2)安装到目标机
- (3)其他任意操作时(如进程迁移或抓屏,重要是你感兴趣)。
该后门软件
- (3)读取、添加、删除了哪些注册表项
- (4)读取、添加、删除了哪些文件
- (5)连接了哪些外部IP,传输了什么数据(抓包分析)
静态分析工具
ViruScan
-
用了很多上次实验生成的exe文件去扫描,结果如下
-
可以看见它的行为是建立到一个指定端口:5230
-
删除了一些注册表键值,这一点在之后的动态分析里也可以看见
-
检测自身是否被调试
-
创建事件对象
PEID
-
把加了UPX壳的程序放进去,能扫出来
-
换一个用Hyperion加过密的壳,居然没有扫出来,在上一次实验中对壳这个东西好感度不高,这个软件对加密壳直接没扫出来,好吧。。。。
PE explorer
-
刚打开PE Explorer我们就会看到后门程序的头部信息。
-
查看程序结头信息:
-
进行反汇编可以看见程序的入口点:
-
查看引用的DLL库,发现了比较容易被木马病毒盯上的文件:
- ws2_32.dll:若系统文件ws2_32.dll出错,极有可能是盗号木马、流氓软件等恶意程序所导致,其感染相关文件并加载起来,一旦杀毒软件删除被感染的文件,就会导致相关组件缺失,游戏等常用软件运行不起来,
- WSOCK32.dll:Windows Sockets应用程序接口,用于支持很多Internet和网络应用程序。是一个对系统很关键或很可疑的文件,易遭受木马病毒(如“犇牛”病毒)破坏导致系统找不到此文件,出现错误提示框。
动态分析工具
快照比对(SysTracer工具)
-
在老师的码云中有该软件的安装包,下载下来即可,设置监听端口为5230。
-
在打开后门前先快照一下,点击“take snapshot”,如图,按照以下步骤进行:
-
Kali打开msfconsole,完成相关设置后开始监听,Windows运行后门后拍摄快照2
-
进行分析:
-
①点击上方“Applications”->左侧“Running Processes”->找到后门进程“back.exe”->点击“Opened Ports”查看回连地址、远程地址和端口号:
-
②在快照界面“Snapshots”右下角点击“Compare”,比对一下回连前后计算机发生的变化:
-
回连成功后,进一步操作,如捕获音频、启动摄像头、屏幕截屏,然后再抓个快照对比一下
-
找到了几个有意思的地方
-
首先是这个!根据capture捕获这个单词就知道这一条有问题,进一步分析,这应该是修改了捕获音频的键值
-
接下来再看这一条,看上去有点奇怪,确实有问题,百度了一下,解释说是“映像劫持”,听上去有点高大上,大概的意思就是使用忽略路径的方式来匹配它所要控制的程序文件名。经常被一些病毒木马程序控制
-
再在快照界面“Snapshots”右下角点击“View Difference List”看一下总的
-
发现它增加了很多.dll.mui文件,但是没有找到具体是做什么的,我猜应该是伪装潜伏,
关于HKEY_LOCAL_MACHINE的介绍:
它保存了注册表里的所有与这台计算机有关的配置信息
被修改的部分是Fastcache,即高速缓冲存储器。HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control这个子键包括了win95控制面板中的信息。不要编辑这些信息,因为一些小程序的改变在很多地方,一个丢失的项会使这个系统变的不稳定。
- 此外,一些Systracer未授权的地方我们是没法查看的。
抓包分析(WireShark工具等)
-
首先要选对网络,因为我的虚拟机设置的是net8,刚开始没有选对网络,也就捕获不到包。
-
在回连之前开始捕获
-
因为我在虚拟机里设置的是TCP连接,因此全是TCP的包,可以看见还连接了219.126.28.25外部IP
-
找到了主机与KALI三次握手成功
-
传递的包为:SYN->[SYN+ACK]->ACK
使用TCPView查看恶意代码回连前后端口开放情况
- 回连成功时可以看见连接时的端口开放情况
使用Process Explorer监视系统和应用程序
Process Explorer可以实时监控计算机的进程状态,我们可以用它来看看Meterpreter进程迁移的行为。
-
首先运行后门程序,我们找到了它的进程:
-
接着我们准备把它迁移到notepad++.exe的进程中,还没迁移之前是notepad++.exe是这样的:
-
然后,我们把它迁移到notepad++.exe中去:
-
我们发现多了一个线程,这应该就是Meterpreter迁移到notepad++z中创建的新线程
3.问题回答
(1)如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么。请设计下你想监控的操作有哪些,用什么方法来监控。
- 监控网络连接
- 监控是否创建新的进程
- 监控注册表项目
- 监控系统日志
- 监控是否经常连接未知IP
(2)如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息。
- PEID、ExeinfoPE等查壳工具内先查壳,通过入口特征和区段特征来识别,然后脱壳。
- TCPView、Wireshark等网络工具查看是否存在可疑连接
- Systracer拍摄快照,比对前后区别,分析改变的注册表及文件等信息。
- PE Explorer:反汇编是否有问题,是否有不正常的Data
- Systracer:程序运行前后是否有注册表、端口、文件的变化
4.实践总结与体会
这次实验安装了许多分析工具,也掌握了许多分析方法,希望可以通过这次实验中使用的方法手动监测自己电脑里的病毒。同时,弄清楚一个程序是不是病毒,更要熟悉自己的电脑,清楚某些端口号的作用,清楚什么是可疑的动态。这学期我们还选修了一门课程是计算机病毒,通过这次实验也对这一门课奠定了更多的基础,而通过学习计算机病毒课又会对网络对抗有进一步的认识与掌握。