
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
本仓库提供基于Alpine Linux的即用型Docker镜像,内置Volatility框架,包括最新的Volatility 3。更多信息请查看官方https://github.com/volatilityfoundation/volatility/%E5%92%8Chttps://github.com/volatilityfoundation/volatility3/%E4%BB%93%E5%BA%93%E3%80%82
所有镜像均可在Docker Hub直接获取:
https://hub.docker.com/r/sk4la/volatility3 https://hub.docker.com/r/sk4la/volatility https://hub.docker.com/r/sk4la/dwarf2json
顺便一提,https://github.com/volatilityfoundation/volatility3/pull/92
:warning: 由于许多社区插件是一次性概念验证贡献或由各自作者独立维护,此镜像仅包含https://github.com/volatilityfoundation/community3%E4%BB%93%E5%BA%93%E6%98%8E%E7%A1%AE%E5%BC%95%E7%94%A8%E7%9A%84%E4%BB%A3%E7%A0%81%EF%BC%8C%E4%B8%8D%E4%B8%80%E5%AE%9A%E5%8C%85%E5%90%AB%E6%89%80%E5%BC%95%E7%94%A8%E6%8F%92%E4%BB%B6%E7%9A%84%E5%AE%9E%E9%99%85%E4%BB%A3%E7%A0%81%E3%80%82
latest和stable标签以及具体版本号(如2.26.2)均指向https://github.com/volatilityfoundation/volatility3/releases%E3%80%82%E4%B8%BA%E8%B7%9F%E8%B8%AAVolatility 3的开发周期,添加了edge标签,指向master分支的当前状态,可能不稳定。高级用户可自行使用此标签。sk4la/volatility3和sk4la/volatility3:edge镜像每周构建,以包含最新符号表。
https://hub.docker.com/r/sk4la/volatility
https://hub.docker.com/r/sk4la/dwarf2json
如发现缺少内容或希望添加其他功能,请告知。
构建和/或使用这些镜像需要在系统上安装Docker。有关安装和使用Docker工具链的详细信息,请参考官方文档。
由于这些镜像通过GitHub Actions构建,构建步骤未在此处详细记录。如希望本地构建,请直接参考https://github.com/sk4la/volatility3-docker/tree/master/.github/workflows%E3%80%82
:warning: 请注意,Volatility 3的https://github.com/volatilityfoundation/volatility3#symbol-tables%E7%9B%B4%E6%8E%A5%E5%B5%8C%E5%85%A5%60sk4la/volatility3%60%E9%95%9C%E5%83%8F%EF%BC%8C%E5%AF%BC%E8%87%B4%E9%95%9C%E5%83%8F%E4%BD%93%E7%A7%AF%E8%BE%83%E5%A4%A7%E3%80%82%E6%9C%89%E5%85%B3%E8%AF%A6%E6%83%85%EF%BC%8C%E8%AF%B7%E6%9F%A5%E7%9C%8B%E6%88%91%E5%9C%A8%E5%AE%98%E6%96%B9%E4%BB%93%E5%BA%93%E7%9A%84https://github.com/volatilityfoundation/volatility3/pull/92%E3%80%82
拉取(或构建)镜像后,可使用docker run命令在新容器中实例化,例如:
shdocker run -v $PWD:/workspace sk4la/volatility3
更完整的示例:
shdocker run -v $PWD:/workspace sk4la/volatility3 -f /workspace/volatile.mem windows.pslist
如需使用Volatility shell(即volshell)或其他入口点,实例化容器时使用--entrypoint选项:
shdocker run -it -v $PWD:/workspace --entrypoint volshell sk4la/volatility3 -f /workspace/volatile.mem
需要
--interactive和--tty选项(或其短格式-i和-t)以保持终端打开,以便与容器化应用交互。
请注意,除非使用卷或绑定挂载(如示例中使用--volume选项),否则所有生成的文件都将丢失。
由于确定正确的内存布局通常需要一些时间,以交互方式运行Volatility(即使用
--interactive标志实例化容器)是首选,尽管也可通过卷检索配置文件。有关实际用例,请参见示例。
这些镜像可交互使用,也可作为一次性解决方案处理特定问题。
以下是使用Volatility 3(具体为sk4la/volatility3 Docker镜像)从易失性内存镜像中提取进程可执行文件的实际示例。
:bulb: 此处特意使用长选项。有关Docker CLI的更多详情,请参考官方文档。
首先,基于sk4la/volatility3镜像实例化新容器:
shdocker container run --entrypoint ash --interactive --tty --volume "$PWD:/workspace" --workdir /workspace sk4la/volatility3
然后,在新创建的容器内,使用Volatility 3解析内存镜像并将配置写入磁盘:
shvolatility3 --file volatile.mem --log volatile.mem.log --renderer pretty --save-config volatile.mem.json windows.info
配置文件volatile.mem.json可作为后续运行的基础,使用--config标志,使Volatility无需再次扫描镜像以查找正确结构。
接下来,使用先前生成的配置再次执行Volatility 3,提取进程列表:
shvolatility3 --config volatile.mem.json --file volatile.mem --log volatile.mem.log --renderer pretty windows.pslist
为便于后处理,通常将结果转储为CSV或JSON格式:
shmkdir volatile.mem.results volatility3 --config volatile.mem.json --file volatile.mem --log volatile.mem.log --quiet --renderer csv windows.pslist | tee -a volatile.mem.results/pslist.csv
文件~/workspace/volatile.mem.results/pslist.csv应包含windows.pslist.PsList插件的CSV格式结果。
要转储进程镜像,首先创建一个目录用于存放所有后续提取内容,然后再次执行Volatility,使用相同的windows.pslist.PsList插件,但添加--dump标志:
shmkdir volatile.mem.dat volatility3 --config volatile.mem.json --file volatile.mem --log volatile.mem.log --output-dir volatile.mem.dat --renderer pretty windows.pslist --dump --pid 2700
二进制样本应位于~/workspace/volatile.mem.dat目录中,可供***师分析。
实际上,所有“转储器”插件(即能够从内存镜像中转储原始内容的Volatility插件)都应支持--output-dir选项,这在分析工作流中非常方便。
Volatility虽详细但错误提示不一定精确。当出现错误时,应提高详细级别(例如使用
-vvv)以获取最大详细信息,如有必要,可在https://github.com/volatilityfoundation/volatility3/issues%E6%8F%90%E4%BA%A4%E9%97%AE%E9%A2%98%E3%80%82
pdbconv为特定NT内核构建生成ISF文件这非常简单,只需使用pdbconv入口点实例化基于sk4la/volatility3镜像的新容器:
shdocker container run --entrypoint pdbconv --volume "$PWD:/workspace" --workdir /workspace sk4la/volatility3 --guid ce7ffb00c20b87500211456b3e905c471 --keep --pattern ntkrnlmp.pdb
这将在当前工作目录中生成中间符号文件(ISF) ce7ffb00c20b87500211456b3e905c47-1.json.xz,提示Volatility如何处理此特定构建以检索信息。
注意,这将从官方Microsoft Internet Symbol Server获取正确的PDB文件,因此此方法在隔离环境中无法使用。有关如何从自己的二进制文件中检索GUID以及在隔离环境中使用Volatility 3的更多详情,请参见https://github.com/JPCERTCC/Windows-Symbol-Tables%E5%92%8C%E5%8D%9A%E5%AE%A2%E6%96%87%E7%AB%A0%E3%80%82
ISF文件必须放置在主符号目录(默认位于$INSTALL_PREFIX/lib/volatility3/volatility3/symbols/windows)或当前工作目录的symbols子目录中(例如./symbols/windows/ntkrnlmp.pdb/ce7ffb00c20b87500211456b3e905c47-1.json.xz)。也可结合使用--symbol-dirs选项和Docker的--volume选项,向Volatility提供新创建的ISF文件。
本节说明如何在隔离(或断开连接)环境中使用Docker镜像。这在隔离取证实验室中分析易失性内存样本时非常有用。
:bulb: 此过程并非特定于此仓库中的Docker镜像,可用于任何Docker镜像。
首先,在本地获取镜像(此处以sk4la/volatility3为例):
shdocker image pull sk4la/volatility3
然后,将其导出为压缩tar存档:
shdocker image save sk4la/volatility3 | gzip --best --stdout > sk4la-volatility3-latest.tar.gz
压缩(此处使用GNU
gzip)不是必需的,但对于较大的镜像通常建议使用,因为它通常可以节省大量空间,尽管会牺牲速度。
生成的存档应在当前目录中显示为sk4la-volatility3-latest.tar.gz。
然后可将此压缩镜像传输到隔离工作站(例如使用USB闪存驱动器),并按如下方式加载:
shgzip --decompress --stdout sk4la-volatility3-latest.tar.gz | docker image load
然后镜像应准备就绪。可通过运行以下命令检查系统上镜像的存在:
shdocker image list
如果认为原始镜像缺少有用内容,可通过https://github.com/sk4la/volatility3-docker/issues%E6%8F%90%E5%87%BA%E5%BB%BA%E8%AE%AE%EF%BC%8C%E6%88%96%E8%87%AA%E8%A1%8C%E5%9F%BA%E4%BA%8E%E5%9F%BA%E7%A1%80%E9%95%9C%E5%83%8F%E6%9E%84%E5%BB%BA%E4%BB%A5%E9%80%82%E5%BA%94%E9%9C%80%E6%B1%82%E3%80%82
为此,只需创建一个基于此仓库中某个镜像的新Dockerfile,例如sk4la/volatility3:
dockerFROM sk4la/volatility3 USER root RUN apk add $STUFF USER unprivileged
默认情况下,此仓库中提供的所有镜像均不以
root用户运行,而是以unprivileged用户运行。对于需要超级用户权限的操作,需临时切换用户,如示例所示。
然后,通过执行docker image build --tag volatility3-overloaded .命令构建镜像。新创建的Docker镜像应出现在本地仓库中。
如需了解设置方式,可查看原始
Dockerfile。
sk4la/volatility镜像包含来自官方https://github.com/volatilityfoundation/community%E4%BB%93%E5%BA%93%E7%9A%84%E6%89%80%E6%9C%89%E7%A4%BE%E5%8C%BA%E6%8F%92%E4%BB%B6%E3%80%82%E9%BB%98%E8%AE%A4%E6%83%85%E5%86%B5%E4%B8%8B%EF%BC%8C%E8%BF%99%E4%BA%9B%E6%8F%92%E4%BB%B6%E5%AD%98%E5%82%A8%E5%9C%A8%60/usr/local/share/volatility/plugins/community%60%E3%80%82
可使用
--help或--info标志列出所有包含的插件(例如podman run sk4la/volatility:edge --plugins=/usr/local/share/volatility/plugins --info)。加载顺序不确定,有些插件因缺少依赖项(有些不再在PyPI上)或设计不适合分发而无法加载,因此可能需要多次运行才能加载所需插件。建议单独使用每个插件,以避免加载功能异常的插件。
要加载特定社区插件(以JPCERT的APT17插件为例):
shdocker container run sk4la/volatility:edge --plugins /usr/local/share/volatility/plugins/community/JPCERT apt17scan --help
请注意,许多为Volatility 2开发的插件已多年未维护,可能无法正常工作。
sk4la/volatility3和sk4la/volatility3:edge镜像包含来自官方https://github.com/volatilityfoundation/community3%E4%BB%93%E5%BA%93%E7%9A%84%E6%89%80%E6%9C%89%E7%A4%BE%E5%8C%BA%E6%8F%92%E4%BB%B6%E3%80%82%E9%BB%98%E8%AE%A4%E6%83%85%E5%86%B5%E4%B8%8B%EF%BC%8C%E8%BF%99%E4%BA%9B%E6%8F%92%E4%BB%B6%E5%AD%98%E5%82%A8%E5%9C%A8%60/usr/local/share/volatility3/plugins/community3%60%E3%80%82
可使用
--help标志列出所有包含的插件(例如podman run sk4la/volatility3:edge --plugin-dirs=/usr/local/share/volatility3/plugins --help)。请注意,许多插件已长时间未维护,可能无法正常工作。建议单独使用每个插件,以避免加载功能异常的插件。
要加载特定社区插件(以Multi YARA插件为例):
shdocker container run sk4la/volatility3:edge --plugin-dirs /usr/local/share/volatility3/plugins/community3/Silva_Multi_Yara/ multiyara --help
如遇到与这些Docker镜像相关的问题或想提出新功能建议,请https://github.com/sk4la/volatility3-docker/issues%E3%80%82%E4%B9%9F%E6%AC%A2%E8%BF%8Ehttps://github.com/sk4la/volatility3-docker/pulls%E3%80%82
本软件根据Volatility软件许可证授权。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务