kyrre/deathcon-2025-memory-analysis
GitHub: kyrre/deathcon-2025-memory-analysis
这是一门基于现代 Python 数据生态构建自定义内存分析工具的实战教学,聚焦于提升内存取证与事件响应效率。
Stars: 11 | Forks: 1
# 使用现代 Python 数据生态系统构建自定义内存分析工具
作者:[Kyrre Wahl Kongsgård](https://www.linkedin.com/in/kyrrewk/) 和 [Anja Olsen](https://www.linkedin.com/in/anja-olsen-5a2643b9/)。
本研讨会使用的攻击场景和内存转储由 [Øyvind Brusethaug](https://www.linkedin.com/in/%C3%B8yvind-brusethaug-2b123339/) 创建。
## 概述
本研讨会将内存取证重新定义为数据分析问题,并展示如何使用现代 Python 数据生态系统(包括 DuckDB、marimo 笔记本和 Volatility 框架)构建交互式工具、可视化和数据应用来处理 Volatility 插件的输出。
我们演示了如何将 marimo 和 DuckDB 结合,创建一个基于笔记本的环境,其中 Volatility 插件的输出被视为可以查询、转换和增强的表格。我们还将探讨 marimo 的响应式执行模型和对自定义 UI 元素的支持,如何实现强大的分析工具,例如交互式进程树可视化。
## 你将学到的内容
- 使用 marimo 的响应式笔记本进行交互式内存取证
- 使用 DuckDB 和 Ibis 数据帧 API 查询 Volatility 输出
- 构建带有交互式 UI 组件的自定义仪表板
- 使用 Altair 创建可视化
- 跨多个 Volatility 插件关联数据
- 使用 marimo 的 AI 功能辅助分析
### 视频
观看 [配套视频播放列表](https://www.youtube.com/watch?v=GjLrWeB5s9M&list=PLXJPlQrY3W8YdU9--Ogz7TaP5qFLRVqt-)。
# 设置
```
# 克隆仓库
git clone
cd deathcon-workshop
# 安装 uv 包管理器(如果尚未安装)
# 参见:https://docs.astral.sh/uv/getting-started/installation/
# 创建虚拟环境并安装依赖项
# 在 Ubuntu/Debian 上,您可能需要:sudo apt install build-essential python3-dev
# 在基于 RPM 的系统(Fedora、RHEL)上:sudo dnf install gcc-c++ python3-devel
uv sync
# 启动笔记本
uv run marimo edit .
```
本研讨会包含 6 个笔记本(1-6)。请从 `1_getting_started_with_marimo.py` 开始,按顺序完成。
内存转储可以从以下位置下载:[CLIENT-02.dmp](https://datasets.marimo.app/deathcon/CLIENT-02.dmp)(感谢 marimo 提供托管!)。
## 笔记本设置
默认情况下,marimo 笔记本会在启动时自动执行所有单元格。为了教学目的并确保所有参与者行为一致,我们在项目的 `pyproject.toml` 中配置了 `on_cell_change = "autorun"`,位于 `[tool.marimo.runtime]` 下。
你可以通过从 `pyproject.toml` 中移除 `on_cell_change = "autorun"` 行来更改此行为。移除后,你可以通过笔记本界面中的“启动时”设置来控制自动运行行为。
我们还将主题强制设置为浅色模式(`theme = "light"`),因为研讨会笔记本中的自定义可视化效果和颜色是专门为浅色模式设计的。你可以切换到深色模式,但请注意,研讨会可视化效果可能无法正确显示,除非使用浅色主题。
有关更多配置选项,请参阅 [marimo 配置文档](https://docs.marimo.io/guides/configuration/#user-configuration)。请注意,`pyproject.toml` 中的项目设置会覆盖 `~/.marimo.toml` 中的全局设置。
## 运行 Volatility 插件
将 Windows 内存转储文件(`CLIENT-02.dmp`)放置在项目根目录中。
我们使用 `uv run vol` 运行 Volatility,因为 Volatility 3 已作为项目依赖项包含在内。这已在 macOS 和 Windows 上测试通过。
**PowerShell 用户:** PowerShell 中的 `>` 重定向操作符会将输出视为文本而非二进制,从而破坏 Parquet 文件。请在重定向 Volatility 输出时使用 `cmd.exe`、Git Bash 或 WSL。
首次运行 Volatility 时,创建一个配置文件以保存符号表信息:
```
uv run vol -f CLIENT-02.dmp --write-config windows.pslist
```
这将生成一个 `config.json` 文件。后续运行可以使用此配置文件以加快执行速度:
```
mkdir -p volatility_plugin_output
uv run vol --config config.json -r parquet windows.pslist > volatility_plugin_output/windows.pslist.PsList.parquet
```
`-r parquet` 标志将以 Parquet 格式输出结果,供笔记本使用。笔记本将在你完成研讨会的过程中指导你运行哪些插件。标签:AI 辅助分析, Altair, AMSI绕过, DEATHCon, DuckDB, Ibis, JARM, marimo, Notebook, Python 数据生态, Ruby on Rails, SecList, SQL 查询, Volatility 3, 交互式仪表板, 内存分析, 内存取证, 内存取证实践, 内存取证工具, 内存转储, 响应分析, 威胁检测, 安全培训, 工作坊, 数字取证, 数据关联, 数据工程, 自动化脚本, 自定义工具, 进程树, 逆向工具, 黄金证书