2018-2019-2 网络对抗技术 20165336 Exp4 恶意代码分析
2018-2019-2 网络对抗技术 20165336 Exp4 恶意代码分析
1.实践目标
1.1是监控你自己系统的运行状态,看有没有可疑的程序在运行。
1.2是分析一个恶意软件,就分析Exp2或Exp3中生成后门软件;分析工具尽量使用原生指令或sysinternals,systracer套件。
1.3假定将来工作中你觉得自己的主机有问题,就可以用实验中的这个思路,先整个系统监控看能不能找到可疑对象,再对可疑对象进行进一步分析,好确认其具体的行为与性质。
2.实践内容
1. 系统运行监控——计划任务(注:在虚拟机win7下完成)
- 使用
schtasks /create /TN netstat5336 /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > c:\netstatlog.txt"
命令创建计划任务netstat5336
TN
是TaskName的缩写,我们创建的计划任务名是netstat5318;sc
表示计时方式,我们以分钟计时填MINUTE;TR=Task Run
,要运行的指令是 netstat
bn,b表示显示可执行文件名,n表示以数字来显示IP和端口;>
表示输出重定向,将输出存放在c:\netstatlog.txt文件中
- 因为虚拟机里没什么东西,所有没有什么太多的任务
- 在C盘中创建一个
netstat5336.bat
脚本文件,写入以下内容
date /t >> c:\netstat5318.txt
time /t >> c:\netstat5318.txt
netstat -bn >> c:\netstat5318.txt
- 打开任务计划程序创建任务
- 点击操作并编辑,将“程序或脚本”改为我们创建的netstat5336.bat批处理文件,确定即可。
- 在任务管理器中把对应任务属性->条件->电源,关闭选项。注意:“使用最高权限运行”一定要选!!!
- 执行此脚本一定时间,查看到本机在该时间段内的联网记录:
- 数据分析:将存储的数据通过excel表进行整理,因为在虚拟机上做的软件比较少,从图可以看出来基本上都是阅览器使用的较频繁,其他很少。(数据分析部分借鉴博客)
2. 系统运行监控——利用Sysmon
-
使用sysmon工具监控系统(安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控自己主机的重点事可疑行为。)
-
过滤器事件的选项:
- 进程创建ProcessCreate的过滤事件选项有:
UtcTime, ProcessGuid, ProcessId, Image, CommandLine, CurrentDirectory, User, LogonGuid, LogonId, TerminalSessionId, IntegrityLevel, Hashes, ParentProcessGuid, ParentProcessId, ParentImage, ParentCommandLine
- 进程创建时间FileCreatTime的过滤事件选项有:
UtcTime, ProcessGuid, ProcessId, Image, TargetFilename, CreationUtcTime, PreviousCreationUtcTime
- 网络连接NetworkConnect的过滤事件选项有:
UtcTime, ProcessGuid, ProcessId, Image, User, Protocol, Initiated, SourceIsIpv6, SourceIp, SourceHostname, SourcePort, SourcePortName, DestinationIsIpv6, DestinationIp, DestinationHostname, DestinationPort, DestinationPortName
- 远程线程创建CreateRemoteThread的过滤事件选项有:
UtcTime, SourceProcessGuid, SourceProcessId, SourceImage, TargetProcessGuid, TargetProcessId, TargetImage, NewThreadId, StartAddress, StartModule, StartFunction
- 进程创建ProcessCreate的过滤事件选项有:
-
写配置文件
sysmon5336.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>
<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相当于黑名单。
- Image condition这里要根据自己使用的浏览器更改,例如谷歌浏览器是“chrome.exe”,IE浏览器是“iexplore.exe”,火狐浏览器是“firefox.exe”我用的是360浏览器和火狐浏览器写在exclude中就是不记录由360浏览器和火狐浏览器创建的进程。想知道自己浏览器进程名,可以查看“netstat5318.txt”中的记录。
- 进程创建时间类似,也是不创建浏览器创建进程的时间。
- 网络连接过滤掉了浏览器的网络连接、源IP为127.0.0.1的网络连接和目的端口为137的连接服务,并查看目的端口为80(http)和443(https)的网络连接。(137端口的主要作用是在局域网中提供计算机的名字或IP地址查询服务,一般安装了NetBIOS协议后,该端口会自动处于开放状态。127.0.0.1表示本机IP。)
- 远程线程创建记录了目标为explorer.exe、svchost.exe、firefox.exe、winlogon.exe和powershell.exe 的远程线程。(explorer.exe是Windows程序管理器或者文件资源管理器,svchost.exe是一个属于微软Windows操作系统的系统程序,是从动态链接库 (DLL) 中运行的服务的通用主机进程名称。winlogon.exe是Windows NT 用户登陆程序,用于管理用户登录和退出。powershell.exe是专为系统管理员设计的新 Windows 命令行外壳程序。该外壳程序包括交互式提示和脚本环境,两者既可以独立使用也可以组合使用。)
-
安装sysmon:执行命令
sysmon.exe -i C:\sysmon20165336.xml
,成功安装结果如下:
- 查看“事件查看器”,选择日志的位置,应用程序和服务日志/Microsoft/Windows/Sysmon/Operational,在这里,我们可以看到按照配置文件的要求记录的新事件,以及事件ID、任务类别、详细信息等。
- 利用Sysmon具体分析日志,这里我选择了自己实验二中生成的后门20165336.exe进行分析,启动回连、安装到目标主机。
- 分析后门文件:
- 因为该后门里的buf是经过加密得,所以虚拟机里对该文件扫描结果有些分析出来的是
?
这个符号。
- 因为该后门里的buf是经过加密得,所以虚拟机里对该文件扫描结果有些分析出来的是
- 还了解到Windows7下的cmd.exe是64bit的,kali回连获取的windows的cmd程序是32位的。
- SearchFilterHost.exe是桌面搜索引擎的索引程序,其主要作用是建立快速索引文件,让用户能够更好的搜索出电脑中的任意资料。它会在计算机空闲时自动扫描索引位置的文件名、属性信息和给定类别的文件内容,这些索引位置默认包括桌面、收藏夹、开始菜单、系统目录。
3.使用VirusTotal分析恶意软件
- 把生成的恶意代码放在VirusTotal进行分析
- 查看恶意代码基本属性:
- 查看该恶意代码的算法库支持情况:
4.使用PEiD分析恶意软件
- 没有加壳的后门程序
- 加过压缩壳的后门程序:
- 加过加密壳的后门程序:
5.使用PE Explorer分析恶意软件
PE Explorer
是功能超强的可视化Delphi、C++、VB程序解析器,能快速对32位可执行程序进行反编译,并修改其中资源。该软件支持插件,你可以通过增加插件加强该软件的功能,原公司在该工具中捆绑了UPX的脱壳插件、扫描器和反汇编器,可以查看程序头部信息(默认界面)、程序静态数据目录、程序结头信息、对程序反汇编等等,非常好用。
- 查看文件引用的dll库,可以通过
视图->引入
进行查看,如下图所示:
- KERNEL32.dll:控制着系统的内存管理、数据的输入输出操作和中断处理。
- msvcrt.dll:是微软编译软件的函数库。
- USER32.dll:Windows用户界面相关应用程序接口,用于包括Windows处理,基本用户界面等特性,如创建窗口和发送消息。它是一个对系统很关键或很可疑的文件,易遭受木马病毒破坏导致系统找不到此文件,出现错误提示框。
- WSOCK32.dll:Windows Sockets应用程序接口,用于支持很多Internet和网络应用程序。是一个对系统很关键或很可疑的文件,易遭受木马病毒破坏导致系统找不到此文件,出现错误提示框。
- 使用该工具查看了实验三生成的多个后门程序,发现使用veil生成的后门程序所引用的dll文件是最多的,而且所有的后门程序都会引用KERNEL32.dll这个文件。
6.使用Process Monitor分析恶意软件
- 打开软件,可以看到各个进程的详细记录
- 进程的详细信息和使用的库:
7.使用Process Explorer分析恶意软件
- 后门程序进行回连时可以在 Process Explorer工具中查看到其记录。
- 查看该进程使用的CPU,虚拟内存空间、物理内存空间、I/O等。
8.使用systracer分析恶意软件
-
在两台虚拟机中进行,windows虚拟机文件少,进行快照时间短,且易于分析。
-
下载SysTracer工具
-
点击右侧的take snapshot,存储快照
- 快照一:未移植后门程序,保存为Snapshot #1
- 快照二:移植后门程序,保存为Snapshot #2
- 快照三:运行后门程序并在kali中实现回连,保存为Snapshot #3
- 快照四:在kali中使用dir指令,保存为Snapshot #4
- 快照五:在kali中使用record_mic指令,保存为Snapshot #5
- 右下角的
compare键
或者View Differences Lists
比对各快照 - 分析:快照一和快照二:增加后门程序20165336E.exe
- 后门程序生成了很多文件、目录和键值
- 注册表项中有变化
- 进程中增加了一项与多媒体有关的应该是与record_mic指令相关
9.使用wireshark抓包分析恶意软件
- 过滤规则设置为ip.addr == 192.168.1.168,查看和虚拟机IP有关的数据包
- 有大量的TCP包跟回连相关,dir指令会有数据产生(PSH表示有DATA数据传输):
3.实验问题
(1)如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么。请设计下你想监控的操作有哪些,用什么方法来监控。
- 用windows自带的
schtasks
指令设置一个计划任务,隔一定时间记录主机的联网记录或者是端口开放、注册表信息。 - 用
Sysmon
,修改配置文件内容,记录有关的系统日志。 - 使用
Process Explorer
,对进程进行监控。 - 使用
Process Monitor
,监视系统有关活动。
(2)如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息。
- 可以用
Systracer
(分析有关系统异常);virscan
(对指定文件进行分析定性)。Wireshark
(进行抓包分析)。
4.遇到的问题
- Sysmon安装出错,原因在于用.txt编辑时版本号不对。
5.实验总结与体会
这次实验主要让我了解了一些恶意代码分析的工具程序,这些程序功能的强大引起了我极大的兴趣,让我在不断探索中,发掘恶意代码程序之间细节之处,这次实验只能说让我对这些软件有了了解,我相信只有进一步熟悉掌握这些软件,才能充分利用起来去解决实际问题,本次实验也提高了我动手能力和独立解决问题的思维,总体上没遇到很大的问题,在与同学的交流和查询学长学姐的博客中都能很好的解决,在不断地学习过程中有时要用到前面所学到的内容,这让我必须要融会贯通这些知识,让我自己不断得到锻炼,不断提高。