2017-2018-2 20155228 《网络对抗技术》 实验四:恶意代码分析
1. 实践内容
1.1 系统运行监控
-
使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述一下分析结果。目标就是找出所有连网的程序,连了哪里,大约干了什么(不抓包的情况下只能猜),你觉得它这么干合适不。如果想进一步分析的,可以有针对性的抓包。
-
安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控自己主机的重点事可疑行为。
-
实际日志的分析还需要发挥下自己的创造力,结合以前学过的知识如linux的文本处理指令等进行。分析的难点在于从大量数据中理出规律、找出问题。这都依赖对结果过滤、统计、分类等进一步处理,这就得大家会什么用什么了。
1.2 恶意软件分析
分析该软件在
-
启动回连
-
安装到目标机
-
及其他任意操作时(如进程迁移或抓屏,重要是你感兴趣)
该后门软件
-
读取、添加、删除了哪些注册表项
-
读取、添加、删除了哪些文件
-
连接了哪些外部IP,传输了什么数据(抓包分析)
该实验重点在“分析”,不是“如何使用某软件”。组长、课题负责人要求写细一点,其他人可以重点放在分析上。
2. 基础问题回答
2.1 如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么。请设计下你想监控的操作有哪些,用什么方法来监控。
-
首先用
netstat
统计系统各个应用的网络连接情况并进行分析 -
其次针对行为可疑性的软件用
wireshark
进行抓包,分析其具体的网络连接;用Sysmon
进行统计,分析其行为的细节,推测其目的 -
然后使用
Process Monitor
和Process Explorer
再深入进行分析,查看软件对系统里的文件、注册表等的创建、修改情况 -
最后调整防火墙和IDS对软件的行为进行限制
2.2 如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息。
-
用
netstat
统计应用的网络连接情况 -
用
wireshark
进行抓包,分析其具体的网络连接 -
用
Sysmon
进行统计,分析其行为的细节,推测其目的 -
用
Process Monitor
和Process Explorer
查看软件对系统里的文件、注册表等的创建、修改情况
3. 实践总结与体会
这次实验没有找到恶意代码,但是找到了流氓软件,已经用防火墙禁止其联网了
这个结论,是基于程序连接到网络的没有使用假名字,感觉恶意代码换个名字不是什么难事
如果换个名字从netstat上是看不出问题来的
还有用netstat统计的时间还是太短了,就只有统计一天之内的应用的网络连接
也许有的恶意代码很长时间才和控制端进行一次通信,这需要长期的大量统计才行
用wireshark可以看到软件连接网络的具体行为,但是传输的数据内容由于经过处理看不出来是什么
Sysmon、Process Monitor、Process Explorer这三个软件功能很强大,数据量非常大
要从成千上万条信息中看出问题,这需要大量经验才行
不过现在可以针对性得看看自己的恶意代码在干什么
总的来说还是很有收获的,尤其是当看到系统里的确有流氓软件偷偷联网然后用防火墙禁止联网,莫名感到兴奋。
以前总是觉得防火墙烦得要死,各种关闭防火墙,但是现在感觉防火墙还是很有用的
4. 实践过程记录
4.1 建立计划任务记录网络连接情况
4.1.1 简单实现
打开控制面板
搜索计划任务
进入任务计划程序
在右侧的操作
栏找到新建任务
进入创建任务
对话框
在常规
栏写入计划的名称
在触发器
栏点击新建
,设置任务的次数,开始时间,重复任务间隔,持续时间
在操作
栏点击新建
,设置程序和脚本为cmd
,添加参数如下
/c netstat -bn > e:5228netstatlog0412.txt
在条件
栏把电源选项条件的勾选去掉,点击确定
回到任务计划程序
主界面,点击左侧的任务计划程序栏
,找到刚才新建的任务
不用等着任务到时间运行,直接在右侧操作
栏点运行
就能让任务马上运行
点击刷新
之后可以看到刚才新建的任务已经操作成功运行
打开日志文件可以看到已经有网络连接记录生成
4.1.2 批处理
打开记事本
编写批处理脚本文件5228netstatlog0412.bat
date /t >> e:5228netstatlog0412.txt
time /t >> e:5228netstatlog0412.txt
netstat -bn >> e:5228netstatlog0412.txt
打开任务计划程序
找到并双击刚才创建的任务,在操作
栏双击操作对操作进行编辑
在程序和脚本
栏点击浏览
选中刚才写好的5228netstatlog0412.bat
再打开日志文件可以看到网络连接记录已经有时间标注
4.2 使用Sysmon对网络连接、文件修改和进程创建行为进行监视
4.2.1 Sysmon的安装
下载完成后解压压缩包,启动cmd
切换目录到Sysmon
目录下,输入并执行安装指令
sysmon.exe -i -n
安装完成后重启计算机
4.2.2 Sysmon的配置
输入以下指令查看schemaversion的版本
sysmon -? config
打开记事本
编写编写Sysmon配置文件Sysmoncfg.xml
<Sysmon schemaversion="4.00">
<HashAlgorithms>*</HashAlgorithms>
<EventFiltering>
<ProcessCreate>*</ProcessCreate>
<FileCreateTime>*</FileCreateTime>
<NetworkConnect>*</NetworkConnect>
</EventFiltering>
</Sysmon>
输入以下命令导入Sysmon配置文件Sysmoncfg.xml
Sysmon.exe -c C:Sysmoncfg.xml
如果提示error的话那么就是xml文件写得有问题,配置文件导入成功时应该是这样的
<Sysmon schemaversion="4.00">
<!-- 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>
4.2.3 使用日志查看器查看Sysmon记录的日志
打开日志查看器
,在左侧事件查看器中找Applications and Services Logs——>Microsoft——>Windows——>Sysmon——>Operational
在右侧操作
栏点击筛选当前日志
,输入仅保留的网络连接、文件修改和进程创建对应的ID号:1、2、3
在下侧的详细信息
中可以看到每个事件的详细信息
4.3 netstat搜集到的数据分析
4.3.1 数据处理和导入以及整理
数据处理
为了方便在excel
中对数据进行整理,在导入数据之前用word
对txt
文档中的数据格式做一个简单处理
- 因为每一条记录的
应用
这一项和其他项:``协议、
地址、
状态不在同一行很不方便,所以用
word`的替换把回车去掉
- 把年月日和周几还有时间之间的空格全部去掉,使得导入数据后时间和其他项不在同一列避免干扰
数据整理
- 建立一张表,自定义排序设定关键字为
应用
、本地地址
、目的地址
三项,把同一个应用的网络连接情况放在一起以备分析
- 再建立一张表,对
应用
一列执行去除重复项就可以所有进行网络连接的应用
- 使用
countif
函数对各个引用连接网络的频率做一个统计
4.3.2 数据分析
- 首先搞清楚各个连接网络的程序是什么,绘制一张表格
应用名称 | 使用频率 | 注释 |
---|---|---|
[360se.exe] | 1495 | 360浏览器 |
[VirtualBox.exe] | 315 | VirtualBox |
[360tray.exe] | 249 | 360安全卫士木马防火墙模块 |
[2345PicSvc.exe] | 106 | 2345看图王 |
[WeChat.exe] | 96 | 微信 |
[netsession_win.exe] | 88 | |
[360AP.exe] | 80 | 360免费wifi |
[YoudaoNote.exe] | 62 | 有道云笔记 |
[SGTool.exe] | 52 | 搜狗 |
[vmware-hostd.exe] | 48 | Vmware |
[VBoxNetNAT.exe] | 39 | VirtualBox |
[vmware.exe] | 38 | Vmware |
[2345PdfReader.exe] | 34 | 2345看图王 |
[QQ.exe] | 31 | |
[SogouCloud.exe] | 27 | 搜狗云 |
[SGPicFaceTool.exe] | 17 | 搜狗表情包 |
[svchost.exe] | 16 | 微软系统程序 |
XLServicePlatform | 14 | 迅雷服务平台 |
[userNetSchedule.exe] | 12 | 搜狗 |
[2345PicViewer.exe] | 8 | 2345看图王 |
[vmnat.exe] | 6 | Vmware |
[vmware-authd.exe] | 4 | Vmware |
RpcSs | 1 | 远程过程调用 |
[mmc.exe] | 1 | Windows管理控制程序 |
CryptSvc | 1 | windows认证服务 |
[系统] | 1 | |
[360rp.exe] | 1 | 360杀毒 |
在查询的过程中不乏看到一些有趣的信息
- 周四晚上到周五白天并没有使用过迅雷,但是迅雷有自启动和连接网络的行为
RpcSS
是一个比较敏感的操作,虽然频率不高
- 说360是非常流氓的并非没有道理
- 比较感兴趣的是为什么
2345看图王
需要联网,的确有使用这个程序看pdf实验指导书,但是浏览本地文件为什么需要连接网络呢
找到2345pdf阅读器连接到的ip地址,到站长之家
查一下这个ip
这是一个通信技术公司的IDC机房的ip,这个公司的业务中有数据中心
服务
百度上说数据中心
提供的是数据的传输服务
个人感觉这个2345看图王软件如此频繁得与数据中心建立连接,不太可能是检查更新或者是做其他必要工作
这个软件可能会搜集文件(jpg和pdf等)的信息并上传到网上,至于拿去干什么就不得而知了
可以用whois
查到这个公司机房的地址等信息,有一个在北京,还有在浙江
感觉不像是在做好事,于是用wireshrak
捕获数据包看一下这个软件在背着用户干什么
先打开wireshark
,再打开2345看图王,免得漏捕
wireshark
能捕获大量数据包,得做一个过滤只留下关注的内容
ip.dst==42.62.30.188 || ip.src== 42.62.30.188//每次打开pdf文档,2345PdfReader.exe就会连接到这个ip
打开一个pdf文档然后关闭,再打开一个pdf文档然后又关闭,得到如下结果
看得出来打开pdf文档的时候,2345PdfReader.exe
做了这几件事
-
tcp三次握手建立连接
-
http数据传输,其目的地是
http://update.pic.2345.com/pic/pdf/middlebar.php
-
tcp四次挥手关闭连接
-
NBSTAT名称查询请求
不太清楚NBSTAT是在干什么,网上查了一下有这样的解释:
NBNS = NetBIOS Name Service,应该是在做命名查询。微软WINS的实现就是一个例子。例如开启了WINS的主机就会发出目的地址地址...255进行广播,使用UDP协议,连137端口。
可是很多人,尤其是一些网管经常发现大量的这样报文,最终影响网络,甚至导致交换机的瘫痪.......
初步分析了一下捕获到的数据,基本认定原因在于好多个人计算机内包含恶意/流氓软件,会不停地访问某一个域名,同时,windows的名字解析机制的顺序是:
- hosts
- net bios, wins, lmhosts
- dns
所以,就会在网络中产生大量nbns的数据包
综上分析可知,当用户打开pdf文档的时候2345PdfReader.exe
就会偷偷上传不知道是什么数据然后疯狂连接某一个网站,感觉用户的计算机像是成了DDos的肉鸡?!
得想办法治一下这个流氓软件,于是打开防火墙禁止这个程序连接到网络
4.4 其他分析软件
Process Monitor
进程监视器是Windows的高级监视工具,显示实时文件系统,注册表和进程/线程活动。
它结合了两个传统Sysinternals实用程序Filemon和Regmon的功能,并添加了丰富的增强列表,包括丰富和非破坏性筛选,全面的事件属性(如会话ID和用户名),可靠的进程信息,带集成符号支持的完整线程堆栈 对于每个操作,同时记录到文件等等。其独特的强大功能将使Process Monitor成为系统故障排除和恶意软件搜索工具包的核心工具。
感觉Process Monitor
的界面比事件查看器
友好多了,应用的各个行为都按照时间先后顺序排列好了
除了每一条具体的行为记录,还可以查看进程行为统计:
Tools-->Process Activity Summary-->Details
Process Explorer
有没有想过哪个程序打开了一个特定的文件或目录?现在你可以找到。 Process Explorer向您显示有关哪些句柄和DLL进程已打开或加载的信息。
Process Explorer显示由两个子窗口组成。顶部窗口总是显示当前活动进程的列表,包括他们拥有的帐户的名称,而底部窗口中显示的信息取决于Process Explorer所在的模式:如果它处于手柄模式,您会看到处理在顶部窗口中选择的进程已打开;如果Process Explorer处于DLL模式,您将看到进程已加载的DLL和内存映射文件。 Process Explorer还具有强大的搜索功能,可以快速显示哪些进程打开了特定的句柄或加载了DLL。
Process Explorer的独特功能使其可用于追踪DLL版本问题或处理泄漏,并深入了解Windows和应用程序的工作方式。
PEiD
PEiD是一款著名的可移植可执行程序(pe文件)外壳查询工具工具,其功能强大,可以轻易检出超过470种外壳,并可检查程序的编程语言。