2018-2019-2 网络对抗技术 20165210 Exp4 恶意代码分析

2018-2019-2 网络对抗技术 20165210 Exp4 恶意代码分析

一、实验目标

  • 首先是监控你自己系统的运行状态,看有没有可疑的程序在运行。
  • 其次是分析一个恶意软件,就分析Exp2或Exp3中生成后门软件;分析工具尽量使用原生指令或sysinternals,systracer套件。
  • 最后假定将来工作中你觉得自己的主机有问题,就可以用实验中的这个思路,先整个系统监控看能不能找到可疑对象,再对可疑对象进行进一步分析,好确认其具体的行为与性质。

二、实验内容

1.系统运行监控

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

2.恶意软件分析

  • 分析该软件在(1)启动回连,(2)安装到目标机(3)及其他任意操作时(如进程迁移或抓屏,重要是你感兴趣)。该后门软件

  • 读取、添加、删除了哪些注册表项

  • 读取、添加、删除了哪些文件

  • 连接了哪些外部IP,传输了什么数据(抓包分析)

三、实验步骤

1.系统运行监控-计划任务

  • 使用
schtasks /create /TN netstat5210 /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > c:\netstat5210.txt"

命令创建计划任务netstat5210

  • 其中,TN是TaskName的缩写;sc表示计时方式,以分钟计时填MINUTE;TR=Task Run,运行的指令是netstat-bn,b表示显示可执行文件名,n表示以数字来显示IP和端口。
  • 在C盘中创建一个netstat5210.bat脚本文件,写入以下内容
date /t >> c:\netstat5210.txt
time /t >> c:\netstat5210.txt
netstat -bn >> c:\netstat5210.txt
  • 在左下角Windows处右键打开计算机管理-任务计划程序,可以看到我们新创建的任务:

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

  • 然后点击条件,取消电池选项中的只在交流电才运行的操作,避免一会儿断电出麻烦。

  • 在计算机管理界面对该任务右键点击运行,可在netstat5210.bat目录下看到一个txt文本文件,打开就可看到每隔一分钟被输到这里的联网数据的记录:

  • 然后我们打把游戏等一下,让它多记录一下以便让我们分析。
  • 打开excel-数据-自文本-分隔符号-全部勾选分隔符号


  • 分析-数据透视表-勾除不必要选项
  • 将字段拖动到下面的框中,就可以看到统计图了


  • 由统计数据可知,联网最多的是qq,说明刚刚联网qq用的比较多,其次就是有道(哈哈哈写博客),还有一些其他的,我没有开虚拟机和360,所以这里没有后门程序和虚拟机什么的,这时的电脑是比较安全的,没有什么可疑的操作。

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

  • 确定监控目标:

选择的是进程创建ProcessCreate、进程创建时间FileCreatTime、网络连接NetworkConnect、远程线程创建CreateRemoteThread。

  • 写配置文件

写与自己想要监控的事件相对应的配置文件。编写好的20165210Sysmoncfig.txt内容如下:(配置文件是xml文件,为了简单编辑就直接命令为.txt,每次用写字本打开。)

<Sysmon schemaversion="3.10">
   <!-- Capture all hashes -->
   <HashAlgorithms>*</HashAlgorithms>
   <EventFiltering>
     <!-- Log all drivers except if the signature -->
     <!-- contains Microsoft or Windows -->
     <ProcessCreate onmatch="exclude">     
       <Image condition="end with">MicrosoftEdgeCP.exe</Image> 
     </ProcessCreate>

     <FileCreateTime onmatch="exclude" >
       <Image condition="end with">MicrosoftEdgeCP.exe</Image>
     </FileCreateTime>

     <NetworkConnect onmatch="exclude">
       <Image condition="end with">MicrosoftEdgeCP.exe</Image>
       <SourcePort condition="is">137</SourcePort>
       <SourceIp condition="is">127.0.0.1</SourceIp>
     </NetworkConnect>
     <NetworkConnect onmatch="include">     
       <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>

1.exclude相当于白名单,不用记录。include相当于黑名单

2.Image condition根据自己使用的浏览器更改,如谷歌浏览器是“chrome.exe”,IE浏览器是“iexplore.exe”,我用的是轻量版的IE浏览器是“MicrosoftEdgeCP.exe”(可在上面的netstat5210.txt中找到进程名称),写在exclude中就是不记录由QQ浏览器创建的进程。
进程创建时间类似,也是不创建浏览器创建进程的时间。

3.网络连接过滤掉了浏览器的网络连接、源IP为127.0.0.1的网络连接和目的端口为137的连接服务,且查看目的端口为80(http)和443(https)的网络连接。(137端口的主要作用是在局域网中提供计算机的名字或IP地址查询服务,一般安装了NetBIOS协议后,该端口会自动处于开放状态。127.0.0.1表示本机IP。)

4.远程线程创建记录了目标为explorer.exe、svchost.exe、winlogon.exe和powershell.exe 的远程线程。

5.explorer.exe是Windows程序管理器或者文件资源管理器

6.svchost.exe是一个属于微软Windows操作系统的系统程序,是从动态链接库 (DLL) 中运行的服务的通用主机进程名称。

7.winlogon.exe是Windows NT 用户登陆程序,用于管理用户登录和退出。

8.powershell.exe是专为系统管理员设计的新 Windows 命令行外壳程序。该外壳程序包括交互式提示和脚本环境,两者既可以独立使用也可以组合使用。

  • 启动sysmon:
  • 下载sysmon,解压。
  • 安装sysmon:以管理员身份执行命令sysmon.exe -i C:\20165210Sysmoncfig.txt
  • 输入命令sysmon -accepteula -i -n

  • 查看“事件查看器”,选择日志的位置,应用程序和服务日志/Microsoft/Windows/Sysmon/Operational

  • 分析实验三生成的后门程序20165210-jk.exe,按步骤执行到回连

  • 在点击Sysmon-Operational刷新记录,找到运行后门文件20165210-jk.exe相对应的日志如下

  • kali下执行shell

  • 发现C:\Windows\SysWOW64\cmd.exe这样一个进程,其显示目录在后门程序目录下,很显然与后门程序相关,因为Windows下的cmd.exe是64bit的,kali回连获取的windows的cmd程序是32位的

  • 执行了record_mic截获音频

  • 发现了svchost.exe,再截获视频时也发现了这个,so,应该与后门有关

3.恶意软件分析

使用VirusTotal分析恶意软件

  • 将实验三生成的后门放在VirusTotal下扫描

  • 看一下后门详细资料,发现有MD5和SHA-1算法,还有文件的大小类型等。

  • 看一下加壳情况

  • 看一下可执行的算法库信息

使用PEiD进行外壳检测

  • PEiD(PE Identifier)是一款著名的查壳工具,其功能强大,几乎可以侦测出所有的壳。
  • 下载安装选择加壳文件文件路径或直接把加壳文件拖到里面,可以看到所加壳upx版本为0.89.6

  • 继续可看到其详细信息

使用PE Explorer分析恶意软件

  • PE Explorer是功能超强的可视化Delphi、C++、VB程序解析器,能快速对32位可执行程序进行反编译,并修改其中资源
  • 下载PE Explorer并将后门文件导入并查看程序头部信息

  • 视图-导入,查看dll库分析

  • KERNEL32.dll:控制着系统的内存管理、数据的输入输出操作和中断处理。
    msvcrt.dll:是微软编译软件的函数库。
  • USER32.dll:Windows用户界面相关应用程序接口,用于包括Windows处理,基本用户界面等特性,如创建窗口和发送消息。它是一个对系统很关键或很可疑的文件,易遭受木马病毒破坏导致系统找不到此文件,出现错误提示框。
  • WSOCK32.dll:Windows Sockets应用程序接口,用于支持很多Internet和网络应用程序。是一个对系统很关键或很可疑的文件,易遭受木马病毒破坏导致系统找不到此文件,出现错误提示框。
  • 我发现后门文件里大多数都会有KERNEL32.dll。所以后门软件可以控制操作

使用SysTracer分析后门软件的运行过程

  • SysTracer是一款可以分析你的计算机文件,文件夹和注册表项目改变的系统实用工具。你可以在任何想要的时间获取无数个屏幕快照,比较任何一对想要的屏幕快照,并且观察其间的不同之处。获取屏幕快照通常会持续几分钟的时间,这取决于文件和文件夹的数量和注册表项目的总数。
  • 进入win7虚拟机,进入安装选择第二个,next设置端口为5210,安装完成后进入界面

  • 点击take snapshot(创建快照),接着Start

  • 未运行后门程序,保存为Snapshot #1

  • 运行后门程序并在kali中实现回连,保存为Snapshot #2

  • 在kali中使用dir指令,保存为Snapshot #3

  • 在kali中使用record_mic指令,保存为Snapshot #4

  • 我们选中1、2进行比较,可以看到运行后门进行回连后的变化
  1. 注册表的变化

  1. 端口变化

  1. 增加的dll

  • 我们选中2、3进行比较,看执行dir指令后的变化
  1. 发现注册表又新增了两个配置信息

  1. 然后我们再打开opened handles对比他们做了什么

  • 我们选中2、4进行比较,看执行record_mic指令后有什么变化
  1. 注册表中又有新的变化

  1. 发现增加了一些新的文件都与后门有关

  1. 而且发现新增加的文件dll什么的都与多媒体有关

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

  1. 先打开wireshark捕包,然后进行回连,然后过滤ip.addr == 192.168.16.143

可以看到Wireshark上捕获到大量的TCP传输,然后进行其他的操作,发现Kali会不断给Windows传一大堆ACK包,有时还伴有PSH+ACK包。

四、实验中遇到的问题

  1. 安装sysmon时发现这个问题

参考了学长的博客解决了这个问题
2.一开始我一直是用win7做的,做到wireshark时在win7上安装上了之后发现用不了,没有发现网络接口,不知道什么原因,然后就在主机上装了做的。

五、实验中的体会和感受

这次实验做了一天好难受,期间虚拟机崩了,进不去kali了,有找人考的虚拟机,然后安装的东西也别较多,比较杂,还好做完了,本次实验我从一个攻击者变成了一个分析者,分析恶意代码,这些工具的分析程度也有高低,强!

六、实验后回答问题

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

答:用相应的工具来分析记录文件,查看日志,行为分析查证注册表信息等方式证明是否为恶意代码。

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

答:抓包,查看进行了那些网络活动,使用日志查看器查看程序或进程的工作日志,分析工作信息。

posted @ 2019-04-07 19:36  lykkyl  阅读(190)  评论(0编辑  收藏  举报