本文转自FREEBUF,作者:Cunlin
0×00概述
后面会花一部分时间,写一些数字取证相关的文章。攻击技术贴多如牛毛,眼下不管是网安,还是安全厂商, 欠缺的是对取证技术的研究。
大致想了一下,主要会从以下几个方面逐一介绍吧:
- 内存
- 硬盘镜像
- 网络
- Timeline利用
- 威胁情报在取证中的作用等
0×01 windows内存取证
取证的时候为什么要做内存分析?因为在内存里面可以看到操作系统在做的几乎所有的事情。当内存块不被覆盖的情况下,很多历史信息同样被保留。主要有:
- 进程和线程
- 恶意软件,包括rootkit技术
- 网络socket,URL,IP地址等
- 被打开的文件
- 用户生成的密码,cache,剪贴板等
- 加密键值
- 硬件和软件的配置信息
- 操作系统的事件日志和注册表
有了以上这些信息,我们可以找出更多有用的信息,在本文章中, 我们就以找出系统的历史CMD命令行为例。
0×02内存的获取
基本上,都是通过工具,或者已经由系统生成的dump文件来获取其信息。当然,在虚拟环境下, 也可以通过虚拟机的镜像文件,或者快照文件获取内存信息。
0×03 内存镜像的分析
我们以Redline工具为例, 来分析一下当前内存的信息。
首先,Redline可以直接收集当前的内存信息。 也可以利用威胁情报(IoC)来搜索当前的内存信息。这里就不多介绍。
我们直接打开已经获取到的内存镜像文件:sobig.img
注意,因为本文章要获取系统的历史CMD命令, 所以需要修改一下默认分析脚本: 打开Strings参数。
完全打开之后,我们可以看到很多信息:
1. 进程和各个进程之间的父子关系。
2. 每个进程参数
3. Redline自带打分功能MRI,给每个进程打分。 恶意进程的MRI会很高,标记为红色。
4. 加载的驱动
5. Hooks
6. 根据时间生成timeline。 这个在做安全应急响应分析的时候非常重要。
图上红色的就是恶意进程。
0×04获取历史CMD命令
在windows XP下, 一般cmd.exe的历史记录存在于csrss.exe进程内。 而windows 7上,则存在于Conhost.exe进程内。
所以在这个例子中,我们可以看csrss.exe进程的具体信息
然后再选在我们之前打开的Strings参数。我们可以看到这个进程在运行过程中,一些调用的函数名称等字符。 类似通过BinText来查看一个二进制文件一样。
再通过过滤器来提取所有cmd.exe的信息, 我们就能看到, 计算机在运行的过程中所有执行过的CMD命令。
0×05总结
通过以上小例子,我们可以从内存信息里面提取一些重要的证据。如果当黑客已经攻破了内网一台主机(C&C已经建立),大多都会使用系统自带的命令来收集更多的信息,或者进一步侵入内网其他主机。使用CMD的好处是容易隐藏自己的行为。因此,这种情况下我们可以通过类似上述手段,找到更多黑客的踪迹。
当然, 这里介绍的Redline只是其中的一个工具。 类似还有非常流行的Volatility等。在后面的文章中会有更多的介绍。
文章评论
抄我在freebuf上的文章 你良心不会痛吗?
@CCC 实在不好意思,我这站都是用插件过滤过的,所以可能把一些版权信息过滤了,实在不好意思,现在已经手工添加版权信息了,抱歉哈~