zoukankan      html  css  js  c++  java
  • 2019-2020-2 20174310 隋润起《网络对抗技术》 Exp4 恶意代码分析

    一、实验目标

     1、实践要求

    • 监控你自己系统的运行状态,看有没有可疑的程序在运行;
    • 分析一个恶意软件,就分析Exp2或Exp3中生成后门软件;分析工具尽量使用原生指令或sysinternals systracer套件;
    • 假定将来工作中你觉得自己的主机有问题,就可以用实验中的这个思路,先整个系统监控看能不能找到可疑对象,再对可疑对象进行进一步分析,好确认其具体的行为与性质。

    2、实践内容

    1. 系统运行监控
      • 使用如计划任务每隔一分钟记录电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述分析结果。目标:找出所有连网的程序的连接和操作,这个操作是否合适合理,并有针对性的抓包做进一步的分析;
      • 安装配置sysinternals中的sysmon工具,设置合理的配置文件,监控主机的重点事可疑行为;
      • 实际日志的分析还需要发挥下自己的创造力,结合以前学过的知识如linux的文本处理指令等进行(难点在于从大量数据中理出规律、找出问题)。
    2. 恶意软件分析
      • 分析该软件在启动回连,安装到目标机及其他任意操作时(如进程迁移或抓屏),该后门软件: 读取、添加、删除了哪些注册表项;
      • 读取、添加、删除了哪些文件;
      • 连接了哪些外部IP,传输了什么数据(抓包分析)。

    二、实践过程

     1. 系统运行监控——计划任务

    创建计划任务,使系统每1分钟自动检测到有哪些程序在连接我们的网络。

    使用管理员模式运行cmd模式,输入如下命令

    schtasks /create /TN netstat4310 /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > d: etstat4310.txt"(之前尝试做了一下未截图,所以任务已存在,这里重新创建)

    • TN:Task Name,本例中是netstat4310
    • SC: SChedule type,本例中是MINUTE,以分钟来计时
    • MO: MOdifier
    • TR: Task Run,要运行的指令是 netstat
    • -bn,b表示显示可执行文件名,n表示以数字来显示IP和端口

    在d盘根目录下新建一个文本文件,输入以下内容:

    • date /t >>d: etstat4310.txt
    • time /t >>d: etstat4310.txt
    • netstat -bn >>d: etstat4310.txt

    保存后将文件重命名为netstat20174310.bat,作为批处理命令

    在【控制面板】->【系统与安全】->【管理工具】->【任务计划程序】中找到创建的任务,并修改计划属性

    使用最高权限运行,否则可能会运行失败,同时配置换为windows10。

     并将脚本换为刚刚创建的bat文件

    运行任务之后,开始记录后台的数据,其中保持电脑的正常使用,大约一个小时之后,打开位于D盘的netstat4310.txt文件,查看里面的内容。

    将文本文件导入Excel中,使用excel的数据处理功能,生成数据透视图。

    •  360se.exe:360浏览器
    • 360tray.exe:360防火墙
    •  chrome.exe:谷歌浏览器
    • EXCEL.EXE:excel程序
    • GDCAgent.exe:联想服务中心
    • mysqld.exe:mysql数据库程序

    等等,从结果观察来看,我的电脑似乎没有什么自启动的软件,应该是比较安全的。

    2.系统运行监控——利用Sysmon

    进入官网下载SysinternalsSuite.zip并解压。

    根据自己的系统选择Sysmon版本,我的电脑是64位的系统,所以选择Sysmon64.exe,在程序的属性中查看版本信息。

    •  

     并且在SysinternalsSuite所在目录下创建文本文件,存入下列代码保存并重命名为sysmon20174310.xml。

    <Sysmon schemaversion="10.42">
      <!-- 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>
    • ProcessCreate 进程创建,这里的进程名包含了所有以该进程名结尾的进程
    • NetworlConnect 网络连接,过滤掉浏览器的网络连接,即源IP为127.0.0.1(本机IP)的网络连接和目的端口为137(提供局域网中ID或IP查询服务)的连接服务,且查看目的端口为80(http)和443(https)的网络连接
    • CreateRemote 远程线程创建
    • FileCreate Time 进程创建时间
    • onmatch include/exclude 设置免检/必检名单

    以管理员身份运行cmd,在Sysmon64.exe目录下执行Sysmon64.exe -i sysmon20174310.xml(因为之前试验过一次,所以这里显示已经注册)

    •  

     通过【事件查看器(本地)】-【应用程序和服务日志】-【Microsoft】-【Windows】-【Sysmon】-【Operational】查看根据配置信息【sysmon20174310.xml】记录的进程信息进程号 路径等系统信息

    •  

    3.对于恶意软件的分析

    3.1使用wireshark进行分析

    使用恶意软件(实验三中的加壳后门程序进行回连),以日志信息和Wireshark捕包信息分析系统进程规律
    在事件查看器中根据运行时间找到相应后门程序操作的相关信息,在Wireshark过滤器中输入筛选条件【ip.addr == 192.168.80.131】查看相关的协议包信息

    • Kali系统与Windows系统Ping通时的ICMP
    • MSF反弹连接时的TCP包 

    • dir查看磁盘中后门程序目录下的文件,仔细寻找,发现日志并无更新

    3.2使用SysTracer分析

    下载SysTracer并安装

     

    输入端口号4310

    安装完成,可以使用

    • 在打开后门前先快照一下,选择->take snapshot,完成后显示Snapshop #1。
    • Kali开始监听,Windows运行后门后,回连成功后拍摄快照,完成后显示Snapshop #2。
    • 在kali中使用MSF相关的操作sysinfo screenshot,完成后显示Snapshop #3。
    • 结束连接后,快照,显示Snapshop #4。

     

    先对#2进行简单的分析,首先选择【Applications】->【Running Processes】->【4310srq_backdoor.exe】->【Opened Ports】,查看回连地址、远程地址和端口号。

    •  对比#1和#2,可以看到后门运行前后注册表发生了大量的变化。
    •  与此同时,发现后门程序的记录,建立了TCP连接
    •  对比#3与#4,可以发现,相比#1与#2的对比,出现了大量的删除操作
    •  通过仔细查找,发现了后门程序所对应的删除操作

    3.3使用Process Explorer 进行分析 

    Kali回连成功后打开软件,查看详细信息。

     很容易找到了后门程序。

    通过选择 【View】->【Select Columns】 里面有几个选项可以显示在主页面,帮助我们对后门程序进行分析。

    Image Path:显示进程的文件路径
    Command Line:显示进程命令行参数
    Image Type:显示进程是64位进程还是32位的
    session ID:显示进程当前所在的Session ID
    User Name:显示进程当前的权限,是系统用户权限还是网络管理员权限还是普通管理员权限

     

     通过增加显示项,对后门程序进行更详细的分析与研究

    比如说根据Image Path直接找到后门程序所在位置,进行清理等等

    3.4使用OllyDbg对后门程序进行分析

    在分析代码之前,先分析一下自己用win32写的登陆对话框,便于对OD的介绍

    • 对话框的初始界面
    •  当输入信息正确时会显示
    • 当输入错误时会显示
    •  在OD中打开exe程序,根据平时编程的经验
    •  所需的四个参数在call之前已经压入栈中,大致可以确定这个对话框主函数的入口

    • 按回车跟进函数,发现果然没错 

    • 第二个参数就是窗口处理函数,用ctrl+g进行跳转 

    • 在这里发现了两个输出正确和错误的窗口,判断是否正确的函数应该就在上方

    • 继续回车跟进这个函数

    • 发现了判断的条件,根据汇编代码的含义,大致为账号长度要等于3,密码长度要等于5,即可跳转至成功对话框
    • 果然成功(整个过程其中省略了一些步骤)

    下面开始对后门程序进行跟踪

    在OD中打开后门程序

    • 反汇编面板
    •  寄存器面板
    •  数据面板
    •  栈面板

     首先对程序进行一个大致的跟踪(F7不进入函数,F8进入函数)

    发现程序会在这一段不断循环

     对这一部分程序进行解读与分析,发现是因为这一条命令,使其总是循环

     按照我们对后门的理解,不断循环只能有一种情况,就是等待攻击者的反弹连接,因此我们先把标志寄存器ZF变为1

    使其继续运行,观察会发生什么

    成功继续运行,继续跟踪,后续多次陷入循环,没有分析成功这个程序

    因为没有编写后门程序的经验,所以不能很好的理解汇编代码以及跳转的一些含义,平时要多加进行这方面的学习。

    3.5对后门程序PE结构分析

    这里用到我自己写的PE解析器,功能与网上下载的许多PE解析器相似,加载后如下图所示

     

    从程序的PE头和节表信息,看不出这个程序与普通的exe程序有什么区别

    我从导入表下手,观察一下使用的dll有什么特殊的地方

     

     这个程序用到了windows socket的dll,用来反弹连接攻击方并且传输信息

     根据平时编程的经验,dll中引入的是socket编程用于传输与接受信息函数,可大致判断他有向外输送电脑信息的可能。

    三、基础问题回答

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

    • 利用sysmon工具,配置好监控的端口、注册表信息、网络连接等信息,通过其生成的日志文件进行查看
    • 利用wireshark查看数据包。
    • 利用systracer进行快照,比照注册表、文件等信息
    • 利用Process monitor、Process Explorer进行监控查看进程执行情况,文件系统、注册表活动。
    • 对某些怀疑程序可以用PE解析器对其导入函数进行观察,判断其具体功能
    • 用OD对程序进行动态分析或者IDA进行静态分析(课下要加强这方面的学习,对逆向方面的学习还远远不够)

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

    • 使用systracer工具分析恶意软件,查看其对注册表和文件的修改。
    • 使用Wireshark进行抓包分析,监视其与主机进行的通信过程。

    四、实验总结

     此次实验让我充分认识到了自己在动态分析和静态分析方面的不足,代码经验也不够关于socket编程等等方面,不能理解某些代码及其注释的含义,导致对后门程序不能逆向分析,课下要加强这方面的学习。

     同时也让我认识到原来网络安全离我们并不遥远,平时要用实验中学到的去检测电脑安全与否。

  • 相关阅读:
    LeetCode 227. Basic Calculator II
    LeetCode 224. Basic Calculator
    LeetCode 103. Binary Tree Zigzag Level Order Traversal
    LeetCode 102. Binary Tree Level Order Traversal
    LeetCode 106. Construct Binary Tree from Inorder and Postorder Traversal
    LeetCode 105. Construct Binary Tree from Preorder and Inorder Traversal
    LeetCode 169. Majority Element
    LeetCode 145. Binary Tree Postorder Traversal
    LeetCode 94. Binary Tree Inorder Traversal
    LeetCode 144. Binary Tree Preorder Traversal
  • 原文地址:https://www.cnblogs.com/srq111/p/12695074.html
Copyright © 2011-2022 走看看