实验一:SSH 密钥后门(authorized_keys)
原理
- SSH 公钥认证依赖:服务端
authorized_keys中的公钥来验证客户端的签名挑战。 - 一旦某公钥被加入
authorized_keys,对应私钥就可用于登录,与账户密码无关(改密码不影响)。 - 文件位置与权限:
~/.ssh/authorized_keys(权限与属主很重要) - 日志痕迹:
Accepted publickey(auth 日志 / journal) - 防守重点:监控 authorized_keys 变更、限制 SSH 配置、集中密钥管理
实验二:Cron 定时任务后门(计划任务触发)
原理
- cron 守护进程会按周期读取用户/系统的任务定义,到点执行命令。
- 因为它是系统合法功能,所以“自动执行”很稳定,重启后仍会生效(取决于任务类型与配置)。
关键知识点
- 用户级 vs 系统级:
- 用户级:每个用户一份任务(权限低但隐蔽)
- 系统级:
/etc/crontab、/etc/cron.d/、/etc/cron.*(可指定用户运行,常见 root)
- 典型触发:每分钟、每小时、@reboot(仅开机时触发)
- 防守重点:枚举所有 cron 来源、审计任务内容、关联网络外联与进程
实验三:Shell 配置文件后门(.bashrc / .profile / PROMPT_COMMAND)
原理
- Shell 启动时会加载一系列配置脚本(登录 shell 与交互 shell 路径不同),因此把恶意逻辑塞进去会在用户登录/开新终端时自动执行。
- 特别是
PROMPT_COMMAND:每次显示提示符前执行,更“贴近交互”。 - 加载顺序(概念):系统级 profile → 用户级 profile/bash_profile → bashrc(视登录/交互类型而定)
- 常见隐蔽点:条件执行(仅交互时)、环境变量触发、别名/函数劫持(如 sudo/su/ssh)
- 防守重点:基线对比(/etc/skel)、内容审计(异常 eval/base64/外联)、检查 alias 与 PROMPT_COMMAND
实验四:Systemd 服务/Timer 后门(启动与服务管理)
原理
- systemd 是现代 Linux 的服务管理器:可以设置服务开机自启、失败重启、依赖网络、日志进 journal。
- 通过服务 unit 或 timer 可以实现“看起来像正常系统服务”的长期驻留。
关键点
- 位置与优先级:
- 系统级:
/etc/systemd/system/(管理员自定义,优先级高)、/lib/systemd/system/(发行版默认) - 用户级:
~/.config/systemd/user/(不需要 root,但受用户会话影响)
- 系统级:
- Timer 相当于“更现代的 cron”
- 防守重点:列出 enabled unit/timer、检查最近新增/修改的 unit 文件、
systemctl cat看真实内容、journal 关联行为
实验五:SUID 后门(权限提升入口)
原理
- SUID 位使程序运行时以“文件所有者”的权限执行;如果所有者是 root,就可能让普通用户获得 root 能力。
- 核心在于 Linux 权限检查主要看 EUID(有效用户) 而非 UID(真实用户)。
关键点
- UID vs EUID:你是谁 vs 你拥有什么权限
- 危险:新增/异常 SUID 二进制 = 潜在本地提权入口
- 防守重点:建立“正常 SUID 白名单基线”,周期性扫描新增/变更 SUID,评估是否必要并移除/降权
实验六:SSH Wrapper / 关键组件替换(供应链/本地篡改思路)
原理
- 把关键可执行文件(如 sshd)替换为“包装器”:先执行额外逻辑,再调用原程序,让用户无感。
- systemd/服务启动如果指向固定路径,被替换后就会一直执行包装器。
关键知识点
- 风险:关键系统组件被本地篡改(不一定新增服务/任务,但行为已被劫持)
- 防守重点:包完整性校验(如系统自带校验工具)、hash 基线、
file类型检查(ELF vs 脚本/链接)、重装受影响软件包
实验七:LD_PRELOAD / 动态链接劫持(全局机制劫持)
原理
- 动态链接器在程序启动时加载共享库;
LD_PRELOAD或/etc/ld.so.preload可使指定库优先加载,从而“钩住”系统函数。 - 如果是全局 preload,很多程序都会受影响,覆盖面极大。
关键点
- 作用范围:环境变量(当前会话/子进程) vs 全局 preload(影响全系统大量程序)
- 风险:能改变许多命令的行为、干扰排查、持久且隐蔽
- 防守重点:检查
/etc/ld.so.preload与相关环境变量、审计最近新增的可疑 so、用完整性工具与最小环境排查
综合:检测与清除的“蓝队方法论”
- 先看现状:可疑外联(ss/netstat)、可疑进程(ps/lsof)
- 再看持久化入口:
- SSH 密钥(authorized_keys)
- cron(用户级+系统级)
- systemd(unit+timer+用户级)
- shell 启动脚本(bashrc/profile/别名/PROMPT_COMMAND)
- SUID(新增/变更)
- 动态链接劫持(ld.so.preload、LD_PRELOAD)
- 最后做完整性验证:
- 包校验工具(例如 debsums)
- rootkit 扫描(chkrootkit/rkhunter)
- 清除原则:先停用触发点(停服务/禁用 timer/移除任务)→ 再删文件 → 再做配置回滚 → 最后复核日志与完整性

Comments | NOTHING