首页/安全/应急响应速查/udev 规则 RUN 后门排查

udev 规则 RUN 后门排查

自定义 udev 规则可在设备事件(插拔、网络变化)时以 root 执行 RUN 命令;不依赖 cron 也能反复触发,是 Linux 上较隐蔽的持久化点。

应急响应速查安全更新于 2026-10-13

udev 规则为什么能被用来持久化

udev 规则可以在设备事件(插拔、网络变化、模块加载)发生时以 root 权限执行 RUN 命令,不依赖 cron 也能反复触发,因此是 Linux 上比较隐蔽的持久化点。/etc/udev/rules.d 下的自定义规则优先级高于 /lib 与 /usr/lib 下的规则。

基本信息

规则目录/etc/udev/rules.d 优先,其次 /lib 与 /usr/lib/udev/rules.d
执行点RUN+= 赋值,内联 shell 需自带引号
触发条件匹配的设备事件发生时执行
生效方式udevadm control --reload-rules 后处理后续事件
其他执行键PROGRAM=、IMPORT{program}
排查禁忌不要用 udevadm trigger 试跑可疑规则

典型使用场景

  • 排查「没有 cron、没有 systemd 单元却定期有命令执行」的持久化
  • 清理攻击者留下的规则文件
  • 加固巡检,建立规则文件基线
  • 分析设备事件与异常进程启动之间的关联
  • 与 init、cron、systemd 一起做完整持久化清点
  • 处置后验证恶意规则不再触发
  • 容器宿主机排查:容器相关设备事件容易被规则利用

检查规则中的执行键与文件时间

检查规则中的执行键与文件时间
grep -rnH 'RUN' /etc/udev/rules.d /lib/udev/rules.d /usr/lib/udev/rules.d 2>/dev/null | grep -v '#'
grep -rnH 'IMPORT{program}\|PROGRAM=' /etc/udev/rules.d 2>/dev/null | head     # 其他可执行键
ls -la --time-style=long-iso /etc/udev/rules.d/             # 文件清单与时间
stat -c '%y %n' /etc/udev/rules.d/*.rules 2>/dev/null        # 逐个看 mtime
rpm -qf /etc/udev/rules.d/60-xyz.rules 2>/dev/null || dpkg -S /etc/udev/rules.d/60-xyz.rules 2>/dev/null

规则键读法

键含义排查价值
RUN+=事件匹配时执行命令最直接的执行点
PROGRAM=执行程序并按返回码匹配同样可执行外部程序
IMPORT{program}执行程序并把输出导入属性最容易被忽略的执行点
ACTION / MATCH触发条件定义判断哪些事件会触发规则
ATTRS / KERNEL设备匹配条件决定规则被触发的频率
规则文件常被命名得像系统自带(例如 60-something.rules):先看 mtime,再用包管理查询归属,归属不明的那几个才需要逐行读内容。
排查时不要执行 udevadm trigger 或对可疑规则做试跑:那会真实触发设备事件,可能让后门当场执行。
删除恶意规则后要执行 udevadm control --reload-rules:不重新加载的话,udev 仍按内存里的旧规则处理后续事件,看起来像是「删了没用」。

易错点

  • grep 只盯 RUN:IMPORT{program}、PROGRAM 等键同样可以执行外部程序
  • 忽略文件 mtime:长期存在但最近才改动的小规则文件最可疑
  • 排查中触发设备事件:试跑可疑规则等于主动把后门启动一次
  • 删掉规则不做重新加载:后续事件仍按内存里的旧规则执行,看起来没生效
  • 只看 /etc 下的规则:/lib 与 /usr/lib 下的规则同样会被加载,范围要覆盖三处
  • 只删文件不留档:先复制规则内容并记录 mtime,再删除,否则丢失攻击者触发条件这一证据

数据来源与参考

  • man 7 udev(RUN 键说明)
  • man 8 udevadm(control --reload-rules)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌