2019-2020-2 20175326李一潇《网络对抗技术》 Exp4 恶意代码分析
一、实验内容
- 系统运行监控
- windows计划任务
- sysmon工具
- 恶意软件分析
- 静态分析
- 动态分析
二、实验原理
- 恶意代码:是指在未明确提示用户或未经用户许可的情况下,在用户计算机或其他终端上安装运行,侵犯用户合法权益的软件。指故意编制或设置的、对网络或系统会产生威胁或潜在威胁的计算机代码。
- 特征:
- 恶意的目的
- 本身是计算机程序
- 通过执行发生作用
- 常见的恶意代码:
- 计算机病毒(简称病毒)
- 特洛伊木马(简称木马)
- 计算机蠕虫(简称蠕虫)
- 后门
- 逻辑炸弹
- sysmon:是由Windows Sysinternals出品的一款Sysinternals系列中的工具。它以系统服务和设备驱动程序的方法安装在系统上,并保持常驻性。sysmon用来监视和记录系统活动,并记录到windows事件日志,可以提供有关进程创建,网络链接和文件创建时间更改的详细信息。
三、实验步骤
1.系统运行监控
Windows计划任务schtasks
要求:使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述一下分析结果。目标就是找出所有连网的程序,连了哪里,大约干了什么(不抓包的情况下只能猜),你觉得它这么干合适不。如果想进一步分析的,可以有针对性的抓包。
首先在c盘钟创造脚本netstat5326.bat
,内容如下:
date /t >> c:
etstat5317.txt
time /t >> c:
etstat5317.txt
netstat -bn >> c:
etstat5317.txt
输入以下命令,每分钟记录下有哪些程序在连接网络。此命令完成后,每分钟就会监测哪些程序在使用网络,并把结果记录在netstatlog.txt
文档里
schtasks /create /TN netstat5326 /sc MINUTE /MO 5 /TR "cmd /c netstat -bn > c:
etstatlog.txt"
其中各参数含义如下:
TN:Task Name,本例中是20175310netstat
SC: SChedule type,本例中是MINUTE,以分钟来计时
MO: MOdifier
TR: Task Run,要运行的指令是 netstat -bn,b表示显示可执行文件名,n表示以数字来显示IP和端口
>:将结果输出到c盘下的netstatlog.txt文件中
在任务计划程序中编辑计划任务
我们在netstat5326.txt文件中就可以看到任务的运行结果:
我们将其导入到Excel表格中
将其用数据透视图来显示:
其中et.exe
是wps的表格模块
MicrosoftEdgeCP.exe
是Windows操作系统中的一个可执行文件(程序),是系统文件
QQ.exe
是QQ程序
SearchUI.exe
就是Cortanar进程
svchost.exe
是一个属于微软Windows操作系统的系统程序
vmware.exe
是虚拟机
wps.exe
是wps程序
暂无可疑文件,认为安全。
使用sysmon工具监控系统
下载sysmon
创建配置文件sysmon5326.xml,文件中写入以下指令:
<Sysmon schemaversion="4.12">
<!-- 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>
以管理员身份运行cmd,使用指令Sysmon.exe -i sysmon5326.xml
安装sysmon。
安装成功如下:
在应用程序和服务日志
下,查看Microsoft->Windows->Sysmon->Operational
。
运行实验二生成的后门文件,在kali虚拟机中获取Windows的命令行。
此时就可以查看到后门文件的日志了。
可以得出以下信息:
程序:C:UsersAdministratorDesktop20175326.exe
描述:ApacheBench命令行实用程序
产品:Apache HTTP服务器
进行回连:
可以得出以下信息:
程序:C:UsersAdministratorDesktop20175326.exe
协议:tcp
源IP地址:192.168.44.1(Windows的IP)
目标IP地址:192.168.44.128(kali的IP)
目的端口:5326
2.恶意代码分析
静态分析
使用VirusTotal分析恶意软件
在DETAILS中可看到详情,三个算法的摘要值、文件类型、文件格式,该文件是ApacheBench命令行实用程序。
使用peid工具进行文件格式识别
PEiD(PE Identifier)
是一款著名的查壳工具,其功能强大,几乎可以侦测出所有的壳,其数量已超过470种PE文档的加壳类型和签名。
对实验三中的加壳代码进行检测
发现文件进行过加壳处理。
使用PE Explorer分析恶意软件
PE Explorer
是功能超强的可视化Delphi、C++、VB程序解析器,能快速对32位可执行程序进行反编译,并修改其中资源。
文件头信息
调用的dll文件
kernel32.dll:32位动态链接库文件,属于内核级文件,它控制着系统的内存管理、数据的输入输出操作和中断处理,当Windows启动时,kernel32.dll就驻留在内存中特定的写保护区域,使别的程序无法占用这个内存区域,通过分析生成的后门程序都会使用KERNEL32.dll,所以如果有陌生软件使用KERNEL32.dll则应当提高警惕。
advapi32.dll:一个高级API应用程序接口服务库的一部分,包含的函数与对象的安全性,注册表的操控以及事件日志有关
msvcrt.dll:微软在windows操作系统中提供的C语言运行库执行文件
ws2_32.dll:Windows Sockets应用程序接口, 用于支持Internet和网络应用程序
wsock32.dll:Windows Sockets应用程序接口,用于支持很多Internet和网络应用程序
版本信息:
和之前类似
反汇编:
动态分析
使用SysTracer工具进行快照比对
创建三个快照进行比对,分别是:
Snapshot #1:不进行任何操作
Snapshot #2:运行后门程序并成功反弹连接
Snapshot #3:运行mkdir命令
快照1和快照2进行对比
我们发现修改了大量注册表信息(绿色为增加,红色为删除),dll文件,并成功找到增加的后门文件。
快照2与快照3进行对比
同前面一样,进行了大量的修改,后门文件增加了运行。
注册表信息:
可以发现进行了修改
使用WireShark工具进行抓包分析
在启动后门后进行抓包:
我们可以观察到源地址和目的地址,端口号,传输内容。具体同之前相同
四、实验心得
本次实验是网络攻防的第四次实验,我们学习如何对恶意代码进行分析,我们上周学习了如何使恶意代码避开杀软,但是通过这次实验我们可以发现有很多的方法都可以对恶意代码进行分析,只要恶意代码对我们的电脑进行操作,就会有破绽被检测出来。相比上周的实验,这周可能更加贴近我们的生活,实际意义更大。我们也掌握了许多分析恶意代码的方法,正所谓害人之心不可有,防人之心不可无,我们在以后的生活和学习中,要注意保护我们自己的网络空间安全。
五、思考题
-
如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么。请设计下你想监控的操作有哪些,用什么方法来监控。
用schtasks来建立一个任务,每隔一段时间对主机联网状态进行记录,查看是否有可疑程序;再用sysmon工具记录有关的日志文件,查看有无异常事件;使用Process Explorer工具,监视进程执行情况,查看是否有可以进程;使用Process Monitor工具,监视文件系统、注册表、进程的活动;用Systracer拍摄快照,查看注册表和文件是否有修改;最后用wireshark查看是否有可疑连接。 -
如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息。
首先用VirusTotal进行检测,然后用PEiD看是否加壳,再用PE Explorer查看其引用的动态链接库,用wireshark查看连接情况、端口、ip、传输内容,最后用Systracer拍摄快照,查看注册表和文件的修改情况