Exp4 恶意代码分析
一、基础问题回答
- 如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么。请设计下你想监控的操作有哪些,用什么方法来监控。
(1)我们可以使用一些工具帮助自己监测系统,可以实时监控电脑上的端口信息,如果受到怀疑的恶意代码启动的时候连接了一些看起来很可疑的端口,就可以进一步进行分析。
(2)我们可以通过在windows下建立一个监测本机连接ip地址的任务计划程序,不定时的查看一下电脑都在什么时候连了网干了什么,如果在你觉得自己的电脑没有联网的情况下出现了ip访问记录就十分可疑了。
(3)可以通过sysmon监控几乎所有的重要操作,并在事件查看器中找到日志查看。
2.如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息。
(1)PE explorer工具,它可以对程序调用库等信息进行分析查看,还可以对其反汇编。
(2)PEiD工具,可以查看程序有没有被常用的加壳软件加壳。
(3)启动该程序,利用systracer及wireshark动态分析程序动向。
二、系统运行监控
这次实验的第一部分是对自己的主机进行系统监控,尝试能否发现异常情况。
-
结合windows计划任务与netstat命令
这里有两种方法设置计划任务,第一种是在任务计划程序设置,第二种是命令行输入如下命令:
schtasks /create /TN netstat /sc MINUTE /MO 5 /TR "c: etstatlog.bat"
我选择的是后者- 先在C盘目录下建立一个netstatlog.bat文件,用来将记录的联网结果格式化输出到netstatlog.txt文件中,netstatlog.bat内容为:
date /t >> c: etstatlog.txt
time /t >> c: etstatlog.txt
netstat -bn >> c: etstatlog.txt
- 打开Windows下命令提示符,输入指令schtasks /create /TN netstat /sc MINUTE /MO 5 /TR "c:
etstatlog.bat"指令创建一个每隔五分钟记录计算机联网情况的任务:
- 五分钟后,我们来分析日志信息:
- 黄标的SearchUI是win10专有的程序,及小娜,通过目的端口443可以猜测出来111.202.83.167、52.222.211.23、203.208.43.73应该是某些服务器地址,查询IP可知:
- 该程序先后访问了北京联通的,香港amazon.com和北京Google.com。可惜当时没有抓包,单单从这几个IP分析不出来什么问题。
- 先在C盘目录下建立一个netstatlog.bat文件,用来将记录的联网结果格式化输出到netstatlog.txt文件中,netstatlog.bat内容为:
-
使用sysmon工具监控系统运行
sysmon是由Windows Sysinternals出品的一款Sysinternals系列中的工具。它以系统服务和设备驱动程序的方法安装在系统上,并保持常驻性。sysmon用来监视和记录系统活动,并记录到windows事件日志,可以提供有关进程创建,网络链接和文件创建时间更改的详细信息。
- 安装sysmon:
- 下载sysmon,可以直接到Microsoft官网下载;
- 打开命令行,cd到下载目录下,执行命令
Sysmon64.exe -i Sysmoncag.xml
这里的Sysmoncag.xml文件是课上所给的,但是直接复制该文件,会出现如下问题:
,这是版本号的问题,我们先查看我们将要安装的版本号:
这时,我们发现,我们版本号为4.0,所以将.xml文件中的<Sysmon schemaversion="3.10">
改成<Sysmon schemaversion="4.00">
就好了。
- 启动之后,便可以到事件查看器里查看相应的日志:
- 先打开事件查看器
- 然后在:应用程序和服务日志/Microsoft/Windows/Sysmon/Operational里查询相关日志,我在安装后运行了一次实验二的后门程序,并在目录下查询到的日志如下图:
- 根据这则日志:可以发现是我的后门程序,通过本地端口14143向IP为192.168.1.105的5213端口发送TCP请求链接。
- 先打开事件查看器
- 安装sysmon:
-
使用virscan分析恶意软件
- 在virustotal网站查看上次后门软件的文件行为分析:
- 先让我们看一下详细报告:
- 根据上图,可以看出这个程序是在后门不过的后门了,有第二张图可以发现,本程序使用了
ADVAPI32.dll
、KERNEL32.dll
、MSVCRT.dll
、WS2_32.dll
、WSOCK32.dll
,这五个链接库,其中WS2_32.dll
、WSOCK32.dll
是比较熟悉的win上面编写SOCKET用的,这是用来回连使用的,而advapi32.dll
是一个高级API应用程序接口服务库的一部分,包含的函数与对象的安全性,注册表的操控以及事件日志有关,从这句解释就可以看出,本后门程序的潜在的威胁,kernel32.dll
是Windows 9x/Me中非常重要的32位动态链接库文件,属于内核级文件。它控制着系统的内存管理、数据的输入输出操作和中断处理,当Windows启动时,kernel32.dll就驻留在内存中特定的写保护区域,使别的程序无法占用这个内存区域。而msvcrt.dll
是微软在windows操作系统中提供的C语言运行库执行文件(Microsoft Visual C Runtime Library),其中提供了printf,malloc,strcpy等C语言库函数的具体运行实现,并且为使用C/C++(Vc)编译的程序提供了初始化(如获取命令行参数)以及退出等功能,我们基本上每个C程序都会用到。
- 先让我们看一下详细报告:
- 在virustotal网站查看上次后门软件的文件行为分析:
-
使用systracer工具分析恶意软件
- 下载安装
systracer
; - 我分别创建了三个快照,没有操作后门程序的,第二个是回连成功后的,第三个是攻击主机发送操作指令的
- 通过查看运行的程序,发现我们的后门程序运行时调用了如下几个库:
wow64cpu.dll
:wow64cpu.dll是一个进程来自Microsoft Corporation。它可以被发现在C:位置。这是一个潜在的安全风险,它能被病毒恶意修改。wow64win.dll
:同上。ntdll.dll
:ntdll.dll是Windows系统从ring3到ring0的入口。位于Kernel32.dll和user32.dll中的所有win32 API最终都是调用ntdll.dll中的函数实现的。ntdll.dll中的函-数使用SYSENTRY进入ring0,函数的实现实体在ring0中;
- 从本后门调用
ntdll.dll
就可见其侵略意图了。
- 下载安装
-
使用wireshark分析恶意软件回连情况
- 设置IP过滤格式:ip.addr==192.168.43.161,在进行回连操作时,使用wireshark进行抓包后可以看到,其先进行了TCP的三次握手,之后再进行数据的传输,如图所示,带有PSH,ACK的包传送的便是执行相关操作指令时所传输的数据包,
- 设置IP过滤格式:ip.addr==192.168.43.161,在进行回连操作时,使用wireshark进行抓包后可以看到,其先进行了TCP的三次握手,之后再进行数据的传输,如图所示,带有PSH,ACK的包传送的便是执行相关操作指令时所传输的数据包,
-
使用Process Explorer分析恶意软件
- PE分析恶意软件有两种方式,可以直接分析静态的恶意程序,也可以动态的捕获恶意程序运行的状态,下图是动态捕获的:
可以看出,该test程序是通过TCP协议回连了IP地址为192.168.43.161
的。 - 这是实时运行时出现的线程,我们尝试KIll掉,我们会发现Kali机也失去了链接
- PE分析恶意软件有两种方式,可以直接分析静态的恶意程序,也可以动态的捕获恶意程序运行的状态,下图是动态捕获的:
三、实验总结
恶意程序分析是个体力活啊,这个实验是在我们知晓恶意程序是谁的情况下进行的,有针对性,但如果单单从茫茫数据中要分析出每个程序的可疑行为或者入侵行为,单靠人去读数据,分析数据是根本行不通的,可是依靠杀软,感觉也不怎么可靠,所以要真正安全,还是下图做的好。