Linux Shell取证新利器:深入解析Atuin数据库

SANS ISC发布Linux Shell取证分析,重点解析Atuin工具数据库结构、WAL文件、软删除机制及同步功能。了解如何在SQLite中恢复命令历史、定位关键时间点、识别反取证行为,提升Linux系统安全调查能力。

🔍 Medium 其他

本文基于SANS ISC技术分析,探讨Atuin这一Shell历史记录增强工具在Linux取证中的双重价值。攻击者可能利用Atuin的同步和过滤功能隐藏痕迹,但调查人员可通过SQLite数据库、WAL文件和软删除机制重建攻击活动。

来源:SANS ISC | 2026-08-07 | 原文链接

🔍 关键发现

  • Atuin将命令历史存入SQLite数据库,包含时间戳、工作目录、退出码、执行时长、会话ID等丰富上下文,远优于传统.bash_history。
  • 数据库位置遵循XDG规范,主文件为~/.local/share/atuin/history.db,但WAL文件(history.db-wal)包含未提交记录,是取证关键。
  • Atuin支持软删除,deleted_at字段不会立即物理清除数据,可通过SQL查询恢复已删除的命令记录。
  • 启用同步后,其他机器上的命令历史会拉取到本地数据库,row存在不代表命令在本机执行,需要交叉验证hostname。

⚔️ 攻击链分析

攻击者可能利用Atuin的history_filter配置阻止敏感命令被记录,或通过自建服务器获取加密历史。取证人员需检查配置文件中的过滤规则,并尝试使用E2E密钥从同步服务器拉取历史数据以还原完整攻击链。

🚩 失陷指标 (IOC)

  • ~/.local/share/atuin/history.db
  • ~/.local/share/atuin/history.db-wal
  • ~/.local/share/atuin/key
  • ~/.local/share/atuin/session
  • ~/.config/atuin/config.toml

🛡️ 缓解建议

  • ✅ 取证时优先读取atun配置文件,确认自定义路径和过滤规则,避免遗漏非默认位置的数据。
  • ✅ 使用只读模式打开SQLite数据库,避免破坏WAL和未提交记录。
  • ✅ 检查deleted_at字段,利用SQL条件(WHERE deleted_at IS NOT NULL)恢复软删除的痕迹。
  • ✅ 对WAL文件进行单独归档分析,提取崩溃或未正常关闭时的残留数据。
  • ✅ 交叉验证bash_history和Atuin记录,识别攻击者是否通过Atuin同步或过滤工具进行反取证。

涉及漏洞:[]


⚠️ 本文仅供安全研究与学习,IOC 信息请勿用于非法目的。

🤖 常见问题解答(FAQ)

❓ Atuin数据库默认存放位置在哪?

根据XDG规范,通常位于用户家目录的~/.local/share/atuin/history.db,但实际路径可能被$ATUIN_CONFIG_DIR或config.toml中的配置覆盖,需先检查配置文件。

❓ 如何恢复Atuin中已删除的命令历史?

Atuin采用软删除机制,使用SQL查询history表中deleted_at IS NOT NULL的记录即可恢复。若记录已被物理清除,则需从WAL文件或未分配页中雕刻提取。

❓ Atuin同步功能对取证有什么影响?

同步功能会将其他机器上的命令历史拉取到本地,导致本地数据库出现非本机执行记录。取证时应结合hostname和session字段判断,并注意同步服务器可能是额外证据源。

[!] CONTACT_CHANNELS

如需商务合作、技术咨询或漏洞反馈,请通过以下离岸节点联系作者。

> PING_AUTHOR (@A1RedTeam)