2019-2020-2 20175315陈煜扬《网络对抗技术》Exp4 恶意代码分析
1 实践说明
1.1实践目标
(1)监控你自己系统的运行状态,看有没有可疑的程序在运行
(2)分析一个恶意软件,就分析Exp2或Exp3中生成后门软件;分析工具尽量使用原生指令或sysinternals,systracer套件
(3)假定将来工作中你觉得自己的主机有问题,就可以用实验中的这个思路,先整个系统监控看能不能找到可疑对象,再对可疑对象进行进一步分析,好确认其具体的行为与性质
1.2基础知识
1.2.1恶意代码定义
假定将来工作中你觉得自己的主机有问题,就可以用实验中的这个思路,先整个系统监控看能不能找到可疑对象,再对可疑对象进行进一步分析,好确认其具体的行为与性质
1.2.2恶意代码特征
恶意的目的本身是计算机程序通过执行发生作用
1.2.3恶意代码分类
不感染的依附性恶意代码(特洛伊木马、逻辑炸弹)
不感染的独立性恶意代码(点滴器、繁殖器)
可感染的依附性恶意代码(病毒)
可感染的独立性恶意代码(蠕虫)
2 系统运行监控
2.1 Windows计划任务schtasks
要求:使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述一下分析结果。目标就是找出所有连网的程序,连了哪里,大约干了什么(不抓包的情况下只能猜),你觉得它这么干合适不。如果想进一步分析的,可以有针对性的抓包
输入以下命令,每 分钟记录下有哪些程序在连接网络。此命令完成后,每分钟就会监测哪些程序在使用网络,并把结果记录在netstatlog.txt文档里
schtasks /create /TN 20175315netstat /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > c: etstatlog.txt"
分别表示:
TN
是TaskName的缩写,我们创建的计划任务名是netstat5308;
sc
表示计时方式,我们以分钟计时填MINUTE;
TR
是Task Run,要运行的指令是netstat
bn
,b
表示显示可执行文件名,n
表示以数字来显示IP和端口;
>
表示输出重定向,将输出存放在c:
etstatlog.txt
文件中
在C盘下建一个文件c: etstatlog.bat,内容为:
date /t >> c: etstatlog.txt time /t >> c: etstatlog.txt netstat -bn >> c: etstatlog.txt
打开控制面板->管理工具->任务计划程序,找到创建的任务
打开属性,把框中原本的cmd改成c: etstatlog.bat
在常规一栏勾选:不管用户是否登录都运行、最高权限运行
等待一段时间后,我们打开之前创建的c: etstatlog.txt文件,可以看到:
通过参考“张竞予学姐”的博客,我们将文本中的数据导入Excel表格中得出图表如下:
由上图可见,联网最多的是360,其他还有qq、WeChat等软件,还有我当时挂在电脑上的英雄联盟游戏。。。
2.2 sysmon工具
要求:安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控自己主机的重点事可疑行为
下载sysmon工具
创建配置文件sysmon.xml,文件中写入以下指令:
<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">5334</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>
以管理员身份打开cmd,使用指令Sysmon.exe -i sysmon.xml安装
这样就是安装完成了。之后我们打开计算机管理>事件查看器>应用程序和服务日志>Microsoft>Sysmon>Operational
在这里我们看到时间线最早的一条日志就是找到我们创建的sysmon.xml配置文件
3 恶意软件分析
3.1
使用实验三生成的后门程序回连虚拟机。
打开事件查看器,刷新后根据运行时间就可以找到我们找到刚刚运行的后门的相关消息
这里我们还进行了一次抓包,开始捕包后在进行的回连。可以看到下图中完成了三次握手。
这里我们再次回到kali。使用webcam_snap进行拍照,可以看到事件查看器中马上就多了几条记录。其中有这样一条:
这里出现的conhost.exe,全称是Console Host Process, 即命令行程序的宿主进程。简单的说他是微软出于安全考虑引进的新的控制台应用程序处理机制。还出现了werfault.exe。该进程是windows系统自带的用于错误报告的程序。
因为家里原因,自身做实验时间跨度比较长,所以这里截图有些遗漏,希望老师理解!
3.2 静态分析
(1)使用VirusTotal分析恶意程序
如上图,在detail中可看到详情,如三个算法的摘要值、文件类型、文件格式
(2)使用PEiD分析恶意软件
对未加壳的后门程序检测
对加压缩壳的后门程序检测
对加密壳后门程序检测
从图中可以看出,加了压缩壳的后门文件是可以检测出来的,但加了加密壳的后门文件是无法检测出来的。
点击Task viewer查看进程我们可以看到在执行后门程序时,我们还可以发现会有很多.DLL
的文件,也就是动态链接库。
3.3 动态分析(SysTracer工具)
首先安装下载Sys Tracer
点击创建快照,我创建了三个进行比对,分别是:
Snapshot #1:不进行任何操作
Snapshot #2:运行后门程序并成功反弹连接
Snapshot #3:运行webcam_snap命令
下面是对比图:
这里是我们运行后门程序反弹连接后,可以看到新增加了我们植入的后门程序backdoor5315.exe,同时增删了许多文件。
对注册表文件的更改操作
增加了很多dll文件
从上图我们可以看到,通过对比,运行后门程序的时候我们会有很多文件的增删,而且当使用功能时候,注册表的信息也会被程序修改!
4 问题回答
(1)如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么。请设计下你想监控的操作有哪些,用什么方法来监控
答:1、使用schtasks对机器进行监听,在机器运行一段时间后整理监听记录。2、使用Sysmon,配置好想要查看的选项,比如网络连接、注册表信息等,通过所生成的日志进行查看分析。3、还可以用Systracer进行定向记录当前运行进程的进行“照片”比较,然后判断是否有可以的增删注册表的行为。
(2)如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息
答:使用Wireshark进行抓包分析,监视其与主机进行的通信过程;通过systracer工具进行相关的分析,查看它对注册表和文件的修改。
5 实验感想
本次实验相对前几次来讲操作反而简单一点,但是更重要的在于对比分析上,需要我去认真对待。对我而言比较难的就是数据很多很难找到准确的想要的数据,拿到了数据分析也是一大问题。虽然做起来确实有点累,但是这个累也让我更加了解了恶意代码。然后因为家里有一些事情导致这次实验的时间跨度比较大,有些地方细节有所遗漏,在这里向老师道歉。