• 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编程等等方面,不能理解某些代码及其注释的含义,导致对后门程序不能逆向分析,课下要加强这方面的学习。

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

  • 相关阅读:
    SpringMVC 高级开发(异常页面处理,json传输数据,文件上传)
    SpringMVC中的Controller方法的(返回值/参数类型)
    SpringMVC的其他注解
    SpringMVC的整合,基于注解
    SpringMVC入门程序:helloWorld
    SpringMVC入门
    SpringAOP事务的实现
    仅需三步,即可在Vue项目中配置sass
    前端常用的设计模式
    call和apply的区别及其用法
  • 原文地址:https://www.cnblogs.com/srq111/p/12695074.html
Copyright © 2020-2023  润新知