#20145236《网络攻防》Exp4 恶意代码分析
一、基础问题回答
- 如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么。请设计下你想监控的操作有哪些,用什么方法来监控。
- (1)我们可以使用一些工具帮助自己监测系统,可以实时监控电脑上的端口信息,如果受到怀疑的恶意代码启动的时候连接了一些看起来很可疑的端口,就可以进一步进行分析。
- (2)我们可以通过在windows下建立一个监测本机连接ip地址的任务计划程序,不定时的查看一下电脑都在什么时候连了网干了什么,如果在你觉得自己的电脑没有联网的情况下出现了ip访问记录就十分可疑了。
- (3)可以通过sysmon监控几乎所有的重要操作,并在事件查看器中找到日志查看。
- 如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息。
- (1)PE explorer工具,它可以对程序调用库等信息进行分析查看,还可以对其反汇编。
- (2)PEiD工具,可以查看程序有没有被常用的加壳软件加壳。
- (3)启动该程序,利用systracer及wireshark动态分析程序动向。
二、实践过程
- 恶意代码是指没有作用却会带来危险的代码,一个最安全的定义是把所有不必要的代码都看作是恶意的,不必要代码比恶意代码具有更宽泛的含义,包括所有可能与某个组织安全策略相冲突的软件。
- 恶意代码的分析方式有两种:静态分析技术和动态分析技术。在这篇博客里我们静态分析选用的工具是:virscan、PE explorer、PEiD、;动态分析选用的工具是:systracer、wireshark、netstat、sysmon。
- 本次实验采用的代码是第二次后门实验的代码。
2.1 使用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地址等等都监测并记录的十分清楚,美中不足的是我发现这个程序重启系统之后貌似需要在任务计划程序里手动开启?(不知道是不是我的配置不对,但是尝试了好几次如果不不手动开重启之后就不会记录。)
2.2 使用sysmon工具监控系统运行
sysmon
微软Sysinternals
套件中的一个工具,可以从码云项目的附件里进行下载,我下载的是Sysmon v7.01
,要使用sysmon
工具先要配置文件,一开始我直接用的是老师给的配置文件:* microsoft windows <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>
配置好文件之后,要先使用
sysmon -accepteula –i
指令对sysmon
进行安装:启动之后,便可以到事件查看器里查看相应的日志:
2.3 使用virscan分析恶意软件
- 在virscan网站上查看上次实验所做的后门软件的文件行为分析:
- 可以看到其启动回连主机的部分IP地址以及端口号,还有对注册表键值进行了删除:
- 还有反调试和创建事件对象的行为:
2.4使用systracer工具分析恶意软件
- 使用
systracer
工具建立了4个快照,分别是在主机中没有恶意软件时、将恶意软件植入到目标主机中后、恶意软件启动回连时、使用恶意软件获取目标主机的摄像头时:
结果分析:
启动回连时注册表发生变化
启动回连时,新建了
20145236_backdoor.exe
应用,可以看见它启用了许多DLL文件wow64cpu.dll
:wow64cpu.dll
是一个进程来自Microsoft Corporation
。它可以被发现在C:\
位置。这是一个潜在的安全风险,它能被病毒恶意修改。wow64win.dll
:同上。ntdll.dll
:ntdll.dll
是Windows系统从ring3
到ring0
的入口。位于Kernel32.dll
和user32.dll
中的所有win32 API
最终都是调用ntdll.dll
中的函数实现的。ntdll.dll
中的函-数使用SYSENTRY进入ring0
,函数的实现实体在ring0
中。Intel的x86处理器是通过Ring级别来进行访问控制的,级别共分4层,RING0,RING1,RING2,RING3。Windows只使用其中的两个级别RING0和RING3。RING0层拥有最高的权限,RING3层拥有最低的权限。按照Intel原有的构想,应用程序工作在RING3层,只能访问RING3层的数据,操作系统工作在RING0层,可以访问所有层的数据,而其他驱动程序位于RING1、RING2层,每一层只能访问本层以及权限更低层的数据。 综合以上描述,该程序可以获取到RING0权限,具有较高的侵略性。
2.5 使用wireshark分析恶意软件回连情况
- 设置IP过滤格式:
ip.src==192.168.85.129 or ip.dst==192.168.85.129
,在进行回连操作时,使用wireshark进行抓包后可以看到,其先进行了TCP的三次握手,之后再进行数据的传输,如图所示,带有PSH,ACK的包传送的便是执行相关操作指令时所传输的数据包:
2.6使用Process Explorer分析恶意软件
在虚拟机下通过PE explorer打开文件
20145236_backdoor.exe
,可以查看PE文件编译的一些基本信息,导入导出表等。如下图,可以看到该文件的编译时间、链接器等基本信息: 如图可以看出编译时间为2017年3月28日 处理器为i386 版本号为6.0
如下图,我们点击“导入表”,可以查看该文件依赖的dll库: 这是未实现免杀的病毒文件的ddl库
WSOCK32.dll和WS2_32.dll,是用来创建套接字的dll库,显然,如果这个程序所介绍的功能中不应该有网络连接部分,那么在其动态链接库中还存在这2个库就显得尤为可疑了。
另外图中所显示的ADVAPI32.dll库百度可知:是一个高级API应用程序接口服务库的一部分,包含的函数与对象的安全性,注册表的操控以及事件日志有关。
敏感了吧,注册表的操控,想想72k的一个小程序还操控注册表,一看就不正经了。
另外2个不做过多介绍,属于一般程序在win下都会调用的dll库。
2.7 使用PEiD分析恶意软件
- 使用PEiD软件可以查看恶意软件的壳的相关信息,以及其所使用的编译器版本:
三、实验总结
- 本次实验的重点在于对恶意代码进行剖析,在这个稍微强大一点的病毒就能轻易逃过杀软的时代,想要保证电脑的安全不可谓不难。
- 以后我们若是怀疑自己的电脑被植入了病毒,可以通过这次实验中使用的方法手动监测。
- 弄清楚一个程序是不是病毒,更要熟悉自己的电脑,清楚某些端口号的作用,清楚什么是可疑的动态。
- 之前三次实验都是老师给出实验大体步骤,一步一步照着做下去,像按照说明书搭房子,锻炼的是动手能力,但这次实验几乎没有实验指导,怎么做都要自己去想,从地基到房梁结构都要自己设计,侧重于锻炼思维能力,收获了一种全新的学习体验。