20201306 Exp4 恶意代码分析

一、实践基础

1、实践目的

监控你自己系统的运行状态,看有没有可疑的程序在运行。
分析一个恶意软件,就分析Exp2或Exp3中生成后门软件;分析工具尽量使用原生指令或sysinternals,systracer套件。
假定将来工作中你觉得自己的主机有问题,就可以用实验中的这个思路,先整个系统监控看能不能找到可疑对象,再对可疑对象进行进一步分析,好确认其具体的行为与性质。

2、实践内容

系统运行监控

使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述分析结果。
安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控自己主机的重点事可疑行为。
分析该软件在启动回连、安装到目标机及其他任意操作时(如进程迁移或抓屏,重要是你感兴趣)。该后门软件

读取、添加、删除了哪些注册表项
读取、添加、删除了哪些文件
连接了哪些外部IP,传输了什么数据

3、实践原理

恶意代码
使计算机按照攻击者的意图运行以达到恶意目的的指令集合。
指令集合:二进制执行文件,脚本语言代码,宏代码,寄生在文件、启动扇区的指令流。
恶意代码目的:技术炫耀/恶作剧,远程控制,窃取私密信息,盗用资源,拒绝服务/破坏......
恶意代码类型
计算机病毒,蠕虫,恶意移动代码,后门,特洛伊木马,僵尸程序,Rootkit等…

计算机病毒是最早出现的恶意代码,媒体/工业界的概念混淆,经常以计算机病毒(Computer Virus)等价于恶意代码

分析环境
静态分析:
恶意代码扫描、文件格式识别、字符串提取、二进制结构分析、反汇编反编译、代码结构与逻辑分析、加壳识别和代码脱壳
动态分析:
快照比对、动态行为监控、网络监控、沙盒、动态跟踪测试

二、实践内容

系统运行监控

(1)使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述分析结果。

目标就是找出所有连网的程序,连了哪里,大约干了什么(不抓包的情况下只能猜),你觉得它这么干合适不。如果想进一步分析的,可以有针对性的抓包。

使用schtasks指令监控系统

使用schtasks指令。schtasks.exe是安排命令和程序定期运行或在指定时间内运行。从计划表中添加和删除任务,按需要启动和停止任务,显示和更改计划任务。
schtasks /create /TN netstat1306 /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > c:\netstatlog.txt
创建计划任务 netstat1306

TN 是TaskName的缩写,我们创建的计划任务名是netstat1306
sc 表示Task Run,要运行的指令是 netstat
bn其中b表示显示可执行文件名,n表示以数字来显示IP和端口;

表示输出重定向,将输出存放在c:\netstat1306.txt文件中;
在C盘中创建一个脚本文件 netstat1306.bat
在C盘中创建需要权限,因此我选择了在桌面创建一个 netstat1306.txt 文本文件,并写入以下内容:

date /t >> c:\netstat1306.txt 
time /t >> c:\netstat1306.txt 
netstat -bn >> c:\netstat1306.txt

将文件复制到C盘中,并修改后缀名为.bat

在Windows的任务计划程序中,可以查看到新创建的任务:

双击这个任务,点击操作并编辑,将“程序或脚本”改为我们创建的 netstat1306.bat 批处理文件,将可选参数清空,点击确定。

在"条件"选项卡中可以看到,电源选项中默认操作为“只有在计算机使用交流电源时才启动此任务” ,那么使用电池电源时就会停止任务。为了我们统计足够多的数据,这个选项取消掉。

接着,在“常规”栏下选择“使用最高权限运行” ,否则可能导致文件不能自主更新或者记录里出现权限问题,点击确定保存。

运行该任务。

等待了足够长的时间后,可以选择终止计划任务,然后对收集到的数据进行统计。在C盘目录下,出现了一个netstat1306.txt 的文件,可以在其中查看联网数据。

在Excel表格中分析记录的数据
创建新表格,点击数据,导入数据,选择直接打开数据文件,并在选择数据源中选择文本文件。

按照步骤,选择其他编码、分隔符号,并如下图勾选。

选择协议一列,点击上方菜单栏中的插入,选择数据透视图。

在新工作表中,点击数据透视图,在跳出的右侧边栏的字段列表中,筛选出我们需要的字段进行分析,并将字段拖放到下方的轴和值中。

得到如下柱状图:

分析:如图所示,在这段时间内,联网最多的是程序wps.exe ,也就是WPS,其次为et.exe 和wpscloudsvr.exe,其中,ET是WPS的表格模块。 如果打开了比较大的表格文件,有可能有占用较多内存的现象。wpscloudsvr是wps的云服务,其主要作用是弹窗登录, 如果我们使用WPS时不想被他占资源和打扰可以对它进行处理。图中也包括了360浏览器、微信等软件的相关联网程序。

(2)安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控自己主机的重点可疑行为。

    sysmon是微软Sysinternals套件中的一个工具,它以系统服务和设备驱动程序的方法安装在系统上,并保持常驻性。sysmon用来监视和记录系统活动,并记录到windows事件日志,可以提供有关进程创建,网络链接和文件创建时间更改的详细信息。使用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
下载并解压SysinternalsSuite201608.zip 文件,并进入文件夹新建配置文件sysmon20201306.xml ,在里面输入以下代码(具体方法同上)。

* chrome.exe firefox.exe <ProcessCreate onmatch="include"> <ParentImage condition="end with">cmd.exe</ParentImage> </ProcessCreate>
&lt;FileCreateTime onmatch=<span style="color: #800000;">"</span><span style="color: #800000;">exclude</span><span style="color: #800000;">"</span> &gt; 
    &lt;Image condition=<span style="color: #800000;">"</span><span style="color: #800000;">end with</span><span style="color: #800000;">"</span>&gt;chrome.exe&lt;/Image&gt; 
    &lt;Image condition=<span style="color: #800000;">"</span><span style="color: #800000;">end with</span><span style="color: #800000;">"</span>&gt;firefox.exe&lt;/Image&gt; 
&lt;/FileCreateTime&gt; 

&lt;NetworkConnect onmatch=<span style="color: #800000;">"</span><span style="color: #800000;">exclude</span><span style="color: #800000;">"</span>&gt; 
    &lt;Image condition=<span style="color: #800000;">"</span><span style="color: #800000;">end with</span><span style="color: #800000;">"</span>&gt;chrome.exe&lt;/Image&gt; 
    &lt;Image condition=<span style="color: #800000;">"</span><span style="color: #800000;">end with</span><span style="color: #800000;">"</span>&gt;firefox.exe&lt;/Image&gt; 
    &lt;SourcePort condition=<span style="color: #800000;">"</span><span style="color: #800000;">is</span><span style="color: #800000;">"</span>&gt;<span style="color: #800080;">137</span>&lt;/SourcePort&gt; 
    &lt;SourceIp condition=<span style="color: #800000;">"</span><span style="color: #800000;">is</span><span style="color: #800000;">"</span>&gt;<span style="color: #800080;">127.0</span>.<span style="color: #800080;">0.1</span>&lt;/SourceIp&gt; 
&lt;/NetworkConnect&gt; 

&lt;NetworkConnect onmatch=<span style="color: #800000;">"</span><span style="color: #800000;">include</span><span style="color: #800000;">"</span>&gt; 
    &lt;DestinationPort condition=<span style="color: #800000;">"</span><span style="color: #800000;">is</span><span style="color: #800000;">"</span>&gt;<span style="color: #800080;">80</span>&lt;/DestinationPort&gt; 
    &lt;DestinationPort condition=<span style="color: #800000;">"</span><span style="color: #800000;">is</span><span style="color: #800000;">"</span>&gt;<span style="color: #800080;">443</span>&lt;/DestinationPort&gt; 
&lt;/NetworkConnect&gt; 

&lt;CreateRemoteThread onmatch=<span style="color: #800000;">"</span><span style="color: #800000;">include</span><span style="color: #800000;">"</span>&gt; 
    &lt;TargetImage condition=<span style="color: #800000;">"</span><span style="color: #800000;">end with</span><span style="color: #800000;">"</span>&gt;explorer.exe&lt;/TargetImage&gt; 
    &lt;TargetImage condition=<span style="color: #800000;">"</span><span style="color: #800000;">end with</span><span style="color: #800000;">"</span>&gt;svchost.exe&lt;/TargetImage&gt; 
    &lt;TargetImage condition=<span style="color: #800000;">"</span><span style="color: #800000;">end with</span><span style="color: #800000;">"</span>&gt;firefox.exe&lt;/TargetImage&gt; 
    &lt;TargetImage condition=<span style="color: #800000;">"</span><span style="color: #800000;">end with</span><span style="color: #800000;">"</span>&gt;winlogon.exe&lt;/TargetImage&gt; 
    &lt;SourceImage condition=<span style="color: #800000;">"</span><span style="color: #800000;">end with</span><span style="color: #800000;">"</span>&gt;powershell.exe&lt;/SourceImage&gt; 
&lt;/CreateRemoteThread&gt; 

</EventFiltering>

参数说明:

ProcessCreate表示进程创建
NetworlConnect 表示网络连接
CreateRemote 表示远程线程创建
FileCreate Time 表示进程创建时间
在onmatch后面跟的参数include和exclude分别表示“免检”和“必检”名单。免检名单中在统计时忽略掉,必检名单在检测时需要进行匹配。

在cmd中进入解压后的文件夹,执行指令Sysmon.exe -i sysmon20201306.xml

右击Win,选择事件查看器,依次选择应用程序和服务日志->Microsoft->Windows->Sysmon->Operational ,可以查看到按照配置文件中的配置信息所记录的一些信息。

在列表中找到sysmon20201306.xml

(3)使用事件查看器分析进程

查看“事件查看器”,选择日志的位置,应用程序和服务日志/Microsoft/Windows/Sysmon/Operational

在这里,我们可以看到按照配置文件的要求记录的新事件,以及事件ID、级别、任务类别、详细信息等。

恶意代码分析

静态分析——VirusTotal网站扫描恶意软件

使用VirusTotal分析恶意代码基本信息如下:

查看恶意代码的基本属性,可以看出它的SHA-1、SHA-256、MD5摘要值、文件类型、文件大小,以及TRiD文件类型识别结果。

静态分析——PEiD软件分析恶意软件

    PEiD(PE Identifier)是一款著名的查壳工具,其功能强大,几乎可以侦测出所有的壳,其数量已超过470 种PE 文档 的加壳类型和签名。

扫描模式

正常扫描模式:可在PE文档的入口点扫描所有记录的签名;
深度扫描模式:可深入扫描所有记录的签名,这种模式要比上一种的扫描范围更广、更深入;
核心扫描模式:可完整地扫描整个PE文档,建议将此模式作为最后的选择。PEiD内置有差错控制的技术,所以一般能确保扫描结果的准确性。前两种扫描模式几乎在瞬间就可得到结果,最后一种有点慢,原因显而易见。

分析:说明了该软件无法检测到加密壳。证明了加密壳一定程度上有着绕过安全检测、隐藏恶意代码后门程序的作用,但这也可能由于该检测软件的功能缺失。

静态分析——使用PE Explorer分析恶意软件

    PE Explorer是功能超强的可视化Delphi、C++、VB程序解析器,能快速对32位可执行程序进行反编译,并修改其中资源。该软件支持插件,你可以通过增加插件加强该软件的功能,原公司在该工具中捆绑了UPX的脱壳插件、扫描器和反汇编器,可以查看程序头部信息(默认界面)、程序静态数据目录、程序结头信息、对程序反汇编等等,非常好用。

下载软件
打开后门文件,查看文件头部信息

视图(view)-数据目录(Data Directories)查看程序静态数据目录

视图(view)-节头(Section Heads)查看节头信息

视图(view)-Import查看信息

KERNEL32.dll:控制着系统的内存管理、数据的输入输出操作和中断处理。
MSVCRT.dll:是微软编译软件的函数库。
ADVAPI32.dll:一个高级API应用程序接口服务库的一部分,包含的函数与对象的安全性。
WSOCK32.dll:是Windows Sockets应用程序接口,用于支持很多Internet和网络应用程序。
WS2_32.dll:Windows Sockets应用程序接口, 用于支持Internet和网络应用程序。
分析:通过分析生成的后门程序都会使用KERNEL32.dll,所以如果有陌生软件使用KERNEL32.dll则应当提高警惕。
工具(tools)-反汇编器(Disassambler)进行反汇编

动态分析——使用systracer分析恶意软件

   SysTracer 是一款可以分析你的计算机文件,文件夹和注册表项目改变的系统实用工具。你可以在任何想要的时间获取无数个屏幕快照。你可以比较任何一对想要的屏幕快照,并且观察其间的不同之处。获取屏幕快照通常会持续几分钟的时间,这取决于文件和文件夹的数量和注册表项目的总数。该软件特别推出一个非常高效的分析算法,比较两张屏幕快照可以瞬间完成。

安装软件
点击创建快照take snapshot,点击start,创建快照。(具体时长由系统决定,快照创建会自动完成)

运行后门程序,回连Kali,并创建快照

步骤如上,捕获五个快照如下:
快照一:未移植后门程序,保存为Snapshot #1
快照二:运行后门程序并在kali中实现回连,保存为Snapshot #2
快照三:在Kali中输入dir命令,保存为Snapshot #3
快照四:在kali中执行screenshot指令,保存为Snapshot #4
快照五:在kali中执行getuid指令,保存为Snapshot #5
对比快照1和快照2
选中要对比的两个快照,点击右下角compare,在view mode中选择only differences方便查看。

点击application,在opened ports中能看到后门 20201306_upxed.exe ,连接的本地地址和目标地址以及端口号

在opened handles中,增加了一些文件,也删除了一些文件,以及键值的变化

在loaded dll中,查看启动后门程序后增加和删除的dll文件

在running processes中,点击 20201306_upxed.exe 显示为SysTracer no registered

对比快照2和快照3
对根键中的内容进行修改,对注册表中的配置信息进行了修改

在opened ports中看到两次操作间的虚拟机vmnet8间的交互:

在running processes中,查看多出来的 conhost.exe
Conhost.exe全称是Console Host Process, 即命令行程序的宿主进程。简单的说他是微软出于安全考虑,在windows 7和Windows server 2008中引进的新的控制台应用程序处理机制。

对比快照3和快照4
关闭了 audiodg.exe ,删除了之前建立的调用许多DLL的过程


对比快照4和快照5
发现根键中的内容进行了修改,但无法查看到具体内容

同时,也增加了很多dll文件

动态分析——使用Process Monitor分析恶意软件

   Process Monitor一款系统进程监视软件,总体来说,Process Monitor相当于Filemon+Regmon,其中的Filemon专门用来监视系统 中的任何文件操作过程,而Regmon用来监视注册表的读写操作过程。 有了Process Monitor,使用者就可以对系统中的任何文件和 注册表操作同时进行监视和记录,通过注册表和文件读写的变化, 对于帮助诊断系统故障或是发现恶意软件、病毒或木马来说,非常 有用。 这是一个高级的 Windows 系统和应用程序监视工具,由优秀的 Sysinternals 开发,并且目前已并入微软旗下,可靠性自不用说。

开启软件可以看到各个进行的详细记录,通过查找功能查看到后门程序的进程,注意全字符匹配。

进程的详细信息如下:

查看引用的.dll单元

三、实验问题

(1)如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么。请设计下你想监控的操作有哪些,用什么方法来监控。

使用windows自带的schtasks指令设置一个计划任务,发现网络连接异常
使用Sysmon,编写配置文件,记录有关的系统日志
使用Process Explorer工具,监视进程执行情况。
使用Process Monitor工具,监视文件系统、注册表、进程/线程的活动。
使用Systracer拍摄快照,对比不同快照,查看是否有可疑的增删注册表、启动项的行为。
使用wireshark查看自己计算机的端口开放情况,查看未知端口进行可疑的数据传输

(2)如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息。

使用systracer工具分析恶意软件,查看其对注册表和文件的修改。
使用Wireshark进行抓包分析,监视其与主机进行的通信过程。
使用PEiD查看程序是否加壳,加的什么壳
使用Process Explorer工具或Process Monitor工具,监视文件系统、注册表、进程/线程的活动。

四、实验总结与体会

通过本次实验,我学会了借助软件工具,通过这些来分析恶意代码,通过对后门文件的多方面分析检测,查看主机中不正常的现象。我们通过动态静态分析,通过各种各样的方法了解恶意代码的检测和监控, 但在Wireshark软件的使用过程中,发现不管是用WLAN还是VMnet8模式捕捉数据包,都无法正确捕捉到内容,使用了同学和学长学姐的方法后仍不成功。
posted @ 2023-04-06 00:59  乌龍茶  阅读(44)  评论(0编辑  收藏  举报