2019-2020-2 20175320 《网络对抗技术》Exp4 恶意代码分析

2019-2020-2 20175320 《网络对抗技术》Exp4 恶意代码分析

一、实验要求

能够使用计划任务以及sysmon对系统的运行状况进行监控,并借助工具对恶意软件进行静态以及动态两个方面的分析。

二、实验目标

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

三、实验过程

1.准备工作

(1)下载Sysinternals Suite
本次实验中需要用到该套件中的sysmon对系统进行监测,使用Process Monitor、Process Explorer对恶意软件进行分析,这里我使用的是老师在git中提供的压缩包,虽然能够正常使用但不是最新版本,如果对版本有要求的话可以到官网去下载。

(2)下载PEID
PEiD是一款著名的查壳工具,其功能强大,几乎可以侦测出所有的壳,其数量已超过470种PE文档的加壳类型和签名。我们可以使用该软件进行加壳识别。

(3)下载安装PE Explorer
PE Explorer是功能超强的可视化Delphi、C++、VB程序解析器,能快速对32位可执行程序进行反编译,并修改其中资源。我们可以利用该软件对恶意代码进行静态分析。

(4)下载安装systracer
systracer可对系统进行快照,并能比对快照间在注册表、应用等方面的差别。本次实验建议在虚拟机下安装该程序,可以减少快照生成的时间。

2.使用任务计划监控系统

使用计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述一下分析结果。
(1)使用schtasks /create /TN 5320shiyan4 /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > c:\netstatlog.txt"命令生成任务计划5320shiyan4。

  • TN是TaskName的缩写,我们创建的计划任务名是5320shiyan4
  • sc表示计时方式,MINUTE表示以分钟计时
  • TR是Task Run的缩写,后面接要运行的指令
  • b表示显示可执行文件名,n表示以数字来显示IP和端口
  • 表示输出重定向,将输出存放在c:\netstatlog.txt文件中

(2)创建一个名为netstat5320.txt的文本文件,并写入以下内容:

date /t >> C:\Users\gong9\Desktop\shiyan4\netstat5320.txt
time /t >> C:\Users\gong9\Desktop\shiyan4\netstat5320.txt
netstat -bn >> C:\Users\gong9\Desktop\shiyan4\netstat5320.txt

编写完成后另存为netstat5320.bat文件。

(3)打开任务计划程序,找到创建的5320shiyan4这一任务,右击任务并选择属性,在属性中选择操作并在出现的界面中点击编辑,然后将程序或脚本改为netstat5320.bat
批处理文件。由于脚本文件中的命令需要管理员权限才能执行,因此我们还要将属性的常规中的使用最高权限运行进行勾选。

(4)脚本执行一段时间后,我们可以在netstat5320.txt文件中查看到本机在该时间段内的联网状况,然后使用excel对数据进行统计即可直观地获取这段时间内各程序的联网状况。

从统计结果可以看出在这时间内联网最多的是vmware其次是chrome浏览器,且没有奇怪的程序进行联网。

3.使用sysmon工具监控系统

sysmon是微软Sysinternals Suite中的一个工具,使用sysmon工具前首先要编写xml格式的配置文件,配置文件可选择的事件过滤器有ProcessCreate 进程创建、FileCreateTime 进程创建时间、NetworkConnect 网络链接、ProcessTermina 进程结束、DriverLoad 驱动加载、ImageLoad 镜像加载、CreateRemoteTh 远程线程创建、RawAccessRead 驱动器读取、ProcessAccess 进程访问、FileCreate 文件创建、RegistryEvent 注册表事件、FileCreateStre 文件流创建等。
(1)创建一个txt文本文件,在该文件使用扩展标记语言编写sysmon的配置,然后将文件另存为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">iexplore.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">iexplore.exe</Image>
    </FileCreateTime>
    
    <NetworkConnect onmatch="exclude">
      <Image condition="end with">chrome.exe</Image>
      <Image condition="end with">iexplore.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">chrome.exe</TargetImage>
      <TargetImage condition="end with">iexplore.exe</TargetImage>
      <TargetImage condition="end with">winlogon.exe</TargetImage>
      <SourceImage condition="end with">powershell.exe</SourceImage>
    </CreateRemoteThread>
  </EventFiltering>
</Sysmon>
  • onmatch表示特征匹配,等号后引号内的参数为对匹配项的操作
  • exclude表示不记录。include则为记录
  • Image表示的是应用程序
  • 规则过滤掉了浏览器的网络连接、起始IP为127.0.0.1(本机IP)的网络连接和目的端口为137(IP查询服务端口)的连接,并记录使用了80端口(http)和443端口(https)的网络连接
  • explorer.exe是Windows程序管理器或者文件资源管理器的远程线程
  • svchost.exe是一个属于微软Windows操作系统的系统程序,是从动态链接库中运行的服务的通用主机进程名称
  • winlogon.exe是Windows NT 用户登陆程序,用于管理用户登录和退出
  • powershell.exe是专为系统管理员设计的新 Windows 命令行shell程序

(2)执行命令sysmon.exe -i C:\Users\gong9\Desktop\shiyan4\sysmon20175320.xml配置并安装sysmon,这里需要将xml文件事先放在命令中的路径下。

(3)打开事件查看器,依次点击“应用程序和服务日志/Microsoft/Windows/Sysmon/Operational”找到sysmon产生的日志

(4)使用后门程序回连控制端,并在回连后刷新日志,可以看见后门程序的联网记录

4.对后门程序进行静态分析

对后门程序进行静态分析,我们可以有以下几种方法:

  • 恶意代码扫描
  • 文件格式识别
  • 字符串提取
  • 二进制结构分析
  • 反汇编、反编译
  • 代码结构与逻辑分析
  • 加壳识别和代码脱壳

在实验中我们需要依据以上思路并借助工具,从而对后门程序进行分析。

4.1Virus Total分析

Virus Total是我们上个实验中检测后门效果的扫描平台,该网站会使用各种杀软对上传的程序进行扫描,从而我们就可以获知上传软件是否为恶意软件并能获取软件的相关信息。在这里我们直接将上个实验生成的后门程序上传到网站上,可以获得以下的扫描结果:

可以看到有28个软件扫描出了后门程序。我们还可以在details中查看该文件的相关属性以及是否进行了加壳,并且下拉后还可看见该文件算法库的支持情况以及其他信息。

4.2使用PEiD进行加壳识别

下载PEiD后我们可以使用该软件对文件进行加壳识别。如果不想找软件包的话,现在Virus Total也使用PEiD对扫描的文件进行了加壳识别,并且在文件信息中会显示加壳情况。在实验中我使用PEiD扫描了压缩壳后门以及加密壳后门,其中压缩壳后门被识别出了加壳,但加密壳后门没有被识别出加壳。

4.3使用PE Explorer进行反编译

在PE Explorer中打开文件后,我们可以在菜单栏中点击视图>导入来查看文件引用的动态链接库,如下图所示,后门程序引用KERNEL32.dll以及ws2_32.dll。

  • KERNEL32.dll:控制着系统的内存管理、数据的输入输出操作和中断处理。
  • ws2_32.dll是Windows Sockets应用程序接口, 用于支持Internet和网络应用程序。
  • 引用的动态链接库与后门的功能基本符合

5.对后门进行动态分析

5.1 使用Process Monitor实时获取进程/线程的活动。

在Sysinternals Suite中打开Procmon并使用后门程序回连客户端,然后打开软件并使用搜索定位后门软件在列表中的位置,双击后门程序的进程我们就能查看进程的详细信息,点击stack还可以看到进程引用的库函数。从图片中我们可以看见引用最多的是shell32.dll,该动态库是Windows的32位外壳动态链接库文件,用于打开网页和文件,建立文件时的默认文件名的设置等大量功能,而系统文件shell32.dll出错,极有可能是盗号木马、流氓软件等恶意程序所导致。


5.2 使用Process Explorer查看资源占用

在Sysinternals Suite中打开procexp并使用后门程序回连客户端,然后在软件中我们就可以看见后门程序以及它的子进程,从图中我们可以看出后门程序有conhost.exe这个程序,这个子进程是命令行程序的宿主进程。点击进程我们就能查看进程的CPU使用情况,虚拟内存空间、物理内存空间等信息。

5.3 使用systracer进行快照对比

(1)使用软件获取虚拟机移植后门前、虚拟机移植后门后、后门程序回连后、控制端执行getpid指令后、控制端执行record_mic指令后的总共5个的虚拟机快照。

(2)在软件右下角选择需要比对的两个快照后,点击View differences list或者Compare进行快照比对,如果选择Compare,可以在之后出现的界面的左上角勾选Only differences来查看两者的区别。

(3)比对快照1和快照2,主要增加了后门程序、注册表文件以及systracer相关的句柄。


(4)比对快照2和快照3,后门程序运行后对多个注册表项进行了修改,并其系统中出现了大量后门程序相关的句柄,并且在打开的端口中也可以看见后门程序连接了控制端的ip以及端口。从图片中我们也可以看到许多信息因为没有授权而无法查看。



(5)比对快照3和快照4,后门程序执行getpid指令后只发生了少部分注册表的改变。

(6)比对快照4和快照5,后门程序录音后也对大量注册表进行了修改,且增加了许多后门程序以及svchost.exe的句柄,其中svchost.exe 是从动态链接库 (DLL) 中运行的服务的通用主机进程名称。

5.4 使用wireshark分析网络数据

在使用恶意软件回连控制端后,捕获了受控端发起的,与控制端之间的三次握手协议数据,并且之后受控端向控制端传输了大量的TCP数据包,而控制端发送给受控端的数据包相比而言就少得多。

四、实验中遇到的问题

问题一:任务计划无法正常执行

问题一解决方法:在常规中勾选最高权限执行

问题二:sysmon安装配置时提示版本不匹配

问题二解决方法:根据sysmon运行时在命令行中打印的版本修改xml配置文件中的版本

五、实验感想和思考

本次实验总的来说并不是十分复杂,主要的难点在于如何使用工具对恶意软件进行分析,通过本次实验,我知道了从静态以及动态两个方面对恶意软件进行分析,且了解了相关软件的使用方法,但由于我们对注册表,动态链接库的了解还比较粗浅,因此在分析时我也只能进行比较粗略的分析,如果要继续深入了解恶意代码的分析,就需要进一步加强对注册表等相关知识的了解,这也是我今后需要加强的地方。

思考:

  • (1)如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么。请设计下你想监控的操作有哪些,用什么方法来监控。
    答:需要使用sysmon监控程序联网状况、process monitor监控程序对注册表的修改以及进程对动态库的引用情况、peid检测是否有加壳的可执行文件。

  • (2)如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息。
    答:通过peid获取加壳信息,通过wireshark获取问题程序的通信过程,通过systracer获取问题程序对系统文件的修改情况,通过process monitor获取问题软件引用的动态库。

posted @ 2020-04-16 17:15  175320  阅读(175)  评论(0编辑  收藏  举报