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

目录


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

返回目录


实验内容
---------- - [系统运行监控](#1) - 使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述一下分析结果。目标就是找出所有连网的程序,连了哪里,大约干了什么(不抓包的情况下只能猜),你觉得它这么干合适不。如果想进一步分析的,可以有针对性的抓包 - 安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控自己主机的重点事可疑行为 - [恶意软件分析](#2) - 分析该软件在`启动回连`,`安装到目标机`及`其他任意操作`时(如进程迁移或抓屏,重要是你感兴趣)。该后门软件—— - 读取、添加、删除了哪些注册表项 - 读取、添加、删除了哪些文件 - 连接了哪些外部IP,传输了什么数据(抓包分析)

返回目录


基础问题
---------- - 如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所以想监控下系统一天天的到底在干些什么。请设计下你想监控的操作有哪些,用什么方法来监控。 >- 利用Windows计划任务netstat,定期查看并分析网络连接情况 >- 可利用sysmon工具,配置好想要监控的端口、注册表信息、网络连接等信息,通过其生成的日志文件进行查看 >- 利用wireshark查看数据包,分析数据流 >- 使用Process Explorer工具,监视进程执行情况
  • 如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息。
  • 利用wireshark查看数据包,查找可以数据连接
  • 利用systracer进行快照的对比(注册表、文件等)

返回目录


相关知识
---------- >恶意代码 >- 是通过存储介质和网络进行传播,从一台计算机系统到另一台计算机系统,未经授权破坏计算机系统完整性的程序或代码 >- 最常见的恶意代码有病毒、木马、蠕虫、后门、僵尸网络、Rootkit等 >- 恶意代码都有以下共同特征: > - 恶意的目的 > - 本身是计算机程序 > - 通过执行发生作用 >- 具体可看[恶意代码](https://www.jianshu.com/p/0b9c86903924)

恶意代码分析

  • 静态分析(不运行程序)
    • 使用反病毒软件来确认程序样本的恶意性(VirusTotal或者virscan,可调用多个反病毒引擎来进行扫描)
    • 哈希值:恶意代码的指纹(md5deep程序:计算出程序的哈希值)
    • 通过检索恶意代码字符串获得相应的功能调用解释等,查看是否有被加壳处理(字符串检索:Strings 外壳检测:PEiD)
    • 可移植执行(PE)文件以一个文件头开始,包含代码信息、应用程序类型、所需的库函数与空间要求。(使用PEview来分析PE文件。使用Resource Hacker工具来浏览.rsrc节(资源)。PEBrowse Professional和PE Explorer 也是分析PE文件的两大工具)
  • 动态分析(运行程序)
    • 沙箱:提供容易理解的输出结果,用来做初诊断非常有用(Norman沙箱、GFI沙箱等)
    • DLL类型文件执行(PEview、PE Exporer)
    • 用一些系统监视类软件捕获运行中恶意程序的系统调用(process monitor、process explorer)

返回目录


实验步骤
---------- ####
系统运行监控
###### (1)使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述一下分析结果。目标就是找出所有连网的程序,连了哪里,大约干了什么(不抓包的情况下只能猜),你觉得它这么干合适不。如果想进一步分析的,可以有针对性的抓包。 - 使用schtasks指令监控系统 - 使用`schtasks /create /TN netstat5330 /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > c:\netstat5330.txt"`命令创建计划任务netstat5330 ![image](https://img2018.cnblogs.com/blog/1291750/201904/1291750-20190403203142650-1985713748.png) >其中,TN是TaskName的缩写,这里计划任务名是netstat5330;sc表示计时方式,以分钟计时填MINUTE;TR=Task Run,要运行的指令是`netstat -bn`,b表示显示可执行文件名,n表示以数字来显示IP和端口。 - 在C盘要目录下建一个文件`c:\netstat5330.bat`(可以先在桌面新建txt文本文件,使用记事本写入后在修改后缀为.bat,复制到C盘中),写入内容如下: ``` date /t >> c:\netstat5330.txt time /t >> c:\netstat5330.txt netstat -bn >> c:\netstat5330.txt ``` - 在左下角Windows处右键打开`计算机管理`-`任务计划程序`,可以看到我们新创建的任务: ![image](https://img2018.cnblogs.com/blog/1291750/201904/1291750-20190403203600106-1361204294.png) - 双击这个任务,点击`操作`-`编辑`,将其中的`程序或脚本`改为我们创建的`netstat5330.bat`批处理文件,`参数可选项`为空,点击确定。(**注意看这里**:一定要勾选`使用最高权限运行`,否则可能导致文件不能自主更新或者记录里出现权限问题) ![image](https://img2018.cnblogs.com/blog/1291750/201904/1291750-20190403214402417-1060624794.png) - 还可在`条件`中设置其他属性,在`电源`这里默认操作为`只有在计算机使用交流电源时才启动此任务`,那么使用电池电源时就会停止任务,所以若保持默认注意电脑**保持开机联网**状态! ![image](https://img2018.cnblogs.com/blog/1291750/201904/1291750-20190403204830281-2060027435.png) - 在计算机管理界面对该任务右键点击`运行`,可在`netstat5330.bat`目录下看到一个txt文本文件,打开就可看到每隔一分钟被输到这里的联网数据。 ![image](https://img2018.cnblogs.com/blog/1291750/201904/1291750-20190403205436512-720556258.png) - 现在我们等待一段时间,让记录项目足够多了我们用excel来进行分析 - 打开Excel表格,选择`数据`-`获取外部数据`-`自文本`,在`数据类型`中选择`分隔符号` ![image](https://img2018.cnblogs.com/blog/1291750/201904/1291750-20190404170229275-1619165576.png) - 点击`下一步`,标记所有`分隔符号`,点击完成 ![image](https://img2018.cnblogs.com/blog/1291750/201904/1291750-20190404170340209-428024128.png) - 就可以看到txt文档中一样的信息,然后选择我们要分析的那一列 ![image](https://img2018.cnblogs.com/blog/1291750/201904/1291750-20190404170501250-1779209025.png) - 选择`插入`-`数据透视图`,并默认位置`新表格`,点击`确定` - 在字段中去除不需要的字段(注意去掉TCP) ![image](https://img2018.cnblogs.com/blog/1291750/201904/1291750-20190404170724302-937006472.png) - 将该字段拖动到下方的`轴`和`值`两个区域中 ![image](https://img2018.cnblogs.com/blog/1291750/201904/1291750-20190404170834261-1353790187.png) - 就可以清晰的看到联网信息的统计图了 ![image](https://img2018.cnblogs.com/blog/1291750/201904/1291750-20190404170941213-1922701520.png) - 由上图我们可以发现之前实验所生成的后门程序`20165330_backdoor.exe`,通过查询他的连接数据,发现他所连IP都显示为`[::1]:8307`类,经过查询`::1`代表的是ipv6的本机地址,也就是ipv4的`127.0.0.1`,在查找相关进程在VM有关进程发现`vmware-authd.exe`(它是虚拟机的授权服务)所连外部IP就是我的kali的IP地址和后门设置的端口,这应该就是后门和我的主机进行通讯的一个通道吧。。 ![image](https://img2018.cnblogs.com/blog/1291750/201904/1291750-20190406220748791-319852636.png) - 连接最多的就是`QQBrowser.exe`,这个是QQ浏览器对应的进程,没什么可疑的。 - 再来看看`SearchUI.exe`,这个原来是win10所带的Cortana小娜的进程,查了它的两个连接的外部IP,一个显示是上海市腾讯云,一个是在美国(这大概是微软的吧。) - 其他的都是电脑上所下的软件`360`、`有道云`还有`office`及一些系统服务的,没有可疑部分。
(2)安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控自己主机的重点事可疑行为。

Sysmon是微软Sysinternals套件中的一个工具。可以监控几乎所有的重要操作,参考使用轻量级工具Sysmon监视你的系统开始我们的使用。

① 基本操作

  • 确定要监控的目标:在这里我选择进程创建进程创建时间网络连接远程线程创建
  • 写配置文件
    • 相关事件过滤器选项在可看到,进程创建ProcessCreate我用到了ImageSourceIpSourcePort进程创建时间FileCreateTime我用到了Image网络连接NetworkConnect我用了ImageSourceIpSourcePort远程线程创建CreateRemoteThread我用了TargetImageSourceImage
    • 开始写与自己想要监控的事件相对应的配置文件,命名为20165330Sysmoncfig.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">QQBrowser.exe</Image> 
           </ProcessCreate>
      
           <FileCreateTime onmatch="exclude" >
             <Image condition="end with">QQBrowser.exe</Image>
           </FileCreateTime>
      
           <NetworkConnect onmatch="exclude">
             <Image condition="end with">QQBrowser.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>
      
      • exclude相当于白名单,不用记录。include相当于黑名单
      • Image condition根据自己使用的浏览器更改,如谷歌浏览器是“chrome.exe”,IE浏览器是“iexplore.exe”,我用的是QQ浏览器则更改为“QQBrowser.exe”(可在上面的netstat5330.txt中找到进程名称),写在exclude中就是不记录由QQ浏览器创建的进程。
      • 进程创建时间类似,也是不创建浏览器创建进程的时间。
      • 网络连接过滤掉了浏览器的网络连接、源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 命令行外壳程序。该外壳程序包括交互式提示和脚本环境,两者既可以独立使用也可以组合使用。
  • 将配置文件放在C盘中

② 启动sysmon

  • 下载老师给的安装包并解压:SysinternalsSuite201608
  • 右键点击左下角Windows标志,打开Windows PowerShell(管理员)进入管理员命令行,先cd进入工具目录,在安装sysmon:.\Sysmon.exe -i C:\20165330Sysmoncfig.txt(因为按老师的指令报错我将指令改为如上才成功执行)
  • 弹出窗口点击Agree,安装成功如下图
    image
  • 如果修改了配置文件,要运行指令:.\Sysmon.exe -c C:\20165330Sysmoncfig.txt来更新
  • 输入.\Sysmon.exe -i命令启动sysmon

③ 使用sysmon

  • 左下角右键Windows标志,找到事件查看器,在应用程序和服务日志-Microsoft-Windows-Sysmon-Operational可以看到按照配置文件的要求记录的新事件,以及事件ID、任务类别、详细信息等等
    image
  • 分析实验二生成的后门程序20165330_backdoor.exe,按步骤执行到回连
    image
  • 在点击Sysmon-Operational刷新记录,在12:36:34找到运行后门文件20165330_backdoor.exe相对应的日志如下
    image
  • 此时我们还可以看到有360安全的记录日志,在运行时后门程序会被拦截,就会启动这里的360RealPro.exe,这是360的实时保护进程名,后续还运行了其他一些可执行文件,如360sctblist.exe、360sclog.exe。
    image
  • Linux执行shell获取cmd
    image
    • 在13:11左右我获取了shell,在事件管理器中,发现C:\Windows\SysWOW64\cmd.exe这样一个进程,其显示目录在后门程序目录下,很显然与后门程序相关
      image
      SysWOW64可以在64bit的Windows中运行32bit的程序,而Windows下的cmd.exe是64bit的,kali回连获取的windows的cmd程序是32位的
    • 我们在输入dir获取目录下信息,发现了一个被运行的的进程svchost.exe
      image
      Svchost.exe是微软视窗操作系统里的一个系统进程,管理通过Dll文件启动服务的其它进程,一些病毒木马伪装成系统dll文件通过Svchost调用它,试图隐藏自己。每个svchost可以同时调用多个dll文件,启动多个服务。
    • 我们在输入webcam_snap获取摄像头,同样也发现了Svchost.exe这个进程。
      image

恶意软件分析

静态分析

① 使用VirusTotal分析恶意软件

  • 将exp3中生成的加壳后门在VirusTotal进行扫描
    image
    可疑程度相当高。。
  • 查看这个恶意代码的基本属性:可以看出它的SHA-1、MD5摘要值、文件类型、文件大小,以及TRiD文件类型识别结果
    image
  • 算法库支持
    image
  • 加壳情况
    image

② 使用PEiD进行外壳检测

PEiD(PE Identifier)是一款著名的查壳工具,其功能强大,几乎可以侦测出所有的壳,其数量已超过470 种PE 文档 的加壳类型和签名

  • 虚拟机win7中下载后点.exe安装(别安装捆绑软件!)
    image
  • 选择.exe文件路径或直接把.exe文件拖到里面,可以看到所加壳upx版本为0.89.6
    image
  • 点击右下角>>查看详细信息
    image
  • 若没有加壳则显示
    image
  • PEiD还可进行脱壳
    • 下面是通用脱壳器
      image
    • 还有专门针对一些壳进行脱壳
      image

③ 使用PE explorer查看PE文件头中包含代码信息

PE Explorer是功能超强的可视化Delphi、C++、VB程序解析器,能快速对32位可执行程序进行反编译,并修改其中资源

  • 虚拟机win7中下载并安装
    image
  • 打开后门程序20165330_backdoor.exe
    image
  • 查看程序头部信息
    image
  • 试图-数据目录查看程序静态数据目录
    image
  • 试图-节头查看节头信息
    image
  • 工具-反汇编器进行反汇编
    image
  • 退出后点击导入查看所引用的dll库,分析得知
    image
    • msvcrt.dll是微软在windows操作系统中提供的C语言运行库执行文件
    • kernel32.dll属于内核级文件,它控制着系统的内存管理、数据的输入输出操作和中断处理,是必需的
    • advapi32.dll是一个高级API应用程序接口服务库的一部分,包含的函数与对象的安全性,注册表的操控以及事件日志有关,会受到病毒的侵扰及篡改,导致系统文件丢失、损坏
    • wsock32.dll是Windows Sockets应用程序接口,用于支持很多Internet和网络应用程序,是一个对系统很关键或很可疑的文件,易遭受木马病毒(如“犇牛”病毒)破坏导致系统找不到此文件,出现错误提示框。
    • ws2_32.dll是Windows Sockets应用程序接口。一些病毒会在杀毒软件目录中建立伪"ws2_32.dll"的文件或文件夹,在杀毒软件看来这是程序运行需要的文件而调用,这个所谓的“文件”又不具备系统"ws2_32.dll"文件的功能,所以杀毒软件等就无法运行了而提示:应用程序正常初始化失败。

动态分析

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

SysTracer是一款可以分析你的计算机文件,文件夹和注册表项目改变的系统实用工具。你可以在任何想要的时间获取无数个屏幕快照,比较任何一对想要的屏幕快照,并且观察其间的不同之处。获取屏幕快照通常会持续几分钟的时间,这取决于文件和文件夹的数量和注册表项目的总数。

  • 最好用两台虚拟机:kali和win7
  • 下载SysTracer
  • 进入安装选择第二个,next设置端口为5330(后门生成时利用的端口),安装完成后进入界面
    image
  • 打开后门前先点击take snapshot(创建快照),接着Start
    image
  • 创建过程长短视当前系统体量而定,创建好后默认名称为Snapshot #1
    image
  • 开启后门程序回连kali(停在获取命令的那一刻),此时创建第二个快照Snapshot #2
    image
  • 然后kali中输入一个ls命令,此时创建第三个快照Snapshot #3
    image
  • 输入screenshot命令抓屏,此时创建第四个快照Snapshot #4
    image
  • 点击右下角compare将快照之间进行比较,在Registry可看到注册表的变化(蓝色部分为有变化的)
    image
  • 我们按住ctrl键,选择#1和#2进行比较:可以发现在启动回连时的变化
    • 注册表变化
      image
    • 端口变化
      image
    • 新增了一些dll文件
      image
  • 比较#2和#3:可以看到在获取win7的cmd命令在Wow3264node这个注册表发生了变化(它是计算机专门给32位系统访问的)在上一个软件分析中我们可知kali获取的cmd是32位的,它访问64位的qin7并获取命令,就会再次发生变化。
    image
    • 查看opened handles(打开的句柄)来对比他们都做了什么
      image
  • 比较#1和#4可以发现在进行截屏时,也修改了很多dll文件
    image
    • 对其他注册表我们会发现SysTracer没有办法查看,只能知道这部分做了修改
      image
    • 关于HKEY_LOCAL_MACHINE:它保存了注册表里的所有与这台计算机有关的配置信息
    • 关于HKEY_CURRENT_USER:它管理系统当前的用户信息。在这个根键中保存了本地计算机中存放的当前登录的用户信息,包括用户登录用户名和暂存的密码

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

  • 打开Wireshark,选择本地连接接口开始抓包
    image
  • kali中打开监控,win7执行后门程序5330.exe进行回连,输入过滤条件ip.addr == 192.168.30.129,可以看到Wireshark上捕获到大量的TCP传输(由于抓包时Kali一直处于连接win7的状态,因此并没有捕获到TCP四次握手取消连接过程)
    image
  • 输入其他命令,Kali会不断给Windows传一大堆ACK包,有时还伴有PSH+ACK包。(PSH就表示有 DATA数据传输)

③ 使用Process Monitor分析恶意软件

Process Monitor一款系统进程监视软件,总体来说,Process Monitor相当于Filemon+Regmon,其中的Filemon专门用来监视系统 中的任何文件操作过程,而Regmon用来监视注册表的读写操作过程

  • win7虚拟机中下载并安装
  • 打开软件,可以看出其对各个进程的详细记录
    image
  • 可以点击过滤器-过滤器,选择进程名称,输入后门名称5330.exe,选择包括并添加,点击应用确定,就可以看到监视条目
  • 我们在kali中打开监控,win7中双击程序回连,kali中我输入了ls查看目录,在Process Monitor中发现这个操作
    image
  • 我们右键点击跳转到可以跳转到注册表,发现指向了这个注册表
    image
  • 看它的名字我猜测kali为获取名称而修改了这个跟命名相关的注册表。。

④ 使用Process Explorer分析恶意软件

Process Explorer让使用者能了解看不到的在后台执行的处理程序,能显示目前已经载入哪些模块,分别是正在被哪些程序使用着,还可显示这些程序所调用的 DLL进程,以及他们所打开的句柄。Process Explorer最大的特色就是可以终止任何进程,甚至包括系统的关键进程!

  • 在win7虚拟机中下载并安装
  • 在win7中运行木马,回连kali时,我们可以看到Process Explorer对其进行的记录,双击可查看其属性
    image
  • Strings通常能够显示这个进程在运行的时候可能会使用到的一些字符串,比如网址、路径名、注册表信息等等蛛丝马迹。如果是病毒或者恶意软件通过包含着一个远程的地址用来下载病毒或者将窃取的信息上传。这里通常还会包含其他信息,对于不同的场合来说,总有一些是有用的。通常有些杀毒软件也会从这里提取病毒特征码的。
    image
    我在其中发现了前面分析到的dll文件:wsock32.dllws2_32.dll,这两个是会经常被木马、病毒等进行侵略篡改的文件,可以分析出我们的后门程序对其做一定的修改来实现反弹连接控制被控机。

返回目录


实验过程中遇到的问题
---------- - 在安装sysmon时报错,提示`找不到命令Sysmon.exe,但它确实存在于当前位置` ![image](https://img2018.cnblogs.com/blog/1291750/201904/1291750-20190403233354293-147853365.png) >解决办法:按照提示要求将命令改为`.\Sysmon.exe -i C:\20165330Sysmoncfig.txt`即可。

返回目录


实验总结与体会
---------- - 本次实验从各个软件入手,对之前的后门程序做出不同程度的分析,在学习使用的同时,我也不段掌握了分析的基本方法,从攻击者转换到分析者,更全面的知悉后门程序到底做了什么,一般我们都是依靠杀软来检测出恶意程序,实验中用到的也都很陌生,但其实也是杀软的一些基本构件,分析程度也有高低,当然我们也不能全寄希望于这些工具,也会存在足够厉害的躲过所有监控的恶意程序,杜绝非法链接,增强安全意识也是很重要的一点。

参开资料

posted @ 2019-04-05 19:41  20165330张羽昕  阅读(535)  评论(0编辑  收藏  举报