2019-2020-2 20175334罗昕锐《网络对抗技术》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 20175334netstat /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > c:
etstatlog.txt"
- 其中各参数含义如下:
TN:Task Name
SC: SChedule type,本例中是MINUTE,以分钟来计时
MO: MOdifier
TR: Task Run,要运行的指令是 netstat -bn,b表示显示可执行文件名,n表示以数字来显示IP和端口
>:将结果输出到c盘下的netstatlog.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,依次点击
数据
——获取外部数据
——自文本
,选择netstatlog.txt,分列选择分隔符号(全选)
- 选中要分析的列,依次点击
插入
——数据透视图
,来生成一个数据透视图
- 由上图所示,联网最多的是QQ对应的“QQ.exe”,排名第二的是360浏览器广告插件对应的“sesvc.exe”,除此之外还可以看到微信、腾讯课堂、360等程序,没有发现什么其他可疑程序
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>
- 以管理员身份打开命令行,使用指令
Sysmon.exe -i sysmon.xml
安装
-
打开
打开事件查看器
,在左侧栏依次找到应用程序和服务日志
——Microsoft
——Sysmon
——Operational
-
运行实验二生成的后门文件,在虚拟机中获取Windows的命令行
-
查看到后门文件的日志
-
进程创建:
-从图中可得到以下信息:
程序:C:Users16487Documents
cat
catackdoor5334.exe
描述:ApacheBench命令行实用程序
产品:Apache HTTP服务器
- 回连:
- 从图中可得到以下信息:
程序:C:Users16487Documents
cat
catackdoor5334.exe
协议:tcp
源IP地址:192.168.186.1(Windows的IP)
目标IP地址:192.168.186.141(kali的IP)
目的端口:5334
源端口:5583
3 恶意软件分析
-
要求:分析该软件在(1)启动回连,(2)安装到目标机(3)及其他任意操作时,该后门软件
-
(1)读取、添加、删除了哪些注册表项
-
(2)读取、添加、删除了哪些文件
-
(3)连接了哪些外部IP,传输了什么数据(抓包分析)
-
3.1 静态分析
-
(1) 文件扫描(VirusTotal)
- 选择的是实验三生成的加压缩壳的后门程序
- 在
DETAILS
中可看到详情,如三个算法的摘要值、文件类型、文件格式
-
(2)文件格式识别(peid工具)
- 对未加壳的后门程序检测
- 对加壳的后门程序检测
- 在执行后门程序时,可以发现会运行很多
.DLL
的文件,也就是动态链接库
-
(3) 反编译、反汇编(PE Explorer工具)
- 文件头信息
- 调用的DDL文件
msvcrt.dll:微软在windows操作系统中提供的C语言运行库执行文件
kernel32.dll:32位动态链接库文件,属于内核级文件,它控制着系统的内存管理、数据的输入输出操作和中断处理,当Windows启动时,kernel32.dll就驻留在内存中特定的写保护区域,使别的程序无法占用这个内存区域
advapi32.dll:一个高级API应用程序接口服务库的一部分,包含的函数与对象的安全性,注册表的操控以及事件日志有关
wsock32.dll:Windows Sockets应用程序接口,用于支持很多Internet和网络应用程序
ws2_32.dll:Windows Sockets应用程序接口, 用于支持Internet和网络应用程序
- 版本信息(与PEID查看内容无异)
- 反汇编
3.2 动态分析(SysTracer工具)
-
点击创建快照,我创建了四个进行比对,分别是:
-
Snapshot #1:不进行任何操作
-
Snapshot #2:运行后门程序并成功反弹连接
-
Snapshot #3:运行mkdir命令
-
Snapshot #4:运行screenshot命令
-
-
对比Snapshot #1和Snapshot #2
- 修改了大量注册表信息(绿色为增加,红色为删除)
- 增删了大量dll文件
- 可以找到运行中的后门程序,查看IP和端口可以知道回连成功
-
对比Snapshot #2和Snapshot #3
- 同样修改了大量注册表信息
- 同样增删了dll文件
- 增删了文件
-
对比Snapshot #3和Snapshot #4
- 同样增删了dll文件
- 修改了注册表信息
3.3 抓包分析(WireShark工具)
- 回连时捕获的数据包
-
从 数据包中可以看到源IP、目的IP、源端口、目的端口;建立了完整的三次握手,且由win10主动连接kali
-
输入
ls
后捕获的数据包
- 从数据包中可以看到源IP、目的IP、源端口、目的端口以及传输的数据
4 实验收获与感想
- 通过本次实验,我明白了恶意代码不仅可以通过一些工具来进行静态分析,而且还可以通过动态的手段来防护。例如我们电脑自带的Windows Defender以及杀软的防护功能,但这些我们无法看见,所以我们可以通过SysTracer等工具来看到系统内的变化来进行防护;实验内容及操作并不难,也对之前实验的内容进行了复习,受益匪浅。
5 回答问题
-
(1)如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么。请设计下你想监控的操作有哪些,用什么方法来监控
- 用schtasks来建立一个任务,每隔一段时间对主机联网状态进行记录;通过sysmon工具记录有关的日志文件;使用Process Explorer工具,监视进程执行情况;使用Process Monitor工具,监视文件系统、注册表、进程的活动
-
(2)如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息
- 使用systracer工具分析恶意软件,查看其对注册表和文件的修改;使用Wireshark进行抓包分析,监视其与主机进行的通信过程;通过VirusTotal对文件进行分析