• 2019-2020-2 20175227张雪莹《网络对抗技术》 Exp4 恶意代码分析


    目录

    0. 基础知识

    0.1 恶意代码的概念及分类

    恶意代码类型 定义特征 典型实例
    计算机病毒 通过感染文件(可执行文件、数据文件、电子邮件等)或磁盘引导扇区进行传播,一般需要在宿主程序被执行或人为交互才能运行 Brain,Concept,CIH
    蠕虫 一般为不需要宿主的单独文件,通过网络传播,自动复制,通常无需人为交互便可感染传播 Morris,Code,Red
    恶意移动代码 从远程主机下载到本地执行的轻量级恶意代码,不需要或仅需要极少的人为干预 SandyWorm
    后门 绕过正常的安全控制机制,从而为攻击者提供访问途径 Netcat,BQ,冰河
    木马 伪装成有用软件,隐藏其恶意目标,欺骗用户安装执行 Setiri
    僵尸程序 使用一对多的命令与控制机制组成僵尸网络 Sdbot,Agobot
    内核套件 通过替换或修改系统关键可执行文件,或者通过控制操作系统内核,用以获取并保持最高控制权 LRK,FU,hdef
    融合型恶意代码 融合多种恶意代码技术的恶意代码 Nimda

    0.2 恶意代码的分析方法

    • 静态分析
    分析方法 目的 使用工具 难度
    恶意代码扫描 标识已知恶意代码 反病毒引擎
    文件格式识别 确定攻击平台和类型 file,peid,FileAnalyzer
    字符串提取 寻找恶意代码分析线索 Strings
    二进制结构分析 初步了解二进制文件结构 binutils(nm,objdump)
    反汇编 二进制代码->汇编代码 IDAPro,GDB,VC 中高
    反编译 汇编代码->高级语言 REC,DCC,JAD 中高
    代码结构与逻辑分析 分析二进制代码组,理解二进制代码逻辑层结构 IDAPro,Ollydbg
    加壳识别和代码脱壳 识别是否加壳及类型;对抗代码混淆恢复原始代码 UPX,VMUnpacker,手工
    • 动态分析
    分析方法 目的 使用工具 难度
    快照比对 获取恶意代码行为结果 FileSnap,RegSnap,完美卸载
    动态行为监控 实时监控恶意代码动态行为轨迹 Filemon,Regmon,ProcessExploer
    网络监控 分析恶意代码网络监听端口及发起网络会话 Fport,lsof,TDImon
    沙盒 在受控环境下进行完整的恶意代码动态行为监控与分析 NoemanSanbbox,FVMSandbox 中高
    动态跟踪调试 单步调试恶意代码程序,理解程序结构和逻辑 Ollydbg,IDAPro,GDB

    返回目录

    1. 实验目标

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

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

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

    2. 实验内容

    2.1 系统运行监控

    2.1.1 Windows计划任务schtasks
    • 要求
      • 使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述一下分析结果。
      • 目标就是找出所有连网的程序,连了哪里,大约干了什么(不抓包的情况下只能猜),你觉得它这么干合适不。如果想进一步分析的,可以有针对性的抓包。
    • 步骤
      • 使用命令schtasks /create /TN netstat5227 /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > c: etstatlog.txt" 创建计划任务netstat5227
      • 命令中参数意义如下:

      TN:TaskName的缩写;
      sc:计时方式,我们以分钟计时填MINUTE;
      TR:Task Run缩写,要运行的指令是 netstat
      bn:b表示显示可执行文件名,n表示以数字来显示IP和端口;
      >:表示输出重定向,将输出存放在c: etstatlog.txt文件中

    • 在C盘中创建netstat5227.bat脚本,内容如下:
    date /t >> c:
    etstat5227.txt
    time /t >> c:
    etstat5227.txt
    netstat -bn >> c:
    etstat5227.txt
    
    • 打开任务计划程序,查看当前新创建的任务netstat52227

    • 双击该任务进行编辑,在常规选项卡中勾选使用最高权限操作,以防记录里出现权限问题。

    • 操作选项卡中双击编辑启动程序操作,程序或脚本选择netstat5227.bat,参数为空。

    • 为了统计足够多的数据,将条件选项卡中该选项取消:

    • 执行该脚本一段时间后,就可以在netstat5227.txt文件中看到主机在此段时间内的联网记录:

    • 一段时间后可以获得充足的数据,可以停止该任务,将netstat5227.txt中数据复制粘贴到Excel中进行分析。统计项目如下:

    • 由统计数据分析可知:

      联网最多的是VMware.exe及其相关的一些其他可执行文件;其次就是谷歌浏览器对应的chrome.exe;其他还有譬如说QQ、微信、WPS一些程序,还有后门程序zxy_20175227_backdoor.exe。其他的也是系统相关的程序,没有什么异常。

    返回目录

    2.1.2 sysmon工具
    • 要求
      • 安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控自己主机的重点事可疑行为。
      • 实际日志的分析还需要发挥下自己的创造力,结合以前学过的知识如linux的文本处理指令等进行。分析的难点在于从大量数据中理出规律、找出问题。这都依赖对结果过滤、统计、分类等进一步处理,这就得大家会什么用什么了。
    • 步骤
      • sysmon工具介绍

        sysmon是由Windows Sysinternals出品的一款Sysinternals系列中的工具。
        以系统服务和设备驱动程序的方法安装在系统上,并保持常驻性。
        sysmon用来监视和记录系统活动,并记录到windows事件日志,可以提供有关进程创建,网络链接和文件创建时间更改的详细信息。
        通过收集并分析使用Windows事件集合或SIEM代理生成的事件,可以识别恶意或异常活动,并了解入侵者和恶意软件在主机的网络上如何操作。

      • 下载老师提供sysinternal解压该文件后将sysmon.exe拷贝到管理员运行cmd的文件夹中,我这里是C://Windows/System32

      • 这篇文章中详细列举了sysmon过滤器事件及其选项,我选取了NetworkConnect中的Image、SourcePort、SourceIP、DestinationPortCreateRemoteThread中的TargetImage、SourceImage

      • 创建配置文件sysmon.xml,(创建后同样拷贝到C://Windows/System32)文件内容如下:

    <Sysmon schemaversion="3.10">
       <!-- 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>
           <!-- 源端口和IP包含下列的 -->
           <SourcePort condition="is">137</SourcePort>
           <SourceIp condition="is">127.0.0.1</SourceIp>
         </NetworkConnect>
    
         <NetworkConnect onmatch="include">
           <!-- 目的端口和IP包含下列的 -->
           <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>
    
    • 以管理员身份运行cmd,输入指令Sysmon.exe -i sysmon.xml,会弹出安装提示框,点击Agree进行安装,安装成功后如图,我的版本是3.10:

    • 打开事件查看器,在左侧栏中选择应用程序和服务日志->Microsoft->Sysmon->Operational
    • 以实验二生成的后门程序zxy_20175227_backdoor.exe为例,按步骤执行回连,在系统时间9:16:19左右看到了该条日志,如下:

    • 在9:19:22时我通过Linux获取了shell,在事件查看器中查看到了该条日志,调用了cmd.exe,且在后门程序目录下,显然与测试的后门程序相关:

    • 在shell中输入dir获取主机当前文件信息,在事件查看器中看到了以下两条日志:

    SearchProtocolHost.exeSearchFilterHost.exe都是Windows下的文件搜索引擎程序

    • 在9:46:30左右,在msfconsole中输入getuid获取当前主机用户信息,可以看到该条日志:

    mmc.exe是系统管理程序的一个框架程序,可以查看组策略等信息。

    返回目录

    2.2 恶意软件分析

    2.2.1 静态分析

    ①恶意代码扫描(VirusTotal网站)

    • 这里使用实验三生成的加压缩壳后门程序zxy175227.upxed.exe,在VirusTotal进行扫描,结果如下:

    • 该文件的查出率相当高。
    • 查看细节,可以看到这个文件的三个算法的摘要值,文件类型等信息。
      尤其是,它连加的什么壳也扫出来了“upx

    ②文件格式识别(PEiD工具)

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

    • 下载了PEiD之后进入文件夹就可以看到exe文件,直接双击运行即可:

    • 扫描加壳后门文件zxy175227.upxed.exe,得到下图中的结果:

    可以看到加壳版本是UPX 0.89.6

    • 扫描未加壳后门程序zxy_20175227_backdoor.exe,结果如下:

    PE嗅探未检测到加壳,扫描该文件发现它反弹连接攻击机是通过调用DLL的方式实现。

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

    PE Explorer是功能超强的可视化Delphi、C++、VB程序解析器,能快速对32位可执行程序进行反编译,并修改其中资源。

    • 打开PE Exploer后打开后门程序zxy_20175227_backdoor.exe,显示出文件头信息:

    • 选择菜单栏中的视图->引入,可以查看调用的DLL文件:

    可以看到更加详细的调用DLL文件的信息。

    msvcrt.dll:微软在windows操作系统中提供的C语言运行库执行文件
    kernel32.dll:属于内核级文件,它控制着系统的内存管理、数据的输入输出操作和中断处理,是必需的
    advapi32.dll:一个高级API应用程序接口服务库的一部分,包含的函数与对象的安全性,注册表的操控以及事件日志有关,会受到病毒的侵扰及篡改,导致系统文件丢失、损坏
    wsock32.dll:Windows Sockets应用程序接口,用于支持很多Internet和网络应用程序,是一个对系统很关键或很可疑的文件。
    ws2_32.dll:Windows Sockets应用程序接口。一些病毒会在杀毒软件目录中建立伪"ws2_32.dll"的文件或文件夹,在杀毒软件看来这是程序运行需要的文件而调用,这个所谓的“文件”又不具备系统"ws2_32.dll"文件的功能,所以杀毒软件等就无法运行了而提示:应用程序正常初始化失败。

    • 菜单栏选中视图->资源,可以查看到与VirusTotal和PEiD中一样的版本信息:

    • 这款软件的主要功能是实现反汇编,可以在菜单栏工具->反汇编器,可以看到将该文件反汇编的结果:

    返回目录

    2.2.2 动态分析

    ①快照比对(SysTracer工具)

    SysTracer是一个系统工具,可以帮助您找到应用于计算机中不同项目和区域的更改-可能是恶意软件导致的更改。
    为了发现这些更改,SysTracer执行系统扫描,记录有关文件和文件夹,注册表项,系统服务,驱动程序,当前活动的进程,已加载的库(DLL)和计划在系统启动时运行的应用程序的信息。

    • 点击创建快照,我创建了四个进行比对,分别是:
      • Snapshot #1:不进行任何操作;
      • Snapshot #2:运行后门程序并成功反弹连接;
      • Snapshot #3:获取shell并获取被攻击机文件详情;
      • Snapshot #4:使用msf命令getuidscreenshot

    比对Snapshot #1和Snapshot #2

    • 查看应用程序标签页,可以看到Running Processes下的zxy_20175227_backdoor.exe被标蓝,表示快照1和快照2的运行程序差异就是这一项后门:

    可以看到运行后门后它修改了关于系统组策略配置的一个应用程序,应该是用它得到更高权限来查看系统内部信息。

    • 查看注册表差异,可以看到启动后门程序并进行反弹回连后修改了一些注册表信息:

    比对Snapshot #2和Snapshot #3

    • 可以看到新增了一个DLL文件winbrand.dll,网上没查到更多关于这个文件的信息,只知道他是Windows OS中很重要的一个关于资源的DLL:

    • 增加了许多调用DLL文件的记录:

    • Linux调用shell之后,修改了注册表中本机键值的conhost.exe,并删增了用户键值下的读者修订信息:

    conhost全称是console host process, 即命令行程序的宿主进程. 大家都知道命令行程序是什么东西吧, 比如ipconfig.exe之类, 由于命令行程序自身没有代码来显示UI, 我们平时看到的命令行窗口内容都是由宿主进程来完成的,包括窗口的显示, window message的处理,等等.

    这样一来就可以得到访问读取被攻击机的资源了:

    比对Snapshot #3和Snapshot #4

    • 删除了之前建立的调用许多DLL的过程:

    • 这里我是退出了shell,并获取了当前主机截屏和用户信息,可以看到刚刚那个winbrand.dll被删了,我推测这个程序和获取shell息息相关。

    • 这里仍然修改了conhost.exe相关的键值:

    ②网络监控(Wireshark工具)

    注意:接口应该选择VMnet8这个,否则抓不到Kali和主机之间的包

    • 开始抓包后,Kali中启动监听,然后Windows端回连,可以看到TCP三次握手建立连接的过程,目的端口是Kali中设置的监听端口5227,还可以看到目的和源IP地址:

    • Kali中使用ls命令后可以看到一个TCP相关的包和所传输的数据信息:

    返回目录

    3. 老师提问

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

    • 回答:
      • 使用Windows计划任务schtasks:定期查看网络连接情况,包括IP和端口,并进行统计分析,确认IP所属和连接发起方详情。
      • 使用sysmon工具:配置好想要查看的选项,比如网络连接、注册表信息等,通过所生成的日志进行查看分析。
      • 使用PEiD、PE Exploer工具:查看一个程序是否加壳,并进行反汇编、反编译,查看并分析该程序是否有违规操作。
      • 使用sysTracer工具:进行快照对比,发现恶意代码对注册表、exe可执行文件的操作。
      • 使用Wireshark工具:捕获数据包,分析数据流情况。

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

    • 回答:
      • 通过火绒安全杀软中的进程管理来监控文件系统、注册表、进程/线程的活动。
      • 通过Wireshark进行捕包分析,监视与可疑IP的连接通信情况。

    返回目录

    4. 所遇到的问题及其解决方法

    返回目录

    5. 实验感想

    • 通过这次实验,我掌握了分析恶意代码的基本方法,是前四次实验中最顺利的一次,几乎没遇到问题。在进行恶意代码分析的时候,我了解了Windows OS中一些exe和DLL文件的作用,和一些注册表项的意义,还是很有收获的。总的来说这次实验的实操性很强,可以用于以后自己查找主机上的恶意代码。有助于同学整理的资料,让自己没有在寻找软件上多花费时间。

    返回目录

    6.参考资料

    返回目录

  • 相关阅读:
    ArcGIS Engine要素渲染和专题图制作(转)
    网络换行符替换为word换行符
    栅格数据处理 RasterDataset RasterLayer Raster RasterBandCollection
    ISurfaceOp 接口生成等高线
    小女孩动画
    pytest 知识点学习
    pytest+python 项目初步实践及生成allure报告
    docker安装python项目
    windows 10 专业版 安装docker desktop
    selenium+python自动化测试--解决无法启动IE浏览器及报错问题
  • 原文地址:https://www.cnblogs.com/zxy20175227/p/12692568.html
Copyright © 2020-2023  润新知