• 《网络对抗技术》 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工具,监视文件系统、注册表、进程/线程的活动。

    五、实验感想

    这次实验非常的复杂,而且大多数给我的反馈我也看不懂。我分析了一堆查找了资料之后,感觉生成病毒软件是在是一个非常复杂的活儿。我应该无法凭借一己之力制作出来,我觉得还是要多研究怎么防范。谢谢老师~
  • 相关阅读:
    缩减apk大小
    android 的安全问题
    android listview 优化
    Python正则表达式指南
    程序员必须知道的几个国外IT网站
    去掉配置项,开发自信的软件
    去掉配置项,开发自信的软件
    Linux防火墙设置
    Linux防火墙设置
    linux下如何使用sftp命令进行文件上传和下载
  • 原文地址:https://www.cnblogs.com/1005zwq/p/14644256.html
Copyright © 2020-2023  润新知