Docker容器内存Dump及内存中指定数据读取技术求助
Docker容器内存Dump及敏感数据提取方案
宿主机端操作步骤
- 获取目标容器的宿主机PID:
docker inspect --format '{{.State.Pid}}' <容器名称/ID> - 执行内存Dump(需root权限):
推荐使用gcore生成完整core文件,兼容性更好:
若系统无gcore -o container_memory_dump <容器宿主机PID>gcore,可通过/proc文件系统直接读取(需确保进程处于运行状态):dd if=/proc/<容器宿主机PID>/mem of=container_memory_dump bs=1M
容器内部操作步骤
- 进入容器交互式终端:
docker exec -it <容器名称/ID> bash - 安装内存Dump工具(以Debian/Ubuntu镜像为例,Alpine替换为
apk add):apt update && apt install -y gdb - 获取目标Python进程PID(假设
run.py是运行的脚本):ps aux | grep run.py | grep -v grep - 执行内存Dump:
gcore -o container_memory_dump <Python进程PID>
敏感数据提取方法
提取环境变量SECRET_ONE
- 快速搜索:直接用
strings工具扫描Dump文件,匹配环境变量关键字:strings container_memory_dump | grep SECRET_ONE - 精准查看:用gdb加载Dump文件(需对应Python版本):
在gdb交互模式下执行:gdb python container_memory_dumpinfo proc environ
提取run.py中my_array的值
- 特征值搜索:如果
my_array包含可识别的字符串元素,直接用strings扫描:strings container_memory_dump | grep "<数组元素特征字符串>" - Python内存结构分析:使用gdb的Python扩展工具(需确保gdb支持Python调试),在gdb交互模式下执行:
或通过py-listpy-bt回溯Python调用栈,定位变量所在上下文后查看具体值。 - 专业工具提取:使用Volatility内存分析框架,加载对应Python进程的profile,通过插件直接提取Python变量:
# Volatility3示例 python3 vol.py -f container_memory_dump linux.python.PythonScanner
内容的提问来源于stack exchange,提问作者David Crook
相关产品推荐
相关产品推荐

