2019-2020-2 20175305张天钰《网络对抗技术》 Exp4 恶意代码分析

2019-2020-2 20175305张天钰《网络对抗技术》 Exp4 恶意代码分析


一.实践目标

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

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

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

二.实践内容及步骤

2.1系统运行监控

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

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

2.2恶意软件分析

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

(3)读取、添加、删除了哪些注册表项

(4)读取、添加、删除了哪些文件

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

该实验重点在“分析”,不是“如何使用某软件”。组长、课题负责人要求写细一点,其他人可以重点放在分析上

实践过程记录

任务一:使用schtasks指令监控系统(使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述分析结果)

在C盘中创建一个netstat5305.bat脚本文件,写入以下内容

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

使用schtasks /create /TN netstat5305 /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > c:\netstatlog.txt"命令创建计划任务netstat5305

TN是TaskName的缩写,我们创建的计划任务名是netstat5318;
sc表示计时方式,我们以分钟计时填MINUTE;
TR=Task Run,要运行的指令是 netstat
bn,b表示显示可执行文件名,n表示以数字来显示IP和端口;
>表示输出重定向,将输出存放在c:\netstatlog.txt文件中:

打开控制面板搜索管理工具,然后打开任务计划程序,找到新建的计划netstat5305:

双击这个任务,点击操作并编辑,将“程序或脚本”改为我们创建的netstat5305.bat批处理文件,将可选参数清空,点击确定,在"条件"选项卡中可以看到,为了统计足够多的数据,取消掉电源选项中默认操作为只有在计算机使用交流电源时才启动此任务。接着,在常规栏下选择使用最高权限运行,点击确定保存。接着,在常规栏下选择使用最高权限运行,点击确定保存:

当记录的数据足够丰富时,停止任务,将所得数据在excel中进行分析,此过程要一直保持开机联网状态才能持续监控
等待一段时间,将存储的数据通过excel表进行整理.
统计数据如下:

统计图如下:

任务二:使用sysmon工具监控系统(安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控自己主机的重点事可疑行为。)

sysmon是微软Sysinternals套件中的一个工具,它以系统服务和设备驱动程序的方法安装在系统上,并保持常驻性。sysmon用来监视和记录系统活动,并记录到windows事件日志,可以提供有关进程创建,网络链接和文件创建时间更改的详细信息。

可选择的事件过滤器有 ProcessCreate 进程创建、FileCreateTime 进程创建时间、NetworkConnect 网络链接、ProcessTermina 进程结束、DriverLoad 驱动加载、ImageLoad 镜像加载、CreateRemoteTh 远程线程创建、RawAccessRead 驱动器读取、ProcessAccess 进程访问、FileCreate 文件创建、RegistryEvent 注册表事件、FileCreateStre 文件流创建等。

下载并解压SysinternalsSuite.zip,在SysinternalsSuite目录中创建配置文件sysmon20175305.xml,该配置文件中可以加入事件过滤器,具体的过滤事件选项如下

  • 进程创建ProcessCreate的过滤事件选项有:UtcTime, ProcessGuid, ProcessId, Image, CommandLine, CurrentDirectory, User, LogonGuid, LogonId, TerminalSessionId, IntegrityLevel, Hashes, ParentProcessGuid, ParentProcessId, ParentImage, ParentCommandLine
  • 进程创建时间FileCreatTime的过滤事件选项有:UtcTime, ProcessGuid, ProcessId, Image, TargetFilename, CreationUtcTime, PreviousCreationUtcTime
  • 网络连接NetworkConnect的过滤事件选项有:UtcTime, ProcessGuid, ProcessId, Image, User, Protocol, Initiated, SourceIsIpv6, SourceIp, SourceHostname, SourcePort, SourcePortName, DestinationIsIpv6, DestinationIp, DestinationHostname, DestinationPort, DestinationPortName
  • 远程线程创建CreateRemoteThread的过滤事件选项有:UtcTime, SourceProcessGuid, SourceProcessId, SourceImage, TargetProcessGuid, TargetProcessId, TargetImage, NewThreadId, StartAddress, StartModule, StartFunction

根据这些过滤事件自主选择编写配置文件sysmon20175305.xml

<Sysmon schemaversion="7.18">
  <!-- 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</Image>
      <Image condition="end with">iexplorer.exe</Image>
      <SourcePort condition="is">137</SourcePort>
      <SourceIp condition="is">127.0.0.1</SourceIp>
    </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需要根据自己使用的浏览器进行更改,将“2345加速浏览器”与“360安全浏览器”设为白名单。同时去掉回环地址127.0.0.1,去掉137号端口,137端口的主要作用是在局域网中提供计算机的名字或IP地址查询服务,查看http的80端口与https的443端口。
远程建成创建记录了目标为explorer.exe、svchost.exe、firefox.exe、winlogon.exe和powershell.exe 的远程线程。
explorer.exe是Windows程序管理器或者文件资源管理器
svchost.exe是一个属于微软Windows操作系统的系统程序,是从动态链接库 (DLL) 中运行的服务的通用主机进程名称。
winlogon.exe是Windows NT 用户登陆程序,用于管理用户登录和退出。
powershell.exe是专为系统管理员设计的新 Windows 命令行外壳程序。该外壳程序包括交互式提示和脚本环境,两者既可以独立使用也可以组合使用。

编写完成后cmd中使用管理员身份运行Sysmon64.exe -i sysmon20175305.xml进行安装

打开事件查看器,在应用程序和服务日志/Microsoft/Windows/Sysmon/Operational中,我们可以看到按照配置文件的要求记录的新事件,以及事件ID、任务类别以及详细信息:

可以看到配置文件记录的第一个日志是打开C:\Users\qinghuan\Desktop\Sysmon\sysmon20175305.xml配置文件,然后运行之前实验三的后门程序:

在事件查看器中可以找到该后门程序的运行记录:

从图中可以获取到以下信息:

程序:C:\Users\qinghuan\Desktop\20175305_backdoor.exe
协议:tcp
源IP地址:192.168.10.128(Windows的IP)
目标IP地址:192.168.10.131(kali的IP)
目的端口:5305

任务三:恶意软件分析

静态分析

  • 文件扫描(VirusTotal、VirusScan工具等)
  • 文件格式识别(peid、file、FileAnalyzer工具等)
  • 字符串提取(Strings工具等)
  • 反汇编(GDB、IDAPro、VC工具等)
  • 反编译(REC、DCC、JAD工具等)
  • 逻辑结构分析(Ollydbg、IDAPro工具等)
  • 加壳脱壳(UPX、VMUnPacker工具等)

(1)文件扫描(virustotal):

(2)文件格式识别(pied)

PEiD(PE Identifier)是一款著名的查壳工具,其功能强大,几乎可以侦测出所有的壳,其数量已超过470种PE文档的加壳类型和签名。
它的扫描模式有3钟: 正常扫描模式,深度扫描模式,核心扫描模式。
对未加壳的后门文件进行扫描:PEiD的主要功能是查壳,先看未加壳的:

然后扫描加壳后的程序:

(3)使用PE Explorer分析恶意软件

PE Explorer是功能超强的可视化Delphi、C++、VB程序解析器,能快速对32位可执行程序进行反编译,并修改其中资源。该软件支持插件,你可以通过增加插件加强该软件的功能,原公司在该工具中捆绑了UPX的脱壳插件、扫描器和反汇编器。
主要看文件头信息和调用的DDL文件:

还可以看该软件的版本信息:

动态分析

快照比对(SysTracer、Filesnap、Regsnap工具等)
抓包分析(WireShark工具等)
行为监控(Filemon、Regmon、ProcessExplorer工具等)
沙盒(NormanSandbox、CWSandbox工具等)
动态跟踪调试(Ollydbg、IDAPro工具等)

下载安装systracer
点击take snapshot后start,开始捕获;点击stop停止并存储。
快照一(Snapshot #1):未移植后门程序
快照二(Snapshot #2):植入后门程序
快照三(Snapshot #3):运行后门程序并在kali中实现回连
快照四(Snapshot #4):执行websnam_snap命令
快照五(Snapshot #5):执行getuid命令

我们点击compare,本次对比快照一和快照二,以及快照二和快照三

删除了很多.ddl文件,同时增加了许多ddl文件,即动态链接库,伪装潜伏:

使用Wireshark分析恶意软件

启动Wireshark开始捕获数据包,回连kali并在kali中输入dir后结束捕获,我们可以看到有大量的TCP包,这其中有回连相关的包,也有dir命令所传输的数据
从数据包中可以看到源IP、目的IP、源端口、目的端口以及传输的数据:

kali获得命令窗口后输入dir后捕获的数据包:

传输的数据包括Windows向Kali发出TCP同步请求包SYN,Kali给Windows发出的SYN同步请求包和确认包ACK,Kali给Windows传的ACK包、PSH+ACK包等

三.基础问题回答

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

答:用schtasks指令设置一个计划任务,发现网络连接异常;sysmon对主机进行监听,编写配置文件,记录有关的系统日志。静态用VirusTotal、VirusScan进行扫描;动态快照对比。

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

答:使用Process Explorer工具分析,监视文件系统、注册表的活动;或者SysTracer工具查看该进程对注册表、文件程序是否修改;还有Wireshark进行抓包,看该进程传输了哪些数据

四.实验总结与体会

本次实验让我学到了不少东西,知识点的话包括各种指令,工具的运用;对后门程序的静态分析与动态分析。 实验并不是难度,但是要下载的软件和分析的东西很多很杂,但是让我掌握了一些很实用的软件工具,SysTracer工具查看该进程、如何利用excel编排数据、如何利用Sysmon监控或者分析日志;最大收获还是现象的内容,对恶意代码的各种特征有了一定的了解,在以后查询和防范上有很大帮助。

posted @ 2020-04-19 03:14  20175305张天钰  阅读(382)  评论(0编辑  收藏  举报