zoukankan      html  css  js  c++  java
  • 2020-2021-4 20175229张智敏 《网络对抗技术》Exp4 恶意代码分析

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

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

    date /t >> c:
    etstatlog.txt
    time /t >> c:
    etstatlog.txt
    netstat -bn >> c:
    etstatlog.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_USERSSID(这里是S-1-5-21-2119850594-2044871672-3475818845-1000)Software目录下,这个键为单独的用户扩展,基于为用户或者被用户安装的其他软件。

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

    4>文件差异:包括增加、删除、修改操作。可以看到变化最多的就是C:oost_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个,实在是脑阔疼。在做这个实验期间我参考了学长学姐们的博客,我学到了一些关于恶意代码运行时对于主机的影响的内容,从而可以进行实践,经常性的查看自己的电脑是否安全,是否有不正常的软件等,提高自己的电脑安全。通过这次实验,有趣是有趣,但是根本看不懂,以后还是得多多了解和学习更多的知识。

  • 相关阅读:
    枚举工具类:封装判断是否存在这个枚举
    MYSQL插入emoji报错解决方法Incorrect string value
    文件大小转换带上单位工具类(文件byte自动转KBMBGB)
    mysql 统计七天数据并分组
    mybatis plus 和 druid 版本导致LocalDateTime 不兼容问题
    Layui弹框中select下拉列表赋值回显
    查看环境版本
    Linux 常用命令
    安装jdk14的坑
    modbus_tk解析
  • 原文地址:https://www.cnblogs.com/zzmzcc/p/12689248.html
Copyright © 2011-2022 走看看