Exp4 恶意代码分析

一、实践目标

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

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

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

二、实践内容

 1.系统运行监控

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

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

  参考:schtask与sysmon应用指导

 2.恶意软件分析

  • 分析恶意软件在(1)启动回连,(2)安装到目标机,(3)及其他任意操作时
  • 读取、添加、删除了哪些注册表项
  • 读取、添加、删除了哪些文件
  • 连接了哪些外部IP,传输了什么数据(抓包分析)

三、实践过程与步骤

(一)系统运行监控

1)输入命令:

schtasks /create /TN netstat4314 /sc MINUTE /MO 2 /TR "cmd /c netstat -bn > c:\netstat4314.txt"

实现每2分钟记录一下有哪些程序在连接网络

(忘记截图了···)

其中,TN是TaskName的缩写,这里计划任务名是netstat5330;sc表示计时方式,以分钟计时填MINUTE;TR=Task Run,要运行的指令是netstat -bn,b表示显示可执行文件名,n表示以数字来显示IP和端口。

(2)在C盘要目录下建一个文件c:\netstat4314.bat(可以先在桌面新建txt文本文件,使用记事本写入后在修改后缀为.bat,复制到C盘中),写入内容如下:

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

(3)通过“Windows->控制面板->管理工具->任务计划程序”,找到我的任务

(4)双击这个任务,点击操作-编辑,将其中的程序或脚本改为我们创建的netstat4314.bat批处理文件,参数可选项为空,点击确定。

注意一定要勾选使用最高权限运行,否则可能导致文件不能自主更新或者记录里出现权限问题)

(5)打开记录文件netstatlog.txt记事本,可以看到每隔2分钟记录并且能够显示日期和时间

 (6)统计分析数据(两小时的数据信息)

   导入数据:

  • 数据选项卡-获取外部数据-来自文本,选择文本netstatlog.txt
  • 在 数据类型 中选择 分隔符号
  • 导入过程中选择分隔符号,分隔符号都选上,列数据格式选择常规,完成导入

 

选择一部分数据,使用数据透视工具分析得到直观的数据透视图

 第一个选取了程序接入网络的次数:

上网查询了解了以下几个联网次数较多和我不熟悉的进程:

 dlna_player.exe应该是音乐播放器的程序;

 upc.exe应该是uplay平台的一个程序;

 sesvc.exe是360浏览器的广告程序;

 svchost.exe 是从动态链接库(DLL) 中运行的服务的通用主机进程名称。这个程序对系统的正常运行是非常重要,而且是不能被结束的。

 第二个选取了程序接入网络的IP:

 

 

 

看到最多的是127.0.0.1即本机地址,后来经查询得知,127.0.0.1是绑定在loopback接口上的地址没如果服务端套接字绑定在它上面,你的客户端程序就只能在本机访问。

上网查了一些IP:

 

不知道这个美国的IP是个什么情况·······

 

(二)使用Sysmon工具

  Sysmon是微软Sysinternals套件中的一个工具,首先进入微软官网下载sysmon(下好后我把文件放到了D盘)

1)确定监控目标为网络连接。

2)配置文件:

<Sysmon schemaversion="3.10">
  <!-- 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>

<NetworkConnect onmatch="exclude">
  <Image condition="end with">chrome.exe.exe</Image>
</NetworkConnect>

<NetworkConnect onmatch="include">     
  <DestinationPort condition="is">80</DestinationPort>      
  <DestinationPort condition="is">443</DestinationPort>
  <DestinationPort condition="is">4314</DestinationPort>    
</NetworkConnect>

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

<ProcessCreate onmatch="exclude" >
      <Image condition="end with">chrome.exe</Image>
</ProcessCreate>

<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”和“360tray.exe”就是不记录由浏览器和360安全卫士创建的进程。
  • 进程创建时间类似。
  • 网略连接过滤掉了浏览器的网络连接、源IP为127.0.0.1的网络连接和目的端口为137的连接服务,且查看目的端口为80(http)和443(https)的网络连接。
  • 137端口的主要作用是在局域网中提供计算机的名字或IP地址查询服务,一般安装了NetBIOS协议后,该端口会自动处于开放状态。
  • 127.0.0.1表示本机IP。
  • 远程线程创建记录了目标为explorer.exe、svchost.exe、winlogon.exe和powershell.exe 的远程线程。
  • explorer.exe是Windows程序管理器或者文件资源管理器
  • svchost.exe是一个属于微软Windows操作系统的系统程序,是从动态链接库 (DLL) 中运行的服务的通用主机进程名称。
  • winlogon.exe是Windows NT 用户登陆程序,用于管理用户登录和退出。
  • powershell.exe是专为系统管理员设计的新 Windows 命令行外壳程序。该外壳程序包括交互式提示和脚本环境,两者既可以独立使用也可以组合使用。

 (3)把配置文件放入c盘;

 (4)以管理员身份运行cmd,执行命令

接着输入命令:

sysmon.exe -i c:\sysmon20164314.xml

提示版本不同,将“20164314.xml”文件中 <Sysmon schemaversion="3.10"> 改为 <Sysmon schemaversion="4.20"> 

输入上一步中的命令,执行,此时会弹出一个窗口,点击agree;

安装成功如下:

 

(5)在事件查看器里查看日志

  依次点开应用程序和服务日志→Microsoft→Windows→Sysmon→Operational。

 

(6)分析实验二生成的后门程序,按步骤进行回连

 

查找事件

找到事件

 

打开详细信息,可以看到这个后门映像文件的具体位置、源IP和端口、目的IP和端口等

 

(三)恶意软件分析

 (1)静态分析

   使用VirusTotal分析恶意软件

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

  • 加壳情况

   (2)动态分析

     安装SysTracer工具,监听端口选择4314

     使用SysTracer工具动态分析我是在两台虚拟机上进行的,一台是win10虚拟机,一台是Linux的虚拟机

     (1)点击右侧的take snapshot,存储快照

  • 快照一:未移植后门程序,保存为Snapshot #1
  • 快照二:运行后门程序并在kali中实现回连,保存为Snapshot #2
  • 快照三:在kali中使用 dir 指令,保存为Snapshot #3
  • 快照四:在kali中使用 record_mic 指令,保存为Snapshot #4

   

(2)通过右下角的 compare 键或者 View Differences Lists 比对各快照,可以选择 Only Difference 只查看不同的项

  ①对比快照一和快照二(后门启动前与启动后):

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

 

  • 而且该后门程序生成了很多文件、目录和键值

 

  • 在C盘增加了相关的文件

如上图所示,一些Systracer未授权的地方我们是没法查看的

  •  对HEKY_CLASSES_ROOT、HKEY_CURRENT_USER、HKEY_LOCAL_MACHINE和HKEY_USER无法查看

 

②对比快照二和快照三:Linux上执行 dir 指令

 

不是很懂为啥又是查看不了·····(难道因为是虚拟机?)

③ 对比快照三和快照四:Linux上执行 record_mic 指令

  •  新建了很多连接,其中有与后门程序相关的Apache HTTP Server

  • 进程中增加了这些

  • 又是不可访问·····

四、实验后回答问题

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

  • 我认为需要监控端口连接情况,注册表信息,文件信息,我想可以通过设置任务计划定时的,通过启动一个记录系统连接情况的程序实现监控端口连接情况。然后通过使用SysTracer等类似软件,定时拍照,查看注册表信息,文件信息等信息。

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

  • 可以通过火绒剑实时监控这个程序或进程在做的事以及对外的连接,还可以通过SysTracer在执行该进程前后进行拍照,查看端口连接情况,注册表信息,文件信息的变化,还可以通过process monitor查看在该进程启动后执行的具体的操作,还可以将这个程序上传到virscan网站上通过多个杀毒引擎进行判断。

五、实验感想

       在当了多次的“小偷”后,我们这次实验终于到了一次“警察”,对过去自己的所作所为进行分析,知道了不少小却十分方便的工具,也知道了Windows自带的一些很方便的服务。通过这些工具,可以查看“小偷”对我们的电脑做了些什么,从而对“小偷”进行管理。

 ( 就是感觉好多Systracer未授权的地方呀·······

posted @ 2019-04-07 21:20  FourICes  阅读(643)  评论(0编辑  收藏  举报