2018-2019 网络对抗技术 20165231 Exp4 恶意代码分析
实验目标
1.是监控你自己系统的运行状态,看有没有可疑的程序在运行。
2.是分析一个恶意软件,就分析Exp2或Exp3中生成后门软件;分析工具尽量使用原生指令或sysinternals,systracer套件。
3.假定将来工作中你觉得自己的主机有问题,就可以用实验中的这个思路,先整个系统监控看能不能找到可疑对象,再对可疑对象进行进一步分析,好确认其具体的行为与性质。
实践内容(3.5分)
2.1系统运行监控(2分)
(1)使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述一下分析结果。目标就是找出所有连网的程序,连了哪里,大约干了什么(不抓包的情况下只能猜),你觉得它这么干合适不。如果想进一步分析的,可以有针对性的抓包。
(2)安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控自己主机的重点事可疑行为。
实际日志的分析还需要发挥下自己的创造力,结合以前学过的知识如linux的文本处理指令等进行。分析的难点在于从大量数据中理出规律、找出问题。这都依赖对结果过滤、统计、分类等进一步处理,这就得大家会什么用什么了。
2.2恶意软件分析(1.5分)
分析该软件在(1)启动回连,(2)安装到目标机(3)及其他任意操作时(如进程迁移或抓屏,重要是你感兴趣)。该后门软件
(3)读取、添加、删除了哪些注册表项
(4)读取、添加、删除了哪些文件
(5)连接了哪些外部IP,传输了什么数据(抓包分析)
实验过程
1、系统运行监控
使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述一下分析结果。目标就是找出所有连网的程序,连了哪里,大约干了什么(不抓包的情况下只能猜),你觉得它这么干合适不。如果想进一步分析的,可以有针对性的抓包。
1、:在C盘目录下建一个文本文件然后输入内容后改后缀名为.bat
文件c:\Temp\netstatlog.bat
(这里可能在C盘根目录下无法创建文本文件,可以进入一个文件夹创建后移出来)
date /t >> c:\netstatlog.txt
time /t >> c:\netstatlog.txt
netstat -bn >> c:\netstatlog.txt
2、:在windows命令行下输入命令:schtasks /create /TN 20165231netstat /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > c:\netstatlog.txt"
TN是TaskName的缩写,我们创建的计划任务名是20165231netstat
sc表示计时方式,我们以分钟计时填MINUTE
TR=Task Run,要运行的指令是 netstat
bn,b表示显示可执行文件名,n表示以数字来显示IP和端口
c:\netstatlog.txt类似于Linux中的重定向,输出将存放在C盘下的netstatlog.txt文件中
3、在任务计划程序种找到创建的任务,然后在操作中修改为我们刚刚修改的.bat文件,然后在常规栏目勾选以最高权限运行。
然后在C盘的netstatlog.txt
文件中查看网络连接记录
4、然后将netstatlog.txt
导入excel中查看分析
可以看到我电脑当时启动了vmware(虚拟机)、cloudmusic(网易云音乐)、SearchUI(搜索工具everthing)、chrome(浏览器)、TIM(qq)、Foxmail(邮箱)
然后做统计图分析
(没错当时开着虚拟机开着网页上着网听歌所以vmware、chrome、网易云音乐动作频繁)
(之前是在虚拟机做的,后来发现在主机win10上好做些就换了主机)
2、使用sysmon工具
首先创建配置文件sysmon5231.xml
,文件中包含指令
<!-- 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>
<span class="hljs-tag"><<span class="hljs-name">NetworkConnect</span> <span class="hljs-attr">onmatch</span>=<span class="hljs-string">"exclude"</span>></span>
<span class="hljs-tag"><<span class="hljs-name">Image</span> <span class="hljs-attr">condition</span>=<span class="hljs-string">"end with"</span>></span>iexplorer.exe<span class="hljs-tag"></<span class="hljs-name">Image</span>></span>
<span class="hljs-tag"><<span class="hljs-name">SourcePort</span> <span class="hljs-attr">condition</span>=<span class="hljs-string">"is"</span>></span>137<span class="hljs-tag"></<span class="hljs-name">SourcePort</span>></span>
<span class="hljs-tag"><<span class="hljs-name">SourceIp</span> <span class="hljs-attr">condition</span>=<span class="hljs-string">"is"</span>></span>127.0.0.1<span class="hljs-tag"></<span class="hljs-name">SourceIp</span>></span>
<span class="hljs-tag"></<span class="hljs-name">NetworkConnect</span>></span>
<NetworkConnect onmatch="include">
<DestinationPort condition="is">5231</DestinationPort>
<DestinationPort condition="is">80</DestinationPort>
<DestinationPort condition="is">443</DestinationPort>
</NetworkConnect>
<span class="hljs-tag"><<span class="hljs-name">CreateRemoteThread</span> <span class="hljs-attr">onmatch</span>=<span class="hljs-string">"include"</span>></span>
<span class="hljs-tag"><<span class="hljs-name">TargetImage</span> <span class="hljs-attr">condition</span>=<span class="hljs-string">"end with"</span>></span>explorer.exe<span class="hljs-tag"></<span class="hljs-name">TargetImage</span>></span>
<span class="hljs-tag"><<span class="hljs-name">TargetImage</span> <span class="hljs-attr">condition</span>=<span class="hljs-string">"end with"</span>></span>svchost.exe<span class="hljs-tag"></<span class="hljs-name">TargetImage</span>></span>
<span class="hljs-tag"><<span class="hljs-name">TargetImage</span> <span class="hljs-attr">condition</span>=<span class="hljs-string">"end with"</span>></span>winlogon.exe<span class="hljs-tag"></<span class="hljs-name">TargetImage</span>></span>
<span class="hljs-tag"><<span class="hljs-name">SourceImage</span> <span class="hljs-attr">condition</span>=<span class="hljs-string">"end with"</span>></span>powershell.exe<span class="hljs-tag"></<span class="hljs-name">SourceImage</span>></span>
<span class="hljs-tag"></<span class="hljs-name">CreateRemoteThread</span>></span>
</EventFiltering>
</Sysmon>
这里注意代码开头的
<Sysmon schemaversion="4.20">
中版本号在事件查看器(控制面板>系统与安全>管理工具>事件查看器)中的应用程序和服务日志下,查看
Microsoft->Windows->Sysmon->Operational
。在这里,我们可以看到按照配置文件的要求记录的新事件,以及事件ID、任务类别、详细信息等等
利用Sysmon具体分析日志的例子我选择了自己实验中生成的后门20165231_backdoor.exe
进行分析。
启动回连、安装到目标主机。
然后在事件查看器中发现了后门程序运行
- SearchFilterHost.exe是桌面搜索引擎的索引程序,其主要作用是建立快速索引文件,让用户能够更好的搜索出电脑中的任意资料。它会在计算机空闲时自动扫描索引位置的文件名、属性信息和给定类别的文件内容,这些索引位置默认包括桌面、收藏夹、开始菜单、系统目录。
好像并没有分析出什么,只看懂一个我的后门启动了
3、恶意软件分析
分析该软件在
(1)启动回连,(2)安装到目标机(3)及其他任意操作时(如进程迁移或抓屏,重要是你感兴趣)。该后门软件
(3)读取、添加、删除了哪些注册表项
(4)读取、添加、删除了哪些文件
(5)连接了哪些外部IP,传输了什么数据(抓包分析)
使用VirusTotal分析恶意软件
分析之前实验生成的带壳后门
可以看出它的SHA-1、MD5摘要值、文件类型、文件大小,以及TRiD文件类型识别结果。
Virus Total也可以查出壳
使用PEiD分析恶意软件
使用PEiD分析之前实验加壳的后门
使用Systracer分析恶意软件
-
先下载安装Systracer,然后在打开后门前“take snapshot”打开快照,然后在打开后门回连成功后再“take snapshot”。
-
点击上方“Applications”->左侧“Running Processes”->找到后门进程“20165231_backdoor.exe”->点击“Opened Ports”查看回连地址、远程地址和端口号
-
在快照界面“Snapshots”右下角点击“Compare”,比对一下回连前后计算机发生的变化(所有蓝色的地方,就是前后发生变化的地方)
(MRUList(Most Recently Used)值项记录的是所运行程序命令的顺序)
此外,一些Systracer未授权的地方我们是没法查看的
通过查看后门软件的“opened handles”(打开的句柄)来对比他们都做了什么
-
用wireshark抓包分析连接了哪些外部IP,传输了什么数据
经过目的和源IP筛选后
可以看到数据往来很频繁,甚至好像有些没加密吗???
实验后回答问题
(1)如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所以想监控下系统一天天的到底在干些什么。请设计下你想监控的操作有哪些,用什么方法来监控。
-
使用schtasks,设置一个计划任务,每隔一定的时间对主机的联网记录等进行记录。当然这个有点烦每过一段时间就闪一下cmd弹窗。
-
使用sysmon工具,通过修改配置文件,记录相关的日志文件。
(2)如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息。
-
使用Wireshark进行抓包分析,监视其与主机进行的通信过程。
-
使用systracer工具分析恶意软件,进行快照的对比(注册表、文件等).
实验感想
本次实验重在分析,也让我学会使用了一些监视软件,杀软防不住情况下也能人工自主有一些警觉意识,也有一些手段可以追查恶意代码。
其实我老早就有监控电脑的想法了,去年十月电脑IE浏览器不幸被2345劫持主页,每次打开IE自动弹出两个2345主页,我通过修改internet选项和修改注册表都没办法铲除这个流氓,网上搜寻无果。最近火绒爆出2345携带病毒,通过广告弹窗侵入用户电脑盗取用户各类软件登陆名及密码上传网上,看到后我更要铲除2345这颗毒瘤!我觉得可以用本次实验的工具监视IE每次打开的动向,看看2345到底隐藏在哪里被调用。如果是我年轻了,那就等着重装吧!