2019-2020-2 20175225张元瑞《网络对抗技术》Exp4 恶意代码分析
实验内容
- 1.系统运行监控
- 使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述一下分析结果。目标就是找出所有连网的程序,连了哪里,大约干了什么(不抓包的情况下只能猜),你觉得它这么干合适不。如果想进一步分析的,可以有针对性的抓包。
- 安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控自己主机的重点事可疑行为。
- 2.恶意软件分析
- (1)启动回连
- (2)安装到目标机(3)及其他任意操作时。该后门软件
- (3)读取、添加、删除了哪些注册表项
- (4)读取、添加、删除了哪些文件
- (5)连接了哪些外部IP,传输了什么数据(抓包分析)
实验过程
实验准备即相关知识
恶意代码的概念与分类
- 是指在未明确提示用户或未经用户许可的情况下,在用户计算机或其他终端上安装运行,侵犯用户合法权益的软件。
- 指故意编制或设置的、对网络或系统会产生威胁或潜在威胁的计算机代码。
- 常见的恶意代码有计算机病毒(简称病毒)、特洛伊木马(简称木马)、计算机蠕虫(简称蠕虫)、后门、逻辑炸弹等。
- 恶意代码都有以下共同特征:
- 恶意的目的
- 本身是计算机程序
- 通过执行发生作用
恶意代码的分析方法
- 静态分析
- 使用反病毒软件来确认程序样本的恶意性(VirusTotal或者virscan,可调用多个反病毒引擎来进行扫描)
- 哈希值:恶意代码的指纹(md5deep程序:计算出程序的哈希值)
- 通过检索恶意代码字符串获得相应的功能调用解释等,查看是否有被加壳处理(字符串检索:Strings 外壳检测:PEiD)
- 可移植执行(PE)文件以一个文件头开始,包含代码信息、应用程序类型、所需的库函数与空间要求。(使用PEview来分析PE文件。使用Resource Hacker工具来浏览.rsrc节(资源)。PEBrowse Professional和PE Explorer 也是分析PE文件的两大工具)
- 动态分析(运行程序)
- 使用反病毒软件来确认程序样本的恶意性(VirusTotal或者virscan,可调用多个反病毒引擎来进行扫描)
任务一、系统运行监控
一、使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述一下分析结果。
- 使用schtacks指令监控系统
- 命令创建计划任务netstat5225
schtasks /create /TN netstat5225 /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > c:\netstat5225.txt"
- 命令解释:
- TN netstat5225:说明计划任务名
- sc MINUTE:表示已分钟为单位的计时方式
- TR "cmd /c netstat -bn:cmd运行指令"netstat -bn",b会显示可执行文件名
- 在C:盘下创建内容如下的批处理文件(可以先创建.txt文件然后修改后缀名为.bat)
date /t >> c:\netstat5225.txt
time /t >> c:\netstat5225.txt
netstat -bn >> c:\netstat5225.txt
- 修改计划任务
- 在开始处右击打开
计算机管理
->任务计划程序
,找到上述创建的任务
- 在开始处右击打开
- 打开任务,
操作
->编辑
->程序脚本
,替换为上述创建的批处理文件netstat5225.bat
,添加参数为空,具体如图:
- 注意勾选
使用最高权限运行
否则在运行过程中可能出现由于权限问题产生的错误
- 利用Excel进行分析
- 在Excel中打开
数据
->自文本
->分隔符号
,下一步中标记所有分隔符号。
- 在Excel中打开
- 导出的表格如图
- 导入数据后选择我们需要分析的一行,
插入
->数据透视图
->新表格
。将图中标记及周三
拖动到轴和值中,如图:
分析
在统计的这段时间里面运行了QQ浏览器,360,微信和wps,他们联网都比较正常,最让我费解的是为什么TCP联网那么多,占了那么大的比例,询问同学得知,每一次连接都有TCP,但这个比例也太大了,有点难以接受。
二、、安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控自己主机的重点事可疑行为。
- 首先根据实验提供的链接,编写配置文件
5225sysmoncfig.xml
,可以像之前的批处理文件一样建好后更改后缀名为.xml,代码如下:
<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">iexplorer.exe</Image>
<Image condition="end with">firefox.exe</Image>
<SourcePort condition="is">137</SourcePort>
<SourceIp condition="is">127.0.0.1</SourceIp>
<DestinationPort condition="is">80</DestinationPort>
<DestinationPort condition="is">443</DestinationPort>
</NetworkConnect>
<CreateRemoteThread onmatch="include">
<TargetImage condition="end with">explorer.exe</TargetImage>
<TargetImage condition="end with">firefox.exe</TargetImage>
<TargetImage condition="end with">svchost.exe</TargetImage>
<TargetImage condition="end with">winlogon.exe</TargetImage>
<SourceImage condition="end with">powershell.exe</SourceImage>
</CreateRemoteThread>
<ProcessCreate onmatch="include">
<Image condition="end with">iexplorer.exe</Image>
<Image condition="end with">firefox.exe</Image>
</ProcessCreate>
<FileCreateTime onmatch="exclude" >
<Image condition="end with">firefox.exe</Image>
</FileCreateTime>
<FileCreateTime onmatch="include" >
<TargetFilename condition="end with">.tmp</TargetFilename>
<TargetFilename condition="end with">.exe</TargetFilename>
</FileCreateTime>
</EventFiltering>
</Sysmon>
- 代码解释
exclude
相当于白名单,不用记录。include
相当于黑名单Image condition
根据自己使用的浏览器更改,我的就是ieiexplorer.exe````和火狐浏览器
firefox.exe```- 137端口的主要作用是在局域网中提供计算机的名字或IP地址查询服务,一般安装了NetBIOS协议后,该端口会自动处于开放状态。127.0.0.1表示本机IP。一般不会有啥问题所以网络连接过滤掉了浏览器的网络连接、源IP为127.0.0.1的网络连接和目的端口为137的连接服务
- 远程线程创建记录了目标为
explorer.exe
、svchost.exe
、winlogon.exe
和powershell.exe
的远程线程。
- 启动sysmon:
- 进入管理员命令提示符,然后进入你下载的软件目录下
- 通过命令
.\Sysmon.exe -i C:\5225sysmoncfig.xml
-
安装完成
-
进入事件查看器里查看日志
- 进入
事件查看日志
通过应用程序和服务日志/Microsoft/Windows/Sysmon/Operational
找到日志具体位置
- 进入
- 利用Sysmon就可以具体分析你主机最近的程序使用,如图就是分析了QQ浏览器,可以看到显示得有具体时间、运行的程序、使用的协议、源IP、目的IP等等
- 使用实验三生成的后门程序回连kali虚拟机(主机回连不行,改用win
7进行回连)
任务二、恶意软件分析
一、静态分析工具
1.使用VirusTotal分析恶意软件
- 同实验三将其中一个加壳的后门程序放入virusTotal中分析
- 可以看出它的SHA-1、MD5摘要值、文件类型、文件大小,TRiD文件类型、加壳情况、算法库支持
2.使用PEID进行外壳检测:
-
点击
扩展信息
查看详细信息
-
换一个用Hyperion加过密的壳,没扫出来。。。
3.使用PE explorer进行外壳检测
- 下载安装完成后,打开实验二创建的后门程序,可以看到其头部信息
视图
->数据目录
查看静态数据目录
视图
->节头
查看节头信息
工具
->反汇编器
进行反汇编
- 退出后点击
导入
查看所引用的dll库,分析得知
msvcrt.dll
是微软在windows操作系统中提供的C语言运行库执行文件
kernel32.dll属于内核级文件,它控制着系统的内存管理、数据的输入输出操作和中断处理,是必需的advapi32.dll
是一个高级API应用程序接口服务库的一部分,包含的函数与对象的安全性,注册表的操控以及事件日志有关,会受到病毒的侵扰及篡改,导致系统文件丢失、损坏wsock32.dll
是Windows Sockets应用程序接口,用于支持很多Internet和网络应用程序,是一个对系统很关键或很可疑的文件,易遭受木马病毒(如“犇牛”病毒)破坏导致系统找不到此文件,出现错误提示框。ws2_32.dll
是Windows Sockets应用程序接口。一些病毒会在杀毒软件目录中建立伪"ws2_32.dll"的文件或文件夹,在杀毒软件看来这是程序运行需要的文件而调用,这个所谓的“文件”又不具备系统"ws2_32.dll"文件的功能,所以杀毒软件等就无法运行了而提示:应用程序正常初始化失败。
动态分析
- ① 使用SysTracer分析后门软件的运行过程
SysTracer是一款可以分析你的计算机文件,文件夹和注册表项目改变的系统实用工具。你可以在任何想要的时间获取无数个屏幕快照,比较任何一对想要的屏幕快照,并且观察其间的不同之处。获取屏幕快照通常会持续几分钟的时间,这取决于文件和文件夹的数量和注册表项目的总数。
- 实验设备:kali和win7
- 下载SysTracer
- 进入安装选择第二个,
next
设置端口为5225
(后门生成时利用的端口),安装完成后进入界面
- 打开后门前先点击
take snapshot
(创建快照),接着Start
- 创建过程长短视当前系统体量而定,创建好后默认名称为
Snapshot #1
- 开启后门程序回连kali(停在获取命令的那一刻),此时创建第二个快照
Snapshot #2
- 然后kali中输入一个
ls
命令,此时创建第三个快照Snapshot #3
- 输入
screenshot
命令抓屏,此时创建第四个快照Snapshot #4
- 点击右下角
compare
将快照之间进行比较,在Registry
可看到注册表的变化(蓝色部分为有变化的)
- 我们按住
ctrl
键,选择#1和#2进行比较:可以发现在启动回连时的变化 - 注册表变化
- 端口变化
- 新增了一些dll文件
- 对其他注册表我们会发现SysTracer没有办法查看,只能知道这部分做了修改
- 关于HKEY_LOCAL_MACHINE:它保存了注册表里的所有与这台计算机有关的配置信息
- 关于HKEY_CURRENT_USER:它管理系统当前的用户信息。在这个根键中保存了本地计算机中存放的当前登录的用户信息,包括用户登录用户名和暂存的密码
- ② 使用wireshark对流量进行抓包分析
- 打开Wireshark,选择本地连接接口开始抓包
- kali中打开监控,win7执行后门程序```20175225_backdoor.exe```进行回连,输入过滤条件```ip.addr == 192.168.231.130```,可以看到Wireshark上捕获到大量的TCP传输(由于抓包时Kali一直处于连接win7的状态,因此并没有捕获到TCP四次握手取消连接过程)
-
输入其他命令,Kali会不断给Windows传一大堆ACK包,有时还伴有PSH+ACK包。(PSH就表示有 DATA数据传输)
-
③ 使用Process Monitor分析恶意软件
Process Monitor一款系统进程监视软件,总体来说,Process Monitor相当于Filemon+Regmon,其中的Filemon专门用来监视系统 中的任何文件操作过程,而Regmon用来监视注册表的读写操作过程
- win7虚拟机中下载并安装
- 打开软件,可以看出其对各个进程的详细记录,通过过滤器过滤,可以看见我们运行的后门程序
- 我们在kali中打开监控,win7中双击程序回连,kali中我输入了
ls
查看目录,在Process Monitor中发现这个操作
- 我们右键点击跳转到可以
跳转到
注册表,发现指向了这个注册表
- ④ 使用Process Explorer分析恶意软件
<Process Explorer让使用者能了解看不到的在后台执行的处理程序,能显示目前已经载入哪些模块,分别是正在被哪些程序使用着,还可显示这些程序所调用的 DLL进程,以及他们所打开的句柄。Process Explorer最大的特色就是可以终止任何进程,甚至包括系统的关键进程! - 在win7中运行木马,回连kali时,我们可以看到Process Explorer对其进行的记录,双击可查看其属性
wsock32.dll
和ws2_32.dll
,这两个是会经常被木马、病毒等进行侵略篡改的文件,可以分析出我们的后门程序对其做一定的修改来实现反弹连接控制被控机。
实验结果
基础问题回答
(1)如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么。请设计下你想监控的操作有哪些,用什么方法来监控。
- 使用schtasks,设置一个计划任务,监视系统程序的运行情况
- 使用Sysmon,编写配置文件,记录有关的系统日志
- 使用Process Explorer,监视进程执行情况
- 使用systracer,对比不同快照,查看是否有可疑行为
(2)如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息
-
静态分析
- 使用virscan或virustotal,对恶意软件进行分析
- 使用PEiD,查看恶意软件是否加壳,加的什么壳
- 使用String工具,分析恶意程序是否包含可疑字符串
-
动态分析
- 使用systracer,针对恶意软件进行分析
- 使用Wireshark,捕包分析恶意软件的通信过程
- 使用Process Explorer,监视文件系统、注册表,分析恶意软件的活动
实验中遇到的问题
- 无法启动sysmon
- 解决方案:原因是权限不够,用管理员身份运行就可以了
实验心得
- 此次实验可以让我了解平时不使用电脑时,电脑都进行了哪些行为,通过联网记录,注册表,文件的变化,可以分析出电脑的异常行为,从而推测自己的电脑是不是背地里被人进行攻击和控制。
- 本次实验也让我对自己的电脑也有了更进一步的认识,我们应该增强自己的安全意识,要定期检查电脑,不要过度依赖于杀软。