
Obtém credenciais do Active Directory em texto simples se você estiver na rede interna, mas fora do ambiente AD.
Rompa o gelo com aquele ambiente Active Directory bonitinho ali. Quando você está sozinho e frio olhando para uma festa do Active Directory, mas não possui nem uma única credencial AD para participar da diversão, esta ferramenta é para você.
Automatiza sequencialmente 5 ataques internos de rede contra o Active Directory para fornecer credenciais em texto simples. Use a opção --auto para adquirir automaticamente privilégios de administrador de domínio após obter uma posição inicial.
Os seguintes ataques são executados sequencialmente até o quarto e quinto ataques, que são executados em paralelo e indefinidamente.
Todos os hashes NetNTLMv2 capturados nas técnicas abaixo são automaticamente quebrados com JohnTheRipper e uma lista de senhas específica do AD com 1 milhão de entradas.
Ele realizará os 5 ataques de rede acima em ordem. O reverse bruteforce e os uploads de arquivos SCF geralmente são rápidos, depois ele permanece no ataque 3, Responder.py, por 10 min por padrão. Após esse tempo, ou o tempo especificado pelo usuário, ele passa para os dois últimos ataques, que são executados em paralelo e indefinidamente.
Se algum host for descoberto como permitindo sessões SMB nulas, o icebreaker usará o ridenum para realizar RID cycling em busca de nomes de usuário válidos. Se você usar a opção "-d <somedomain.com>", o theHarvester extrairá endereços de e-mail do site especificado. Quaisquer nomes de usuário de e-mail compatíveis com AD serão adicionados à lista de nomes de usuário do reverse bruteforce. O Icebreaker usa a biblioteca asyncio para realizar o reverse bruteforce usando a ferramenta linux rpcclient com 10 workers assíncronos.
O ataque de upload de SCF abusa dos Shell Command Files contra compartilhamentos de rede anonimamente graváveis. SCFs são arquivos que podem realizar ações básicas, como mostrar a área de trabalho ou abrir uma janela do File Explorer. Eles têm a propriedade curiosa de permitir que você defina o ícone do arquivo para um caminho de rede. Se você definir esse caminho de rede para sua própria máquina, os usuários que abrirem o compartilhamento de arquivos no File Explorer enviarão automaticamente o hash de senha NetNTLMv2 para você. O Icebreaker usa o script Nmap smb-enum-shares para encontrar compartilhamentos anonimamente graváveis e, em seguida, gera e faz upload automaticamente do SCF com payload.
O ataque 3 usa o Responder.py para envenenar os protocolos multicast/broadcast LLMNR, NBT-NS e mDNS. Quando os usuários navegam para um caminho de rede inexistente, o Responder dirá a eles que sua máquina atacante é o caminho correto. O hash da senha NetNTLMv2 do usuário agora é seu. O Responder capturará hashes enviados pelo ataque SCF, mas o próximo ataque geralmente é mais útil para capturar hashes SCF porque tem o potencial de usar o hash para execução de comandos.
O relay SMB é um ataque de rede antigo onde os atacantes se posicionam entre o cliente SMB e o servidor SMB. Isso permite que os atacantes capturem e retransmitam hashes NetNTLMv2 para hosts que tenham SMBv1 habilitado e SMB signing desabilitado. O ntlmrelayx.py da biblioteca Impacket é usado para fazer o relay, enquanto o Responder.py é usado para fazer man-in-the-middle nas conexões SMB. Se o usuário cliente SMB tiver direitos administrativos em qualquer host na rede que tenha SMB signing desabilitado, o ntlmrelayx.py executará comandos nesse host.
Assim que o ntlmrelayx retransmitir um hash capturado, ele executará um comando powershell codificado em base64 que primeiro adiciona um usuário administrativo (icebreaker:P@ssword123456), depois executa uma versão ofuscada e com bypass de AMSI do Mimikatz, seguida por uma versão ofuscada e com bypass de AMSI do Invoke-PowerDump. A saída do Invoke-Mimikatz e do Invoke-PowerDump é analisada em busca de senhas em texto simples ou hashes NTLM e entregue ao usuário na saída padrão, bem como no arquivo found-passwords.txt. Hashes NTLM, ao contrário dos hashes NetNTLMv2, podem ser usados como uma senha em texto simples para autenticação em outros hosts AD. A única ressalva é que desde o patch KB2871997 da Microsoft, apenas a conta de administrador local RID 500 embutida pode ser usada em ataques pass-the-hash.
O ataque final usa a ferramenta mitm6 para realizar um ataque man-in-the-middle de DNS IPv6 em toda a rede. Isso força os hosts na rede a usar a máquina do atacante como seu servidor DNS. Uma vez definido como servidor DNS, o atacante serve arquivos de configuração de proxy WPAD maliciosos para as vítimas e coleta seus hashes NetNTLMv2. Esses hashes são retransmitidos usando o ntlmrelayx.py para mais possibilidades de execução remota de código. Uma coisa a observar é que esse ataque é propenso a causar problemas na rede. Frequentemente causa erros de certificado nos navegadores das máquinas cliente. Também provavelmente deixará a rede mais lenta. A beleza desse ataque, no entanto, é que ambientes Windows AD são vulneráveis por padrão.
Se o icebreaker for executado com a flag --auto [tmux/xterm], ao atingir o ataque 4, o icebreaker executará o Empire e o DeathStar em uma sessão tmux ou janelas xterm. Com essa opção, em vez de executar o mimikatz no host remoto para o qual retransmitimos o hash, o icebreaker adicionará um usuário administrativo e depois executará o código lançador powershell do Empire para obter um agente na máquina remota. O DeathStar usará esse agente para automatizar o processo de obtenção de administrador de domínio. O Empire e o DeathStar não serão fechados quando você sair do icebreaker.
A quebra de senhas é feita com JohnTheRipper e uma wordlist personalizada. A origem desta lista é o merged.txt, que é a combinação de todas as senhas da conta GitHub SecLists. A wordlist foi podada e não inclui senhas com: tudo minúsculo, tudo maiúsculo, todos símbolos, menos de 7 caracteres, mais de 32 caracteres. Essas regras estão em conformidade com os requisitos padrão de senha do Active Directory e reduziram a lista de 20 milhões para pouco mais de 1 milhão, o que torna a quebra de senhas extremamente rápida.
Como root:
./setup.sh
pipenv install --three
pipenv shell
Você pode receber um erro após executar o pipenv install. Atualize para uma versão do pipenv superior à 11.9.0 se for o caso. Você pode clonar o pipenv do github e apenas executar apt-get remove python-pipenv && python setup.py install dentro da pasta.
Ainda há alguns bugs a serem resolvidos com a imagem docker, então é provável que isso gere erro para você, mas está quase lá. A partir do Repositório Git:
docker build --rm -t danmcinerney/icebreaker .
docker run danmcinery/icebreaker
Ou anexe os comandos que você normalmente adicionaria ao icebreaker (não esqueça de mapear volumes):
docker run -v $(pwd)/logs:/icebreaker/logs -v $(pwd)/hashes:/icebreaker/hashes -v $(pwd)/icebreaker-scan.xml:/icebreaker/icebreaker-scan.xml -v $(pwd)/submodules:/icebreaker/submodules -e PYTHONUNBUFFERED=0 danmcinerney/icebreaker -x icebreaker-scan.xml
**Nota: Você vai querer mapear portas para listeners com a flag -p <host>:<container> do docker.
Execute como root. Leia de uma lista separada por novas linhas de endereços IP (IPs únicos ou intervalos CIDR) e, em vez de fazer o ntlmrelayx adicionar um usuário e executar mimikatz na vítima após o relay do hash, faça com que ele execute um comando personalizado na máquina vítima. Neste exemplo, estamos fornecendo um comando semelhante ao que o Empire poderia nos dar para um one-liner de lançador powershell.
./icebreaker -l targets.txt -c "powershell -nop -w hidden -exec bypass -enc WwFk..."
Leia de uma hostlist, diga ao Responder para usar a interface eth0 em vez da interface de gateway padrão, deixe o Responder rodar por 30m em vez dos 10m habituais, e execute os comandos pós-relay padrão do ntlmrelayx para extrair o SAM do servidor vítima.
./icebreaker -l targets.txt -i eth0 -t 30 -c default
Use um arquivo de saída XML do Nmap, pule todos os cinco ataques e não quebre hashes automaticamente, e use uma lista de senhas personalizada para o ataque de reverse bruteforce (observe que, como este exemplo está pulando o ataque 1 com '-s rid', a lista de senhas especificada nem será usada; isso é apenas um exemplo)
./icebreaker.py -x nmapscan.xml -s rid,scf,llmnr,relay,dns,crack -p /home/user/password-list.txt
Uso do tipo "disparou e esqueceu": insira o arquivo de alvos, extraia nomes de usuário de e-mail do companydomain.com para serem adicionados ao ataque de reverse bruteforce, pule o envenenamento de DNS IPv6 do mitm6, e execute o Empire e o DeathStar em janelas tmux ou xterm quando o ataque 4 começar para obter administrador de domínio automatizado. O objetivo desse uso é disparar o comando na segunda-feira às 9h e depois fazer uma pausa curta e ininterrupta até sexta-feira às 16h30, quando voltamos para um shell de administrador de domínio nos esperando. Pulamos o ataque 5 (mitm6) porque ele pode causar problemas na rede e não queremos clientes irritados interrompendo nossa merecida pausa.
./icebreaker.py -l targets.txt -d companydomain.com -s dns --auto [tmux/xterm]