zoukankan      html  css  js  c++  java
  • 2020-2021-2 网络对抗技术 20181235 Exp4 恶意代码分析

    2020-2021-2 网络对抗技术 20181235 Exp4 恶意代码分析

    一、实践目标

    • 是监控你自己系统的运行状态,看有没有可疑的程序在运行。

    • 是分析一个恶意软件,就分析Exp2或Exp3中生成后门软件;分析工具尽量使用原生指令或sysinternals,systracer套件。

    • 假定将来工作中你觉得自己的主机有问题,就可以用实验中的这个思路,先整个系统监控看能不能找到可疑对象,再对可疑对象进行进一步分析,好确认其具体的行为与性质。

    工具下载链接:https://gitee.com/wildlinux/NetSec/attach_files

    二、实践内容(5分)

    1、系统运行监控(2分)

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

    (1)使用schtasks指令监控系统(1分)

    ①命令创建计划任务netstat1235

    schtasks /create /TN netstat1235 /sc MINUTE /MO 5 /TR "cmd /c netstat -bn c:
    etstatlog.txt"
    
    • TN是TaskName的缩写,我们创建的计划任务名是netstat1235;

    • sc表示计时方式,我们以分钟计时填MINUTE;

    • TR=Task Run,要运行的指令是 netstat -bn;

      • b表示显示可执行文件名;
      • n表示以数字来显示IP和端口;
    • >表示输出重定向,将输出存放在c: etstatlog.txt文件中

    image-20210408155926111

    ②在C盘中创建一个netstat1235.bat脚本文件,写入以下内容(可以在桌面先创建txt文档然后输入下面的内容,然后重命名为.bat)

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

    image-20210408160123244

    image-20210408160134121

    ③打开任务计划程序,可以看到新创建的这个任务

    Win+R输入compmgmt.msc打开“计算机管理”

    image-20210408160425788

    image-20210408160514938

    ④ 双击这个任务,点击操作并编辑,将“程序或脚本”改为我们创建的netstat1235.bat批处理文件,确定即可。

    ⑤5、 任务还有其他属性,如在"条件"选项卡,可以更改相关设置。如电源选项中默认操作为“只有在计算机使用交流电源时才启动此任务”,那么使用电池电源时就会停止任务。这点需要格外注意,如果没有修改默认操作,任务无论如何都无法执行可能只是因为拔掉了电源。为了我们统计足够多的数据,最好把这个取消掉。(选中使用最高权限运行)

    image-20210408160926517

    ⑥执行此脚本一定时间,就可以在netstat5205.txt文件中查看到本机在该时间段内的联网记录:

    image-20210408161631098

    ⑦当记录的数据足够丰富时,停止任务,将所得数据在wps中进行分析,此过程要一直保持开机联网状态才能持续监控

    image-20210408161856097

    image-20210408162005118

    image-20210408162038435

    image-20210408162107150

    image-20210408162136161

    由统计数据可知,联网最多的程序是[pycharm64.exe],排名第二的是[chrome.exe],排名第三的是[vmware-hostd.exe],我们还能够找到微信、NVIDIA、还有虚拟机这些连网的进程。我们还是要注意这些,时不时的关注一下这些自启动程序,会很大程度避免入侵。

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

    ①下载老师给的安装包并解压sysinternals

    ②右键Sysmon64.exe,在属性详细信息查看产品版本

    image-20210408170947497

    ③确定要监控的目标:在这里我选择进程创建进程创建时间网络连接远程线程创建

    ④写配置文件

    ⑤相关事件过滤器选项在使用轻量级工具Sysmon监视你的系统可看到,进程创建ProcessCreate进程创建时间FileCreateTime网络连接NetworkConnect远程线程创建CreateRemoteThread

    ⑥开始写与自己想要监控的事件相对应的配置文件,命名为sysmon20181235.xml,内容如下(注意版本号):

    <Sysmon schemaversion="13.02">
    
      <!-- 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>
    
        <ProcessTerminate onmatch="include" >
    
          <Image condition="end with">MsMpEng.exe</Image>
    	  <Image condition="end with">shell.exe</Image>
    
        </ProcessTerminate>
    
        <!-- Log network connection if the destination port equal 443 -->
    
        <!-- or 80, and process isn't InternetExplorer -->
    
        <!--NetworkConnect onmatch="include">
    
          <DestinationPort>443</DestinationPort>
    
          <DestinationPort>80</DestinationPort >
    
        </NetworkConnect -->
    
        <FileCreateTime onmatch="exclude" >
    
          <Image condition="end with">msedge.exe</Image>
    
        </FileCreateTime>
    
        <ImageLoad onmatch="include">
    
          <Signed condition="is">false</Signed>
    
        </ImageLoad>
    
        <!-- Log access rights for lsass.exe or winlogon.exe is not PROCESS_QUERY_INFORMATION -->
    
        <ProcessAccess onmatch="exclude">
    
          <GrantedAccess condition="is">0x1400</GrantedAccess>
    
        </ProcessAccess>
    
        <ProcessAccess onmatch="include">
    
          <TargetImage condition="end with">lsass.exe</TargetImage>
    
          <TargetImage condition="end with">winlogon.exe</TargetImage>
    	  
    	  <TargetImage condition="end with">shell.exe</TargetImage>
    
        </ProcessAccess>
    
        <NetworkConnect onmatch="exclude">
    
          <Image condition="end with">msedge.exe</Image>
    
          <SourcePort condition="is">137</SourcePort>
    
          <SourcePortName condition="is">80</SourcePortName>
    
          <DestinationPortName condition="is">443</DestinationPortName>
    
        </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>
    	  
    	  <TargetImage condition="end with">shell.exe</TargetImage>
    
        </CreateRemoteThread>
    
      </EventFiltering>
    
    </Sysmon>
    

    image-20210409091907135

    • exclude相当于白名单,不用记录。include相当于黑名单
    • Image condition根据自己使用的浏览器更改,如谷歌浏览器是chrome.exe,IE浏览器是iexplore.exe
    • 网络连接过滤掉了浏览器的网络连接、源IP为127.0.0.1的网络连接和目的端口为137的连接服务,且查看目的端口为80(http)443(https)的网络连接。(137端口的主要作用是在局域网中提供计算机的名字或IP地址查询服务,一般安装了NetBIOS协议后,该端口会自动处于开放状态。127.0.0.1表示本机IP。)
    • 远程线程创建记录了目标为explorer.exesvchost.exewinlogon.exepowershell.exe的远程线程。
    • explorer.exe是Windows程序管理器或者文件资源管理器
    • svchost.exe是一个属于微软Windows操作系统的系统程序,是从动态链接库 (DLL) 中运行的服务的通用主机进程名称。
    • winlogon.exe是Windows NT 用户登陆程序,用于管理用户登录和退出。
    • powershell.exe是专为系统管理员设计的新 Windows 命令行外壳程序。该外壳程序包括交互式提示和脚本环境,两者既可以独立使用也可以组合使用。

    ③在sysmon所在目录下创建配置文件sysmon1235.xml可以先创建txt文件,之后再转换格式)

    image-20210409091935576

    ④打开cmd,进入到sysmon所在的文件夹中,输入sysmon.exe -i sysmon1235.xml

    sysmon -accepteula  -i sysmon1235.xml
    

    image-20210409091830136

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

    image-20210409092159203

    image-20210409092227887

    image-20210409092359116

    2、恶意软件分析(3分)

    (1)、静态分析

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

    ① 使用VirusTotal分析恶意软件

    使用VirusTotal检查恶意代码,可以查看MD5、SHA-1、文件类型、文件大小、加壳方式等相关信息

    image-20210409093054692

    ② PEiD检查恶意代码

    使用PEiD检查恶意代码20181235.exe是否加壳

    image-20210410121132745

    使用PEiD检查恶意代码20181235_upx.exe是否加壳

    image-20210410121144941

    可以看出后面这个我们是加了壳的。

    ③ 使用PE Explorer分析恶意软件

    PE Explorer是一个强大的程序资源编辑工具,可以直接查看、修改软件的资源,包括菜单、对话框、字符串表等;另外,还具备有 W32DASM 软件的反编译能力和 PEditor 软件的PE文件头编辑功能,该软件支持插件,你可以通过不断的增加插件加强该软件的功能,还有很多实用的功能。

    主要看文件引用的dll库,可以通过视图->引入进行查看

    • KERNEL32.dll:控制着系统的内存管理、数据的输入输出操作和中断处理。

    • msvcrt.dll:是微软编译软件的函数库。

    • libgcc_s_dw2-1.dll

    image-20210410122213931

    image-20210410122303273

    (2)、动态分析

    ①使用systracer分析恶意软件

    • 下载systracer,安装并进行捕包分析systracer

    快照一:移植后门程序,保存为Snapshot #1
    快照二:在kali中执行dir指令,保存为Snapshot #2
    快照三:运行后门程序并在kali中实现回连,保存为Snapshot #3
    快照四:执行不一样的后面程序保存为Snapshot #4
    快照五:执行不一样的后面程序保存为Snapshot #5

    image-20210410124952348

    image-20210410125221304

    image-20210410124859482

    可以看到新增的后门进程,而且可以详细看到其的目的IP和端口号、源IP和端口号以及连接的协议

    image-20210410125532433

    增加了一些ddl后缀文件,也删除了一些ddl后缀文件:

    image-20210410125553885

    ②使用wireshark对流量进行抓包分析

    可以看到Wireshark上捕获到大量的TCP传输,输入其他命令,Kali会不断给Windows传一大堆ACK包,有时还伴有PSH+ACK包。(PSH就表示有 DATA数据传输):

    image-20210410130130611

    ③ProcessExplorer

    image-20210410130617276

    image-20210410130730388

    可以详细查看该进程使用的CPU,虚拟内存空间、物理内存空间、I/O等

    image-20210410130808069

    image-20210410130847892

    从这里我们可以看出他调用了许多dll文件

    image-20210410131111929

    三、报告内容

    1、实验后回答问题

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

    • 可以用任务管理器查看自启动项,在自启动项进行过滤查看。
    • 可以利用wireshark对流量进行抓包分析,分析是否对一个ip发送大量的消息。
    • 利用Windows计划任务netstat,定期查看并分析网络连接情况。

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

    • 利用Wireshark抓包,进行分析有没有异常的或可疑的连接,对大量连接进行具体分析。
    • 还可以利用Systracer来拍摄快照,进行对比分析改变的注册表及文件信息。
    • 使用systracer工具分析恶意软件,查看其对注册表和文件的修改

    2、实验总结与体会

    这次实验在看老师操作时感觉不是很难,但在实际操作和软件的安装时有许多问题,许多软件安装中出现问题,windows自带的杀毒软件还一直自动开启,还有自身原因,看不懂不是汉化软件的操作提升。在下软件时,还是尽量从官网去下载,许多软件安装网站可能将后门留在软件中。

    3、实践过程记录

    如果在软件使用中出现:

    image-20210410132454714

    我们可以在http://www.dllzj.com/libgcc_s_dw2-1.dll/这个网站中找到我们缺失的DLL文件:

    image-20210410132531824

    他下面他会讲如何使安装这个dll文件,还会给出这个软件常出现的位置:

    image-20210410132613308

  • 相关阅读:
    实验一报告 20135238&20135207
    第十周
    极客Web前端开发资源大荟萃#022
    一个不错的编程小挑战 没事的时候可以试试
    变形金刚的能量方块(含代码)
    Angular控制器之间的数据通信
    使用HTML5本地 Drag和Drop API(native API)
    用requestAnimationFrame优化你的javascript动画
    模板字符串
    ES6的全新特性:模板字符串
  • 原文地址:https://www.cnblogs.com/394991776zyh/p/14640606.html
Copyright © 2011-2022 走看看