• 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: etstatlog.txt",每五分钟记录下有哪些程序在连接网络。在主机端输入命令完成后,每五分钟就会监测哪些程序在使用网络,并把结果记录在netstatlog.txt文档里。

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

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

     

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

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

       

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

        此时打开c: etstatlog.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 实验心得体会

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

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

  • 相关阅读:
    C# 数据为空,不能对NULL调用此方法或属性的解决办法
    Hadoop开启后jps显示只有jps
    Ubuntu中eclipse端口被占
    Ubuntu在终端执行命令时出现的错误
    sudo passwd root输入普通用户密码后显示用户不再sudoers文件中
    周总结(4.4)
    《构建之法》读后感(三)
    周总结(3.28)
    软件工程团队项目介绍
    解决phpstudy中nginx服务器运行项目报错404问题
  • 原文地址:https://www.cnblogs.com/bestitj/p/12703946.html
Copyright © 2020-2023  润新知