应急响应取证方法
2023-2-4 09:37:20 Author: 黑白之道(查看原文) 阅读量:27 收藏

在用户遭受到攻击时,除了进行快速响应,可能还会进行取证,主要是对内存、硬盘、入侵流量、浏览器历史等方面内容进行取证。针对vmware虚拟环境,取证相对比较简单,直接拷贝相关目录下虚拟机目录即可,本文主要是对非虚拟环境系统进行取证,分别介绍常见的linux、windows系统的取证方法。

2.1 内存取证

针对虚拟机获取内存,暂停vm并取出.vmem文件即可,很多木在马程序都有较高的隐秘性,可能会修改系统调用的返回值,但是在内存中的数据是真实存在的,所以在应急的时候如果无法从系统中找到痕迹,可看看内存中是否有相关字段,尤其是针对一些仅存于内存中,关机就消失的情况,内存取证是最好的办法。针对内存取证主要介绍两种工具,dumplt 、volatility两种工具。

2.1.1 DumpIt提取内存信息

取证过程:工具下载地址:

https://www.toolwar.com/search?q=dumpit

该软件大小只有200k,使用也比较简单,直接运行就会将内存存储到raw文件中

运行完成后在当前目录下生成内存存储文件

内存分析过程:redline: 取证结束接下来就是进行内存分析,内存分析采用redline工具 工具下载地址:

https://fireeye.market/apps/211364

下载之后进行安装即可,安装完成后界面如下,双击已经获取内存镜像,加载之前保存的镜像即可(在进行内存备份时,由于系统使用情况的不同,所以最终备份的大小也不同,有的可能几十个g,所以在备份时建议使用大的硬盘或盘))

加载完raw文件下一步后可编辑script脚本,主要修改内容如下,勾选strings选框

加载的后的页面如下,由于我保存后的内存大小大约为5G,所以过程可能会慢一些

在打开该软件进行分析时就一直卡在这里,所以还是建议利用Volatility进行分析。Volatility: 该软件功能还是很强大的,是用python编写,下载地址:

https://github.com/volatilityfoundation/volatility

上述地址为volatility2.6的版本,所以首先需要python2.7的环境,具体安装过程可参考网上资料:

https://www.bnessy.com/archives/%E7%94%B5%E5%AD%90%E6%95%B0%E6%8D%AE%E5%8F%96%E8%AF%81-volatility

介绍几个常用的功能:

vol.py -h

查看一些常用的的用法

vol.py -f win.raw imageinfo 查看备份镜像相关信息

vol.py -f win.raw --profile=Win7SP1x64 pslist 查看内存中运行的进程信息

查看注册表中的用户信息:

vol.py -f win.raw --profile=Win7SP1x64 printkey -K "SAM\Domains\Account\Users\Names"

获取系统最后登录的账号

vol.py -f win.raw --profile=Win7SP1x64  printkey -K "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"

获取当前用户正在运行的程序

vol.py -f win.raw --profile=Win7SP1x64  userassist  

显示cmd历史命令

vol.py -f win.raw --profile=Win7SP1x64  cmdscan   

查看网络连接,已经侦听、建立、关闭的连接

查看ie浏览记录

vol.py -f win.raw --profile=Win7SP1x64  iehistory

时间线:

vol.py -f win.raw --profile=Win7SP1x64  timeliner

从多个位置收集大量活动信息

查看密码:

vol.py -f win.raw --profile=Win7SP1x64    hashdump

hash破解网站:

https://crackstation.net/

内存文件搜索,由于搜索的文件会比较多,可用grep进行过滤,很多时候可能需要分析的数据很多可利用 > aa.txt,这样就可以将文件保存下来,封方便去查看。

vol.py -f win.raw --profile=Win7SP1x64    filesacn | grep nessus

文件转储:

vol.py -f win.raw --profile=Win7SP1x64    dumpfiles -Q 0x00000000523afd80 -D ./

进程转存,将看到的可疑进程存储下来

看了很多资料Volatility在ctf中取证题目中这个工具用到的比较多,在应急场景中也是可以用到的,方便进行后续的分析以及证据留存,还有很多其他的命令具体可参考网上前辈整理的一些资料:

https://m0re.top/posts/c6e31ef3/

2.2 硬盘取证

想来想去,其实硬盘取证就是将硬盘打包成一个镜像,网上类似的工具很多,可使用windows自带的dism命令,还可以采用备份软件,如傲梅备份软件进行数据备份,具体操作过程比较简单,但是在备份时需要准备个大空间的硬盘

3.1 内存取证

linux内存取证利用LiME 工具,下载地址:

https://github.com/504ensicsLabs/LiME

使用方法:在编译的时候可能会报错,但是不影响使用

cd src 
make

make结束后会生成lime-5.4.0-26-generic.ko内核模块 加载生成的内核模块来获取系统内存,insmod 命令会帮助加载内核模块;模块一旦被加载,会在你的系统上读取主内存(RAM)并且将内存的内容转储到命令行所提供的 path 目录下的文件中。另一个重要的参数是 format;保持 lime 的格式,如下所示。在插入内核模块之后,使用 lsmod 命令验证它是否真的被加载。

insmod ./lime-4.18.0-240.el8.x86_64.ko "path=../RHEL8.3_64bit.mem format=lime"

在LiME目录下生成.mem文件

查看文件信息

这样就将内存文件dump下来了,然后在利用Volatility工具进行分析。

3.2 硬盘取证

linux有自己的dd命令,在取证之前需要准备新的磁盘空间 复制磁盘:将/dev/sda完整的复制,dd命令时需要包含if=表示源磁盘,和of=表示目标磁盘

dd if=/dev/sda1  of=/dev/sdb

我在本地进行测试时提示空间不够,所以需要准备足够大的硬盘空间 磁盘镜像:

 dd if=/dev/sda of=/home/sdadisk.img

还原镜像:

dd if=sdadisk.img of=/dev/sdb

还可以采用异地备份的方式:通过ssh连接进行备份,如将服务器x.x.x.x的sda文件复制到本地

 ssh [email protected] "dd if=/dev/sda | gzip -1 -" | dd of=backup.gz

这里只是列举了dd的部分用法,更多的用法可参考前辈总结:

 https://cloud.tencent.com/developer/article/1720348?from=15425

取证方法还是有很多的,这次只是列举了几个操作相对比较简单的方法,方便在工作中使用,在进行取证之前建议准备个大空间的硬盘,不管是内存镜像还是硬盘镜像往往都是需要很大的磁盘空间。

文章来源:Tide安全团队

黑白之道发布、转载的文章中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途及盈利等目的,否则后果自行承担!

如侵权请私聊我们删文

END

多一个点在看多一条小鱼干


文章来源: http://mp.weixin.qq.com/s?__biz=MzAxMjE3ODU3MQ==&mid=2650562792&idx=4&sn=90d914b0b80174f9261b2897685a46ca&chksm=83bd050cb4ca8c1ad659ad712a13c5e92418123324171638af4e11406dd3400ff3b5e48d1787#rd
如有侵权请联系:admin#unsafe.sh