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:\netstatlog.txt"
  • TN是TaskName的缩写,我们创建的计划任务名是netstat1235;

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

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

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

image-20210408155926111

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

date /t >c:\netstat1235.txt
time /t >c:\netstat1235.txt
netstat -bn >c:\netstat1235.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

posted @ 2021-04-10 13:28  20181235  阅读(125)  评论(0编辑  收藏  举报