使用 Rekall 提取内存工件
说明
使用 Rekall 分析内存转储,查找入侵迹象,包括进程注入、隐藏进程和可疑网络连接。
from rekall import session
from rekall import plugins
# 使用内存镜像创建 Rekall 会话
s = session.Session(
filename="/path/to/memory.raw",
autodetect=["rsds"],
profile_path=["https://github.com/google/rekall-profiles/raw/master"]
)
# 列出进程
for proc in s.plugins.pslist():
print(proc)
# 检测注入代码
for result in s.plugins.malfind():
print(result)
关键分析步骤:
- 加载内存镜像并自动检测配置文件
- 运行 pslist 和 psscan 查找隐藏进程
- 使用 malfind 检测进程 VAD 中注入/空洞化的代码
- 使用 netscan 检查网络连接
- 使用 dlllist/modules 提取可疑 DLL 和驱动程序
示例
from rekall import session
s = session.Session(filename="memory.raw")
# 比较 pslist 与 psscan,查找隐藏进程
pslist_pids = set(p.pid for p in s.plugins.pslist())
psscan_pids = set(p.pid for p in s.plugins.psscan())
hidden = psscan_pids - pslist_pids
print(f"Hidden PIDs: {hidden}")