Pós Exploração: Extração de hashs na prática

Bom, neste artigo iremos tratar sobre um aspecto muito importante em testes de intrusão: a coleta de credenciais. Nem sempre em um ambiente real ou ate mesmo simulado iremos encontrar credencias em texto claro, na sua maioria elas serão encontradas em forma de hash. Em suma muitos sistemas utilizam o hash como forma de autenticação desta forma trata-se de um passo fundamental saber onde estão localizados e como conseguir extrair os mesmos

Dada essa breve introdução iremos abordar de fato como proceder na extração de hashs em variados ambientes e situações.

Windows

Hashdump

Como se trata de uma ação de pós-exploração, já devemos possuir acesso à máquina alvo para realizarmos a extração de hash, neste primeiro exemplo estamos utilizando como exemplo para simulação duas VM, uma Kali Linux e outra Windows XP. Neste primeiro momento iremos utilizar uma funcionalidade do payload METERPRETER, encontrado no Metasploit-Framework, chamada hashdump.

Podemos notar que é bem simples a utilização do comando dentro do payload METERPRETER, lembrando que para a utilização do comando hashdump é necessário obter privilégios de administração.

Este tipo de ataque pode ser efetuado tanto remotamente, como foi visto, quanto localmente. Sendo local um binário tem que ser executado dentro da máquina alvo com privilégios administrativos. Existe uma pasta contendo alguns executáveis no próprio Kali que conseguem realizar a extração dos hash.

Mimikatz

Iremos agora demonstrar o uso de uma ferramenta mais poderosa que o hashdump, se trata do mimikatz. Com esta ferramenta podemos capturar o hash do usuário corrente bem como sua senha em claro caso esteja carregada na memória, ela pode ser carregada no METERPRETER pelo comando load mimikatz e então utilizada:

Como podemos observar o mimikatz consegue obter tanto o hash dos usuários quanto a senha em claro do usuário corrente.

*Unix

Em sistemas *UNIX fica mais fácil em tese a localização dos hashs, eles estão armazenados no arquivo /etc/shadow, porém nem tudo e tão fácil quanto parece esse arquivo geralmente só possui permissão para usuários super privilegiados (root).

Exemplo de como se parecem as hashs em ambientes *NIX com sha512crypt

root:$6$8Krl0yVz$8VXrlJBgvghRqZnSjgGgBTVOwJeX9qmSJO5f3fhkIKe.ztqnVfXjIQoANd9X4iroyYOGx0GYmap9vjmH4xhqT.:17490:0:99999:7:::

Uma boa prática na tentativa de quebra de senha de hashs contido no /etc/shadow e a utilização da unshadow, ela faz um mescla entre os arquivos passwd e shadow, isto por que em determinadas ocasiões no cadastro de usuários o administrador pode colocar informações relevantes como data de nascimento, telefone, endereço e estas informações se encontram no arquivo /etc/passwd. Pode ocorrer do usuário usar um destes campos como senha, sendo assim com o unshadow mesclando os arquivos e capaz de detectar antes de tentar realizar um ataque de dicionario ou de força bruta se um desses campos pode ser a senha em questão.

Extração de hashs em arquivos PCAP

Outra forma de extração de hashs de uma rede, pode ser por meio da interceptação de pacotes por meio de um ataque de sniffing. Podemos estar dentro da rede com uma placa de rede em modo promiscuo para tentar detectar tentativas de login via SSH, SMB, VNC e etc, ou mesmo plantar um dispositivo do tipo Raspberry Pi para capturar tráfegos de rede em uma determinada corporação e ao final do dia enviar esses dados para um Comand Control Server para que posa ser analisado o pcap em busca de hashs

Para tal feito utilizaremos a ferramenta PCredz, iremos demonstrar como a ferramenta extrai hashs de arquivos pcap:

Podemos observar neste pcap, que foi realizada uma troca de hashs entre as estações e que com a ferramenta pudemos realizar uma extração muito boa, esta ferramenta também pode trabalhar no modo de escuta sendo o comando o seguinte:

./Pcredz -i <interface de rede>

Mac OSX

Iremos fazer uma abordagem apenas superficial para a extração de hashs em MAC OSX apresentando apenas duas ferramentas para realizar a extração, são elas

HASHCAT

sudo plist2hashcat.py /var/db/dslocal/nodes/Default/users/<username>.plist

JOHN

sudo ml2john.py /var/db/dslocal/nodes/Default/users/<username>.plist

Conclusão

Bem, chegamos ao final deste artigo abordando diversas maneiras de se extrair hashs de credencias para uso tanto em movimentos laterais quanto para exploração de privilégios. Imagine que em uma captura de rede você encontra a transação entre em um SysAdmin e o Active Directory (Windows Server 2003) é uma hash sem salt você consegue quebrar, ganha acesso ao Active Directory e consegue inserir uma GPO para que todas as máquinas ao iniciar executem um payload especifico seu para fazerem uma conexão reversa, não seria um tanto interessante? Este e muitos outros são um dos motivos que fazem a coleta de credenciais uma passo importante para os testes de invasão. Espero que tenham gostado deste artigo e até a próxima.