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: etstatlog.txt"来创建计划任务netstat5202

其中;
TN是TaskName的缩写,我们创建的计划任务名是netstat5202
sc表示计时方式,我们以分钟计时填MINUTE。
TR表示Task Run,要运行的指令是netstat。
netstat -bn,其中b表示显示可执行文件名,n表示以数字来显示IP和端口。
>表示输出重定向,将输出存放在c: etstatlog.txt文件中。
2.在C盘中创建一个netstat5202.bat文件,写入以下内容然后修改文件格式为.bat文件,即脚本文件。

    date /t >c:
etstat5202.txt
    time /t >c:
etstat5202.txt
    netstat -bn >c:
etstat5202.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文件的作用,在进行分析时,我学会了很多静态分析和动态分析的方法,也熟悉了大量的检测工具,这些检测工具可以对后门程序进行不同方向的分析,能够更加清晰的认识到后门程序的组成和执行。这次实验我很有收获。
原文地址:https://www.cnblogs.com/gexvyang/p/12715149.html