2024第一届Solar杯应急响应挑战赛 内存取证
字数 1753 2025-08-22 12:22:43
Solar杯应急响应挑战赛内存取证教学文档
1. 内存取证基础
内存取证是数字取证的重要组成部分,通过分析系统内存转储文件可以获取系统运行时的状态信息,包括进程、网络连接、文件操作等关键证据。
常用工具
- Volatility:开源内存取证框架,支持多种操作系统
- Magnet RAM Capture:商业内存捕获工具
- Rekall:另一款内存分析框架
2. 题目解析与解题方法
内存取证1:查找RDP连接的跳板地址
目标:找到RDP(远程桌面协议)连接的跳板IP地址
解题方法:
- 使用Volatility的
netscan插件扫描网络连接 - 过滤3389端口(RDP默认端口)
命令:
python2 vol.py -f ../SERVER-2008-20241220-162057.raw --profile=Win7SP1x64 netscan | grep 3389
关键点:
- 确认正确的profile参数(本例为Win7SP1x64)
- RDP默认使用3389端口
- 结果格式为flag{IP地址}
内存取证2:查找攻击者下载黑客工具的IP地址
目标:找到下载恶意工具的源IP
解题方法:
- Magnet分析:
- 直接查看浏览器缓存记录
- Volatility分析:
- 使用
cmdscan插件查看命令行记录 - 查找mimikatz等工具的下载记录
- 使用
关键点:
- 关注浏览器历史记录和下载记录
- 检查命令行中出现的下载命令
- 结果格式为flag{IP地址}
内存取证3:获取FusionManager节点操作系统帐户密码
目标:找到业务帐户的密码
解题方法:
- Volatility分析:
- 使用
cmdscan查看攻击者访问的pass.txt文件 - 提取文件内容获取账号密码
- 使用
- Magnet分析:
- 直接查看剪贴板内容
关键点:
- 查找pass.txt等敏感文件
- 检查剪贴板历史记录
- 结果格式为flag{密码明文}
内存取证4:查找攻击者创建的用户
目标:识别攻击者创建的后门账户
解题方法:
- 枚举系统用户账户
- 对比正常账户与可疑账户
- 使用mimikatz查看账户信息
关键点:
- 检查用户创建时间
- 查找非常规用户名
- 结果格式为flag{用户名}
内存取证5:确定攻击者利用跳板RDP登录的时间
目标:找到RDP登录的准确时间
解题方法:
- Volatility分析:
- 使用
pslist找到rdp进程的创建时间 - 注意时区转换(UTC+8)
- 使用
- Magnet分析:
- 在界面右下角选择北京时区
关键点:
- 时区转换是关键(原始时间+8小时)
- 查找rdp.exe或相关进程的创建时间
- 结果应为完整的时间戳
内存取证6:获取攻击者创建用户的密码哈希值
目标:提取后门账户的密码哈希
解题方法:
- 使用mimikatz提取账户密码信息
- 获取NT哈希值
关键点:
- 需要提取NT哈希而非明文密码
- 结果格式为flag{哈希值}
3. 高级技巧与注意事项
-
时区处理:
- 内存取证中时间戳通常是UTC时间
- 北京时间需要+8小时
- 在Magnet中可直接设置时区
-
多工具验证:
- 同时使用Volatility和Magnet进行交叉验证
- 不同工具可能提供互补信息
-
敏感信息查找:
- 检查剪贴板、临时文件、浏览器缓存
- 关注常见敏感文件名(如pass.txt)
-
用户账户分析:
- 对比系统默认账户与新增账户
- 检查账户权限变化
-
网络连接分析:
- 关注异常端口连接
- 记录连接建立和持续时间
4. 实战流程建议
- 首先确定内存镜像的操作系统profile
- 扫描网络连接,查找异常连接(特别是3389端口)
- 检查进程列表,识别可疑进程
- 分析命令行历史,查找攻击痕迹
- 提取敏感文件内容(密码文件等)
- 检查用户账户变更情况
- 提取密码哈希信息
- 综合所有证据,重建攻击时间线
5. 常见问题解决
-
Profile识别错误:
- 使用
imageinfo命令确认正确的profile - 错误profile会导致插件无法正常工作
- 使用
-
时间戳混乱:
- 明确工具显示的时间是UTC还是本地时间
- 必要时进行时区转换
-
数据提取不完整:
- 尝试多种插件获取同一信息
- 例如用户信息可通过
hivelist和hashdump等多种方式获取
-
工具兼容性问题:
- 某些Volatility插件需要Python 2环境
- 新版本工具可能不兼容旧内存格式
通过以上方法和技巧,可以系统性地分析内存取证挑战赛中的各类问题,有效提取关键数字证据。