linux pam 原理,Linux的一个后门引起对PAM的探究

1.1   原由html

今天在搜索关于Linux下的后门姿式时,发现一条命令以下:

软连接后门:linux

1

ln-sf/usr/sbin/sshd/tmp/su;/tmp/su-oPort=5555;

经典后门。直接对sshd创建软链接,以后用任意密码登陆便可。

ssh root@x.x.x.x -p 5555这个是你们也常常会用到的命令,可是在好奇心的驱使下,为何任意密码就能够了?

因而搜索了相关的资料,发现都是执行了这条命令就能够免密码登陆了,可是为何却没有一篇详细的解答。

1.2   调查git

首先测试一下这个命令:github

222155beb1f814e819673db67f02e651.png

在A的机器上执行了以下命令:centos

1

ln-sf/usr/sbin/sshd/tmp/su;/tmp/su-oPort=5555;

在B机器SSH登陆A机器,输入任意密码,成功登陆。

先理解这条命令主要在作什么:

首先,作一个软连接,结果在/tmp/su  参数的意义: -o option  -p port

这样就开启了一个端口为5555的服务:

f3b87355e1f33ec93d9ec7a215073138.png

测试过程当中发现,只容许命名为su,命名其余尝试登陆都不成功(/tmp/xxx)。

27e0c21171320a1fb66ea3705c39e613.png

因而看了一下sshd相关的log,发现以下:

578afaf4cec0bdbfbe5697fdf7d8c66d.png

发现是基于pam认证的,使用了pam中的su,为了区分是否和/bin/中的su是否相关,作了测试以下:session

410becab93628043da89294a8fd11f50.png

把/bin/su 从新命名为其余文件,发现依然可以任意密码登陆,又作了测试以下:ssh

1

cp/etc/pam.d/su/etc/pam.d/xxx

c9ad787e0ccb076785efbbb2be2999a0.png

在此执行:测试

1

ln-sf/usr/sbin/sshd/tmp/xxx;/tmp/xxx-oPort=5555;

d831c0df6991e7c8a16bb60d9e1690b7.png

成功登陆,根据日志和实践如今确认调用的是/etc/pam.d/suui

1.3   疑问spa

如今确认了是pam中的su致使的,为何就不须要密码就能够登陆?

简单的diff了一下pam中的sshd和su的区别:

9efec3dbdeb408911200a56988553816.png

这里须要了解一下PAM中的控制标记:

19397e84df406a1423c861690585c151.png

sshd的pam认证使用了required和include,su使用了sufficient,在此就能够看出两者的区别了。

咱们发现su的认证使用了pam_rootok.so,他是如何验证的,为何致使咱们输入任何密码就经过。

因而查了下pam_rootok.so的相关信息:

c66f200cad3df1b77d57ea3e3c981734.png

他的认证模块是认证你的UID是否为0,他会return pam的结果。

再去看一下pam_rootok.so的源码,发现:

75f3b5bb0ecaa8fd5d612b692bd5d820.png

他先会调用getuid(),若是get的uid为0,他会检查selinux的root是否为0或是否启用selinux下为0,返回认证成功,不然认证失败。

那么getuid()是从哪里来的,查一下官网:

366cedb0942b31e53997d91ab9604778.png

是根据进程来取得的,根据pam_rootok的文档,咱们也能够对su进行调试:

f1505870c9f42f0777e9e7fdd74dfed8.png

pam_rootok.so返回成功,依次向下执行so,都会成功,创建会话。

查看log:

1b5f27f40c2b7648c92f38efad47862e.png

第一条:

1

pam_rootok(su:auth):authentication succeeded

1.4   真相

至此也终于清楚了为何就能够输入任意密码进行登陆。

咱们从新捋一捋:

46bfc195f48b774bf029943c03932ddf.png

1.5   彩蛋

实际的真相就是在pam中的pam_rootok模块,pam_rootok经过了认证还会一次向下执行,可是下面的都会依赖于pam_rootok的认证,auth =>account =>session:

213a613cfe7816d745dcbe3660f9387d.png

经过查找其实不仅仅是su存在pam_rootok,只要知足了上述的三个条件均可以进行”任意密码登陆”。

1.6   参考资料

https://linux.die.net/man/8/pam_rootok

https://fossies.org/dox/Linux-PAM-1.3.0/pam__rootok_8c_source.html

https://fossies.org/dox/Linux-PAM-1.3.0/pam__succeed__if_8c.html

https://fossies.org/dox/Linux-PAM-1.3.0/pam__succeed__if_8c_source.html

http://man7.org/linux/man-pages/man2/getuid.2.html

http://www.tuxradar.com/content/how-pam-works

http://www.centoscn.com/CentOS/help/2014/0504/2899.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值