Tips +1
实现原理
PAM(PAM 全称 Pluggable Authentication Modules,可动态加载验证模块)是一种用于在Unix系统上进行身份验证的框架,允许系统管理员通过简单地配置文件来选择和配置不同的身份验证方法。Linux 执行敏感程序时会对启动它的用户进行身份认证,通过后才会允许执行,如sudo,passwd,screen 等。在 Linux 中进行身份认证是依赖 PAM 来进行的,如使用谷歌身份验证器对 SSH 登录进行双因子认证。当然也可加载恶意模块,窃取 SSH 密码。C 语言版大致原理就是编译出一个动态链接库 so 文件,并配置到 PAM 配置文件中,在 SSH 登录时,记录密码发送到电报机器人,当然也可以保存到本地或是发送到任意 DNSLOG、钉钉机器人等.
操作步骤
PAM是一种认证模块,PAM可以作为Linux登录验证和各类基础服务的认证,简单来说就是一种用于Linux系统上的用户身份验证的机制。进行认证时首先确定是什么服务,然后加载相应的PAM的配置文件(位于/etc/pam.d),最后调用认证文件(位于/lib/security)进行安全认证.简易利用的PAM后门也是通过修改PAM源码中认证的逻辑来达到权限维持
- 获取目标系统所使用的PAM版本,下载对应版本的pam版本
setenforce 0 ##关闭防火墙
rpm -qa | grep pam
https://github.com/linux-pam/linux-pam/releases/tag/Linux-PAM-1_1_8
- 解压缩,修改pam_unix_auth.c文件,添加万能密码
- 编译安装PAM
cd linux-pam-Linux-PAM-1_1_8
./configure && make
cp /usr/lib64/security/pam_unix.so /tmp/pam_unix.so.bakcp
cd modules/pam_unix/.libs
cp pam_unix.so /usr/lib64/security/pam_unix.so
如何排查
1、查看网络连接
netstat -e
netstat -anpt
2、检查pam_unix.so的修改时间,/lib64/security 下可以修改时间戳与正常文件一致
ls -alt | head -n 10
ls -la /etc/pam.d
stat /lib/security/pam_unix.so #32位
stat /lib64/security/pam_unix.so #64位
3、查看 /etc/pam.d/sshd 中是否加载了异常 so 文件。
ls -la /etc/pam.d
cat /etc/pam.d/sshd
strings 异常文件.so
4、清除 pam 后门
yum reinstall pam
参考链接:
https://mp.weixin.qq.com/s/lLwltMLqlkkKR69D__ULXA
https://mp.weixin.qq.com/s/xLn1iBSHh3THKz3K-j0P5w
End “
原文始发于微信公众号(贝雷帽SEC):Linux持久化—PAM后门
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论