2019-2020-2 20175202葛旭阳《网络对抗技术》 Exp4 恶意代码分析
2019-2020-2 20175202葛旭阳《网络对抗技术》 Exp4 恶意代码分析
一、实验任务
1.实践目标:
①监控你自己系统的运行状态,看有没有可疑的程序在运行。
②分析一个恶意软件,就分析Exp2或Exp3中生成后门软件;分析工具尽量使用原生指令或sysinternals,systracer套件。
③假定将来工作中你觉得自己的主机有问题,就可以用实验中的这个思路,先整个系统监控看能不能找到可疑对象,再对可疑对象进行进一步分析,好确认其具体的行为与性质。
2.实践内容:
(1)系统运行监控
①使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述一下分析结果。目标就是找出所有连网的程序,连了哪里,大约干了什么(不抓包的情况下只能猜),你觉得它这么干合适不。如果想进一步分析的,可以有针对性的抓包。
②安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控自己主机的重点事可疑行为。
(2)恶意软件分析
分析该软件在(1)启动回连,(2)安装到目标机(3)及其他任意操作时(如进程迁移或抓屏,重要是你感兴趣)。该后门软件
③读取、添加、删除了哪些注册表项。
④读取、添加、删除了哪些文件。
⑤连接了哪些外部IP,传输了什么数据(抓包分析)。
该实验重点在“分析”,不是“如何使用某软件”。组长、课题负责人要求写细一点,其他人可以重点放在分析上。
二、实验步骤
【任务一:使用schtasks指令监控系统】
1.使用命令schtasks /create /TN netstat5202 /sc MINUTE /MO 5 /TR "cmd /c netstat -bn c:\netstatlog.txt"
来创建计划任务netstat5202
其中;
①TN
是TaskName的缩写,我们创建的计划任务名是netstat5202
。
②sc
表示计时方式,我们以分钟计时填MINUTE。
③TR
表示Task Run,要运行的指令是netstat。
④netstat -bn
,其中b
表示显示可执行文件名,n
表示以数字来显示IP和端口。
⑤>
表示输出重定向,将输出存放在c:\netstatlog.txt
文件中。
2.在C盘中创建一个netstat5202.bat
文件,写入以下内容然后修改文件格式为.bat
文件,即脚本文件。
date /t >c:\netstat5202.txt
time /t >c:\netstat5202.txt
netstat -bn >c:\netstat5202.txt
3.我们打开Windows下的任务计划程序,就可以看到我们刚刚创建的任务netstat5202.bat
;
4.双击这个任务,点击操作并编辑,将“程序或脚本”改为我们创建的netstat5202.bat
批处理文件,点击确定;
5.下面我们设置其他选项,在"条件"选项卡中可以看到,电源选项中默认操作为只有在计算机使用交流电源时才启动此任务 ,那么使用电池电源时就会停止任务。为了我们统计足够多的数据,这个选项取消掉。
6.在常规中选择使用最高权限运行
,并确定;
7.执行此脚本一定时间,就可以在C盘中自动生成的netstat5202`.txt
文件中查看到本机在该时间段内的联网记录;
8.将数据以自文本的方式,导入到Excel表中进行整理,如图;
【任务二:使用sysmon工具监控系统】
1.sysmon是微软Sysinternals套件中的一个工具,它以系统服务和设备驱动程序的方法安装在系统上,并保持常驻性。sysmon用来监视和记录系统活动,并记录到windows事件日志,可以提供有关进程创建,网络链接和文件创建时间更改的详细信息。使用sysmon工具前首先要配置文件。
2.sysmon中的时间过滤器包括:
①ProcessCreate 进程创建
②FileCreateTime 进程创建时间
③NetworkConnect 网络链接
④ProcessTermina 进程结束
⑤DriverLoad 驱动加载
⑥ImageLoad 镜像加载
⑦CreateRemoteTh 远程线程创建
⑧RawAccessRead 驱动器读取
⑨RegistryEvent 注册表事件
⑩FileCreateStre 文件流创建
3.选择的过滤器事件选项:
①ProcessCreate
UtcTime, ProcessGuid, ProcessId, Image, CommandLine, CurrentDirectory, User, LogonGuid, LogonId, TerminalSessionId, IntegrityLevel, Hashes, ParentProcessGuid, ParentProcessId, ParentImage, ParentCommandLine
②FileCreateTime
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
4.下载老师所给的资源SysinternalsSuite.zip,解压。sysmon就在解压好的文件夹中。
5.在该目录下配置文件sysmon5202.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>
<Image condition="end with">firefox.exe</Image>
</ProcessCreate>
<ProcessCreate onmatch="include">
<ParentImage condition="end with">cmd.exe</ParentImage>
</ProcessCreate>
<FileCreateTime onmatch="exclude" >
<Image condition="end with">chrome.exe</Image>
<Image condition="end with">firefox.exe</Image>
</FileCreateTime>
<NetworkConnect onmatch="exclude">
<Image condition="end with">chrome.exe</Image>
<Image condition="end with">firefox.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">firefox.exe</TargetImage>
<TargetImage condition="end with">winlogon.exe</TargetImage>
<SourceImage condition="end with">powershell.exe</SourceImage>
</CreateRemoteThread>
</EventFiltering>
</Sysmon>
其中;
①ProcessCreate表示进程创建,
②NetworlConnect是网络连接,
③CreateRemote是远程线程创建,
④FileCreate Time是进程创建时间。
⑤在onmatch后面跟的参数include和exclude分别表示“免检”和“必检”名单。免检名单中在统计时忽略掉,必检名单在检测时需要进行匹配。
6.使用管理员权限运行cmd,进入sysmon
所在文件夹中,执行如下命令:Sysmon.exe -i sysmon20175202.xml
;
7.打开事件查看器,在左侧栏中选择应用程序和服务日志
->Microsoft
->Sysmon
->Operational
;
我们可以看到netstat5202.xml
配置文件。
【任务三:恶意软件分析】
静态分析
①文件扫描
②文件格式识别
③字符串提取
④反汇编
⑤反编译
⑥逻辑结构分析
⑦加壳脱壳
1.使用VirusTotal分析恶意软件
①把生成的恶意代码放在VirusTotal中进行分析,结果如下;
②查看这个恶意代码的细节属性,可以看到它的SHA-1、MD5摘要值等,结果如下;
2.使用PEiD分析恶意软件;
PEiD(PE Identifier)是一款著名的查壳工具,其功能强大,几乎可以侦测出所有的壳,其数量已超过470种PE文档的加壳类型和签名。
①首先测试之前实验生成的没有加壳的后门程序,在PEiD中检测结果如下;
②再测试之前实验生成的加壳后的后门程序,在PEiD中检测结果如下;
3.使用PE Explorer分析恶意软件;
PE Explorer是功能超强的可视化Delphi、C++、VB程序解析器,能快速对32位可执行程序进行反编译,并修改其中资源。该软件支持插件,你可以通过增加插件加强该软件的功能,原公司在该工具中捆绑了UPX的脱壳插件、扫描器和反汇编器,可以查看程序头部信息(默认界面)、程序静态数据目录、程序结头信息、对程序反汇编等等,非常好用。
①看文件引用的dll库,可以通过视图->引入 进行查看,如下图所示;
②KERNEL32.dll:控制着系统的内存管理、数据的输入输出操作和中断处理;
③msvcrt.dll:是微软编译软件的函数库。
动态分析
①快照比对(SysTracer、Filesnap、Regsnap工具等)
②抓包分析(WireShark工具等)
③行为监控(Filemon、Regmon、ProcessExplorer工具等)
④沙盒(NormanSandbox、CWSandbox工具等)
⑤动态跟踪调试(Ollydbg、IDAPro工具等)
1.使用systracer分析恶意软件
①点击右侧的take snapshot,存储快照
快照一:未移植后门程序,保存为Snapshot #1;
快照二:移植后门程序,保存为Snapshot #2;
②点击右下角的compare
键然后选择View Differences Lists
比对各快照,结果如下;
2.使用Process Explorer分析恶意软件
Process Explorer是由Sysinternals开发的Windows系统和应用程序监视工具,目前已并入微软旗下。不仅结合了Filemon(文件监视器)和Regmon(注册表监视器)两个工具的功能,还增加了多项重要的增强功能。包括稳定性和性能改进、强大的过滤选项、修正的进程树对话框(增加了进程存活时间图表)、可根据点击位置变换的右击菜单过滤条目、集成带源代码存储的堆栈跟踪对话框、更快的堆栈跟踪、可在 64位 Windows 上加载 32位 日志文件的能力、监视映像(DLL和内核模式驱动程序)加载、系统引导时记录所有操作等。
从图中,我们可以详细查看该进程的CPU、虚拟内存、物理内存、I/O等相关信息。
3.使用Process Monitor分析恶意软件
Process Monitor 是一款由 Sysinternals 公司开发的包含强大的监视和过滤功能的高级 Windows 监视工具,可实时显示文件系统、注册表、进程/线程的活动。
①启动软件,可以看到各个进程的详细记录,找到我们的后门程序。
②双击进程,可以看到进程的详细信息。
③进程的相关信息。
④点击Stack可以看到该程序相关的库
三、实验过程中遇到的问题
1.问题:sysmon启动时,出现错误,如下;
解决:重新下载sysmon,新建文件,然后cmd中进入sysmon所在的文件夹位置,终于成功了;
2.安装sysmon时提示权限不够;
解决:先使用管理员模式打开cmd,然后再安装,确实解决了问题。
四、问题的回答
1.如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么。请设计下你想监控的操作有哪些,用什么方法来监控。
回答:①使用windows自带的schtasks指令设置一个计划任务,每隔一定的时间对主机的联网记录等进行记录。
②使用Sysmon,通过修改配置文件,记录相关的日志文件。
③ 使用Process Explorer工具,监视进程执行情况。
④使用Process Monitor工具,监视文件系统、注册表、进程/线程的活动。
2. 如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息?
回答:①使用systracer工具分析恶意软件,查看其对注册表和文件的修改。
②使用Wireshark进行抓包分析,监视其与主机进行的通信过程。
③使用Process Explorer工具或Process Monitor工具,监视文件系统、注册表、进程/线程的活动。
五、实验心得与体会
这次实验我做的比较顺利,在之前的实验中,总是出现各种各样的问题,这次的实验偏验证和检测。通过这次实验,在我了解了Windows OS中一些exe和DLL文件的作用,在进行分析时,我学会了很多静态分析和动态分析的方法,也熟悉了大量的检测工具,这些检测工具可以对后门程序进行不同方向的分析,能够更加清晰的认识到后门程序的组成和执行。这次实验我很有收获。
posted on 2020-04-18 13:15 20175202葛旭阳 阅读(183) 评论(0) 编辑 收藏 举报