2019-2020-2 20175322周弋鸿 《网络对抗技术》Exp4 恶意代码分析
一、实践目标与内容
1.实践目标
- 监控你自己系统的运行状态,看有没有可疑的程序在运行
- 分析一个恶意软件,就分析Exp2或Exp3中生成后门软件;分析工具尽量使用原生指令或sysinternals,systracer套件
- 假定将来工作中你觉得自己的主机有问题,就可以用实验中的这个思路,先整个系统监控看能不能找到可疑对象,再对可疑对象进行进一步分析,好确认其具体的行为与性质
2.实践内容
- 系统运行监控
- 使用如计划任务每隔一分钟记录电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述分析结果。目标:找出所有连网的程序的连接和操作,这个操作是否合适合理,并有针对性的抓包做进一步的分析
- 安装配置
sysinternals
中的sysmon
工具,设置合理的配置文件,监控主机的重点是可疑行为
- 恶意软件分析
- 分析该软件在启动回连,安装到目标机及其他任意操作时(如进程迁移或抓屏),该后门软件:
- 读取、添加、删除了哪些注册表项
- 读取、添加、删除了哪些文件
- 连接了哪些外部IP,传输了什么数据(抓包分析)
- 分析该软件在启动回连,安装到目标机及其他任意操作时(如进程迁移或抓屏),该后门软件:
二、实践步骤
1.使用schtasks指令监控系统
- 使用
schtasks
指令添加计划任务nestat5322
,命令中的参数分别为:TN
是TaskName的缩写,我们创建的计划任务名是netstat5322
sc
表示计时方式,我们以分钟计时填MINUTETR
是Task Run,要运行的指令是netstatbn
,b
表示显示可执行文件名,n
表示以数字来显示IP和端口>
表示输出重定向,将输出存放在c:\netstatlog.txt
文件中
- 在C盘中创建一个名为
netstat5322.bat
的脚本文件,写入以下内容:
date /t >> c:\netstat5322.txt
time /t >> c:\netstat5322.txt
netstat -bn >> c:\netstat5322.txt
- 开任务计划程序,可以看到新创建的这个任务
- 双击此任务,点击
操作
->编辑
,将程序或脚本
改为我们创建的netstat5322.bat
文件,点击确定
- 在
常规
中勾选不管用户是否登录都要运行
、使用最高权限运行
- 等待脚本执行(保持开机联网状态),我等待了两个多小时,可以在
netstat5322.txt
文件中查看到这段时间内的联网记录 - 参考学姐的博客将存储的数据导入到excel表中进行整理,得到图表:
- 从图表中我们可以看出,联网最多的程序有360浏览器、腾讯课堂(上网课时把程序挂着的)和几个系统进程(我没想到win10的Contanar进程没使用时也在联网)等。总体来讲,没有发现什么可疑的程序
2.使用sysmon工具监控系统
- 下载老师的资源并解压
- 因为系统是64位的系统所以选择
Sysmon64.exe
,右键属性
在详细信息
查看产品版本(老师这个有点问题,显示4.12,配置文件要写成3.10才能成功)
- 在
SysinternalsSuite201608
所在目录下创建sysmon20175322.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>
<ProcessCreate onmatch="include">
<ParentImage condition="end with">cmd.exe</ParentImage>
</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>
exclude
相当于白名单,不用记录。include
相当于黑名单。onmatch
意为匹配ProcessCreate
表示进程创建NetworkConnect
是网络连接FileCrete Time
是进程创建时间- 以管理员身份运行
CMD
在Sysmon64.exe
目录下执行ysmon64.exe -i sysmon20175322.xml
- 打开
计算机管理
,查看事件查看器
,在应用程序和服务日志/Microsoft/Windows/Sysmon/Operational
中,我们可以看到按照配置文件的要求记录的新事件,以及事件ID、任务类别以及详细信息
3.恶意软件分析
- 使用恶意软件(实验二中的后门程序进行回连),以日志信息和Wireshark捕包信息分析系统进程规律
- Kali系统与Windows系统Ping通时的
ICMP
包:
MSF
反弹连接时的TCP
包:
dir
查看磁盘中后门程序目录下的文件,日志没有更新:
- 使用
webcam_snap
进行图片抓取:
wireshark看到有大量数据包传输,可以判断有DATA数据在传输
日志更新了4条,可以看出是虚拟机在调用
screenshot
截屏,日志更新三条:
从事件属性来看应该是后门程序调用了系统程序进行截屏
- 使用
getuid
进行提权操作,日志更新了2条:
SearchFilterHost.exe
是桌面搜索引擎的索引程序,主要作用是建立快速索引文件,让用户能够更好的搜索出电脑中的任意资料。它会在计算机空闲时自动扫描索引位置的文件名、属性信息和给定类别的文件内容,这些索引位置默认包括桌面、收藏夹、开始菜单、系统目录
总的来看,在没有针对性地绕过Sysmon
监控的情况下,Sysmon
也不能完全监控到恶意软件的攻击行为
- 下载SysTracer并安装(老师资源中同样有)
- 输入相应端口:
- 可以根据实际情况只勾选相应的内容以精简分析过程,我没有分盘所以全选
- 点击右侧的
take snapshot
,存储快照:- 快照一(Snapshot #1):未移植后门程序时
- 快照二(Snapshot #2):成功回连后
- 快照三(Snapshot #3):执行
MSF
相关的操作后 - 快照四(Snapshot #4):结束回连后
- 在回连成功后,即快照二中,可以在
Running Processes
里找到植入的后门程序,并且查看端口号及两端IP:
- 点击右下角的
compare
或者View Differences Lists
比对各快照 - 比较
#1
与#2
,可以发现加入了大量的注册表值还有相关的进程,可以看到SysTracer程序和虚拟机正在运行:
- 同时增删了许多的文件,主要都是dll文件:
- 能够找到运行中的后门程序,查看到的相应IP和相应端口可以知道回连成功:
- 比较
#2
与#3
,没有发现特别明显的相关变化,有一些增删变化:
- 比较
#3
与#4
,相关的进程、文件和键值都有删除:
- 其他静态分析:
-
使用PEiD分析恶意软件:
-
PEiD(PE Identifier)是一款著名的查壳工具,其功能强大,几乎可以侦测出所有的壳,其数量已超过470种PE文档的加壳类型和签名
-
查看加了压缩壳的后门文件:
-
查看加了加密壳的后门文件:
-
可以看出,加了压缩壳的后门文件是可以检测出来的,但加了加密壳的后门文件是无法检测出来的
-
使用VirusTotal检查恶意代码,可以查看MD5、SHA-1、文件类型、文件大小、加壳方式等相关信息:
-
DETALS
Basic Properties
MD5 eacc284432b24fc3124b446d1a1a4f83
SHA-1 8f4b847e68a7ad96be2cdeff769f73f90b4eb565
SHA-256 ea3ce855bdb1a187b716f730780f8f2239674c03aefb0fa3370274b91c261362
Vhash 01504d0d765d1bz3!z
Authentihash 044e10494d5bd57b239ab605f76809356707af45bd2701701c6d5d8981029507
Imphash 17a4bd9c95f2898add97f309fc6f9bcd
SSDEEP 3072:r85ys92PW2UZp5VR+Dm0aW/MGqvGQQQt:6yTQBVROm0aW/MD7
File type Win32 EXE
Magic PE32 executable for MS Windows (GUI) Intel 80386 32-bit
File size 113.50 KB (116224 bytes)
History
Creation Time 2020-03-31 07:05:50
First Submission 2020-03-31 07:39:54
Last Submission 2020-03-31 07:39:54
Last Analysis 2020-03-31 07:39:54
Names
zyh_upxed_Hyperion.exe
Portable Executable Info
Header
Target Machine Intel 386 or later processors and compatible processors
Compilation Timestamp 2020-03-31 07:05:50
Entry Point 439788
Contained Sections 4
Sections
Name Virtual Address Virtual Size Raw Size Entropy MD5
.bss 4096 319488 0 0 d41d8cd98f00b204e9800998ecf8427e
.data 323584 99872 100352 7.99 c5a811b729b12a4315252ff04f82d4fb
.text 425984 14057 14336 5.17 0db3da594560fbdee7cab4ec727c9f7b
.idata 442368 136 512 1.29 260d24d41289a4ffd343ab548a3e76cc
Imports
KERNEL32.DLL
ExifTool File Metadata
CodeSize 14336
EntryPoint 0x6b5ec
FileType Win32 EXE
FileTypeExtension exe
ImageFileCharacteristics No relocs, Executable, No line numbers, No symbols, 32-bit
ImageVersion 0.0
InitializedDataSize 100864
LinkerVersion 1.71
MIMEType application/octet-stream
MachineType Intel 386 or later, and compatibles
OSVersion 1.0
PEType PE32
Subsystem Windows GUI
SubsystemVersion 4.0
TimeStamp 2020:03:31 08:05:50+01:00
UninitializedDataSize 0
三、实践报告
1.遇到的问题
- 1.老师资源中给的sysmon程序安装时显示出错,显示版本与实际不符:
- 解决方案:修改配置文件第一行标签为3.10,再次安装。
- 2.以管理员身份运行
CMD
时,无法转换到放在桌面的sysmon64.exe
程序文件夹。 - 解决方案:网上查询后,windows系统下使用命令
cd /d %userprofile%\desktop
可以转移到桌面:
- 3.将文本导入excel时,使用的是Power Query编辑器,没有找到
连续分隔符号视为单个处理选项
,以空格为分隔符会产生多列空白列。 - 解决方案:网上查询无果后,选择
主页
->替换值
,将两个空格、三个等等依次替换为一个空格,再进行分隔符分列。
2.基础问题回答
-
1.如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所以想监控下系统一天天的到底在干些什么。请设计下你想监控的操作有哪些,用什么方法来监控。
答:使用schtasks定时监听,一段时间后统计数据;使用Sysmon编写配置文件监视相应的进程情况,记录相关的日志文件分析疑似恶意代码;使用Systracer进行快照对几次系统状态进行比较,系统是否有有可疑的增删注册表行为。 -
2.如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息。
答:使用wireshark进行捕包分析,查看它连接到了哪些IP、与外部进行了哪些通信;使用Systracer进行分析,查看其对注册表、文件和进程内容的修改;使用VirusTotal(对一些非官方渠道下载的软件)进行检查。
3.实验感想
- 通过本次实验,我学会了如何让计算机周期性执行一个任务,生成事件日志的并利用excel对数据加以分析。通过参考一些学长学姐的报告,对查出来陌生文件、进程或是注册表有了一些了解,但还有很多需要在网上逐一查询。这个结果让我明白自己对计算机知识还是相当匮乏,今后需要继续学习。通过自己动手实践,对恶意代码有了初步的理解。