20181330 王茜《网络对抗技术》Exp4 恶意代码分析

1.实践原理说明

1.1 实践目标

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

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

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

1.2 实践内容

任务一:系统运行监控

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

任务二:恶意软件分析

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

  • 读取、添加、删除了哪些注册表项
  • 读取、添加、删除了哪些文件
  • 连接了哪些外部IP,传输了什么数据(抓包分析)

2.实践过程记录

任务一:系统运行监控——使用schtasks指令监控系统

Step1:在C盘根目录下先建立一个 netstatlog.dat 文件。

我们先创建 netstatlog.txt 文件,输入以下内容:

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

然后将文件后缀改为 .dat 。

因为权限问题,我的电脑不允许直接在C盘根目录下创建除了文件夹之外的文件,如下图:

简单的解决办法就是先在其他位置创建好 netstatlog.dat 文件,然后使用管理员权限直接移动到C盘根目录下即可,如下图所示:

Step2:在cmd下输入  schtasks /create /TN netstat1330 /sc MINUTE /MO 2 /TR "c: etstatlog.bat"  命令创建任务计划 netstat1330 

  •  TN :TaskName的缩写,这里我们创建名为 netstat1330 的任务计划
  •  sc :计时方式,我们选择用分钟计时,所以写MINUTE 
  • TR :Task Run的缩写,我们要运行C盘下刚刚写好的脚本文件 netstatlog.bat ,填入即可。

Step3:打开 任务计划程序 ,如下图所示:

可以看到我们刚刚创建的任务计划 netstat1330

双击我们这个任务计划

点击  操作  ——>  编辑  

将 程序或脚本 改为之前创建的 netstat.bat 批处理文件——>点击  确定  

注意:这里还需要设置以最高权限运行。

点击  常规  ——>选中 以最高权限运行 ,如下图所示:

如果不选中这个会出现以下情况:

Step3:在任务中还可以设置其他的东西,例如:

在  条件  中可以看到电源这里是默认选中“只有在计算机使用交流电源时才启动此任务”,如果我们的电脑没有接入电源,他就不会执行。

所以我们取消这个选项。

在  设置  中还可以选择任务运行时间,我们设置为3天。

Step4:一段时间之后,我们就可以在 netstat1330.txt 文件中看到我们电脑的联网记录了。

Step5:一段时间之后,我们停止执行这个任务,来分析一下数据。

 首先我们打开excel新建一个表

由于是新版excel,所以我们需要先添加旧版的导入文本功能。

点击左上角的 文件 ——> 选项 ——> 数据 ,把下面 从文本(T)(旧版) 打勾

然后点击左上角的 文件 ——> 传统向导 ——> 从文本(T)(旧版) ,选择我们的刚刚生成的 netstat1330.txt 文件,就可以导入数据啦~

这里我截不上图,就从网上找了一张~

然后依次选择:

其他选择默认选项,导入数据如下:

接下来我们做成统计图,看起来更清晰

选中我们要分析的数据——也就是第二列,点击 数据透视表 

选择如下图所示:

 

接下来,我们点击 行标签 去掉我们不需要的行,比如TCP,以及开始我们权限错误记录下的” 无法获取所有权信息 “这类无用行

把需要的列拖到下面两个地方:

 

选择右上角的 数据透视图 ,然后选择自己想要的样式,就可以得到表了~

 

以下是我得到的图表:

  • 可以看到今天这段时间使用最多的是 chrome 和 QQ ,这是正常的,因为我一直在使用
  • 接下来最高的一项程序是 Dandelion.exe ,但是我甚至不知道这个程序是干什么的。查找之后,发现这个程序是一个垃圾插件,可能在我从非官方软件上面下载的时候自带的吧,已删除……
  •  wps 和 zerotier这些软件我没有打开过,但是可以看到他们仍然在后台运行
  • 甚至还有一些程序我不知道是干什么的,更别说自己打开使用了,这是比较危险的,也是我以前使用计算机没有很强的安全意识,下载了一些来源不明的软件。
  • 今后要加强自己的安全意识。

任务二:系统运行监控——使用sysmon工具监控系统

Step1:下载sysmon

Step2:配置自己的xml文件并存在 Sysmon 所在目录下。

以下是我配置的 sysmon1330.xml 文件:

这里要注意的是:配置文件第一行的 Sysmon 的版本号要和下载的 Sysmon 版本号相同。

右键点击下载的 Sysmon64.exe ,点击 详细信息 查看版本号

 1  <Sysmon schemaversion="13.02">
 2 <!-- Capture all hashes -->
 3 <HashAlgorithms>*</HashAlgorithms>
 4 <EventFiltering>
 5 <!-- Log all drivers except if the signature -->
 6 <!-- contains Microsoft or Windows -->
 7 <ProcessCreate onmatch="exclude"> 
 8   <Image condition="end with">chrome.exe</Image> 
 9   <Image condition="end with">firefox.exe</Image>
10 </ProcessCreate>
11 
12 <ProcessCreate onmatch="include"> 
13   <ParentImage condition="end with">cmd.exe</ParentImage>
14 </ProcessCreate>
15 
16 <FileCreateTime onmatch="exclude" >
17   <Image condition="end with">chrome.exe</Image>
18   <Image condition="end with">firefox.exe</Image>
19 </FileCreateTime>
20 
21 <NetworkConnect onmatch="exclude">
22   <Image condition="end with">chrome.exe</Image>
23   <Image condition="end with">firefox.exe</Image>
24   <SourcePort condition="is">137</SourcePort>
25   <SourceIp condition="is">127.0.0.1</SourceIp>
26 </NetworkConnect>
27 
28 <NetworkConnect onmatch="include"> 
29   <DestinationPort condition="is">80</DestinationPort>  
30   <DestinationPort condition="is">443</DestinationPort>
31 </NetworkConnect>
32 
33 <CreateRemoteThread onmatch="include">
34   <TargetImage condition="end with">explorer.exe</TargetImage>
35   <TargetImage condition="end with">svchost.exe</TargetImage>
36   <TargetImage condition="end with">firefox.exe</TargetImage>
37   <TargetImage condition="end with">winlogon.exe</TargetImage>
38   <SourceImage condition="end with">powershell.exe</SourceImage>
39 </CreateRemoteThread>
40 </EventFiltering>
41 </Sysmon>

配置文件内容解释:

  •  onmatch 选项可以设置两种
    •  include 黑名单,记录
    •  exclude 白名单,不记录
  •  sysmon 工具中可以选择一些事件过滤器,包括(按照我配置文件的顺序依次如下):

    •  ProcessCreate 进程创建。
      • 在我的配置文件中,我选择不记录chrome和Firefox两个浏览器的进程
      • 但是记录使用了cmd的进程
    •  FileCreateTime 进程创建时间。
      • 我的配置文件中,选择不记录chrome和Firefox两个浏览器相关进程
    •  NetworkConnect 网络链接。
      • 这里我还是选择过滤掉两个浏览器的网络连接、本机网络(127.0.0.1)连接和目的端口为137(提供局域网中ID或IP查询服务)的连接服务。
      • 记录下目的端口为80(http)和443(https)的网络连接。
    •  CreateRemoteThread 远程线程创建。
      • 这里我只设置了黑名单,记录下的内容包括:
        •  explorer.exe Windows程序管理器或者文件资源管理器,用于管理Windows图形壳,包括桌面和文件管理,删除该程序会导致Windows图形界面无法使用,对我们的计算机还是很重要的,所以我加入了这个文件。
        •  svchost.exe 一个属于微软Windows操作系统的系统程序,是从动态链接库 (DLL) 中运行的服务的通用主机进程名称。这个程序对系统的正常运行是非常重要,而且是不能被结束的。许多服务通过注入到该程序中启动,所以会有多个该文件的进程。
        •  winlogon.exe Windows NT 用户登陆程序,用于管理用户登录和退出。该进程的正常路径应是C:WindowsSystem32,且是以 SYSTEM 用户运行,若不是以上路径且不以 SYSTEM 用户运行,则可能是 W32.Netsky.D@mm 蠕虫病毒
        •  powershell.exe 专为系统管理员设计的新 Windows 命令行外壳程序,该外壳程序包括交互式提示和脚本环境,两者既可以独立使用也可以组合使用。命令行用户和脚本编写者可以利用 .NET Framework的强大功能。
  • 以上是我所配置文件的内容,除了上述内容,sysmon还有以下事件过滤器:
    •  ProcessTermina 进程结束
    •  DriverLoad 驱动加载
    •  ImageLoad 镜像加载
    •  RawAccessRead 驱动器读取
    •  ProcessAccess  进程访问
    •  FileCreate 文件创建
    •  RegistryEvent 注册表事件
    •  FileCreateStre 文件流创建
  • 以上都可以根据需要进行配置
  • Sysmon的更多说明可以参考:

Step3:安装Sysmon。

在 powershell 中进入 Sysmon 的路径下,输入 Sysmon64.exe -i sysmon20181330.xml 

我第一次安装的时候,由于版本错误,所以报错了。

改正之后需要输入 Sysmon.exe -u 卸载后重新安装,如下图所示:

如果不卸载重新安装就会报错:

所以大家还是第一次就尽量配置好吧~

安装成功:

Step4:查看 事件查看器 中的日志记录

右键点击左下角的Windows标志,依次点击 应用程序和服务日志/Microsoft/Windows/Sysmon/Operational 

这就是Sysmon按照我们的配置文件要求记录的日志,包括:事件、事件ID、任务类别、详细信息等,双击一条记录,就可以看到了。

任务三:恶意软件分析

我们使用Exp3中生成的后门程序进行分析。

(一)静态分析

 1.恶意代码扫描——使用VirusTotal分析恶意软件

VirusTotal,是一个提供免费的可疑文件分析服务的网站。

Step1:把生成的文件放在VirusTotal里进行分析

Step2:可以查看文件的详细属性

2.文件格式识别——使用PEiD分析

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

  • 我们可以使用PEiD自带的插件进行脱壳

  • 这是我们没加壳的后门程序

3.使用PE Explorer分析恶意软件

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

Step1:下载安装PE Explorer

Step2:打开我们上次实验的程序

 点击view ——>Headers Info,可以看到头部信息:

Step3:  view ——>Data Directories,查看程序静态数据目录

Step4: view ——>Section Headers,查看节头信息

Step5:view——Import,查看看文件引用的dll库

  • 可见,在上次生成的后门程序中我们引用了 kernel32.dll 文件
  • kernel32.dll是Windows 9x/Me中非常重要的32位动态链接库文件,属于内核级文件。它控制着系统的内存管理、数据的输入输出操作和中断处理,当Windows启动时,kernel32.dll就驻留在内存中特定的写保护区域,使别的程序无法占用这个内存区域。

(二)动态分析

1.快照对比——使用systracer工具

Step1:下载安装systracer工具

Step2:抓捕快照

实验中我抓捕了五个快照如下:

  • Snapshot #1:未移植后门程序

  • Snapshot #2:移植后门程序后

  • Snapshot #3:运行后门程序并在kali中实现回连后

  • Snapshot #4:在kali中使用dir指令后

  • Snapshot #5:在kali中使用screenshot指令后

Step3:对生成的快照进行对比分析

 

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

  • 对比快照一和快照二(植入后门程序)
    • 可以清楚地看到我们把后门程序放在了d:大三下网络对抗技术实验Exp4 目录之下

    • 我删除了Vivado 的安装包,也可以看出来

    • 我下载了新的软件放在 D:大三下网络对抗技术实验Exp4软件 目录下,可以看到这个目录发生了变化

    • 也可以看到改变的记录、增加的文件等等,绿色的就是新增的文件

  • 对比快照二和快照三(后门启动前与启动后):
    • 可以看到新增了运行着的后门程序

    • 可以看到我新增的两张实验截图~

    • 可以清楚地看到注册表项中 HKEY_USERS 新增的项

    • 可以看到新增了我们刚刚回连的后门进程
    • 单击可以详细地看到回连的kali IP 和端口号

  • 对比快照三快照四(kali上执行dir指令):
    • 修改了 HKEY_LOCAL_MACHINE 根键中的一些内容
    • 在微软的Windows操作系统中,HKEY_LOCAL_MACHINE保存了注册表里的所有与这台计算机有关的配置信息,是一个公共配置信息单元。

    • 修改了 HKEY_USERS 的一些信息,但是这些我们无法查看
    • HKEY_USERS包含了缺省用户设置和登录用户的信息。

    • 在 d:Program FilesMicrosoft SQL ServerMSAS10_50.MSSQLSERVEROLAPLog 中增加了一些新文件
    • 这个文件应该也是一个日志记录,会占据内存很大空间。

    • 单击可以查看详细信息

    • 这里还可以看到我使用QQ后电脑文件的变化,甚至可以看到我的QQ号,记录的还是很细的

    •  Applications 改变的是一些系统启动所需要的文件

  • 对比快照四快照五(kali上执行screenshot指令)
    • 可以看到 HKEY_LOCAL_MACHINE 中新增了一些文件

    • 其他注册表项也发生了一些变化,但是我们无法查看

    • 文件也发生了变化,还是看不了/(ㄒoㄒ)/

2.动态行为监控(APIHooking)——使用ProcessExplorer工具

ProcessExplorer是由Sysinternals开发的Windows系统和应用程序监视工具。不仅结合了Filemon(文件监视器)和Regmon注册表监视器)两个工具的功能,还增加了多项重要的增强功能。包括稳定性和性能改进、强大的过滤选项、修正的进程树对话框(增加了进程存活时间图表)、可根据点击位置变换的右击菜单过滤条目、集成带源代码存储的堆栈跟踪对话框、更快的堆栈跟踪、可在 64位 Windows 上加载 32位 日志文件的能力、监视映像(DLL和内核模式驱动程序)加载、系统引导时记录所有操作等。

 Step1:下载安装ProcessExplorer工具

Step2:使用之前生成的后门程序成功实现回连之后,我们可以在Process Explorer中查到相关记录。

双击打开之后可以看到更详细的信息,包括进程使用的CPU、虚拟内存、物理内存、I/O等相关信息。

3.使用Wireshark抓包分析

我们去年上课使用过Wireshark。

Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。

刚开始使用wireshark的时候一直没有本地接口,查了很多博客,打开了服务接口也不行。

后来以管理员身份运行就好了。

因为这个耽搁了好久/(ㄒoㄒ)/

Step1:选择本地接口为 VMWare 

 Step2:设置过滤条件为 ip.addr == 192.168.91.133 ( kali IP )进行抓包

 Step3:通过生成的后门程序与主机进行回连

  • 可以清楚地看到主机向kali的1330端口发送建立连接的包
  • 也有一些传送网络消息的ICMP数据包

3.实验后回答问题

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

  • 使用schtasks指令监控系统
    • 建立一个脚本文件
    • 添加任务计划程序,隔一段时间就记录下想要知道的内容
    • 一段时间后进行分析
  • 使用sysmon工具监控系统

    • 配置好自己的xml文件
    • 设置好黑名单和白名单
    • 一段时间后查看记录日志
  • 使用PE Explorer分析恶意软件
    • 查看哪些文件修改了我们主机的那些信息
  • 使用systracer工具
    • 抓捕一些快照
    • 对比分析

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

1.可以进行静态分析:

  • 使用virustotal
    • 查看恶意软件的一些信息
  • 使用使用PEiD分析
    • 查看文件是否加壳
    • 进行脱壳
  • 使用PE Explorer分析恶意软件

2.也可以进行动态分析:

  • 使用systracer工具
    • 抓捕一些快照
    • 查看系统中注册表信息、文件、应用的改变
  • 使用Wireshark工具
    • 进行抓包分析
    • 查看可疑通信
  • 使用ProcessExplorer工具

    • 动态监视应用程序
    • 查看哪些程序使用和改变了系统文件

4.实验总结与体会

本次实验我们监控了自己系统都在干什么,分析了之前的后门程序。

不监控不知道,原来有那么多的软件在我不知道的情况下偷偷运行,还有一些我都不知道什么时候装的也不知道是什么的软件在运行,难怪电脑越用越卡……

在恶意代码分析的过程中,认识了解了很多系统文件和他们的作用。

我觉得最有趣的还是使用systracer抓捕快照对比,可以清清楚楚地看到主机的所有变化,甚至是QQ接受的文件、我新截的图片、一些注册表信息……当然还包括我们运行的后门程序。

在实验中下载PEiD的时候,我一直没有找到官方的下载地址,所以从非官网的地址下载的,尽管已经很小心,取消了一些恶意软件的自动下载,结果还是被下载了360安全卫士……

使用完之后我在程序和功能中查看了最新下载的软件,还好只下载了一个360。

在之前我是没有这个意识的,但是这些非官方下载的软件可能在现在发现看不到的地方还会绑定下载其他东西。

这次实验也让我发现了我之前使用电脑不好的习惯,所以电脑才会有一些我不知道是什么的软件在运行,以后会更加注意的。

原文地址:https://www.cnblogs.com/wangqianhey/p/14637974.html