2019-2020-2 20174317祝源《网络对抗技术》Exp4 恶意代码分析
1. 实验目的
- 学会是监控你自己系统的运行状态,看有没有可疑的程序在运行。
- 使用工具分析一个恶意软件。
- 假定将来工作中你觉得自己的主机有问题,就可以用实验中的这个思路,先整个系统监控看能不能找到可疑对象,再对可疑对象进行进一步分析,好确认其具体的行为与性质。
2. 实验思路
使用工具监控->分析结果
3. 实验内容
3.1. 系统运行监控
3.1.1. 利用任务计划程序
一、设置
新建一个名为monitor4317.bat
的批处理文件,输入如下内容,保存到D盘根目录。
date /t >> D:\monitor20174317.txt
time /t >> D:\monitor20174317.txt
netstat -bn >> D:\monitor20174317.txt
参考实验二,在任务计划程序
中创建任务。任务名称设置为monitor20174317
,安全选项设置为不管用户是否登录都要运行
和使用最高权限运行
,用户选择自己的管理员账户。
新建一个触发器,设置为每1分钟执行一次,持续1小时。
新建一个启动程序的操作,选择之前创建好的monitor4317.bat
文件。
点击确定创建这个计划时会要求输入密码。让人意外的是这个脚本文件在执行的时候被杀毒软件拦下来了。一小时后可以在文件中看到监控记录,但格式比较乱。
参考学长的博客将导入数据到excel进行分析,但由于使用的是OFFICE 2019
,导入的时候发现不能设置多个分隔符,导入结果有过多的列,百度一下还是解决了。
二、分析:
首先分析应用程序,数据透视图如下:
没有什么可疑的程序。那个无法获取所有权信息属实让人迷惑,使用卡巴斯基自带的网络监控功发现,这种连接是使用svchost.exe
建立的,目的IP除127.0.0.1
外、还有位于广州、香港、美国(微软公司的IP)等地的连接,目的端口多为80和443,但流量都很小,应该没什么问题。
然后分析外部地址,就是目的IP,数据透视图如下(过滤掉了127.0.0.1的连接):
可以发现连接次数较多的IP的目的端口都是80和443端口,查了连接次数前五的IP和连接的是5228端口的IP的WHOIS信息,似乎都没什么可疑的,绘制表格如下:
IP | WHOIS desrc | 所属组织 | 所在城市 |
---|---|---|---|
119.255.133.60 | Beijing Education Information Network | Langfang Development Area Huarui Xintong Network T | Beijing |
222.138.2.184 | China Unicom Henan province network | China Unicom Henan | Zhengzhou |
114.118.64.116 | NO.18 Building University of Technology | ShenZhen TC telecom Network Corp. | Beijing |
117.18.237.29 | EdgeCast Networks Asia Pacific Network | Edgecast Networks | Taipei |
40.90.189.152 | 无 | Microsoft Corporation (MSFT) | Singapore |
108.177.125.188 | 无 | Google LLC (GOGL) | US, Mountain View |
3.1.2. 使用Sysmon
一、下载
在Windows的官方网站可以下载Sysmon和查看帮助文档:Sysmon v10.42
二、编写配置文件
编写Sysmon配置文件,我想监控的是:进程创建 ProcessCreate、网络连接 NetworkConnect、远程线程创建 CreateRemoteTh、驱动器读取 RawAccessRead、进程访问 ProcessAccess、文件创建 FileCreate、注册表事件 RegistryEvent。用到了Image、DestinationIp、SourceIp、SourcePort等过滤选项。配置文件如下:
1 <Sysmon schemaversion="4.23"> 2 <!--注意:最新版的配置规则是4.23--> 3 <!-- Capture all hashes --> 4 <HashAlgorithms>*</HashAlgorithms> 5 <EventFiltering> 6 <!-- Log all drivers except if the signature --> 7 <!-- contains Microsoft or Windows --> 8 <ProcessCreate onmatch="exclude"> 9 <!--不记录chrome、IE和EDGE创建的进程--> 10 <Image condition="end with">chrome.exe</Image> 11 <Image condition="end with">MicrosoftEdge.exe</Image> 12 <Image condition="end with">iexplore.exe</Image> 13 </ProcessCreate> 14 15 <NetworkConnect onmatch="exclude"> 16 <!--不记录chrome、IE和EDGE创建的网络连接--> 17 <Image condition="end with">chrome.exe</Image> 18 <Image condition="end with">MicrosoftEdge.exe</Image> 19 <Image condition="end with">iexplore.exe</Image> 20 <!--不记录源端口是137和源IP地址/目的IP地址是127.0.0.1的网络连接--> 21 <SourcePort condition="is">137</SourcePort> 22 <SourceIp condition="is">127.0.0.1</SourceIp> 23 <DestinationIp condition="is">127.0.0.1</DestinationIp> 24 </NetworkConnect> 25 26 <CreateRemoteThread onmatch="exclude"> 27 <!--不记录chrome、IE和EDGE创建的线程--> 28 <TargetImage condition="end with">explorer.exe</TargetImage> 29 <SourceImage condition="end with">powershell.exe</SourceImage> 30 <SourceImage condition="end with">cmd.exe</SourceImage> 31 </CreateRemoteThread> 32 33 <RawAccessRead onmatch="exclude"> 34 <!--不记录chrome、IE和EDGE读取磁盘的记录--> 35 <Image condition="end with">chrome.exe</Image> 36 <Image condition="end with">MicrosoftEdge.exe</Image> 37 <Image condition="end with">iexplore.exe</Image> 38 </RawAccessRead> 39 40 <FileCreateTime onmatch="exclude" > 41 <!--不记录chrome、IE和EDGE创建文件的记录--> 42 <Image condition="end with">chrome.exe</Image> 43 <Image condition="end with">MicrosoftEdge.exe</Image> 44 <Image condition="end with">iexplore.exe</Image> 45 </FileCreateTime> 46 47 <RegistryEvent onmatch="exclude"> 48 <!--不记录chrome、IE和EDGE的注册表事件--> 49 <Image condition="end with">chrome.exe</Image> 50 <Image condition="end with">MicrosoftEdge.exe</Image> 51 <Image condition="end with">iexplore.exe</Image> 52 </RegistryEvent> 53 54 </EventFiltering> 55 </Sysmon>
其中exclude表示排除,在exclude中的都不会记录。include表示包含,只会记录和include相匹配的事件。
三、安装
将编写好的配置文件命名为config.xml
,保存到D:\shiyan4
目录下,然后把下载好的Sysmon解压到同一个文件夹里。以管理员身份运行cmd或powershell,进入解压目录,输入.\Sysmon64.exe -i config.xml
进行安装(Powershell的cd不用再输/d也是挺方便的),在弹出来的对话框中点击“Agree”。
四、查看日志
Sysmon的日志可以在事件查看器
中查看,依次打开应用程序和服务日志
->Microsoft
->Windows
->Sysmon
->Operational
。
发现阿里旺旺的进程在后台偷偷运行,还改了我的注册表(抱胸.jpg),但我开机后根本就没启动过这个程序。从任务管理器里发现是通过名为Alibaba PC Safe Service
的服务启动的,把这个服务的启动类型改成了手动。
还发现了很多System32文件夹下的应用程序在修改注册表、建立网络连接之类的,比如ctfmon.exe、svchost.exe、sihost.exe。
打开kali启动msf监控,运行之前生成的后门程序,查看记录,发现后门程序常用的操作有建立网络连接和创建进程。
3.2. 恶意软件分析
3.2.1. 静态分析
IDA Pro
IDA Pro是一款交互式的,可编程的,可扩展的,多处理器的分析程序。具体使用可以参考这篇博客。
使用IDA打开后门程序,选择右侧窗口上方的“Import”可以看到程序引用的DLL和使用了DLL中的什么函数。浏览发现程序分别引用了ADVAPI32
、KERNEL32
、MSVCRT
、WS2_32
、WSOCK32
这几个DLL。
查资料后知道,ADVAPI32.DLL与注册表操控以及事件日志有关;KERNEL32.DLL控制着系统的内存管理、数据的输入输出操作和中断处理,属于内核级文件,驻留在内存中特定的写保护区域;MSVCRT.DLL是微软在windows操作系统中提供的C语言运行库执行文件;WSOCK32.DLL和WS2_32.DLL用于创建网络套接字,调用关系是:网络应用程序->CSocket(WSock32.dll)->Socket API(ws2_32.dll)->网络传输服务进程。
使用shift+12
可以查看程序中所有的字符串,竟然能在里面发现html样式的字符串,这可能是病毒用来免杀或者反向连接用的?
3.2.2. 动态分析
1.Systracer
将后门程序放入虚拟机中执行,分别拍摄如下几个快照:
- 安装完Systracer后,运行后门程序前。命名为
Snapshot #1
- 后门程序回连kali成功后。命名为
Snapshot #2
- 在msf中执行获取屏幕、提权等操作后。命名为
Snapshot #3
首先分析快照1和2:
在网上查到注册表的根键如下:
根键 | 说明 |
---|---|
HKEY_CLASSES_ROOT | 该根键包括启动应用程序所需的全部信息,包括扩展名,应用程序与文档之间的关系,驱动程序名,DDE和OLE信息,类ID编号和应用程序与文档的图标等 |
HKEY_CURRENT_USER | 该根键包括当前登录用户的配置信息,包括环境变量,个人程序以及桌面设置等 |
HKEY_LOCAL_MACHINE | 该根键包括本地计算机的系统信息,包括硬件和操作系统信息,安全数据和计算机专用的各类软件设置信息 |
HKEY_USERS | 该根键包括计算机的所有用户使用的配置数据,这些数据只有在用户登录系统时才能访问。这些信息告诉系统当前用户使用的图标,激活的程序组,开始菜单的内容以及颜色,字体 |
HKEY_CURRENT_CONFIG | 该根键包括当前硬件的配置信息,其中的信息是从HKEY_LOCAL_MACHINE中映射出来的 |
能发现很多明显是和后门程序有关的注册表项被修改,还有一些奇奇怪怪的注册表项,但看不懂,推测和病毒程序有关。
然后分析文件差异,发现很多文件的大小增大了,但不能肯定是后门程序的原因,然后发现后门程序在在C:\Document and Settings\uazz\APPData\Local\Application Data\Microsoft\Windows\
下创建了一个后缀名为pf
的文件,可能用来保存数据的。并且能够发现后门程序建立的TCP连接。
然后分析快照2和3:
和上面相比注册表没有被过多的修改,发现有两个注册表项被删除了,还添加了名为VirtualDesktop
的注册表项,但是之前观察到的由后门程序创建的注册表项并没有被修改。其它被修改的注册表项我也看不出来是不是后门程序改的。
分析文件变化时能发现两个后缀为.pf的文件大小有变化,可能和后门程序有关。没有发现其它什么异常。
2.Wireshark捕获数据包
然后在kali中启动msf进行侦听,主机打开Wireshark,设置接口为WLAN
,设置过滤器,只显示我的主机和kali之间的数据包,然后运行后门程序,观察wireshark的输出。
分析数据包已经有些遗忘了,参考了以下博客:TCP的状态、TCP报文之-tcp dup ack 、tcp Out-of-Order、CP协议中的seq/ack序号是如何变化的?
从序号为18-23的数据包可以看出主机和kali先进行TCP三次握手,然后传输数据。我看了几个有数据的数据包,除了第28个数据包的data
字段中有This program cannot be run in DOS mode.
以外,还在第308个数据包中发现了:Acore_console_write core_channel_open core_channel_write core_channel_close
等字符串,推测是程序与msf通信时使用的。其它数据包里还有类似的,也有很多数据包里的data看不懂。
从捕包的结果来看,几乎每个数据包在发送后都有超时重传、丢失等问题,家里路由器有那么差吗?
保存之前的结果,再重新捕包,在msf中使用dir、guid、screenshot等命令,发现所有的数据包的data
字段都是都是看不懂的字符,推测是加密了。
3.Sysmon分析
运行后门程序并观察Sysmon的日志。
1.录音,发现后门程序和svchost.exe
修改了和Audio
有关的注册表项,怀疑后门程序通过调用svchost.exe启动相关的服务来录音:
2.拍照,发现后门程序和svchost.exe
修改了和webcam
有关的注册表项,还发现了svchost.exe
创建了一个和Camera
有关的进程:
4. 问题回答
(1)如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所以想监控下系统一天天的到底在干些什么。请设计下你想监控的操作有哪些,用什么方法来监控。
我想监控的主要有网络连接、文件读写、注册表操作,因为如果有恶意代码的话,它很可能会拍照、录音,并把我电脑上的文件发送给攻击者,还可能接收攻击者的命令做一些别的事,可以使用Sysmon
进行监控,也可以向实验中这样,使用任务计划程序执行脚本文件来监控系统。
(2)如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息。
如果我确定某个程序有问题的话,可以使用Virtotal
和杀毒软件来扫描,然后使用IDA
看一下它使用来哪些DLL,然后可以将程序放入虚拟机里运行并用Sysmon
、Systracer
、Wireshark
等程序来监控和分析它的行为,比如修改注册表、连接其它主机等。还可以在网上搜索一下这个程序。
如果我确定某个进程有问题的话,可以使用windows自带任务管理器
查看进程对应的程序和命令行,使用资源监视器
查看进程使用的服务、关联的模块等,使用杀毒软件进行扫描,还可以使用上面讲到的工具进一步分析。
5. 实验总结与体会
这次实验到目前为止是我做的最久的网络对抗实验。经过这次实验,知道了可以使用哪些工具来监控自己的系统,同时加深了对恶意代码的认识,以前都不知道恶意代码具体会做些什么。以后怀疑自己的电脑里有恶意软件的时候也能够自己做初步分析了。平时使用电脑的时候还是要注意不下载和运行来路不明的程序。
至于使用工具进行分析,最开始遇到的问题是不知道使用什么工具,后来问题就变成了看不懂应用程序给出来的结果。