2019-2020-2 20175212童皓桢《网络对抗技术》
Exp1 恶意代码分析
目录
1. 实验目标
- 1.1是监控你自己系统的运行状态,看有没有可疑的程序在运行。
- 1.2是分析一个恶意软件,就分析Exp2或Exp3中生成后门软件;分析工具尽量使用原生指令或sysinternals,systracer套件。
- 1.3假定将来工作中你觉得自己的主机有问题,就可以用实验中的这个思路,先整个系统监控看能不能找到可疑对象,再对可疑对象进行进一步分析,好确认其具体的行为与性质。
2. 实验内容
2.1 系统运行监控
2.1.1 Windows计划任务schtasks
-
要求:
- 使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述一下分析结果。目标就是找出所有连网的程序,连了哪里,大约干了什么(不抓包的情况下只能猜),你觉得它这么干合适不。如果想进一步分析的,可以有针对性的抓包
-
具体步骤
-
使用以下命令创建一个计划任务netstat5212:
schtasks /create /TN netstat5212 /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > c:\netstatlog.txt"
-
其中
TN
:填写TaskName,即任务名
sc
:为计时方式,我们填MINUTE
TR
:为Task Run,即运行netstat
bn
:b为打印可执行文件名,n表示不进行转码,用数字打印IP和端口
>
:输出重定向,表示将输出存于该txt中
-
-
在C的根目录中创建netstat5212.bat脚本文件,具体内容为:
date /t >> c:\netstat5212.txt time /t >> c:\netstat5212.txt netstat -bn >> c:\netstat5212.txt
-
在
任务计划程序
中,双击刚才建立的任务netstat5212
。
-
在
常规
中选择使用最高权限运行,防止记录时弹窗报错
-
在操作选项中编辑启动程序操作,在
程序和脚本
中选择netstat5212.bat
,并将默认的参数清空
-
一段时间后我们可以在
netstat5212.txt
文本文件中看到这段时间的联网记录。足够分析后停止任务。
-
我们将该文本数据导入excel中,并生成柱状图进行分析。
根据这些程序不难判断大多数程序的来源:联网大户中:[crossproxy.exe],[leagueclient.exe]这两个是一个游戏相关的客户端程序(为测试用),[MicrosoftEdgeCP.exe]是自带的浏览器,[QQ.exe]这个顾名思义,[TXEDU.exe]这是腾讯课堂,另外还有一些为vmware虚拟机需要的一些,还有win自带的一些如WinStore之类的程序。
-
总之经过分析,目前没有什么可以软件程序进行联网或者后台传输。
-
2.1.2 sysmon工具
-
要求:
- 安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控自己主机的重点事可疑行为。实际日志的分析还需要发挥下自己的创造力,结合以前学过的知识如linux的文本处理指令等进行。分析的难点在于从大量数据中理出规律、找出问题。这都依赖对结果过滤、统计、分类等进一步处理,这就得大家会什么用什么了。
-
步骤:
-
下载老师提供的sysinternal,解压后将其中的
sysmon.exe
拷贝到cmd的目录下(管理员权限的cmd),我的是C://Windows/System32
-
创建xml文件
sysmon.xml
(同样可在Linux中创建再传回来),并拷贝到刚才相同的目录下,代码如下:<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> <!-- 源端口和IP包含下列的 --> <SourcePort condition="is">137</SourcePort> <SourceIp condition="is">127.0.0.1</SourceIp> </NetworkConnect> <NetworkConnect onmatch="include"> <!-- 目的端口和IP包含下列的 --> <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
记录查看日志操作 -
我们使用实验二中利用ncat.exe使Linux获取Win Shell的方法,进行回连操作。如下图,我们可以看到ncat的运行以及获取cmd的日志。
-
在Linux中用dir获取文件信息,我们在日志中可以看到下图所示
-
在Linux中使用ping命令,并查看日志。可以看到Linux的ip在ping Win。
-
2.2 恶意软件分析
2.2.1 静态分析
① 恶意代码扫描(VirusTotal)
- 类似于实验三后门程序的扫描,我们把实验三经过加壳的后门程序
veil_thz.upxed.exe
进行线上扫描,得到的结果如下图:
- 可以看到后门的检出率很高。进一步分析,它也给出了该程序不同算法下的哈希值,文件类型,以及加壳方式(UPX)等基本信息。
② 文件格式识别(PEID)
PEiD(PE Identifier)是一款著名的查壳工具,其功能强大,几乎可以侦测出所有的壳,其数量已超过470 种PE 文档
的加壳类型和签名
- 下载PEid,并运行其可执行文件
PEID V0.95.exe
。 - 浏览扫描实验三中经过加壳操作的后门程序
thz5212_upxed.exe
,得到的反馈如下图所示:
- 我们可以看到PEiD扫描所选择的入口点(EP段),连接器版本之类的,扫描软件相关的信息。当然重要的还是扫描结果,可以看到加壳的版本是
UPX v0.89.6
。 - 我们再尝试扫描一下实验三中没有经过加壳操作的后门程序
20175212_backdoor.exe
- 可以看到PESniffer中提示Unknown即没有检测到加壳操作,PEiDDSCAN中扫描出该后门是通过调用.dll文件的方式反弹连接控制端。
③ 反编译、反汇编(PE Explorer)
PE Explorer是功能超强的可视化Delphi、C++、VB程序解析器,能快速对32位可执行程序进行反编译,并修改其中资源。
-
下载PE Explorer后运行可执行文件
pexplorer.exe
。 -
打开后门程序
20175212_backdoor.exe
,可以看到文件的头信息
-
选择
视图
->引入
,看一看到程序调用的DLL文件,(可以选择查看详细信息),其中:
msvcrt.dll
:微软在windows操作系统中提供的C语言运行库执行文件
kernel32.dll
:属于内核级文件,它控制着系统的内存管理、数据的输入输出操作和中断处理,是必需
advapi32.dll
:一个高级API应用程序接口服务库的一部分,包含的函数与对象的安全性,注册表的操控以及事件日志有关,会受到病毒的侵扰及篡改,导致系统文件丢失、损坏
wsock32.dll
:Windows Sockets应用程序接口,用于支持很多Internet和网络应用程序,是一个对系统很关键或很可疑的文件。
ws2_32.dll
:Windows Sockets应用程序接口。一些病毒会在杀毒软件目录中建立伪"ws2_32.dll"的文件或文件夹,在杀毒软件看来这是程序运行需要的文件而调用,这个所谓的“文件”又不具备系统"ws2_32.dll"文件的功能,所以杀毒软件等就无法运行了而提示:应用程序正常初始化失败。 -
选择
视图
->资源
,可以看到版本、结构之类的文件本身相关的信息。
-
选择
工具
->反汇编
,可以查看该程序经过反汇编后得到的结果。(这种已经是比较底层的分析方法了,我也没法从中读出什么特殊的信息)
2.2.2 动态分析
①快照对比(SysTracer)
SysTracer是一款集成HIPS以及进程行为跟踪功能的安全辅助工具,它可以跟踪并监视进程对整个系统的修改行为,包括文件操作,注册表操作,内存操作和危险行为。
-
新建快照,我这里能够有效对比的快照有三个,分别是:
- Snapshot #1:无任何操作
- Snapshot #2:运行了后门程序并成功获取了shell
- Snapshot #3:在控制端使用Win shell命令,以及msf命令
getuid
、screenshot
-
Snapshot #1 对比Snapshot #2
- 查看两快照的对比,选择“应用程序”页面,可以看见如下图,
20175212_backdoor.exe
程序标绿,表示为新建内容。
- 查看详细内容,可以看见新建的部分基本都是调用系统的操作,其中我发现了一项,描述为:
远程过程调用运行时
。基本可以确定该后门的一个可用性是基于这个系统调用进行。
- 直接查看
差异列表
,查看注册表差异,可以直观的看见后门启动并回连后其注册表信息发生了一些改动。
- 查看两快照的对比,选择“应用程序”页面,可以看见如下图,
-
Snapshot #2 对比Snapshot #4
-
我的应用程序列表中没有明显的改动,因此不做分析,直接分析注册表
-
首先可以看见一个
FlfGenpre.rkr
的文件进行了改动。这个.rkr文件是Win下对exe文件采用顺序加密后得到的文件类型,这里我推测的应该是在运行过程中对后门程序自身的保护。
-
我们在获取Win Shell后在此步使用了类似于
dir
之类的命令,这里我们可以看到cmd的键值也发生了一定的更改,还有读者修订信息。
-
另外注册表的UserAssist密钥下存储了一些Windows程序历史记录有关活动以及Windows用户启动的程序的详细信息,这个下面的修改也有可能发生一些远程或是非法的访问操作。
如果有人设法获得本地访问计算机或远程访问注册表,则注册表中UserAssist密钥下存储的信息可能会成为隐私和安全风险。此外,您可以使用它们来确定是否有权访问PC的另一个用户在缺席的情况下启动了程序。
-
②网络监控(Wireshark)
- 应用实验二中利用ncat使两端进行文本传输
- Win下监听,Linux反向连接windows,以下为抓到的一些包
- 可以看到抓到大量的
[rst,ack]
包,这是在传输过程中流量控制机制启动所产生的一个包,文本传输过程中的一个停止发包的表示,[retransmission]
包则是”可以继续发送“的标志。
- 包中可以看到源,目的ip,以及我之前所设的用于通信的端口号还有一些数据包本身相关的基本信息。可是没有抓到具体数据内容传输的包,可能是被ncat处理掉了。
3、答老师问
3.1 实验收获与感想
这次实验 相对于之前地几次感觉实用性更高一点,是在比较贴*于*常真实使用环境地情况下对一些可疑程序行为进行扫描和分析,之后如果有遇到情况的话这些软件也还可以拿出来复习使用一下。当然这种可以说是“非智能”型的安全工具,他能起到的作用与价值更是要取决于使用者对于这些信息的敏感度和这方面的经验。相对于那些用户体验极好的杀软而言,人工扫描分析的方法上限很高,下限也挺低。。
3.2 如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么。请设计下你想监控的操作有哪些,用什么方法来监控。
答:要实际操作的话,我首先肯定用Win Defender或者火绒之类的先来个全盘大查杀之类的,如果没有什么明显结果的话,可以从我们这次实验学习到的入手:
- 使用Windows计划任务schtasks对一段特定时间的程序行为进行记录分析。
- 使用sysmon查看日志并进行分析。
- 使用sysTracer进行动态的快照对比,寻找可疑的操作。
- 用网络嗅探器分析数据传输上可能出现的问题。
3.3 如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息。
答:首先肯定也是用第三方软件对这个程序扫描,如果也是没有明显结果的话:
- 使用PEiD和PE Exploer对一个指定的程序进行反汇编,判断是否加壳等一些敏感信息
- 使用virustotal网站等在线提供扫描服务的网站对这些可疑程序进行查杀。
- 类似于上面提到的扫描方法,当然有了实体后可以更加有针对性地对得到的数据进行分析。
4、遇到的问题及其解决方法
- 4.1 问题一: win下无法直接创建脚本文件,建txt后改文件也会报错。
- 解决方法:可以在Linux环境的虚拟机下,使用文本编辑器写入内容,并保存为bat文件,复制进win的指定目录下即可。
- 解决方法:可以在Linux环境的虚拟机下,使用文本编辑器写入内容,并保存为bat文件,复制进win的指定目录下即可。
5、参考资料
https://gitee.com/wildlinux/NetSec/blob/master/ExpGuides/0x25_MAL_动态分析__Windows计划任务schtasks.md
https://www.cnblogs.com/zxy20175227/p/12692568.html
https://www.iteye.com/problems/88453