2020-2021-4 20175229张智敏 《网络对抗技术》Exp4 恶意代码分析

一、实验目标与内容

1.实践目标

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

2.实践内容

2.1 系统运行监控

(1)使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述分析结果。
(2)安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控自己主机的重点是可疑行为。

2.2分析该软件在(1)启动回连,(2)安装到目标机(3)及其他任意操作时。该后门软件的行为:

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

二、实践步骤

1.使用schtasks指令监控系统

1.使用命令
schtasks /create /TN netstat20175229 /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > c:\netstatlog.txt"
创建计划任务netstat20175229
上条命令中的参数分别为:
(1)TN是TaskName的缩写,我们创建的计划任务名是netstat20175229;
(2)sc表示计时方式,我们以分钟计时填MINUTE;
(3)TR是Task Run,要运行的指令是netstat
(4)bnb表示显示可执行文件名,n表示以数字来显示IP和端口;
(5)>表示输出重定向,将输出存放在c:\netstatlog.txt文件中。

2.在C盘中创建一个名为netstat20175229.bat的脚本文件,写入以下内容:

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

3.打开任务计划程序,可以看到新创建的这个任务:

4.双击此任务,点击操作->编辑,将程序或脚本改为我们创建的netstat20175229.bat文件,点击确定。

5.在常规栏勾选不管用户是否登录都要运行使用最高权限运行

6.接下来等待脚本执行一段时间(这段时间内要保持开机联网状态),就可以在netstatlog.txt文件中查看到这段时间内的联网记录

7.将存储的数据导入到excel表中进行整理,整理好的数据图表如下:

8.从图表中可以看出,联网最多的程序有浏览器、百度网盘、微信、qq等。总体来讲,没有发现什么可疑的程序。

2.使用sysmon工具监控系统

1.下载Sysinternals套件,Sysmon是该套件中的一个工具,可以监控几乎所有的重要操作。

2.确定要监控的目标。对信任的程序设置白名单,让信任程序尽量不要记到日志里,日志多了不好分析。

3.明确了要监控的目标后,在Sysmon所在的目录下创建相应的配置文件sysmon20175229.xml了,我的配置文件如下:

<Sysmon schemaversion="4.12">
  <!-- 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>
    </ProcessCreate>

    <ProcessCreate onmatch="include">
      <ParentImage condition="end with">cmd.exe</ParentImage>
    </ProcessCreate>

    <FileCreateTime onmatch="exclude" >
      <Image condition="end with">chrome.exe</Image>
    </FileCreateTime>

    <NetworkConnect onmatch="exclude">
      <Image condition="end with">chrome.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>

标签解释:
<Sysmon schemaversion="4.12">中的4.12意味当前Sysmon的版本为4.12版本,这个版本可以右键点击Sysmon,在属性中查看详细信息获知

exclude相当于白名单,不用记录。include相当于黑名单。onmatch意为匹配。
ProcessCreate表示进程创建
NetworkConnect是网络连接
CreateRemote是远程线程创建。这里使用“include”选择记录目标为explorer.exe、svchost.exe、firefox.exe、winlogon.exe和powershell.exe 的远程线程。
FileCrete Time是进程创建时间

4.打开cmd,进入sysmon所在的文件夹,输入Sysmon.exe -i sysmon.xml

5.打开计算机管理,查看事件查看器,在应用程序和服务日志/Microsoft/Windows/Sysmon/Operational中,我们可以看到按照配置文件的要求记录的新事件,以及事件ID、任务类别以及详细信息。

6.在这里我们看到时间线最早的一条日志就是找到我们创建的sysmon.xml配置文件

3.恶意软件分析

要求:分析该软件在①启动回连,②安装到目标机,③其他任意操作时(如进程迁移或抓屏,重要是你感兴趣)。该后门软件
(1)读取、添加、删除了哪些注册表项;
(2)读取、添加、删除了哪些文件;
(3)连接了哪些外部IP,传输了什么数据(抓包分析)。

1.静态分析
主要有以下几种分析方法:
①文件扫描(VirusTotal、VirusScan工具等)
②文件格式识别(peid、file、FileAnalyzer工具等)
③字符串提取(Strings工具等)
④反汇编(GDB、IDAPro、VC工具等)
⑤反编译(REC、DCC、JAD工具等)
⑥逻辑结构分析(Ollydbg、IDAPro工具等)
⑦加壳脱壳(UPX、VMUnPacker工具等)

我主要选取以下几种方法和工具来进行分析
(1) 文件扫描(VirusTotal)

从下图中的详情信息可以看到以下信息:
①该文件是ApacheBench命令行实用程序

②根据Apache许可证2.0版(以下简称“许可证”)授权的注释;除非符合许可证,否则您不能使用此文件。您可以在http://www.apache.org/licenses/License-2.0上获取许可证副本,除非适用法律要求或书面同意,否则根据许可证分发的软件是按“原样”分发的,无任何明示或暗示的保证或条件。请参阅许可证,以了解控制许可证下的权限和限制的特定语言。

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

①对未加壳的后门文件进行扫描:PEiD的主要功能是查壳,所以这个后门文件并没有被它查出异常

②对加壳的后门文件进行扫描:之前实验三生成过加壳的后门,下图为扫描结果。这次就检查出了这个文件是加了壳的。

(3) 反编译、反汇编(PE Explorer工具)
PE Explorer是功能超强的可视化Delphi、C++、VB程序解析器,能快速对32位可执行程序进行反编译,并修改其中资源。该软件支持插件,你可以通过增加插件加强该软件的功能,原公司在该工具中捆绑了UPX的脱壳插件、扫描器和反汇编器,非常好用。

①文件头信息:好像看起来对我们没什么用处

②调用的DDL文件:用PE Explorer查看到的DDL文件比刚刚用peid看到的更加详细了一些,它指出了DDL文件调用了哪些函数

③版本信息:这里的很多内容其实在之前的日志文件还有VirusTotal网站上都有看到过

④此外还能看到数据目录、节头、调试信息等,不再加以赘述了。

2.动态分析
主要有以下几种方法:

①快照比对(SysTracer、Filesnap、Regsnap工具等)
②抓包分析(WireShark工具等)
③行为监控(Filemon、Regmon、ProcessExplorer工具等)
④沙盒(NormanSandbox、CWSandbox工具等)
⑤动态跟踪调试(Ollydbg、IDAPro工具等)

我主要选取以下几种方法和工具来进行分析

(1)快照比对(SysTracer工具)

①为了便于分析,我抓了三种状态:
snapshot#1:不做任何操作,系统自然状态
snapshot#2:启动后门回连msf
snapshot#3:远程在win7上执行查看文件、建立新文件夹、查看用户等操作

②将快照1和快照2进行对比,导出差异分析的结果
1>注册表差异:包括增加、删除、修改操作,下图中红色部分为删除的内容,绿色部分为增加的内容

2>之前的是所有的概览,要分析详细的内容的话,查看模式选择仅差异。从图中可以看到后门文件启动并回连之后,修改的相关注册表项是HKEY_USERS,查看到相关的修改发生在HKEY_USERS\SID(这里是S-1-5-21-2119850594-2044871672-3475818845-1000)\Software目录下,这个键为单独的用户扩展,基于为用户或者被用户安装的其他软件。

3>被修改的注册表还有HKEY_CLASSES_USER,其根键中记录的是当前用户的配置数据信息,用户可以利用此根键下的子键修改Windows的许多环境配置。比如系统提示声、鼠标速度、图标间距、图标大小等。

4>文件差异:包括增加、删除、修改操作。可以看到变化最多的就是C:\boost_interprocess文件夹,是用于进程间通讯的临时文件,类似于共享内存的句柄

此时因为还没有进行操作,只是实现了回连,所以从中看不到应用程序上有什么差异。

③快照1和快照3进行对比,导出差异分析的结果
1>注册表差异:包括增加、删除、修改操作。和刚刚相比,被修改的注册表项多了HKEY_CLASSES_ROOT,该注册表项包含了所有应用程序运行时必需的信息(包括在文件和应用程序之间所有的扩展名和关联、所有的驱动程序名称、类的ID数字、用于应用程序和文件的图标等)。差异中调用Windows的命令行操作有所体现。

2>应用程序差异:以增加操作为主。可以看到20175229_backdoor.exe文件大量调用了系统中的DDL文件。

(2)抓包分析(WireShark工具)
①输入dir之后捕获到的数据包

从数据包中可以看到源IP、目的IP、源端口、目的端口以及传输的数据。

②输入mkdir test之后捕获到的数据包

4.问题回答

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

(1)我认为Windows自带的计划任务schtasks就很好用,按照上面的操作,每五分钟甚至是每分钟记录一下,然后把结果都导入到EXCEL中,看看哪些进程占比较多,是否是可疑进程。
(2)刚刚是做一个大致的筛选,选出比较可疑的,缩小范围之后就可以对这些可疑进程进行分析。
①静态分析:VirusTotal、VirusScan进行扫描较为方便
②动态分析:SysTracer工具可以创建快照,并对不同快照进行对比分析

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

(1)用sysmon可以查看该进程创建了哪些日志文件
(2)用SysTracer工具可以查看该进程对注册表、文件还有应用程序进行了哪些修改
(3)用Wireshark进行抓包,可以看该进程传输了哪些数据

5.实验体会与遇到的问题

此次实验难度不是很大,但是操作性特别的强,我就是比较喜欢这种以实践为主的实验,但是遇到了一些问题,刚开始在vm虚拟机的win7下安装sysmon,一直不成功,显示无法找到指定的xml,最后无奈的在本机win10上做了实验,装了一大堆东西,电脑实在是扛不住了,这学期各种实验还突然加了一个课程设计,电脑安了无数个虚拟机,打开一个都挺卡,别说有的课程的实验要用4,5个,实在是脑阔疼。在做这个实验期间我参考了学长学姐们的博客,我学到了一些关于恶意代码运行时对于主机的影响的内容,从而可以进行实践,经常性的查看自己的电脑是否安全,是否有不正常的软件等,提高自己的电脑安全。通过这次实验,有趣是有趣,但是根本看不懂,以后还是得多多了解和学习更多的知识。

posted on 2020-04-13 18:31  20175229张智敏  阅读(276)  评论(0编辑  收藏  举报