2019-2020-2 网络对抗技术 20175236 EXP4 恶意代码分析
Exp4 恶意代码分析 20175236
学习目标
(1) 监控你自己系统的运行状态,看有没有可疑的程序在运行。
(2) 分析一个恶意软件,就分析Exp2或Exp3中生成后门软件;分析工具尽量使用原生指令或sysinternals,systracer套件。
(3) 假定将来工作中你觉得自己的主机有问题,就可以用实验中的这个思路,先整个系统监控看能不能找到可疑对象,再对可疑对象进行进一步分析,好确认其具体的行为与性质
学习内容
1、系统运行监控(2分)
-
使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述一下分析结果。目标就是找出所有连网的程序,连了哪里,大约干了什么(不抓包的情况下只能猜),你觉得它这么干合适不。如果想进一步分析的,可以有针对性的抓包。
-
安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控自己主机的重点事可疑行为。
实际日志的分析还需要发挥下自己的创造力,结合以前学过的知识如linux的文本处理指令等进行。分析的难点在于从大量数据中理出规律、找出问题。这都依赖对结果过滤、统计、分类等进一步处理
2、恶意软件分析(1.5分)
分析该软件在
-
启动回连
-
安装到目标机
-
及其他任意操作时(如进程迁移或抓屏,重要是你感兴趣)。该后门软件
-
读取、添加、删除了哪些注册表项
-
读取、添加、删除了哪些文件
-
连接了哪些外部IP,传输了什么数据(抓包分析)
-
该实验重点在“分析”,不是“如何使用某软件”。组长、课题负责人要求写细一点,其他人可以重点放在分析上
实验环境
- Kali
- Windows7
基础问题回答
1、如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么。请设计下你想监控的操作有哪些,用什么方法来监控
- 可以利用Windows的schtasks建立计划任务
- 可以利用sysmon,配置需要监控的端口、注册表信息、网络连接等信息,通过其生成的日志文件进行查看
- 可以利用wireshark进行抓包分析
2、如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息
- 可以利用wireshark查看所抓到的数据包的具体信息
- systracer进行快照的对比(注册表、文件等)
实验步骤
1、利用Windows计划任务schtasks指令监控系统运行
- 打开cmd,输入指令:
schtasks /create /TN 20175236_netstat /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > c:\netstatlog20175236.txt
- TN:Task Name,本例中是netstat
- SC: SChedule type,本例中是MINUTE,以分钟来计时
- MO: MOdifier
- TR: Task Run,要运行的指令是 netstat -bn,b表示显示可执行文件名,n表示以数字来显示IP和端口
创建计划任务20175236_netstat,记录每1分钟计算机联网情况:
- 在C盘目录下,创建一个名为netstatlog20175236.txt的文本文件
- 打开此文本文件输入以下内容,然后保存:
date /t >> c:\netstatlog20175236.txt
time /t >> c:\netstatlog20175236.txt
netstat -bn >> c:\netstatlog20175236.txt
- 将后缀名改为.bat后
-
右键选择以管理员身份运行
-
打开任务计划程序,可以看到创建的任务20175236_netstat
-
双击打开这个任务,点击
操作
,点击编辑
-
将
程序或脚本
改为刚才创建好的C:\netstatlog20175236.bat
-
在属性中
常规
一栏最下面勾选使用最高权限运行
-
然后就能够在C盘目录下的netstatlog20165201.txt文件中看到记录的联网记录了
-
然后我们打开Excel,点击
数据
->导入数据
,选择netstatlog20175236.txt
-
选择分隔符号
-
分隔符这一栏全选中
-
列数据格式选择常规
-
点击表中的左上角一格,然后确定
-
导入成功啦!!!
-
然后我们用数据透视图进行汇总,结果如下图:
-
发现联网最多的软件是TCP,这是一种面向连接(连接导向)的、可靠的、基于字节流的运输层通信协议
-
这里我们还可以找到wpscenter.exe,它是wps软件的一个服务的进程。没发现什么其他可疑的程序,既然这样我们就分析一下wpscenter.exe连了哪里,大约干了什么吧。
通过查看表格,我们发现它连接了外部网络49.4.42.20:443,猜测他就是不断的检测系统文件有没有更新,然后往云端传送吧。
2、利用sysmon工具监控系统
-
下载地址:https://docs.microsoft.com/zh-cn/sysinternals/downloads/sysmon
-
一键安装命令(需要以管理员身份运行cmd):
sysmon -accepteula -i -n
-
用
sysmon -c
命令查看配置:
-
创建配置文件
Sysmon20175236.xml
:
<Sysmon schemaversion="3.10">
<!-- 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>
<Image condition="end with">firefox.exe</Image>
<SourcePort condition="is">137</SourcePort>
<SourceIp condition="is">127.0.0.1</SourceIp>
<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">firefox.exe</TargetImage>
<TargetImage condition="end with">svchost.exe</TargetImage>
<TargetImage condition="end with">winlogon.exe</TargetImage>
<SourceImage condition="end with">powershell.exe</SourceImage>
</CreateRemoteThread>
<ProcessCreate onmatch="include">
<Image condition="end with">chrome.exe</Image>
<Image condition="end with">iexplorer.exe</Image>
<Image condition="end with">firefox.exe</Image>
</ProcessCreate>
<FileCreateTime onmatch="exclude" >
<Image condition="end with">firefox.exe</Image>
</FileCreateTime>
<FileCreateTime onmatch="include" >
<TargetFilename condition="end with">.tmp</TargetFilename>
<TargetFilename condition="end with">.exe</TargetFilename>
</FileCreateTime>
</EventFiltering>
</Sysmon>
-
用
Sysmon.exe -c C:\Sysmon20175236.xml
命令指定配置文件,但是报错说:版本不匹配
-
更改 Sysmon20165201.xml 中的配置,即改变版本号为4.20即可,如下图:
-
打开
开始
菜单,搜索事件查看器
并打开,在左侧控制台树按照事件查看器
->应用程序和服务日志
->Microsoft
->Windows
依次展开,找到Sysmon
下的Operational
并双击打开:
-
生成一个后门程序 testbackdoor.upxed.exe ,用Kali攻击机的msfconsole回连。0:48:39时发现了一个名为360tray.exe的程序,所以它就是360检测到危险时运行的程序。
3、利用VirusTotal分析恶意软件
-
我们把之前刚刚生成的
testbackdoor.upxed.exe
扔到VirusTotal里面进行分析 -
点击
Details
以查看相关基本属性以及加壳情况:
我们可以看到这个后门程序的基本信息:如MD5值、SHA-1值、文件类型以及文件大小 -
然后是加壳情况
用的是UPX压缩壳 -
然后是算法库支持情况
4、利用Process Explorer分析恶意软件
- 我们在Windows7中运行之前的后门程序testbackdoor.upxed.exe,然后在kali中回连,然后在Process Explorer中查看相关记录信息:
- 输入
webcam_snap
使用摄像头进行拍照 - 用
record_mic
命令录一段音频 - 用
webcam_stream
命令录像
5、利用Process Monitor分析恶意软件
-
打开Process Mointor
-
点击
filter
->filter
在弹出的对话框中Architecture
下拉框,选择Process Name
填写要分析的应用程序名字,我这里分析之前生成的后门程序testbackdoor.upxed.exe,然后点击add 最后点击右下角的apply -
我们在Windows7中运行之前的后门程序testbackdoor.upxed.exe,然后在kali中回连,然后在Process Monitor中查看相关记录信息:
我们可以看到,在回连的这段时间里,PID为2712,这与之前我们查看的信息符合,路径是从本机(Windows7)传到192.168.0.105(Kali)的5201端口
-
这里我只分析了一个后门程序,同理我们还可以分析其他可疑的程序,过程类似
6、利用PEiD分析恶意软件
-
双击打开PEiD.exe
-
然后在文件一栏的右侧打开我之前生成的后门程序testbackdoor.upxed.exe,可以看到EP段一栏里面写着所加的壳为UPX1,版本是UPX 0.89.6
-
点击
>>
按钮可以查看详细信息:
-
我们试试打开未加壳的文件 ncat.exe
果然显示什么都没找到!
遇到的问题
1、无法保存到当前目录
解决办法:以管理员身份打开记事本进行保存
实验心得
这次实验让我学会了如何用各种软件进行分析,软件的使用方法是次要的,主要是学会如何进行分析,要找到属于自己的思路,虽然一开始入手较为困难,但是熟练了之后还是可以的。
这次的实验没有实验指导,完全是自己查找相关软件的用法,看看各种软件的教程,学习如何进行分析,比如说利用Process Monitor分析恶意软件,我就在百度上查找Process Monitor的教程,然后通过过滤查找单一的程序名,来分析我生成的后门程序testbackdoor.upxed.exe。
可以说收获非常大!!