20174311 唐嘉《网络对抗技术》Exp4 恶意代码分析

 

      一、实验目标

  • 监控你自己系统的运行状态,看有没有可疑的程序在运行。

  • 分析一个恶意软件,就分析Exp2或Exp3中生成后门软件;分析工具尽量使用原生指令或sysinternals,systracer套件。

  • 假定将来工作中你觉得自己的主机有问题,就可以用实验中的这个思路,先整个系统监控看能不能找到可疑对象,再对可疑对象进行进一步分析,好确认其具体的行为与性质。

    二、实践内容及步骤

        2.1 系统运行监控

          2.1.1 Windows计划任务schtasks

         输入以下命令,schtasks /create /TN 20174311netstat /sc MINUTE /MO 5 /TR "cmd /c netstat -bn > c:\netstatlog.txt",每五分钟记录下有哪些程序在连接网络。在主机端输入命令完成后,每五分钟就会监测哪些程序在使用网络,并把结果记录在netstatlog.txt文档里。

    为了显示日期和时间,可以通过bat批处理文件来实现。首先创建bat文件,在C盘下建一个文件c:\netstatlog.bat,内容为(修改文件后缀名即可):

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

 

   接着打开控制面板,在管理工具搜索任务计划程序,找到任务20174311netstat。

      选中该任务,找到操作选项,点击所有项里的属性选项。

   

       找到操作选项卡,双击详细信息,把框中原本的cmd改成c:\netstatlog.bat。

    此时打开c:\netstatlog.bat文件(用记事本方式打开),就可以看到时间信息了。(这里需要等一段时间,可以干点别的)

    下面就是把数据导入excel表里进行数据分析处理的操作了,打开Excel,点击数据选项卡,在获取外部数据的方式上选择自文本,选择记录连接情况的netstatlog.txt。(这里要说一下,等一段时间后点击bat文件就会自己更新一个txt文件)按照下图所示选择导入的格式:

     之后就可以看到数据导入成功了:

 

     选中某一列,在这里我选择的B列,因为B列是软件使用情况。找到插入选项卡,点击数据透视图,来生成一个数据透视图。(这里说明一下下,点击数据透视图后会让你设置一些参数,要在右侧“选择要添加到报表的字段”中点击对应字段右侧的小箭头,取消选择没有意义的字段,只保留软件信息,然后点击确定,接着将该字段拖动到下方的数值区域中即可)

 

    这里说明一下,由于电脑比较卡嘿嘿,所以说做网络对抗实验的时候我习惯把软件都关了,然后呢在上面等的这段时间里我就听了听歌,没用电脑上的太多软件,所以软件频次可能不太高嘿嘿。

    做一下简单分析,这段时间总的软件使用频次不高,主要是微信聊天,然后用百度网盘下了点东西,当然也听着歌,但有点奇怪的是qq音乐的频次却不是特别高,而且本人在电脑上跑的软件比较少,所以说从数量上还是频次上都偏小。

     2.1.2 sysmon

首先是下载安装这个软件。我下载的是下面这个版本:

创建配置文件sysmon.xml,文件中写入以下指令:

 

<Sysmon schemaversion="4.12">
  <!-- Capture all hashes -->
  <HashAlgorithms>*</HashAlgorithms>
  <EventFiltering>
    <!-- Log all drivers except if the signature -->
    <!-- contains Microsoft or Windows -->
    <DriverLoad onmatch="exclude">
      <Signature condition="contains">microsoft</Signature>
      <Signature condition="contains">windows</Signature>
    </DriverLoad>
   
    <NetworkConnect onmatch="exclude">
      <Image condition="end with">chrome.exe</Image>
      <Image condition="end with">iexplorer.exe</Image>
      <SourcePort condition="is">137</SourcePort>
      <SourceIp condition="is">127.0.0.1</SourceIp>
    </NetworkConnect>

    <CreateRemoteThread onmatch="include">
      <TargetImage condition="end with">explorer.exe</TargetImage>
      <TargetImage condition="end with">svchost.exe</TargetImage>
      <TargetImage condition="end with">winlogon.exe</TargetImage>
      <SourceImage condition="end with">powershell.exe</SourceImage>
    </CreateRemoteThread>
  </EventFiltering>
</Sysmon>

 

    接着以管理员身份打开cmd命令行,使用指令Sysmon.exe -i sysmon.xml安装sysmon。输入命令之后会弹出下面这个框,点击Agree进行安装。

    然后就发现安装成功了。

 

下面是修改配置文件的操作,更新版本号为4.23,增加对端口4311、443、80的监听服务:

 

<Sysmon schemaversion="4.23">
  <!-- Capture all hashes -->
  <HashAlgorithms>*</HashAlgorithms>
  <EventFiltering>
    <!-- Log all drivers except if the signature -->
    <!-- contains Microsoft or Windows -->
    <DriverLoad onmatch="exclude">
      <Signature condition="contains">microsoft</Signature>
      <Signature condition="contains">windows</Signature>
    </DriverLoad>
   
    <NetworkConnect onmatch="exclude">
      <Image condition="end with">iexplorer.exe</Image>
      <SourcePort condition="is">137</SourcePort>
      <SourceIp condition="is">127.0.0.1</SourceIp>
    </NetworkConnect>

    <NetworkConnect onmatch="include">
      <DestinationPort condition="is">4311</DestinationPort>    
      <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">winlogon.exe</TargetImage>
      <SourceImage condition="end with">powershell.exe</SourceImage>
    </CreateRemoteThread>
  </EventFiltering>
</Sysmon>

 

    配置文件修改完要更新,指令为:sysmon.exe -c sysmon.xml

    下面开始查看日志,在任务管理器中搜索并打开事件查看器。应用程序和服务日志下,查看Microsoft->Windows->Sysmon->Operational。随便点开一个看看:

         下面开始回连查看操作。运行实验三生成的bbskali hyperion.exe,可以看到在21时44分回连成功。

    根据回连成功的时间,可以在日志信息中可以成功找到这个事件:

 

      运行回连实验二生成的后门文件4311_backdoor.exe,也可以找到相关的日志信息:

      进程创建日志:

     回连后产生的网络连接日志:

 

 

 

 

     从图中可以看到,程序为4311_backdoor.exe,协议为tcp协议,源IP地址为192.168.80.1,目标IP地址为192.168.0.101,目的端口为4311。

     2.2 恶意软件分析

     2.2.1 静态分析

    静态分析的方法有很多,这里我主要选用的是文件扫描、peid工具和PE Explorer工具。

   (1) 文件扫描(VirusTotal)

    由于这个方式在上个实验中已经详细做过,这里就不再赘述操作了。

 

   (2)文件格式识别(peid工具)

    先看一下没有加壳的后门程序:

        再看一下加过压缩壳的后门程序:

    再看一下加过加密壳的后门程序:

       通过上面的对比可以看出,使用壳加密后这个软件就不能查到了。

      (3) 反编译、反汇编(PE Explorer工具)

   文件头信息:

      调用的DDL文件,而且指出了DDL文件调用的函数。

    msvcrt.dll是微软在windows操作系统中提供的C语言运行库执行文件;kernel32.dll是非常重要的32位动态链接库文件,属于内核级文件;wsock32.dll是Windows Sockets应用程序接口,用于支持很多Internet和网络应用程序;ws2_32.dll是Windows Sockets应用程序接口, 用于支持Internet和网络应用程序。

    2.2.2 动态分析

    动态分析的方法也有很多,这里我选择SysTracer和wireshark工具。

    (1)使用SysTracer分析

    下载SysTracer并安装

 

     选择中间的选项。

 

    端口设置为4311。

    为方便对比观察,这里选择四个快照:

    在打开后门前先快照一下,选择->take snapshot,完成后显示Snapshop #1。(要等它自己完成)

    Kali开始监听,Windows运行后门后,回连成功后拍摄快照,完成后显示Snapshop #2。

    在kali中使用MSF截屏操作screenshot,完成后显示Snapshop #3。

    结束连接后exit退出,快照,显示Snapshop #4。

 


 

 

     对比#1和#2,在Applications里的Running Processes里可以发现后门程序的添加。

    下图可视的后门程序的入侵。

    可以查看回连地址及端口号。

 

      在registry选项卡里可以直接找到注册表的变化项。

 

 

     HKEY_CLASSES_ROOT:这个项包含所有的文件类型,文件关系,图标文件名,com对象等信息。
     HKEY_USERS:所有WINDOWS用户的文件都会记录在这个项里面,每个用户会有自己的项以保存个人设置。
     HKEY_CURRENT_USER:这个项保存了目前登陆的用户文件,以及个性化的设置,如桌面外观,软件设置,开始菜单等。会随着登陆的用户不同而有所改变。
     HKEY_LOCAL_MACHINE:这个项保存了绝大部分的系统信息,包括硬件配置,网络设置,以及你所安装的软件等,是注册表里最重要也最庞大的项,当你用设备管理器更改了硬件的设置时,这个项里的文件也会跟着变动。
     HKEY_CURRENT_CONFIG :此项主要记录PNP设备及硬件的设置值。

 

 

 

     详细view查看一下可以发现注册表的许多变化。

 

 

     对比#3和#4,可以发现后门程序的断连。

 

 

 

     这里有个小问题,对比项的时候会出现下面的情况:

 

           往下细分项会出现systracer not registered,往下的信息没办法搜索到,但我看有的同学的博客往下还有分支,我觉得可能是版本的不同吧,但是可以清楚的查看注册表的前后变化。

    (2)抓包分析(WireShark工具)

    回连成功后捕获数据包:

 

           通过分析可以看出后门程序使用的通信方式为TCP传输。在被植入后门的Windows主机入侵时,主机与虚拟机首先进行了完整的三次握手,并且可以明显看出是从4311端口传输的数据。

     输入dir之后捕获到的数据包:

 

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

 

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

 

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

 

    三、实验心得与体会

     3.1实验后回答问题

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

    主要还是用本次实验用到的方法吧:

    使用schtasks指令设置一个计划任务,观察一段时间的联网情况,对其进行分析查看是否有可疑的联网程序;

    使用Sysmon,编写配置文件,在事件查看器中的日志查看有无异常事件;

    使用Process Explorer,查看系统中是否存在可疑进程;

    使用Systracer拍摄几个时间点的快照,对比不同时间的快照,查看是否有可疑的增删注册表、启动项的行为;

    使用wireshark查看自己计算机的端口开放情况,查看是否有多余端口进行可疑的数据传输。

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

    也是主要用本次实验的方法吧(最简单我觉得还是使用VirusTotal分析恶意软件):

    使用PEiD查看程序是否加壳,加的什么壳;

    使用wireshark查看他在运行时传输信息的方式以及内容、端口以及目的地址是哪里;

    使用Systracer工具拍摄快照,查看其对注册表和文件的修改。

    3.2 实验心得体会

    这次实验内容我觉得比较实用,起码知道一些监控恶意进程的操作哈哈哈。这次实验碰到的是一些小问题,慢慢的就可以解决,但是我电脑有点卡,有几个地方还是耽误了一些时间。

    通过本次实验,我提升了利用软件分析恶意代码的能力,学会了一些检测系统进程的方法,希望在之后的学习中能够有更加深入的了解。

posted @ 2020-04-15 11:08  香锅加点辣  阅读(491)  评论(0编辑  收藏  举报