2017-2018-2 20155314《网络对抗技术》Exp4 恶意代码分析

2017-2018-2 20155314《网络对抗技术》Exp4 恶意代码分析

目录

实验要求

  1. 监控你本身系统的运行状态,看有没有可疑的程序在运行。php

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

  3. 假定未来工做中你以为本身的主机有问题,就能够用实验中的这个思路,先整个系统监控看能不能找到可疑对象,再对可疑对象进行进一步分析,好确认其具体的行为与性质。linux

返回目录算法

实验内容

  1. 系统运行监控(2分)
    • 使用如计划任务,每隔一分钟记录本身的电脑有哪些程序在联网,链接的外部IP是哪里。运行一段时间并分析该文件,综述一下分析结果。目标就是找出全部连网的程序,连了哪里,大约干了什么(不抓包的状况下只能猜),你以为它这么干合适不。若是想进一步分析的,能够有针对性的抓包。
    • 安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控本身主机的重点事可疑行为。

    实际日志的分析还须要发挥下本身的创造力,结合之前学过的知识如linux的文本处理指令等进行。分析的难点在于从大量数据中理出规律、找出问题。这都依赖对结果过滤、统计、分类等进一步处理,这就得你们会什么用什么了。shell

  2. 恶意软件分析(1.5分)vim

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

    该实验重点在“分析”,不是“如何使用某软件”。组长、课题负责人要求写细一点,其余人能够重点放在分析上。windows

返回目录后端

实验环境

  • macOS下Parallels Desktop虚拟机中(网络源均设置为NAT模式):
    • Windows 7 - 64bit(IP为10.211.55.13
    • Kali Linux - 64bit(IP为10.211.55.10

返回目录浏览器

基础问题回答

  • 若是在工做中怀疑一台主机上有恶意代码,但只是猜测,全部想监控下系统一每天的到底在干些什么。请设计下你想监控的操做有哪些,用什么方法来监控?
    • 利用sysmon工具,配置好想要监控的端口、注册表信息、网络链接等信息,经过其生成的日志文件进行查看
    • 利用wireshark查看数据包,TCPview也能够,可是没那么全面
    • 利用systracer进行快照,比照注册表、文件等信息
    • 利用Process monitor、Process Explorer
  • 若是已经肯定是某个程序或进程有问题,你有什么工具能够进一步获得它的哪些信息?
    • 一样采用以上工具,用wireshark查看数据包,systracer进行快照的对比(注册表、文件等),peid查看是否加壳,Process Explorer查看调用的程序库、dll库等

返回目录安全

预备知识

  • 恶意代码(Unwanted Code):是指没有做用却会带来危险的代码,一个最安全的定义是把全部没必要要的代码都看做是恶意的,没必要要代码比恶意代码具备更宽泛的含义,包括全部可能与某个组织安全策略相冲突的软件
  • 恶意代码分析
    • 静态分析基础技术
      • 计算恶意程序MD5值,而后检索该MD5值来获取信息并做为其特征码使用(可以使用md5deep winmd5)
      • 经过检索恶意代码字符串得到相应的功能调用解释等,查看是否有被加壳处理(字符串检索:Strings 外壳检测:PEiD)
      • PE文件头中包含代码信息,恶意代应用程序类型等重要信息。可经过工具检索其动态连接库(dll),而后再MSDN文档库中查找其功能。(Dependency Walker、 PEview、 PEBrowse Professional、PE Explorer)
      • 查看可疑代码的的资源节来得到一部分可见的特征(Resource Hacker)
    • 动态分析基础技术
      • 配置“沙箱”环境,模拟真实执行结果(各类沙箱)
      • Dll类型文件的启动运行(PEview、PE Exporer)
      • 用一些系统监视类软件捕获运行中恶意程序的系统调用(process monitor、process explorer)

返回目录

实验步骤

1 静态分析

1.1 使用virscan进行特征库比对

  • 在virscan.org网站上分析Exp3中经过upx加壳生成的后门:

    可见有7/40(上次实验扫描结果仍是7/39)的杀软认定其为病毒文件
  • 点击扫描结果右边的【文件行为分析】查看详细分析结果:
    • 在“壳或编译器信息”一栏可见其被upx加壳:
    • 在“关键行为”一栏查看其行为描述为“设置特殊文件夹属性”:
    • 在“进程行为”一栏查看其行为描述为“建立本地线程”:
    • 在“文件行为”一栏查看其行为描述为“设置特殊文件夹属性”和“查找文件”:
    • 在“网络行为”一栏查看其行为描述为“链接指定站点”、“创建到一个指定的套接字链接”、“发送HTTP包”、“读取网络文件”和“打开HTTP请求”:
    • 在“注册表行为”一栏查看其行为描述为“修改注册表”、“删除注册表键值”和“删除注册表键”:
    • 在“其余行为”一栏查看其行为描述为“打开互斥体”、“建立互斥体”、“建立事件对象”和“打开事件”:
  • 恶意代码分析:
    • 加壳
    • 建立链接
    • 修改注册表
    • 检测自身的调试状况

返回目录

1.2 使用PEiD进行外壳检测

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

  • 扫描模式
    - 正常扫描模式:可在PE文档的入口点扫描全部记录的签名
    - 深度扫描模式:可深刻扫描全部记录的签名,这种模式要比上一种的扫描范围更广、更深刻
    - 核心扫描模式:可完整地扫描整个PE文档,建议将此模式做为最后的选择。PEiD内置有差错控制的技术,因此通常能确保扫描结果的准确性。前两种扫描模式几乎在瞬间就可获得结果,最后一种有点慢,缘由显而易见。
  • 命令选项
    - peid -time:显示信息
    - peid -r:扫描子目录
    - peid -nr:不扫描子目录
    - peid -hard:采用核心扫描模式
    - peid -deep:采用深度扫描模式
    - peid -norm:采用正常扫描模式
  • 主要模块
    - 任务查看模块:能够扫描并查看当前正在运行的全部任务和模块,并可终止其运行
    - 多文件扫描模块:可同时扫描多个文档。选择“只显示PE文件”能够过滤非PE文档;选择“递归扫描”可扫描全部文档,包括子目录
    - Hex十六进制查看模块:能够以十六进制快速查看文档
  • PEiD v0.94下载地址:exe,dll侦壳工具 PEiD v0.94 20060510 汉化集成插件版
  • 下完解压打开.exe文件发现是安装包:

    ???woc流氓软件!!居然要捆绑安装这么多....
  • 安装完毕,打开PEiD,界面以下(实践代表win7对于本来只能在XP上运行的PEiD仍是具备较好的兼容性的):
  • 选择.exe文件路径或者干脆直接把.exe文件拖到里面便可:

    从上面咱们能够看到软件加的UPX的壳,版本是0.89.6。点击>>按钮还能够查看详细信息:
  • 换一个用Hyperion加过密的壳试试?

    什么也没发现!!成功便骗过去了!!!
  • 点击“多重扫描”还能够更改扫描方式(虽然对加密过的壳并无什么用):
  • 咱们最经常使用到的功能有:
    1. 查看入口点(即程序的入口地址)。查入口点的软件有不少,几乎全部的PE编辑软件均可以查看入口点。
    2. 查看软件加的什么壳。这个软件加的是UPX 0.89.6
  • PEiD插件应用:

    最经常使用的插件就是脱壳。PEiD的插件里面有个通用脱壳器,能脱大部分的壳,若是脱壳后import表损害,还能够自动调用ImportREC修复improt表。
    • 点击“=>”打开插件列表:
    • 还能够专门针对一些壳进行脱壳,效果要比通用脱壳器好:
    • 使用unpacker for upx插件进行脱壳。默认的脱壳后的文件放置位置在peid的根目录下。文件名为原文件名前加un字样。

      什么...居然失败了...

返回目录

1.3 使用PE explorer查看PE文件头中包含代码信息

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

  • 优势:功能极为强大的可视化汉化集成工具,可直接浏览、修改软件资源,包括菜单、对话框、字符串表等;另外,还具有有W32DASM软件的反编译能力和PEditor软件的PE文件头编辑功能,能够更容易的分析源代码,修复损坏了的资源,能够处理PE格式的文件如:EXE、DLL、DRV、BPL、DPL、SYS、CPL、OCX、SCR等32位可执行程序。该软件支持插件,你能够经过增长插件增强该软件的功能,原公司在该工具中捆绑了UPX的脱壳插件、扫描器和反汇编器,很是好用。

  • 缺点:惟一遗憾的是欠缺字典功能。
  • 功能:
    - 出口,进口,延迟导入
    - 资源编辑器
    - 节头的浏览器
    - 段编辑器
    - 反汇编
    - 依赖扫描器

  • PE Explorer绿色版下载地址:PE Explorer绿色版(可视化集成工具) 1.99 R6
  • 安装完成界面以下:

    点击左上角图标打开上次实验生成的后门文件5314.exe(也能够直接将其拖到界面中间):
  • 查看程序头部信息(默认界面):
  • 查看程序静态数据目录:
  • 查看程序结头信息:
  • 进行反汇编:
  • 点击“导入”查看其引用的dll库:
    • KERNEL32.dll:控制着系统的内存管理、数据的输入输出操做和中断处理。虽然涉及内核,可是运行程序所必须的,正常。
    • msvcrt.dll:微软编译软件的函数库。正常。
    • USER32.dll:Windows用户界面相关应用程序接口,用于包括Windows处理,基本用户界面等特性,如建立窗口和发送消息。是一个对系统很关键或很可疑的文件,易遭受木马病毒破坏致使系统找不到此文件,出现错误提示框
    • WSOCK32.dll:Windows Sockets应用程序接口,用于支持不少Internet和网络应用程序。是一个对系统很关键或很可疑的文件,易遭受木马病毒(如“犇牛”病毒)破坏致使系统找不到此文件,出现错误提示框

      犇牛病毒介绍:

      2009年春节刚过,一款名为“犇牛”的恶性木马下载器开始大肆做恶。来自360安全中心的数据显示,已有数十万台电脑受到“犇牛”袭击,并能致使大部分安全软件失效,用重装系统等常规手段没法清理。

      据大批受害用户反映,感染“犇牛”的电脑速度会明显变慢,出现虚拟内存不足提示,非系统盘的根目录及全部文件夹目录中同时出现“usp10.dll”或“wsock32.dll”文件。部分用户的电脑感染“犇牛”后还会出现弹出大量广告网页、杀毒软件遭强制卸载、“QQ医生”显示为“叉号”没法正常使用等各类症状,并会自动下载大量木马病毒(包含“赤兔马”、“老A”、“LY”以及“铁血”等多个知名盗号木马,覆盖了近20款当前最热门的网络游戏和QQ工具,对用户的危害极大)。受害用户除非将全部硬盘分区全盘格式化,不然即使重装系统后“犇牛”仍能踏蹄重来。

      360安全专家石晓虹博士介绍:“犇牛”木马下载器之因此成为牛年首“牛”的木马,是因其拥有“系统重装复活”、“系统文件掩护”以及“逆向卸载杀软”等三大“牛”招,能令大部分安全软件失效,从而危害性大大提高。

      据石晓虹博士介绍,“犇牛”使用了劫持dll文件的方式,在全部非系统盘的文件夹目录内释放“usp10.dll”文件,很多用户发现电脑“中招”后习惯性地进行重装,却由于这些文件未被彻底清除而再度感染;同时,“犇牛”很是阴险地将某个系统文件悄悄替换,使大部分杀毒软件经常使用的查杀手段失效,进一步加强了其自我保护能力;此外,“犇牛”还使用了一个名为“安软杀手”的帮凶对主流杀软进行卸载和破坏,屏蔽安全厂商的网站,并能致使迅雷等下载软件失效,导致受害用户没法访问安全网站或下载安全软件。

      经过以上三大“牛招”,“犇牛”得以突破用户电脑防护体系,并经过进一步下载针对诛仙、魔兽世界、问道等十余款热门网游、QQ以及网上银行的盗号木马,完成对受害用户电脑中虚拟财富的盗窃。

返回目录

1.4 使用Dependency Walker查看其依赖性、导入与导出模块

Dependency Walker是一款Microsoft Visual C++ 中提供的很是有用的PE模块依赖性分析工具,软件大小295KB。

  • 功能:
    - 查看PE模块的导入模块
    - 查看PE模块的导入和导出函数
    - 动态剖析PE模块的模块依赖性
    - 解析 C++ 函数名称

返回目录

2 动态分析

2.1 使用SysTracer分析后门软件的运行过程

SysTracer是一款能够分析计算机文件,文件夹和注册表项目改变的系统实用工具。你能够在任何想要的时间获取无数个屏幕快照。你能够比较任何一对想要的屏幕快照,而且观察其间的不一样之处。获取屏幕快照一般会持续几分钟的时间,这取决于文件和文件夹的数量和注册表项目的总数。该软件特别推出一个很是高效的分析算法,比较两张屏幕快照能够瞬间完成。

  • 下载地址:SysTracer(64bit)官方下载
  • 界面以下,点击【建立快照】:
  • 给快照取名,使用默认设置,点击【肯定】开始建立第1个快照Snapshot20155314 #1:
  • 建立过程长短视当前系统体量而定,以下图win7系统(未打开后门程序)快照建立完成共用了3分52秒:
  • Kali攻击机启动Meterpreter进行攻击,同时win7打开上次实验生成的后门程序5314.exe进行回连,并建立第2个快照Snapshot20155314 #2:
  • Kali攻击机输入ls命令后,win7建立第3个快照Snapshot20155314 #3:

  • Kali攻击机输入screenshot命令抓屏,win7建立第4个快照Snapshot20155314 #4:

  • 点击【快照比较】将快照之间进行比较,点击【注册表】选项卡可发现注册表上的变化:
    <img src="https://images2018.cnblogs.com/blog/1071508/201804/1071508-20180418183718866-52668722.png width="100%" />
    以下图,蓝色字体为变化项:
  • 为了方便对比差别,咱们将“查看模式”选择为“仅差别”,并将树型目录逐层展开:

    能够很明显地看出该后门获取了shell!!
  • 点击【应用程序】可发现后门程序5314.exe对不少.dll文件都进行了修改!

    返回目录

2.2 使用wireshark对流量进行抓包分析

Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽量显示出最为详细的网络封包资料。Wireshark使用WinPCAP做为接口,直接与网卡进行数据报文交换。

网络封包分析软件的功能可想像成 "电工技师使用电表来量测电流、电压、电阻" 的工做 - 只是将场景移植到网络上,并将电线替换成网络线。在过去,网络封包分析软件是很是昂贵的,或是专门属于盈利用的软件。

Ethereal的出现改变了这一切。在GNUGPL通用许可证的保障范围底下,使用者能够以避免费的代价取得软件与其源代码,并拥有针对其源代码修改及客制化的权利。Ethereal是目前全世界最普遍的网络封包分析软件之一。

  • 打开Wireshark.exe,选择本地链接接口,点击左上角蓝色鲨鱼按钮开始抓包:

    抓到的都是一些本地链接的数据包,如第三个黄色的包是此win7虚拟机向广播地址发送的广播包~
  • Kali攻击机打开监控,win7打开后门程序5314.exe进行回连,此时Wireshark上捕获到了巨大的流量:


    如图可见,出现了大量TCP三次握手过程~
  • Kali攻击机输入ls命令,又出现了大量的TCP链接:

  • Kali攻击机输入screenshot命令,一样出现了大量的TCP链接(词穷):

    因为抓包时Kali攻击机一直处于链接win7的状态,所以并无捕获到TCP四次挥手取消链接到过程~
  • 在查看包的过程当中发现了一个可疑的三次握手,Wireshark提示This frame is a suspected retransmission即该链接可能为一个非法的链接,最恐怖的是目的IP显示为一个陌生的IP183.232.103.218
    查询IP地址显示为深圳市?!震惊!!因为该抓包实验是在关闭杀软(腾讯电脑管家)下进行的,细思极恐!!

    返回目录

2.3 使用PEbrowse Pro对程序进行断点动态调试

返回目录

2.4 使用Sysmon恶意网络链接和操做

System Monitor(sysmon)是由Windows Sysinternals出品的一款Sysinternals系列中的工具。它以系统服务和设备驱动程序的方法安装在系统上,并保持常驻性。sysmon用来监视和记录系统活动,并记录到windows事件日志,能够提供有关进程建立,网络连接和文件建立时间更改的详细信息。以后再结合WindowsEvent Collection或SIEM进行分析,能够识别网络上的异常入侵或运行的恶意软件。

  • 特色:用完整的命令行记录下子进程和父进程的建立行为。使用sha1(默认),MD5,SHA256或IMPHASH记录进程镜像文件的hash值。能够同时使用多个hash,包括进程建立过程当中的进程GUID。每一个事件中包含session的GUID。
    1. 记录驱动程序或者加载的DLL镜像的签名及其hash
    2. 记录磁盘和卷的原始数据的读取请求
    3. 记录网络链接,包括每一个链接的源进程,IP地址,端口号,主机名和端口名(可选)
    4. 若是更改注册表则自动从新加载配置
    5. 具备规则过滤,以便动态包括或排除某些事件
    6. 在加载进程的初期生成事件,能记录在复杂的内核模式运行的恶意软件
  • 下载地址:https://docs.microsoft.com/zh-cn/sysinternals/downloads/sysmon
  • 一键安装命令(须要以管理员身份运行cmd):
    sysmon -accepteula -i -n
  • sysmon -c命令查看配置:
  • 编写配置文件config20155314.xml

    <Sysmon schemaversion="3.20">      
    <!-- 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>       
    <!-- Do not log process termination -->        
    <ProcessTerminate onmatch="include" />       
    <!-- Log network connection if the destination port equal 443 -->        
    <!-- or 80, and process isn't InternetExplorer -->        
    <NetworkConnect onmatch="include">          
        <DestinationPort>443</DestinationPort>          
        <DestinationPort>80</DestinationPort>
        <DestinationPort>5314</DestinationPort>        
    </NetworkConnect>        
    <NetworkConnect onmatch="exclude">          
        <Image condition="end with">iexplore.exe</Image>       
    </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 -c config20155314.xml命令指定配置文件:

    报错提示版本不匹配,只需将<Sysmon schemaversion="3.20">改为<Sysmon schemaversion="4.00">便可:
  • 从新输入sysmon -c config20155314.xml命令,配置完成:
  • 输入Sysmon.exe -i命令启动sysmon:
  • 打开【开始】菜单,搜索【事件查看器】并打开,在左侧控制台树按照【事件查看器】->【应用程序和服务日志】->【Microsoft】->【Windows】依次展开,找到【Sysmon】下的【Operational】并双击打开:
  • 打开5314.exe后门,Kali攻击机用meterpreter回连,能够看到链接的详细信息,包括ip、端口、pid等:
  • Kali攻击机执行migrate操做,将后门进程迁移到iexplore中:

  • 发现该操做会被记录到Process terminated中:

    返回目录

2.5 使用Windows计划任务schtasks指令监控系统运行

  • 以管理员身份打开cmd,使用指令schtasks /create /TN 20155314_netstat /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > c:\netstatlog20155314.txt建立计划任务20155314_netstat,记录每1分钟计算机联网状况:
  • cd指令进入C盘根目录
  • 用指令type nul>netstatlog20155314.txt建立一个名为netstatlog20155314.txt的空文本文件
  • 用指令gvim netstatlog20155314.txt打开此文本文件(须要下载gvim文本编辑器)并按i输入如下内容,而后保存:
    date /t >> c:\ netstatlog20155314.txt time /t >> c:\ netstatlog20155314.txt netstat -bn >> c:\ netstatlog20155314.txt
  • 修改其后缀名为.bat(须要提供管理员权限)并右键选择以管理员身份运行:
  • 再次输入指令type nul>netstatlog20155314.txt在C盘下建立一个名为netstatlog20155314.txt的空文本文件用于保存记录
  • 这时,打开计划任务查看刚刚新建的任务20155314_netstat,右键属性勾选使用最高权限运行,而后选择运行:
  • 已经成功运行:
  • 因而每隔一分钟数据会被输出到设定好的netstatlog20155314.txt文档中:

返回目录

实验中遇到的问题及解决过程

win7安装wireshark提示没有一个能够抓包的接口

问题分析

这是因为win7默认NPF服务是关闭的,须要以管理员的身份开启这个服务

Windows7上安装wireshark时,会遇到NPF驱动没法启动的状况,通常若是采用管理员的方式就能够正常启动,或者是将NPF安装为service的方式,这样问题就OK了

解决方案

  • 以管理员的方式进行启动NPF驱动:
    • 开始->附件->cmd(右键点击,浏览到以管理员方式启动):
    • 输入命令net start npf启动NetGroup Packet Filter Driver服务:
  • Wireshark中点击【捕获】选项卡,选择【刷新接口列表】,下方接口列表出现本地链接接口:
  • 点击本地链接接口便可开始愉悦的抓包之旅~

    返回目录

实验总结与体会

  比杀软好用。咱们在具有了必定的知识基础和分析能力后,必定会有这样的感受,上次实验生成的后门已经成功完成免杀骗过绝大多数知名杀软,但此次实验中它们仍然骗不过某些恶意代码分析工具的眼睛👀,这就间接说明了杀软在这些工具面前几乎是useless。然而,为何杀软可以成为大多数Windows用户的必备品而不是这些分析工具呢?道理很简单,对于这些工具普通用户大多不会用、看不懂、嫌麻烦,反倒以为它们useless了。可见,杀软和分析工具的区别在于,杀软强调一键式服务的用户体验,即便对于某些特定的后门是一筹莫展的,但它服务的是大多数受众;而真正的信息安全人员关心的是信息系统的总体安全防御,不能让任何一个攻击、任何一个威胁甚至任何一个可疑的链接成为可能,毫无疑问会选择恶意代码分析工具以及他们的综合使用。所以结合上次实验,从技术角度上说,咱们信息安全专业的学生应掌握这些分析工具的原理及其应用,而不是仍然依赖于杀软。
返回目录

参考资料

相关文章
相关标签/搜索