网络对抗实验四 恶意代码分析--20201313

发布时间 2023-04-06 22:04:31作者: 徐嘉远

Exp4 恶意代码分析

一、实践基础

1、实践目的

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

2、实践内容

  • 系统运行监控
    • 使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述分析结果。
    • 安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控自己主机的重点事可疑行为。
  • 分析该软件在启动回连、安装到目标机及其他任意操作时(如进程迁移或抓屏,重要是你感兴趣)。该后门软件
    • 读取、添加、删除了哪些注册表项
    • 读取、添加、删除了哪些文件
    • 连接了哪些外部IP,传输了什么数据

3、实践原理

  • 恶意代码
    • 使计算机按照攻击者的意图运行以达到恶意目的的指令集合。
    • 指令集合:二进制执行文件,脚本语言代码,宏代码,寄生在文件、启动扇区的指令流。
    • 恶意代码目的:技术炫耀/恶作剧,远程控制,窃取私密信息,盗用资源,拒绝服务/破坏......
  • 恶意代码类型
    • 计算机病毒,蠕虫,恶意移动代码,后门,特洛伊木马,僵尸程序,Rootkit等…
    • 计算机病毒是最早出现的恶意代码,媒体/工业界的概念混淆,经常以计算机病毒(Computer Virus)等价于恶意代码
  • 系统监控
    • 把系统看做一个黑盒子
      • 从网络进出口,监控对外数据收发
    • 把系统看做白盒子
      • 谁(进程)
      • 读写了什么(文件)
      • 收发了什么(网络)
    • 隐通道
      • 内存发送Wifi信号
      • DNS包发送数据
  • 分析环境
    • 静态分析:
      • 恶意代码扫描、文件格式识别、字符串提取、二进制结构分析、反汇编反编译、代码结构与逻辑分析、加壳识别和代码脱壳
    • 动态分析:
      • 快照比对、动态行为监控、网络监控、沙盒、动态跟踪测试

二、实践内容

系统运行监控

(1)使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述分析结果。

目标就是找出所有连网的程序,连了哪里,大约干了什么(不抓包的情况下只能猜),你觉得它这么干合适不。如果想进一步分析的,可以有针对性的抓包。

使用schtasks指令监控系统

  • 使用schtasks指令。schtasks.exe是安排命令和程序定期运行或在指定时间内运行。从计划表中添加和删除任务,按需要启动和停止任务,显示和更改计划任务。
schtasks /create /TN netstat1313 /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > c:\netstatlog.txt"
    • 创建计划任务 netstat1313 :

    • TN 是TaskName的缩写,我们创建的计划任务名是netstat1313;
    • sc 表示Task Run,要运行的指令是 netstat;
    • bn其中b表示显示可执行文件名,n表示以数字来显示IP和端口;
    • >表示输出重定向,将输出存放在c:\netstat1313.txt文件中;
  • 在C盘中创建一个脚本文件

    netstat1313.bat

    • 在C盘中创建需要权限,因此我选择了在桌面创建一个 netstat1313.txt 文本文件,并写入以下内容:

    • 将文件复制到C盘中,并修改后缀名为.bat

  • 在Windows的任务计划程序中,可以查看到新创建的任务:

  • 双击这个任务,点击操作并编辑,将“程序或脚本”改为我们创建的 netstat1313.bat 批处理文件,将可选参数清空,点击确定。

  • 在"条件"选项卡中可以看到,电源选项中默认操作为“只有在计算机使用交流电源时才启动此任务” ,那么使用电池电源时就会停止任务。为了我们统计足够多的数据,这个选项取消掉。

  • 接着,在“常规”栏下选择“使用最高权限运行” ,否则可能导致文件不能自主更新或者记录里出现权限问题,点击确定保存。

  • 运行该任务。

  • 等待了足够长的时间后,可以选择终止计划任务,然后对收集到的数据进行统计。在C盘目录下,出现了一个netstat1313.txt 的文件,可以在其中查看联网数据。

  • 在Excel表格中分析记录的数据
  • 创建新表格,点击数据导入数据,选择直接打开数据文件,并在选择数据源中选择文本文件。

    • 按照步骤,选择其他编码分隔符号,并如下图勾选。

    • 选择协议一列,点击上方菜单栏中的插入,选择数据透视图
    • 在新工作表中,点击数据透视图,在跳出的右侧边栏的字段列表中,筛选出我们需要的字段进行分析,并将字段拖放到下方的中。(这里记着在筛选里把后面的几个无关的筛选项,比如协议等)

分析:如图所示,在这段时间内,联网最多的是程序wpscloudsvr.exe ,也就是WPS的云服务软件,其次为QQ.exe ,其中,WPS的云服务程序其实是只要你打开WPS就会在后台默认启动,所以可以在打开任务管理器将其关闭。 而像是QQ是联网程序,在后台运行会占用部分网络资源,但是不大,这个可以从电脑的流量管理里查看,然后像是ROGLiveService是电脑的后台一个便于进行性能管理的软件,SteelSeries是我的耳机的管理软件,lghub是我的鼠标的管理软件等,所以可以优化的方面并不多。

(2)安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控自己主机的重点可疑行为。

​ sysmon是微软Sysinternals套件中的一个工具,它以系统服务和设备驱动程序的方法安装在系统上,并保持常驻性。sysmon用来监视和记录系统活动,并记录到windows事件日志,可以提供有关进程创建,网络链接和文件创建时间更改的详细信息。使用sysmon工具前首先要配置文件。

  • 过滤器事件的选项:
    • 进程创建ProcessCreate的过滤事件选项有:
UtcTime, ProcessGuid, ProcessId, Image, CommandLine, CurrentDirectory, User, LogonGuid, LogonId, TerminalSessionId, IntegrityLevel, Hashes, ParentProcessGuid, ParentProcessId, ParentImage, ParentCommandLine
    • 进程创建时间FileCreatTime的过滤事件选项有:
UtcTime, ProcessGuid, ProcessId, Image, TargetFilename, CreationUtcTime, PreviousCreationUtcTime
    • 网络连接NetworkConnect的过滤事件选项有:
UtcTime, ProcessGuid, ProcessId, Image, User, Protocol, Initiated, SourceIsIpv6, SourceIp, SourceHostname, SourcePort, SourcePortName, DestinationIsIpv6, DestinationIp, DestinationHostname, DestinationPort, DestinationPortName
    • 远程线程创建CreateRemoteThread的过滤事件选项有:
UtcTime, SourceProcessGuid, SourceProcessId, SourceImage, TargetProcessGuid, TargetProcessId, TargetImage, NewThreadId, StartAddress, StartModule, StartFunction
  • 下载并解压SysinternalsSuite201608.zip 文件,并进入文件夹新建配置文件sysmon20201313.xml ,在里面输入以下代码(具体方法同上)。

* chrome.exe chrome.exe chrome.exe 137 127.0.0.1 80 443 explorer.exe svchost.exe winlogon.exe powershell.exe

  • 参数说明:
    • ProcessCreate表示进程创建
    • NetworlConnect 表示网络连接
    • CreateRemote 表示远程线程创建
    • FileCreate Time 表示进程创建时间
    • 在onmatch后面跟的参数include和exclude分别表示“免检”和“必检”名单。免检名单中在统计时忽略掉,必检名单在检测时需要进行匹配。

  • 在cmd中进入解压后的文件夹,执行指令Sysmon.exe -i sysmon20181313.xml
  • 这里注意要以管理员身份运行,不然会提示:You need to launch Sysmon as an Administrator.

其中会遇到安装,点击agree即可。

  • 右击Win,选择事件查看器,依次选择应用程序和服务日志->Microsoft->Windows->Sysmon->Operational ,可以查看到按照配置文件中的配置信息所记录的一些信息。

  • 利用实验二中生成的后门程序进行分析

  • 后门程序启动回连到kali

  • 打开事件查看器 ,根据运行时间往后查找,如果即使刷新,会比较方便找到,我这里是先根据上面mfsconsole中的时间提示往后找,然后看任务类别又明显变化,比如一般都是1,5,1,5在变化,这里出现了很多1表示应该是不同的进程,所以看了详细信息就找到了命令行cmd.exe。

  • 并且在下一个任务之中看到了conhost.exe:

根据监听时间可以找到后门的事件信息:

然后再msf控制台里输入ipconfig,可以看到在主机中ipconfig.exe的启动:

分析总结:所以根据一段事件的任务数的循环变化可以找到不是经常发生的事件的详细信息,这样就会有比较高的可能能找到一些后门软件的运行。

恶意代码分析

静态分析——VirusTotal网站扫描恶意软件

  • 使用VirusTotal分析恶意代码基本信息如下:

  • 查看恶意代码的基本属性,可以看出它的SHA-1、SHA-256、MD5摘要值、文件类型、文件大小,以及TRiD文件类型识别结果。

往下拉可以看到一些头文件:

静态分析——PEiD软件分析恶意软件

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

  • 扫描模式
    • 正常扫描模式:可在PE文档的入口点扫描所有记录的签名;
    • 深度扫描模式:可深入扫描所有记录的签名,这种模式要比上一种的扫描范围更广、更深入;
    • 核心扫描模式:可完整地扫描整个PE文档,建议将此模式作为最后的选择。PEiD内置有差错控制的技术,所以一般能确保扫描结果的准确性。前两种扫描模式几乎在瞬间就可得到结果,最后一种有点慢,原因显而易见。
  • 查看实验二中生成的普通后门文件

  • 查看经过压缩壳的后门程序,可以查看到压缩壳的版本

  • 查看并非是.exe类型的后门程序,显示不是有效的PE文件,所以包装过的像是.apk、.jsp这类的文件是没办法通过该软件扫描的

  • 分析:说明了该软件无法检测到非PE类型文件。也就是说包装成像是.py的文件可以有比较高的概率去躲避涉及壳类型的扫描。

静态分析——使用PE Explorer分析恶意软件

​ PE Explorer是功能超强的可视化Delphi、C++、VB程序解析器,能快速对32位可执行程序进行反编译,并修改其中资源。该软件支持插件,你可以通过增加插件加强该软件的功能,原公司在该工具中捆绑了UPX的脱壳插件、扫描器和反汇编器,可以查看程序头部信息(默认界面)、程序静态数据目录、程序结头信息、对程序反汇编等等,非常好用。

  • 下载软件
  • 打开后门文件,查看文件头部信息

  • 视图(view)-数据目录(Data Directories)查看程序静态数据目录

  • 视图(view)-节头(Section Heads)查看节头信息

  • 视图(view)-Import查看信息

    • KERNEL32.dll:控制着系统的内存管理、数据的输入输出操作和中断处理。
    • MSVCRT.dll:是微软编译软件的函数库。
    • ADVAPI32.dll:一个高级API应用程序接口服务库的一部分,包含的函数与对象的安全性。
    • WSOCK32.dll:是Windows Sockets应用程序接口,用于支持很多Internet和网络应用程序。
    • WS2_32.dll:Windows Sockets应用程序接口, 用于支持Internet和网络应用程序。
    • 分析:通过分析生成的后门程序都会使用KERNEL32.dll,所以如果有陌生软件使用KERNEL32.dll则应当提高警惕。
  • 工具(tools)-反汇编器(Disassambler)进行反汇编

动态分析——使用systracer分析恶意软件

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

  • 安装软件
  • 点击创建快照take snapshot,点击start,创建快照。(具体时长由系统决定,快照创建会自动完成)

  • 运行后门程序,回连Kali,并创建快照

  • 步骤如上,捕获五个快照如下:

  • 快照一:未移植后门程序,保存为Snapshot #1

  • 快照二:运行后门程序并在kali中实现回连,保存为Snapshot #2

  • 快照三:在Kali中输入dir命令,保存为Snapshot #3

  • 快照四:在kali中执行screenshot指令,保存为Snapshot #4

  • 快照五:在kali中执行getuid指令,保存为Snapshot #5

  • 对比快照1和快照2

  • 选中要对比的两个快照,点击右下角compare,在view mode中选择only differences方便查看。

    • 点击application,在opened ports中能看到后门 20201313_upxed.exe ,连接的本地地址和目标地址以及端口号

    • opened handles中,增加了一些文件,也删除了一些文件,以及键值的变化

    • loaded dll中,查看启动后门程序后增加和删除的dll文件

    • running processes中,点击 20201313_upxed.exe 显示为SysTracer no registered

  • 对比快照2和快照3

    • 可以看到一些键值的变化

  • 对比快照4和快照5
    • 发现根键中的内容进行了修改,但无法查看到具体内容

    • 同时,也增加了很多dll文件

三、实验问题

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

  • 通过windows的schticks指令,设置一个计划任务,监视系统进程的运行情况。在一段时间后,将所得数据导入Excel中,对得到数据透视图进行分析。
  • 使用Simson,编写配置文件,记录有关的系统日志
  • 使用Process Explorer工具,监视进程执行情况。
  • 使用SysTracer,一定时间间隔拍摄一张快照,对比不同快照,查看是否有可疑行为。
  • 使用Process Monitor工具,监视文件系统、注册表、进程/线程的活动。

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

  • 使用Sysmon,编写配置文件,记录有关的系统日志,找到和那些问题进程有关的日志信息
  • 使用Process Explorer工具,监视那些问题进程执行情况。
  • 重启电脑,使用Systracer拍摄快照,然后打开平时常用软件,分别拍摄不同快照,对比不同快照,查看是否有可疑的增删注册表、启动项的行为,然后分析哪个软件最可能被那些进程盯上。
  • 用PEID对其的壳进行查看分析
  • 使用wireshark抓包,看看在快照对比时发现的可以端口的,看看其交互行为,并对其目的ip进行监控

四、实验总结与体会

本次实验是通过windows的日志记录、事件信息查看的相关功能去统计分析一些电脑上进程的启动信息等详细的信息,然后通过静态分析、动态分析的不同软件对前两次实验的后门程序进行分析,并查看相关信息。其中我印象最深的是能快照的SysTracer,虽然其中很多内容很冗杂,但是这个对比的效果很明显,而且可以在很多方面进行比对,那样我就可以进行使用不同软件然后对比快照结果找到恶意代码主要攻击的软件,然后进一步推断其攻击动机,这样就可以进行针对的防御或是捕捉其痕迹然后进行反制,或者判断攻击者是谁。