登录横幅脚本劫持是什么
Ubuntu 系每次登录会执行 /etc/update-motd.d 下的脚本刷新登录横幅,调用者是 PAM 的 pam_motd 模块。往这个目录里塞一个脚本,就等于获得了一个「登录即触发」的执行点。其他发行版没有这套机制,但仍要检查 /etc/motd 与 PAM 配置。
基本信息
| 目录 | /etc/update-motd.d/ |
|---|---|
| 触发方式 | 登录时由 pam_motd 调用执行 |
| 检查要点 | 目录内容与脚本可执行位 |
| 判据 | 脚本内出现网络访问与命令执行 |
| 平台差异 | 主要存在于 Debian/Ubuntu 家族 |
| 相关配置 | /etc/pam.d/ 中对 pam_motd 的引用 |
典型使用场景
- 排查登录触发的持久化位置
- 确认登录横幅刷新脚本是否被改动
- 加固巡检:核对目录内容与包归属
- 排查「登录后出现异常外连」的现象
- 与 profile.d、ssh rc 一起做登录触发点清点
- 处置后验证脚本已清理干净
- 演练中练习检查该目录
- 横向排查同批主机上的同名脚本
检查 motd 脚本
检查 motd 脚本
ls -la /etc/update-motd.d/ 2>/dev/null # 目录内容与可执行位
grep -rEn 'curl|wget|/dev/tcp|base64' /etc/update-motd.d/ 2>/dev/null | head
cat /etc/update-motd.d/* 2>/dev/null | head -n 60 # 浏览脚本内容
rpm -qf /etc/update-motd.d/00-header 2>/dev/null # 包归属(RHEL 系通常无此目录)
grep -rn 'pam_motd' /etc/pam.d/ 2>/dev/null | head # 谁在调用它检查点与判读
| 检查点 | 查看内容 | 判读 |
|---|---|---|
| 目录清单 | 脚本名与编号 | 新出现的编号靠后的脚本最可疑 |
| 可执行位 | ls -la 输出 | 来源不明的脚本不应有可执行位 |
| 脚本内容 | grep 网络关键字 | 出现下载或写文件即需解释 |
| 包归属 | rpm -qf / dpkg -S | 查不到归属即来源不明 |
| pam.d 引用 | grep pam_motd | 确认调用链真实存在 |
该机制主要存在于 Debian/Ubuntu 家族:其他发行版直接检查 /etc/motd 与 PAM 配置,不要照搬这个目录的结论。
不要把发行版自带的 MOTD 脚本当成后门:先用包查询确认归属,再看内容与 mtime 定性。
脚本编号通常有前缀序号(如 00-header、10-help-text):攻击者常挑序号靠后的空位插入,检查时按序号顺序过一遍最省事。
同类登录触发点要一起查:profile.d、bashrc、ssh rc、motd 脚本四处的检查方法不同,但排查动作要放在同一轮里做完,避免反复登录破坏现场。