20155326《网络攻防》Exp4 恶意代码分析

基础问题回答:

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

答:首先,可以使用windows自带的schtasks指令设置一个计划任务,每隔一定的时间对主机的联网记录等进行记录。也可以使用sysmon工具,通过修改配置文件,记录相关的日志文件,或是Process Explorer工具,监视进程执行情况。

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

答:启动该程序,利用systracer及wireshark动态分析程序动向,或是利用virscan分析它。

实践目标

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

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

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

实践过程

恶意代码是指没有作用却会带来危险的代码,一个最安全的定义是把所有不必要的代码都看作是恶意的,不必要代码比恶意代码具有更宽泛的含义,包括所有可能与某个组织安全策略相冲突的软件。

恶意代码的分析方式有两种:静态分析技术和动态分析技术。在这篇博客里我们静态分析选用的工具是:virscan、PE explorer、PEiD、;动态分析选用的工具是:systracer、wireshark、netstat、sysmon。

使用schtasks指令监控系统运行

先在C盘目录下建立一个netstatlog.bat文件,用来将记录的联网结果格式化输出到netstatlog.txt文件中,netstatlog.bat内容为:

记得要管理员身份运行哦~~

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

打开Windows下命令提示符,输入指令schtasks /create /TN netstat /sc MINUTE /MO 5 /TR "c:\netstatlog.bat"指令创建一个每隔五分钟记录计算机联网情况的任务:

这个时候每隔5分钟就会更新一次netstatlog文件,我们可以查看当病毒回连的时候发生了什么:

端口号、ip地址等等都监测并记录的十分清楚。

(PS:才开始的时候建错了导致没有更新。。。要建.bat文件在里面输入date /t >> c:\netstatlog.txt等需要被记录的内容,才会出现新的内容。。)

在静置了两三天后按照学姐的博客中介绍的excel分析方法将记录文件中的记录进行分析:

很奇怪的是我明明等了挺久的,但是协议项统计出来后感觉和大家的差挺多,可能是我没怎么用电脑?哈哈哈

从图中可以看出360se.exe联网最多,360se.exe是“360浏览器”进程,可以使用“任务管理器”进行关闭。

还有与360相关的联网最多的是360tray.exe,从上图来看他是360安全卫士木马防火墙模块。

第二多的是vmware-hosted.exe,我查了一下,没有明确的解释,但我觉得是就是作为一个服务端,让管理中心来控制。

接下来看看哪些外部网络连接最频繁:

通过ip查寻可以看出排名前三的分别是金山云公司、百度网讯以及东南大学。。很好奇为什么会访问东南大学。。

使用sysmon工具监控系统运行

sysmon微软Sysinternals套件中的一个工具,可以从码云项目的附件里进行下载,也可以自己去官网下载,我下载的是Sysmon v7.01,要使用sysmon工具先要配置文件,一开始我直接用的是老师给的配置文件:


<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</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>

配置好文件之后,要先使用sysmon -accepteula –i指令对sysmon进行安装:

可是才开始这里出现了错误:

改成sysmon5326路径后还是错的。

后来输入命令-accepteula -i -n对啦!

之后就可以在任务管理器中看到sysmon.exe已经在运行了

启动之后,便可以到事件查看器里查看相应的日志:

由于sysmon用来监视和记录系统活动,并记录到windows事件日志,可以提供有关进程创建,网络链接和文件创建时间更改的详细信息。

通过收集使用Windows事件集合或SIEM代理生成的事件,然后分析它们,可以识别恶意或异常活动,并了解入侵者和恶意软件在您的网络上如何操作。

所以这里挑出其中一个进行分析,这个是Microsoft-Windows-Sysmon/Operational在创建进程。

查询后,可以看出这是个为命令行程序提供支持的进程:

参考:Conhost.exe是什么进程?为什么会运行?图文详解

这个行为是vs中的一个叫vcpkgsrv.exe的进程终止的行为,Process terminated (rule: ProcessTerminate)

查询百度后得知这应该是vs中的一个智能感知程序,会自动更新,拉低电脑的速度~

这个名叫Sysmon config state changed的行为翻译过来是SYSMON配置状态改变:

这个应该是安装sysmon时输入的命令:

使用virscan分析恶意软件

在virscan网站上查看上次改进后的后门程序的文件行为分析:

可以看到启动回连主机的被打码的IP地址以及端口号,以及检测自身是否被调试和打开事件的行为。

使用systracer工具分析恶意软件

使用systracer工具建立了4个快照,分别是在主机中没有恶意软件时、将恶意软件植入到目标主机中后、恶意软件启动回连时、使用恶意软件获取目标主机的摄像头时:

结果分析:

启动回连时注册表发生变化,看出很多被删除了:

启动回连时,新建了bdoor1.exe应用,可以看见它启用了许多DLL文件:

ntdll.dll:ntdll.dll是Windows系统从ring3到ring0的入口。位于Kernel32.dll和user32.dll中的所有win32 API最终都是调用ntdll.dll中的函数实现的。ntdll.dll中的函-数使用SYSENTRY进入ring0,函数的实现实体在ring0中。

Wow64.dll 是Windows NT kernel的核心接口, 在32位和64位调用之间进行转换, 包括指针和调用栈的操控。

Wow64win.dll 为32位应用程序提供合适的入口指针。

Wow64cpu.dll 负责将处理器在32位和64位的模式之间转换,它可以被发现在C:\位置

Intel的x86处理器是通过Ring级别来进行访问控制的,级别共分4层,RING0,RING1,RING2,RING3。Windows只使用其中的两个级别RING0和RING3。RING0层拥有最高的权限,RING3层拥有最低的权限。按照Intel原有的构想,应用程序工作在RING3层,只能访问RING3层的数据,操作系统工作在RING0层,可以访问所有层的数据,而其他驱动程序位于RING1、RING2层,每一层只能访问本层以及权限更低层的数据。
综合以上描述,该程序可以获取到RING0权限,具有较高的侵略性。

ntdll.dll是Windows系统从ring3到ring0的入口。位于Kernel32.dll和user32.dll中的所有win32 API 最终都是调用ntdll.dll中的函数实现的。ntdll.dll中的函数使用SYSENTRY进入ring0,该程序可以获取到RING0权限,具有较高的侵略性。

实验总结与体会

本次实验的重点在于对恶意代码进行分析,通过这次实验,我懂得了以后要是想检测自己的电脑,可以通过这次实验中使用的方法手动监测。同时,弄清楚一个程序是不是病毒,更要熟悉自己的电脑,清楚某些端口号的作用,清楚什么是可疑的动态。实验中遇到的问题都记录到实验过程中啦~~