2019-2020-2 20175218陈敬勇 《网络对抗技术》 Exp4 恶意代码分析
一、实践目标
1.1 监控你自己系统的运行状态,看有没有可疑的程序在运行。
1.2 分析一个恶意软件,就分析Exp2或Exp3中生成后门软件;分析工具尽量使用原生指令或sysinternals,systracer套件。
1.3 假定将来工作中你觉得自己的主机有问题,就可以用实验中的这个思路,先整个系统监控看能不能找到可疑对象,再对可疑对象进行进一步分析,好确认其具体的行为与性质。
二、实践内容
2.1 系统运行监控
(1)使用如计划任务,每隔一分钟记录电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述一下分析结果。
(2)安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控主机的重点事可疑行为。
参考:schtask与sysmon应用指导
2.2恶意软件分析
分析该软件在(1)启动回连,(2)安装到目标机(3)及其他任意操作时。该后门软件
(3)读取、添加、删除了哪些注册表项
(4)读取、添加、删除了哪些文件
(5)连接了哪些外部IP,传输了什么数据
三、实验准备
1.文件准备
-
实验需要用到后门程序,可以将之前实验二中的后门程序和实验三中加壳的程序准备好
-
因为上次实验后,我卸载了360(不是有偏见,而是想去试试其他好的软件),然后下载了火绒,结果一运行扫描全都被我杀掉了,幸好 kali 里还有,就直接用上了
2.环境准备
-
这次实验在主机和虚拟机中共同完成,任务一在主机中完成,任务二使用win7虚拟机完成
-
任务一中需要安装sysmon工具,在sysinternals,systracer套件下载SysinternalsSuite201608.zip,解压后在文件夹中可以看到sysmon工具
-
任务二中需要使用PEID工具,通过PEID下载安装到win7虚拟机中
-
任务二中需要使用PE explorer工具,通过PE explorer下载安装到win7虚拟机中
-
任务二中需要使用到wireshark补包工具,可以通过wireshark下载安装到win7虚拟机中
-
任务二中需要使用systracer工具,在sysinternals,systracer套件下载systracer_x64_setup_en.exe到win7虚拟机中
- 任务二中需要使用Process Explorer工具,通过Process Explorer下载安装到win7虚拟机中
四、实验步骤
任务一:系统运行监控
(一)使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述一下分析结果
-
使用schtacks指令监控系统,打开主机命令提示符
-
通过命令
schtasks /create /TN netstat5218 /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > c: etstat20175218.txt"
创建计划任务 netstat5218
-
其中,具体命令含义:
- TN 是 TaskName 的缩写,接计划任务名,这里是 netstat5218
- sc 为计时方式,这里是分钟,即 MINUTE
- TR 接要运行的指令,这里接的是 netstat
- bn 其中,b表示显示可执行文件名,n表示以数字来显示IP和端口
-
表示输出重定向,这里将输出存放在C盘下的 netstat20175218.txt 文件中
-
在桌面先创建一个文本文档 netstat5218.txt ,然后写入一下内容:
date /t >> c:
etstat5218.txt
time /t >> c:
etstat5218.txt
netstat -bn >> c:
etstat5218.txt
-
保存退出,修改文件后缀为 .bat ,即批处理脚本
-
将其复制到C盘下,弹出提示中选择继续(移动到C盘需要管理员权限)
-
进入任务计划程序中(直接搜索进入或者右击开始处,在计算机管理下进入),在这里可以查看到新创建的任务
-
双击这个任务,在操作中进行编辑,在“程序或脚本”中,浏览选择刚刚创建的 netstat5218.bat 批处理文件,将可选参数清空,然后确定
-
在常规中最下面,选择使用最高权限运行 ,点击确定退出
-
然后电脑就放置进行挂机了,注意,因为我之前没有设置使用电源也能进行此任务,所以需要一直连接电源
-
从晚上8点到第二天早上8点,进行了12个小时的挂机。然后右键禁用此任务,接下来可以利用Excel来进行分析了
-
参考学姐博客进行统计分析,因为我的 Excel 版本是 2019 的,所以稍微有些不同
-
导入文本数据前,需要进行“返旧”操作。创建打开一个新的Excel文件,点击左上角文件进入。选择选项,在 Excel 选项中,选择数据一栏,在“显示旧数据导入向导”中,将从“旧文本(T)(旧版)”勾选,然后确定退出
-
开始进行导入,点击数据,在数据下选择“获取数据”下拉栏。下拉栏中选择“传统向导”,点击“旧文本(T)(旧版)”,这样就可以通过文本导入向导进行导入啦
-
在文本导入向导第一步,选中“分隔符号”,点击“下一步”
- 在文本导入向导第二步,选中全部分隔符号,点击“下一步”
- 在文本导入向导第三步,列数据格式选择常规,点击“完成”
- 在导入数据中,鼠标选中左上角第一个单元格,然后点击“确定”
- 这样数据就成功导入进来,并且比直接导入要好看一些了
然后制作统计表和统计图,首先选中我们要分析的列,点击上方的插入,选择数据透视图下拉栏,选择“数据透视图和数据透视表”,这样表和图都能创建
创建好之后,查看结果:
-
本来这里应该有我之前实验所生成的后门程序的,但是由于被我用火绒杀掉了,所以就没统计到之前的后门程序
-
在这段时间里,QQ、QQ浏览器、微信、IE浏览器、联想杀毒、系统,还有一些win10自带的程序 SearchUI.exe 等都被统计到了。其中,可以看到QQ是统计次数最多的,然后是与之相关的QQ浏览器,接着是微信
-
然后我查询了几个访问的IP地址所在地:
-
QQ:
- 183.192.199.123 --- 来自上海市上海市 移动
- 111.45.68.30 --- 来自广东省广州市 移动
- 121.51.23.110 --- 来自广东省广州市 腾讯云
-
WpnService:
- 40.119.211.203 --- 来自新加坡
-
SearchUI.exe:
- 204.79.197.222 --- 来自美国 微软云
-
(二)安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控自己主机的重点事可疑行为
sysmon是微软Sysinternals套件中的一个工具,它以系统服务和设备驱动程序的方法安装在系统上,并保持常驻性。sysmon用来监视和记录系统活动,并记录到windows事件日志,可以提供有关进程创建,网络链接和文件创建时间更改的详细信息
在实验准备已经下载好了sysmon工具,使用sysmon工具前首先要配置文件
在桌面创建一个文本文档 sysmon20175218.txt ,参考实验提供的链接,编写配置文件,将下面代码写入:
<Sysmon schemaversion="3.10">
<!-- Capture all hashes -->
<HashAlgorithms>*</HashAlgorithms>
<EventFiltering>
<!-- Log all drivers except if the signature -->
<!-- contains Microsoft or Windows -->
<ProcessCreate onmatch="exclude">
<Image condition="end with">QQBrowser.exe</Image>
</ProcessCreate>
<FileCreateTime onmatch="exclude" >
<Image condition="end with">QQBrowser.exe</Image>
</FileCreateTime>
<NetworkConnect onmatch="exclude">
<Image condition="end with">QQBrowser.exe</Image>
<SourcePort condition="is">137</SourcePort>
<SourceIp condition="is">127.0.0.1</SourceIp>
</NetworkConnect>
<NetworkConnect onmatch="include">
<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">svchost.exe</TargetImage>
<TargetImage condition="end with">winlogon.exe</TargetImage>
<SourceImage condition="end with">powershell.exe</SourceImage>
</CreateRemoteThread>
</EventFiltering>
</Sysmon>
代码解释:
-
exclude相当于白名单,不用记录。include相当于黑名单
-
Image condition根据自己使用的浏览器更改,因为从上面实验可知,我使用QQ浏览器比较频繁,这里就是QQ浏览器QQBrowser.exe
-
网络连接过滤掉了浏览器的网络连接、源IP为127.0.0.1的网络连接和目的端口为137的连接服务
- 137端口的主要作用是在局域网中提供计算机的名字或IP地址查询服务,一般安装了NetBIOS协议后,该端口会自动处于开放状态
- 127.0.0.1表示本机IP
-
远程线程创建记录了目标为explorer.exe、svchost.exe、winlogon.exe和powershell.exe 的远程线程
- explorer.exe是Windows程序管理器或者文件资源管理器
- svchost.exe是从动态链接库 (DLL) 中运行的服务的通用主机进程名称
- winlogon.exe是Windows NT 用户登陆程序,用于管理用户登录和退出
- powershell.exe是专为系统管理员设计的新 Windows 命令行外壳程序
-
在实验准备已经下载好了sysmon工具,这里需要先进行安装,通过管理员权限进入命令提示符,执行命令
sysmon.exe -i C:sysmon20165318.xml
,出现下面提示选择Agree
- 成功安装:
-
进入事件查看日志(直接搜索进入),通过应用程序和服务日志/Microsoft/Windows/Sysmon/Operational找到日志具体位置
-
在这里,我们可以看到按照配置文件的要求记录的新事件,以及事件ID、任务类别、详细信息等,下图就是一个mmc的记录(Microsoft 管理控制台,在其他课程中使用过,所以这里看到了就比较亲切)
-
进行日志分析,这里我选择分析的是我在实验二中生成的后门文件
-
在这里,我再一次见证火绒强大的实力,我在kali中,刚刚将后门程序复制到共享文件夹中,主机上火绒就报了,可见火绒静态查杀的厉害之处(360要在运行后才能察觉...)
-
在事件查看器中,点击操作,选择刷新,可以看到刚刚火绒报了之后,事件查看器中就有了它的记录
- 之后也看到了联想杀毒的扫描,但是此时后门程序已被火绒隔离,它这里可能没有扫描到啥东西了(虽然后门程序不运行的话,联想杀毒静态查杀有时也是查不到的...)
- 在火绒的隔离区中,对刚刚隔离的后门程序进行恢复和添加信任
- 回到kali中,进行回连后,输入一些命令,例如输入shell后,回到主机查看事件查看器,可以发现其中有一条记录是cmd的
- 除此之外,在事件查看器中还可以看到之前输入dir时,记录了一条事件是关于svchost.exe,Svchost.exe是微软视窗操作系统里的一个系统进程,管理通过Dll文件启动服务的其它进程,一些病毒木马伪装成系统dll文件通过Svchost调用它,试图隐藏自己。每个svchost可以同时调用多个dll文件,启动多个服务
任务二:恶意软件分析
(一)静态分析工具
使用VirusTotal分析恶意软件
-
这里我用到了之前实验三中的加压缩壳后的后门程序,因为主机上被我删掉了,这里我从kali中直接通过共享文件夹传输过来,结果第一时间又被火绒查杀到了,所以这里又进行了添加信任处理
-
将其放入virusTotal中分析,可以看出它的SHA-1、MD5摘要值、文件类型、文件大小,TRiD文件类型、加壳情况、算法库支持
使用PEiD分析恶意软件
- 在win7虚拟机中,打开PEiD工具,点击浏览,选择实验三的加壳后门程序,在这里可以看到其加壳的版本,EP区段等等信息
- 还可以将实验二未加壳的后门程序进行分析,可以看到竟然什么也没发现
使用PE Explorer分析恶意软件
- 在win7虚拟机中,打开PE Explorer工具,将实验三的加壳后门程序拖拽到指定位置,可以看到其头部信息
- 通过 视图->引入 进行查看文件引用的dll库
ws2_32.dll:若系统文件ws2_32.dll出错,极有可能是盗号木马、流氓软件等恶意程序所导致,其感染相关文件并加载起来,一旦杀毒软件删除被感染的文件,就会导致相关组件缺失,游戏等常用软件运行不起来
WSOCK32.dll:Windows Sockets应用程序接口,用于支持很多Internet和网络应用程序。是一个对系统很关键或很可疑的文件,易遭受木马病毒(如“犇牛”病毒)破坏导致系统找不到此文件,出现错误提示框。
- 还可以进行查看静态数据目录、节头信息
- 在工具栏中,通过反汇编器可以进行反汇编
(二)动态分析工具
使用wireshark抓包分析恶意软件分析
-
在win7中打开wireshark开始补包
-
在kali中打开 msfconsole 控制台开始监听,然后在win7中运行后门程序进行回连
-
在wireshark中可以看到捕获到的大量数据包,为了便于查看,通过设置过滤条件
ip.addr==192.168.1.105&&ip.addr==192.168.1.102
进行筛选查看,可以看到最开始有三次握手连接的过程
- 对比kali中的连接情况和wireshark中的情况,发现二者的端口情况是一致的,连接的都是win7的49162端口
- 在kali中输入命令dir,Kali会不断给Windows传一大堆ACK包,有时还伴有PSH+ACK包,说明两者之间产生了数据传输
- 在kali中输入exit退出断开,发现win7的wireshark中捕获到了挥手过程的数据包
使用systracer分析恶意软件
- 在win7中打开systracer进行安装,经过第一个提示选择Agree,然后第二个界面选择第二个,如下图:
- 接下来设置监听端口号为5218(与kali中的监听端口号一致)
-
打开systracer工具之后,通过 take snapshot ---> Start 进行快照拍摄,依次按照下列顺序进行了5次快照拍摄
- 后门连接前快照Snapshot #1
- 开启后门程序回连后创建第二个快照Snapshot #2
- kali中输入ls命令后创建第三个快照Snapshot #3
- kali中输入screenshot命令后创建第四个快照Snapshot #4
- kali中输入exit结束链接后创建第五个快照Snapshot #5
- 通过Ctrl进行多选,选择Snapshot #1和Snapshot #2进行compare比较,发现增加5218端口和一些dll端口以及新的进程
- 通过 View Differences Lists 进入View界面可以集中看见不同之处
- 选择Snapshot #2和Snapshot #3进行compare比较,这里可以选择 Only Difference 直接查看不同点,发现既有一些新增的,也有一些取消关闭的
- 也可以通过 View 进行查看
- 选择Snapshot #3和Snapshot #4进行compare比较,大多数处理都是进行取消关闭,只有一个是新增打开的
- 选择Snapshot #4和Snapshot #5进行compare比较,因为是exit操作,所以看到后门进程取消关掉了,而且还有大量的取消关闭处理,以及端口的关闭
使用Process Explorer分析恶意软件
-
打开Process Explorer,然后进行回连,在软件中可以看到对后门程序是记录
-
双击可以看到对应属性,可以详细查看该进程使用的CPU,虚拟内存空间、物理内存空间、I/O等
五、实验中遇到的问题
问题一
使用systracer时,想要多拍几个快照,发现拍多了之后会提示错误,就是 Not registered
解决方法:从表面意思上可以知道是没有注册,然后我就进入到注册界面发现需要注册码。上网搜索注册码发现没有现成的注册码,因为是根据上面的一段数据,不同的应该是用不同的注册码。然后我就去下载破解版,发现是通过一个软件获取注册码,然后填入注册码注册的。注册成功后,的确在边框上已经没有 Not registered 的字样了,而且能进行拍摄快照且不报错,但是拍了两三个之后,竟然又给我报错未注册,但是边框上还是没有 Not registered 的字样。于是我进行了重启软件,发现还是没用。然后我觉得可以是快照数量有限的原因,于是我删除了几个快照,并且进入到软件文件夹下的快照日志将其日志进行删除,重启软件后发现还是不行。于是我决定重新安装软件,注意这里不要安装在同一个文件夹下,最好是不同的盘下,这样启动软件后,就不会有之前的记录,而且还能拍摄多个快照,当然还是需要注意快照数量,毕竟这不是注册版本。
六、实践思考
问题一:如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么。请设计下你想监控的操作有哪些,用什么方法来监控。
答:对于此,我觉得可以利用此次实验中的方法进行监控,例如,1、使用windows下schtasks指令设置一个计划任务,然后查看文本记录;2、使用Sysmon工具,编写配置文件后会记录有关的系统日志,然后查看日志发现可疑之处;3、使用 Process Explorer工具和 Process Monitor 工具进行监视;4、分几个时间段,然后在不同时间段使用Systracer拍摄快照,对比不同快照,寻找可疑之处
问题二:如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息。
答:对于此,我觉得也可以利用此次实验中的方法解决,例如,1、利用PEiD工具看看有没加壳,以及加壳信息;2、使用Process Explorer工具进行监视文件活动,查找其信息;3、通过wireshack进行补包分析,在数据包中查找信息
七、实验收获与感想
这次实验,总的来说不是很困难,做得也还算顺利,稍微遇到了一点点麻烦,但是在整体上还是比较好的。对于这次实验,使用到了很多工具,对于这些工具,大都是第一次使用(除了wireshark,这个还是比较熟练了),使用起来还算顺利,没有什么比较复杂的地方,当然我这也是使用基本功能,还有更深的功能没有去挖掘,这一点还是需要去加强的。然后通过这次实验,我也学到了很多,对于后门程序的组成、执行过程和结果等也有了一些比较深刻的了解。这些也是比较基础的东西,想要学得更好,对保护好自己的设备安全(如果不是什么特意的攻击,基本保护还行。当然我的设备也没啥重要的信息,不知道有意人对我的设备是否感兴趣来攻击我...)还是有一段路要走的,希望在以后好好学习,增强自身知识储备和能力,争取做得更好。