Exp4 恶意代码分析

发布时间 2023-04-03 21:38:14作者: B1smarck

《网络对抗技术》——Exp4 恶意代码分析

目录

  • 一、实践基础
    • 1、实践目的
    • 2、实践内容
    • 3、实践原理
  • 二、实践内容
    • 系统运行监控
      • (1)使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述分析结果。
      • (2)安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控自己主机的重点可疑行为。
    • 恶意代码分析
      • 静态分析——VirusTotal网站扫描恶意软件
      • 静态分析——PEiD软件分析恶意软件
      • 静态分析——使用PE Explorer分析恶意软件
      • 动态分析——使用systracer分析恶意软件
      • 动态分析——使用Process Monitor分析恶意软件
  • 三、实验问题
  • 四、实验总结与体会

一、实践基础

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 netstat1317 /sc MINUTE /MO 1 /TR "cmd /d netstat -bn > d:\netstatlog.txt"
  • 创建计划任务 netstat1317 :

image-20230403160706036

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

在D盘中创建一个脚本文件 netstat1313.bat

  • 创建一个 netstat1317.txt 文本文件,并写入以下内容:
date /t >> d:\netstat1317.txt 
time /t >> d:\netstat1317.txt 
netstat -bn >> d:\netstat1317.txt

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

image-20230403162022396

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

image-20230403162201701

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

image-20230403162318278

运行该任务。

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

image-20230403162526491

在Excel表格中分析记录的数据

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

  • 按照步骤,选择其他编码分隔符号

image-20230403164131455

image-20230403164155014

  • 选择协议一列,点击上方菜单栏中的插入,选择数据透视图

  • 在新工作表中,点击数据透视图,在跳出的右侧边栏的字段列表中,筛选出我们需要的字段进行分析,并将字段拖放到下方的中。

image-20230403164607600

分析:如图所示,在这段时间内,联网最多的是程序wpscloudsvr.exe ,也就是WPS,其次为firefox.exe 和desktopcal.exe.如果打开了比较大的表格文件,有可能有占用较多内存的现象。wpscloudsvr是wps的云服务,其主要作用是弹窗登录,如果我们使用WPS时不想被他占资源和打扰可以对它进行处理。图中也包括了其他软件的相关联网程序。

(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 文件,并进入文件夹新建配置文件sysmon20181313.xml ,在里面输入以下代码(具体方法同上)。
	<Sysmon schemaversion="4.81">
	  <!-- Capture all hashes -->
	  <HashAlgorithms>*</HashAlgorithms>
	  <EventFiltering>
	    <!-- Log all drivers except if the signature -->
	    <!-- contains Microsoft or Windows -->
	    <ProcessCreate onmatch="exclude">     
	      <Image condition="end with">chrome.exe</Image> 
	      <Image condition="end with">QQBrowser.exe</Image> 
	    </ProcessCreate>
	 
	    <FileCreateTime onmatch="exclude" >
	      <Image condition="end with">chrome.exe</Image>
	    </FileCreateTime>
	    
	    <NetworkConnect onmatch="exclude">
	      <Image condition="end with">chrome.exe</Image>
	      <SourcePort condition="is">137</SourcePort>
	      <SourceIp condition="is">127.0.0.1</SourceIp>
	    </NetworkConnect>
	    <NetworkConnect onmatch="include">     
	      <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>

参数说明:

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

发现出现提示:You need to launch Sysmon as an Administrator.

解决方法:以管理员身份打开cmd,再次尝试:

image-20230403200831349

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

image-20230403201042186

  • 利用实验三中生成的后门程序进行分析
  • 后门程序启动回连到kali

image-20230403202433974

image-20230403202502590

打开事件查看器 ,根据运行时间可以很容易地找到刚刚运行的后门的相关信息。

image-20230403202810756

image-20230403202836207

恶意代码分析

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

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

image-20230403203127434

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

image-20230403203051356

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

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

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

(1)用wireshark分析TCP流量包

reverse_tcp反弹端口攻击原理

反弹shell(reverse shell),就是控制端监听在某TCP/UDP端口,被控端发起请求到该端口,并将其命令行的输入输出转到控制端。reverse shell与telnet,ssh等标准shell对应,本质上是网络概念的客户端与服务端的角色反转

下面结合Windows下用wireshark捕获的流量包进行分析
img
TCP在建立连接时有三次握手,如上图所示,下面我们在Kali中打开msfconsole并进行监听,在Windows上运行20201317back.exe后门程序,Kali攻击机中通过TCP反弹获取到Windows端口

过滤wireshark捕获的包,筛选ip.addr == 192.168.174.141 && tcp

image-20230403205359717

可以用wireshark自带的对TCP流量进行分析的工具将TCP流的数据图形化

image-20230403205531825

image-20230403205546709

上图是wireshark截获到的TCP时间序列的信息图

image-20230403205705304

上图是勾中“限制显示过滤器”后的流量图,也就是TCP流在靶机(主机,IP为192.168.171.128,端口号为1317)和攻击机(Kali,IP为192.168.171.128,端口号为1317)间的往返情况

image-20230403205833767

上图是192.168.171.1:1248192.168.171.128:1317之间TCP流的往返时间

下面具体来分析TCP流中的一个包

image-20230403210003537

在wireshark中追踪TCP流可以发现包的内容全部为密文,下面直接查看wireshark分析出来包的信息对第一个[SYN]包,我们在Internet Protocol层可以看到各种信息,包括原地址和目的地址

image-20230403210452082

传输控制协议(Transmission Control Protocol)可以看到第一个包中TCP选项内容

image-20230403210615923

接下来TCP流中的包也可以以同样方法进行分析

image-20230403210707454

(3)使用SysTracer分析

systracer可以记录下计算机某个时刻的状态。然后过一段时间后再次记录。通过比较两次记录中计算机的不同进行相应的分析。

我进行了三次snapshot,其中snapshot1是未进行操作时的初始状态,snapshot2是攻击机已经通过reverse_tcp攻击成功后的状态,snapshot3是攻击机进入到靶机的shell后的状态

第一次捕获

image-20230403211122696

image-20230403211255556

snapshot1

image-20230403211411748

snapshot2

image-20230403211441805

snapshot3

image-20230403211739650

image-20230403211724193

image-20230403212203469

也是同理,可以看到3比1增添了后门程序、增添了svchost.exe,删除了svchost.exe又增添了svchost.exe,最后增添了WmiApSrv.exe

(4)使用Process Explorer分析恶意软件

使用Process Explorer分析恶意软件

下载Process Explorer v16.22并解压

打开Process Explorer.exe

image-20230403212551838

Process Explorer可以监听到电脑上所有正在运行的程序,找到可疑行为,仔细观察是否有后门程序。

通过Process Explorer中的Find工具查找使用了cmd的进行,直接定位到后门程序20201317back.exe

image-20230403212742613

选中此后门程序后,可以直接点击Kill Progress杀死进程

image-20230403212840723