安全矩阵

 找回密码
 立即注册
搜索
查看: 458|回复: 0

应急响应取证方法

[复制链接]

251

主题

270

帖子

1783

积分

金牌会员

Rank: 6Rank: 6

积分
1783
发表于 2023-1-9 23:16:38 | 显示全部楼层 |阅读模式
本帖最后由 Meng0f 于 2023-1-9 23:18 编辑

转载于:菜鸟的菜 Tide安全团队 2023-01-09 17:03 发表于山东
1、简述
在用户遭受到攻击时,除了进行快速响应,可能还会进行取证,主要是对内存、硬盘、入侵流量、浏览器历史等方面内容进行取证。针对vmware虚拟环境,取证相对比较简单,直接拷贝相关目录下虚拟机目录即可,本文主要是对非虚拟环境系统进行取证,分别介绍常见的linux、windows系统的取证方法。
2、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、linux系统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 username@x.x.x.x "dd if=/dev/sda | gzip -1 -" | dd of=backup.gz
这里只是列举了dd的部分用法,更多的用法可参考前辈总结:
https://cloud.tencent.com/developer/article/1720348?from=15425
取证方法还是有很多的,这次只是列举了几个操作相对比较简单的方法,方便在工作中使用,在进行取证之前建议准备个大空间的硬盘,不管是内存镜像还是硬盘镜像往往都是需要很大的磁盘空间。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-3-29 21:03 , Processed in 0.015145 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表