HACKING: Root Me, Active Directory -GPO

O desafio envolve analisar o arquivo .pcap com vários protocolos.

Neste desafio específico, precisamos analisar o protocolo SMB e encontrar o sinalizador que falta.

Pré-requisitos:

  • Conhecimento de uma ferramenta de análise de captura de rede.
  • Conhecimento da política de grupo.
  • Conhecimento de Python

Você pode encontrar o desafio no link abaixo:

https://www.root-me.org/en/Challenges/Forensic/Active-Directory-GPO

Declaração

Durante uma auditoria de segurança, foi registrado o tráfego de rede durante a sequência de inicialização de uma estação de trabalho conectada a um Active Directory. Analise esta captura e encontre a senha do administrador.

Primeiro vamos baixar o arquivo ch12.pcap do desafio e abri-lo no Wireshark.

Agora, antes de nos aprofundarmos na captura de pacotes, vamos dar uma visão de alto nível dos diferentes protocolos. Para fazer isso, navegue até Estatísticas → Hierarquia de protocolo.

E você verá a janela abaixo, mostrando diferentes protocolos.

Vamos dar uma olhada nos diferentes protocolos e imediatamente o SMB2 chamou minha atenção na lista.

O que é PME

A Wikipédia afirma:

Em redes de computadores , Server Message Block ( SMB ), cuja versão também era conhecida como Common Internet File System ( CIFS /sɪfs/ ), [1] [2] é um protocolo de comunicação [3] para fornecer acesso compartilhado a arquivos , impressoras e portas seriais entre nós em uma rede. Ele também fornece um mecanismo autenticado de comunicação entre processos .

Vamos filtrar os dados com o protocolo SMB2. Para fazer isso, basta digitar smb2 na barra de filtros e veremos apenas o tráfego usando o protocolo SMB2.

Depois de filtrarmos pelo protocolo SMB2, vamos dar uma olhada mais de perto.

  1. Existem 2 índices de fluxo numerados 14 e 24.
  2. O índice de fluxo 14 está tentando configurar a sessão e depois termina
  3. O índice de fluxo 24 contém mais dados em comparação com 14

Vamos seguir o índice de fluxo 24, para isso clique com o botão direito — -> Seguir fluxo TCP.

E podemos ver todas as solicitações e respostas em vermelho e azul, respectivamente.

Percorrendo o fluxo, encontramos um arquivo xml em texto não criptografado:

<?xml versão=”1.0" codificação=”utf-8"?>
<Grupos clsid=”{3125E937-EB16–4b4c-9934–544FC6D24D26}”><Usuário clsid=”{DF5F1855–51E5–4d24–8B1A-D9BDE98BA1D1}” nome=”Helpdesk” imagem=”2" alterado=”2015– 05–06 05:50:08 "UID =" {43F9FF29-C120–48B6–8333–9402C927BE09} ”> <Propriedades Action =” u ”newName =” ”FullName =” ”Descrição” ”" CPassword = ”PSMSCOUXQUME =” +w” changeLogon=”1" noChange=”0" neverExpires=”0" acctDisabled=”0" userName=”Helpdesk”/></User><User clsid=”{DF5F1855–51E5–4d24–8B1A-D9BDE98BA1D1} ”nome=”Administrador” imagem=”2" alterado=”2015–05–05 14:19:53" uid=”{5E34317F-8726–4F7C-BF8B-91B2E52FB3F7}” userContext=”0" removePolicy=”0" ><Properties action=”U” newName=”” fullName=”Admin Local” description=”” cpassword=”LjFWQMzS3GWDeav7+0Q0oSoOM43VwD30YZDVaItj8e0" changeLogon=”0" noChange=”0" neverExpires=”1" acctDisabled=”0" subAuthority =”” nome_do_usuário=”Administrador”/></Usuário>
</Grupos>

Se olharmos os dados acima, podemos ver:

nome=”Administrador”

cpassword=”LjFWQMzS3GWDeav7+0Q0oSoOM43VwD30YZDVaItj8e0″

Como você pode ver, temos a senha do Administrador, mas ela está criptografada. Agora, para completar o desafio, temos que quebrar a senha.

Descriptografando senha

Encontre a chave AES

Para descriptografar a senha criptografada AES, precisamos da chave que foi usada para criptografar a senha.

Para encontrar a chave que a MS está usando para criptografar senhas, vamos começar pesquisando a chave no Google. Depois de pesquisar por alguns minutos, encontrei a chave em:

https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-gppref/2c15cbf0-f086-4c74-8b70-1f2fa45dd4be

Todas as senhas são criptografadas usando uma chave derivada do Advanced Encryption Standard (AES).

A chave AES de 32 bytes é a seguinte:

4e 99 06 e8 fc b6 6c c9 fa f4 93 10 62 0f fe e8 
 f4 96 e8 06 cc 05 79 90 20 9b 09 a4 33 b6 6c 1b

Agora temos a chave que foi usada para criptografar a senha e o próximo passo é encontrar uma maneira de descriptografar a senha AES.

Descriptografando a senha AES

Como não estou muito familiarizado com criptografia, decidi usar o código python fornecido em https://github.com/MartinIngesen/gpocrack/blob/master/gpocrack.py

Infelizmente, o código fornecido não funcionou para mim e depois de olhar mais de perto e fazer algumas alterações, finalmente funcionou.

!pip install pycrypto
from Crypto.Cipher import AES
import base64
cpassword="LjFWQMzS3GWDeav7+0Q0oSoOM43VwD30YZDVaItj8e0="
decoded_password = base64.b64decode(cpassword)
key = b'\x4e\x99\x06\xe8\xfc\xb6\x6c\xc9\xfa\xf4\x93\x10\x62\x0f\xfe\xe8\xf4\x96\xe8\x06\xcc\x05\x79\x90\x20\x9b\x09\xa4\x33\xb6\x6c\x1b'
decryption_suite = AES.new(key, AES.MODE_CBC, '\x00'*16)
plain_text = decryption_suite.decrypt(decoded_password)
print("Password is: {}".format(plain_text.strip()))
password_list = (plain_text.decode().split('\x00')) # removing null bytes
password = ''.join(str(i) for i in password) # list to string
print(password)

Gostou? Se tiverem algumas sugestões, dica ou se ficou com alguma dúvida sobre este tutorial, não tem problema! Basta comentar no post que iremos responder suas dúvidas assim que for possível.

Referências

  1. https://github.com/MartinIngesen/gpocrack/blob/master/gpocrack.py
  2. https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-gppref/2c15cbf0-f086-4c74-8b70-1f2fa45dd4be
  3. Wikipedia > Tagged CryptographyGpoGroup PolicyRoot Me

Fonte: digitalitskills

WINDOWS: Limpar metadados do Active Directory

A limpeza de metadados é um procedimento necessário após uma despromoção forçada de um domain controller.
Há duas vias para limpar os metadados do servidor:

  • usando ferramentas do ambiente gráfico do sistema
  • usando a linha de comando

Limpado metadados do servidor usando Usuários e Computadores do Active Directory

Pesquise no Menu Iniciar ou vá diretamente através das Ferramentas Administrativas, e abra o Usuários e Computadores do Active Directory.

Na lista da esquerda, expanda o domínio do controlador de domínio e clique em Controladores de Domínio.

No painel de detalhes à direita, clique com o botão direito do mouse no objeto de computador do controlador de domínio cujos metadados você deseja limpar e clique em Excluir.

Na caixa de diálogo que surgirá, confirme se o nome do controlador de domínio que você deseja excluir é mostrado e clique em Sim para confirmar a exclusão do objeto do computador.

Na caixa de diálogo Excluindo Controlador de Domínio, selecione Este Controlador de Domínio está permanentemente offline e não pode mais ser rebaixado usando o DCPROMO e clique em Excluir.

Se o controlador de domínio for um servidor de catálogo global, na caixa de diálogo Excluir Controlador de Domínio, clique em Sim para continuar.

Se o controlador de domínio tiver atualmente uma ou mais funções mestras de operações, clique em OK para mover a função ou funções para o controlador de domínio mostrado. Não é possível alterar esse controlador de domínio. Se você quiser mover a função para um controlador de domínio diferente, deverá mover a função depois de concluir o procedimento de limpeza de metadados do servidor.

Limpar metadados do servidor usando Serviços e Sites do Active Directory

Abra Serviços e Sites do Active Directory.

Na lista da esquerda expanda os níveis: Sites > domínio > Servers.

Após expanda o nome do controlador de domínio, clique com o botão direito do mouse no objeto NTDS Configurações e clique em Excluir.

Na caixa de diálogo, clique em Sim para confirmar a exclusão.

Na caixa de diálogo Excluindo Controlador de Domínio, selecione Este Controlador de Domínio está permanentemente offline e não pode mais ser rebaixado usando o DCPROMO e clique em Excluir.

Se o controlador de domínio for um servidor de catálogo global, na caixa de diálogo Excluir Controlador de Domínio, clique em Sim para continuar com a exclusão.

Se o controlador de domínio tiver atualmente uma ou mais funções mestras de operações, clique em OK para mover a função ou funções para o controlador de domínio mostrado.

Clique com o botão direito do mouse no controlador de domínio que foi removido à força e clique em Excluir.

Na caixa de diálogo, clique em Sim para confirmar a exclusão do controlador de domínio.

Limpar metadados do servidor usando linha de comando

Como alternativa, você pode limpar metadados usando o ntdsutil.exe, uma ferramenta de linha de comando instalada automaticamente em todos os controladores de domínio.

Abra um prompt de comando (CMD) como administrador.

No prompt de comando, digite o seguinte comando e pressione Enter:

Ntdsutil

No ntdsutil: digite o seguinte comando e pressione Enter:

metadata cleanup

No metadata cleanup:, digite o comando abaixo e pressione Enter novamente:

remove selected server <NomedoServidor>

Na caixa de diálogo Remover Configuração do Servidor, revise as informações e o aviso e clique em Sim para remover o objeto e os metadados do servidor. Neste ponto, o Ntdsutil confirma que o controlador de domínio foi removido com êxito.

Para sair da ferramenta, dê o comando quit e pressione Enter.

Para confirmar a remoção do controlador de domínio, acesse o Usuários e Computadores do Active Directory e Serviços e Sites do Active Directory, e veja que o servidor já não estará na árvore de DCs.

Gostou? Se tiverem algumas sugestões, dica ou se ficou com alguma dúvida sobre este tutorial, não tem problema! Basta comentar no post que iremos responder suas dúvidas assim que for possível.

Fonte: brunocosta