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

一、实验内容:

1、系统运行监控

  • 使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述一下分析结果。目标就是找出所有连网的程序,连了哪里,大约干了什么(不抓包的情况下只能猜),你觉得它这么干合适不。如果想进一步分析的,可以有针对性的抓包。
  • 安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控自己主机的重点事可疑行为。 

2、恶意软件分析

  • 启动回连
  • 安装到目标机
  • 及其他任意操作时(如进程迁移或抓屏,重要是你感兴趣)。
  • 读取、添加、删除了哪些注册表项
  • 读取、添加、删除了哪些文件
  • 连接了哪些外部IP,传输了什么数据(抓包分析)。

二、实验要求:

  • 报告整体观感:有带链接的目录,各级标题层次分明,易于阅读
  • 文字表述:报告文字内容非常全面,表述清晰准确

三、实验步骤:

一、系统运行监控:

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

  • 使用 schtasks /create /TN netstat1328 /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > c:\netstatlog.txt" 命令创建计划任务netstat1328
    • TN是TaskName的缩写,我们创建的计划任务名是netstat1328;
    • sc表示计时方式,我们以分钟计时填MINUTE;
    • TR=Task Run,要运行的指令是 netstat
    • bn,b表示显示可执行文件名,n表示以数字来显示IP和端口;
    • >表示输出重定向,将输出存放在c:\netstatlog.txt文件中

  • 在C盘中创建一个netstat5318.bat脚本文件,写入以下内容

date /t >> c:\netstat5318.txt
time /t >> c:\netstat5318.txt
netstat -bn >> c:\netstat5318.txt

  • 打开任务计划程序,可以看到新创建的这个任务:如下图所示

  •  更改这个任务的设置,如下图所示。

  •  注意此时要更改一下最高权限。

  • 过几分钟,然后去C盘下打开文件就有数据的捕捉了。

  • 然后就根据网上的教程把txt文件导入到Excel表里。(这个部分不太重要直接上成果吧)

  •  然后继续根据网上的教程,来继续统计不同软件使用的数据(见下表,根据从大到小的使用情况来排列,微信的使用最多。)

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

  • sysmon是微软Sysinternals套件中的一个工具,使用sysmon工具前首先要配置文件。

  • 可选择的事件过滤器有 ProcessCreate 进程创建、FileCreateTime 进程创建时间、NetworkConnect 网络链接、ProcessTermina 进程结束、DriverLoad 驱动加载、ImageLoad 镜像加载、CreateRemoteTh 远程线程创建、RawAccessRead 驱动器读取、ProcessAccess 进程访问、FileCreate 文件创建、RegistryEvent 注册表事件、FileCreateStre 文件流创建等。

  • 我创建的配置文件sysmon20165318.xml内容如下:

<Sysmon schemaversion="4.12">
  <!-- 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">firefox.exe</Image>
    </ProcessCreate>
&lt;ProcessCreate onmatch=<span style="color: #800000;">"</span><span style="color: #800000;">include</span><span style="color: #800000;">"</span>&gt; 
  &lt;ParentImage condition=<span style="color: #800000;">"</span><span style="color: #800000;">end with</span><span style="color: #800000;">"</span>&gt;cmd.exe&lt;/ParentImage&gt;
&lt;/ProcessCreate&gt;

&lt;FileCreateTime onmatch=<span style="color: #800000;">"</span><span style="color: #800000;">exclude</span><span style="color: #800000;">"</span> &gt;
  &lt;Image condition=<span style="color: #800000;">"</span><span style="color: #800000;">end with</span><span style="color: #800000;">"</span>&gt;chrome.exe&lt;/Image&gt;
  &lt;Image condition=<span style="color: #800000;">"</span><span style="color: #800000;">end with</span><span style="color: #800000;">"</span>&gt;firefox.exe&lt;/Image&gt;
&lt;/FileCreateTime&gt;

&lt;NetworkConnect onmatch=<span style="color: #800000;">"</span><span style="color: #800000;">exclude</span><span style="color: #800000;">"</span>&gt;
  &lt;Image condition=<span style="color: #800000;">"</span><span style="color: #800000;">end with</span><span style="color: #800000;">"</span>&gt;chrome.exe&lt;/Image&gt;
  &lt;Image condition=<span style="color: #800000;">"</span><span style="color: #800000;">end with</span><span style="color: #800000;">"</span>&gt;firefox.exe&lt;/Image&gt;
  &lt;SourcePort condition=<span style="color: #800000;">"</span><span style="color: #800000;">is</span><span style="color: #800000;">"</span>&gt;<span style="color: #800080;">137</span>&lt;/SourcePort&gt;
  &lt;SourceIp condition=<span style="color: #800000;">"</span><span style="color: #800000;">is</span><span style="color: #800000;">"</span>&gt;<span style="color: #800080;">127.0</span>.<span style="color: #800080;">0.1</span>&lt;/SourceIp&gt;
&lt;/NetworkConnect&gt;

&lt;NetworkConnect onmatch=<span style="color: #800000;">"</span><span style="color: #800000;">include</span><span style="color: #800000;">"</span>&gt;     
  &lt;DestinationPort condition=<span style="color: #800000;">"</span><span style="color: #800000;">is</span><span style="color: #800000;">"</span>&gt;<span style="color: #800080;">80</span>&lt;/DestinationPort&gt;      
  &lt;DestinationPort condition=<span style="color: #800000;">"</span><span style="color: #800000;">is</span><span style="color: #800000;">"</span>&gt;<span style="color: #800080;">443</span>&lt;/DestinationPort&gt;    
&lt;/NetworkConnect&gt;

&lt;CreateRemoteThread onmatch=<span style="color: #800000;">"</span><span style="color: #800000;">include</span><span style="color: #800000;">"</span>&gt;
  &lt;TargetImage condition=<span style="color: #800000;">"</span><span style="color: #800000;">end with</span><span style="color: #800000;">"</span>&gt;explorer.exe&lt;/TargetImage&gt;
  &lt;TargetImage condition=<span style="color: #800000;">"</span><span style="color: #800000;">end with</span><span style="color: #800000;">"</span>&gt;svchost.exe&lt;/TargetImage&gt;
  &lt;TargetImage condition=<span style="color: #800000;">"</span><span style="color: #800000;">end with</span><span style="color: #800000;">"</span>&gt;firefox.exe&lt;/TargetImage&gt;
  &lt;TargetImage condition=<span style="color: #800000;">"</span><span style="color: #800000;">end with</span><span style="color: #800000;">"</span>&gt;winlogon.exe&lt;/TargetImage&gt;
  &lt;SourceImage condition=<span style="color: #800000;">"</span><span style="color: #800000;">end with</span><span style="color: #800000;">"</span>&gt;powershell.exe&lt;/SourceImage&gt;
&lt;/CreateRemoteThread&gt;

</EventFiltering>
</Sysmon>

  • 安装sysmon:执行命令sysmon.exe -i C:\20181328.xml,成功安装结果如下:

    注意:一定要打开管理员权限!打开方式“右键wingdows->点击windows powershwll(管理员)

  • 左下角右键Windows标志,找到事件查看器,在应用程序和服务日志-Microsoft-Windows-Sysmon-Operational可以看到按照配置文件的要求记录的新事件,以及事件ID、任务类别、详细信息等等

  •  然后就自己创建个任务来试探一下,看看抓不抓得到。(拿以前kali测试的时候做的那个后门监听一下,然后就真的抓到啦,测试成功,好用!)

二、恶意软件分析

  • 静态分析(列举一些静态分析的方法)
    • 文件扫描(VirusTotal)
    • 文件格式识别(peid、file、FileAnalyzer工具等)
    • 字符串提取(Strings工具等)
    • 反汇编(GDB、IDAPro、VC工具等)
    • 反编译(REC、DCC、JAD工具等)
    • 逻辑结构分析(Ollydbg、IDAPro工具等)
    • 加壳脱壳(UPX、VMUnPacker工具等)
  • 使用VirusTotal分析恶意软件

    • 把生成的恶意代码放在VirusTotal进行分析,基本情况如下:

    •  查看这个恶意代码的基本属性:

可以看出它的SHA-1、MD5摘要值、文件类型、文件大小,以及TRiD文件类型识别结果。(注:TRiD通过读取文件头,根据特征码进行文件类型匹配。

  • 使用PE Explorer分析恶意软件

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

 

    • kernel32.dll:属于内核级文件,它控制着系统的内存管理、数据的输入输出操作和中断处理,是必需的。通过分析生成的后门程序都会使用KERNEL32.dll,所以如果有陌生软件使用KERNEL32.dll则应当提高警惕。
  • 动态分析(列举一些动态分析的方法)
    • 快照比对(SysTracer、Filesnap、Regsnap工具等)
    • 抓包分析(WireShark工具等)
    • 行为监控(Filemon、Regmon、ProcessExplorer工具等)
    • 沙盒(NormanSandbox、CWSandbox工具等)
    • 动态跟踪调试(Ollydbg、IDAPro工具等)
  • 使用systracer分析恶意软件

    • 下载SysTracer工具

    • 点击右侧的take snapshot,存储快照

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

      • 快照二:移植后门程序,保存为Snapshot #2

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

      • 快照四:在kali中使用dir指令,保存为Snapshot #4

      • 快照五:在kali中使用record_mic指令,保存为Snapshot #5

  •  对比快照一和快照二:增加了我的后门程序20165318_backdoor.exe
    • 对比快照二和快照三(后门程序运行前后)
      点击application,在opened ports中我们能看到后门连接的相关信息

 

    • 对比快照四和快照五(kali机输入record_mic)可以发现注册表有变化

 

  •  使用wireshark来抓包分析恶意代码

    •  win10执行后门程序20181328backdoor.exe进行回连,输入过滤条件ip.addr == 192.168.43.227,可以看到Wireshark上捕获到大量的TCP传输),输入其他命令,Kali会不断给Windows传一大堆ACK包,有时还伴有PSH+ACK包。(PSH就表示有 DATA数据传输)

四、基础问题回答

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

    • 使用windows自带的schtasks指令设置一个计划任务,发现网络连接异常
    • 使用Sysmon,编写配置文件,记录有关的系统日志
    • 使用Process Explorer工具,监视进程执行情况。
    • 使用Process Monitor工具,监视文件系统、注册表、进程/线程的活动。
  • 如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息。

    • 使用systracer工具分析恶意软件,查看其对注册表和文件的修改。
    • 使用Wireshark进行抓包分析,监视其与主机进行的通信过程。
    • 使用Process Explorer工具或Process Monitor工具,监视文件系统、注册表、进程/线程的活动。

五、实验感想

这次实验非常的复杂,而且大多数给我的反馈我也看不懂。我分析了一堆查找了资料之后,感觉生成病毒软件是在是一个非常复杂的活儿。我应该无法凭借一己之力制作出来,我觉得还是要多研究怎么防范。谢谢老师~
原文地址:https://www.cnblogs.com/1005zwq/p/14644256.html