Tips +1
实现原理
连接后门的原理是利用了PAM配置文件的作用,pam_rootok.so主要作用是使得uid为0的用户,即root用户可以直接通过认证而不需要输入密码。
进入/etc/pam.d/su 文件中,我们可以看到使用了该模块,这也是为什么root用户切换至普通用户不需要密码的原因。
1.PAM认证机制,若sshd服务中开启了PAM认证机制(默认开启),当程序执行时,PAM模块则会搜寻PAM相关设定文件,设定文件一般是在/etc/pam.d/。若关闭则会验证密码,无法建立软链接后门。
2.当我们通过特定的端口连接ssh后,应用在启动过程中就会去找到配置文件,如:我们的软链接文件为/tmp/su,那么应用就会找/etc/pam.d/su作为配置文件,那么则实现了无密登录。
1、Linux软连接ssh后门需要ssh配置允许PAM认证才能使用
2、将sshd文件软连接名称设置为su,这样应用在启动过程中他会去PAM配置文件夹中寻找是否存在对应名称的配置信息(su)
3、如果被控主机不允许root登陆可用其他已存在用户登陆
4、通过软连接的方式,实质上PAM认证是通过软连接的文件名(如:/tmp/su,/home/su)在/etc/pam.d/目录下寻找对应的PAM配置文件(如:/etc/pam.d/su)
5、任意密码登陆的核心是auth sufficient pam_rootok.so,只要PAM配置文件中包含此配置即可 SSH任意密码登陆
- 优点:root被禁止登录,可以用其他用户登录。
- 缺点:隐蔽性很弱,适合短时间维持权限,一般的rookit hunter这类的防护脚本可扫描到。
操作步骤
被控端
ln -sf /usr/sbin/sshd /路径名/su;/路径名/su -oport=端口号
如:
ln –sf /usr/sbin/sshd /usr/local/su;/usr/local/su –pport=8888
ln -sf /usr/sbin/sshd /tmp/su;/tmp/su -oPort=8888
命令解释:
ln参数 源文件 目标文件
-s:创建软链接;
-f:链接时先将与目标文件同名的文件删除;
sshd服务启用PAM认证机制(在/etc/ssh/sshd_config文件中,设置UsePAM为yes),
如果不启用PAM,系统会严格验证用户密码,就无法使用sshd软链接后门。
说明:建立软连接到/usr/local/su 文件,也可以在其他目录,su文件名字不能变,变了就无法登录。当然可以通过其他设置,更改su名字也是可以的.然后启动,并指定监听8080端口,登录的时候密码随意即可。
ln -sf /usr/sbin/sshd /tmp/su;/tmp/su -oPort=8888
攻击端
ssh 用户名@目标主机IP -p 端口号
ssh root@目标主机ip -p 8888
之后随便输入密码即可连接
若root用户被禁止远程登录,可直接使用其他普通用户登录,密码任写 。
如何排查
1、查看服务器开放的端口号
这类后门会开启监听端口,我们可以先查看/etc/pam.d/目录下有哪些文件包含该配置,然后通过管道符找到异常端口及进程,再通过进程找到异常文件、杀掉进程、关闭PAM认证即可。
find /etc/pam.d/ |xargs grep "pam_rootok.so"
netstat -antlp |grep -E "su|chsh|chfn|runuser"
2、查看进程pid
查看进程pid,可以看到所使用的程序为ssh
3、确定软链接后门文件
查看所有的su文件,以及查找具体哪一个su是软链接后门
find -name su
ll /usr/share/bash-completion/completions/su
ll /usr/local/su
4、删除软链接后门
rm -rf /usr/local/su
kill -9 7702
再次连接失败
原文始发于微信公众号(贝雷帽SEC):Linux持久化—SSH软连接
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论