首页/安全/取证与溯源速查/sudo 命令与会话字段解析
Linux 取证135 条

sudo 命令与会话字段解析

sudo 日志行包含 TTY、PWD、目标用户与完整命令,是还原“谁在哪个终端做了什么”的一手材料。

取证与溯源速查安全更新于 2026-10-13

sudo 日志行怎么读

sudo 成功提权后会写出一行结构固定的日志,例如 alice : TTY=pts/0 ; PWD=/home/alice ; USER=root ; COMMAND=/bin/bash,执行者、所在终端、当前目录、目标用户与目标程序一目了然,是还原“谁在哪个终端做了什么”的一手材料。它记录的是 sudo 启动的那个程序本身,程序内部再执行的子命令需要 auditd、shell 历史或 I/O 回放来补全。日志通常落在 /var/log/auth.log(Debian 系)或 /var/log/secure(RHEL 系),使用 journald 的系统要从 journal 里检索。

基本信息

适用平台安装 sudo 的 Linux/Unix 发行版(RHEL/CentOS、Ubuntu/Debian 等)
日志位置Debian 系 /var/log/auth.log;RHEL 系 /var/log/secure;journald 系统用 journalctl -t sudo
典型字段TTY、PWD、USER(目标用户)、COMMAND(目标程序)
失败记录authentication failure 与 incorrect password attempts 行
进阶数据启用 I/O 日志后 /var/log/sudo-io 下有回放数据,可用 sudoreplay 查看

典型使用场景

  • 还原攻击者提权后执行的第一条命令,定位落脚点与工具路径
  • 区分人工操作与脚本操作:TTY 为 pts 通常是人,缺 TTY 或来自服务账号多为自动化
  • 核查目标用户为 root 且命令是交互式 shell 的记录,这类记录经常是提权成功的直接证据
  • 统计连续失败的提权尝试,判断是否存在口令爆破或权限摸索
  • 把提权时刻与账号登录时段对照,识别“未登录却出现 sudo”的异常

检索与解析

检索与解析
# 近期全部 sudo 命令记录
grep 'COMMAND=' /var/log/auth.log | tail -20
# 只看提权为 root 且非 /usr/bin 下标准工具的命令
grep 'USER=root ; COMMAND=' /var/log/auth.log | grep -v 'COMMAND=/usr/bin/' | tail
# 提取执行者与命令两列,便于聚合统计
sed -n 's/.*\(sudo\[[0-9]*\]\): //p' /var/log/auth.log | awk -F' : ' '{print $1, $NF}'
# 失败与异常尝试
journalctl -t sudo --since '24 hours ago' | grep -Ei 'incorrect password|authentication failure|not in sudoers'
# 有 I/O 日志时按会话回放(需在 sudoers 中启用 log_input/log_output)
sudoreplay -l | head; sudoreplay <会话ID>

日志字段读法

字段含义判读要点
执行者发起 sudo 的账号服务账号出现交互命令是重点线索
TTY所在终端pts/0 等表示交互会话;无 TTY 说明来自脚本或服务
PWD执行时的工作目录位于临时目录或用户家目录时需结合命令判断
USER目标用户USER=root 表示提权到 root
COMMANDsudo 启动的程序子命令需审计或回放补全,不能直接当作全部行为
sudo 与 su 会话可以嵌套:先用 su 切换账号再执行 sudo,日志里会同时出现两条记录,必须按时间顺序串联才看得出完整链路。
I/O 日志(回放文件)留存取决于配置与容量,攻击者也可能关闭相关选项;发现 sudoers 中 log_input/log_output 被改为关闭时,这本身就是值得记录的变更。

易错点

  • 把 COMMAND 当成完整行为:sudo 只记录它启动的程序,例如 COMMAND=/bin/bash 之后的所有子命令都不在其中,需要用审计记录补齐
  • 检索时把 session opened/closed 之类的行混进来:这些噪声行量大且无命令信息,先过滤再统计可避免误判
  • 忽略 TTY 字段:缺失 TTY 的命令说明来自脚本或服务,与人工操作的风险含义完全不同
  • 跨发行版用错日志路径:RHEL 系的记录在 /var/log/secure,按 auth.log 检索会得到空结果并被误读为没有提权
  • 现场直接清空认证日志:日志是提权链路的核心证据,先导出副本再做处置,删除后无法恢复

数据来源与参考

  • sudo 官方文档(sudoers 日志格式)
  • man 8 sudo
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌