Força Bruta nos hashes do AD

Olá! Pessoal, uma dica bacana que eu trago, apesar de utilizar uma técnica antiga mas que vejo poucas pessoas fazendo proativamente, que é a de força bruta em hashes do AD.

Você sabe se os funcionários estão realmente criando senhas boas? Como você mede isso? Não custa dizer, senha por si só já era a muito tempo, você sempre precisa combinar isso com um segundo fator. Mas sabemos que nas empresas não é 100% das coisas que costumam terem a possibilidade de exigir esse segundo fator e é ai que mora o perigo! Basta descobrir 1 senha e uma porta onde dê pra entrar somente com ela e pronto!

A sugestão que eu dou é que seja feito ao menos 1 vez no ano testes de força bruta nos hashes do AD para que você veja o quanto de conscientização você precisa trabalhar na empresa ou até mudar politicas. Eu desconheço um benchmarking de porcentagem de quebra de senha, mas pela minha experiência de anos fazendo isso eu diria para trabalhar com os seguinte valores:

  • Entre 0 e 8% – Está num nível de maturidade otimo
  • Entre 8 e 20% – Está bom, mas precisa trablhar um pouco ainda na conscientização
  • Entre 20% e 40% – Precisa trabalhar forte na conscientização, com campanhas mais pesadas. É hora de começar a ligar o radar!
  • Acima de 40% – Significa que alguma coisa bem errada está acontecendo, hora de ligar o alerto vermelho. Eu diaria que você precisa rever primeiro toda a sua politica de senha. Aumentar a quantidade de caracteres minimos exigidos, aumentar a complexidade de senha como um todo, e além disso fazer campanhas pesadas de conscietização.

Pegando os hashes

Para pegar os hashes no AD, existem diversas formas e ferramentas. Porém aqui estou no olhar de que é um teste acordado, onde alguem que tenha acesso ao AD irá extrair esses hashes. Para isso a forma mais simples na minha opnião é usando ntdsutil. Caso queira saber mais sobre outras ferramentas segue aqui um otimo material de referência:

Para executar o ntdsutil, basta alguem com privilégio de admin no AD rodar no CMD com privilegio elevado os seguintes comandos:

ntdsutil
activate instance ntds
ifm
create full C:\ntdsutil
quit
quit

Após executar o comando, serão geradas 2 pastas:

Active Directory e registry

Após feito o dump deverá transformar os arquivos no formato para a força bruta.

Para isso usaremos uma outra ferramenta, o secretsdump. O mesmo pode ser baixado clicando aqui:

https://github.com/SecureAuthCorp/impacket

Após instalado, segue a linha de comando:

secretsdump.py -system ARQUIVO_SYSTEM -ntds ARQUIVO_ntds.dit LOCAL -outputfile credentials.txt

O arquivo que for gerado já está no formato correto para a tentativa de quebra.

Força Bruta

Para o ataque de força bruta efetivamente falando, a primeira coisa é decidir que tipo de ataque você quer fazer, se um ataque de dicionário ou de rainbow table.

Não vou me aprofundar aqui na explicação, mas basicamente o Rainbow Tables é uma tabela de hashes, ou seja, será feito um teste só de “cara crachá”, um teste de comparação. Já no ataque de dicionário você vai fazer processar o calculo de trasnformar cada palavra/senha que está no seu dicionário no formato de hash que está tentando quebrar e comparar.

A vantagem do rainbow table é a velocidade, que é infinitamente mais rápido. Em contrapartida você vai precisar de muito mais espaço em disco pois você já vai ter que gerar sua rainbow table com as regras aplicadas. Iremos falar logo a frente sobre regras.

O dicionário é mais lento mas tem a vantagem de ocupar menos espaço e de ser maliavél, você aplica as regras que quiser no tempo que desejar com mais facilidade. Para os meus testes eu costumo usar mais ataque de dicionario e é baseado nele que vou continuar minha explicação.

Após escolhido a técnica, você deve escolher a ferramenta. Existem algumas, hashcat, john, hydra. Eu considero o hashcat como a melhor ferramenta disparado. Não vou me alongar aqui nos motivos, apenas acreditem em mim 🙂 rsrsrs !

Proximo passo é o hardware! Sim caro leitor, tentar rodar um teste de força bruta num processador Celeron da vida você vai sofrer!

O ideal é que você tenha um equipamento com uma placa gráfica, assim você pode inclusive somente usar o poder de processamento da sua placa de vídeo e seu computador fica com o processador intacto. Você também pode optar por pegar uma super máquina em cloud, numa AWS da vida e afins, usar só por tempo determinado dessa atividade, as vezes o custo compensa.

Eu no caso costumo fazer os testes em um computador da minha atual empresa que possuia seguinte configuração:

NVIDIA Quadro M2200 – 4GB GDDR5

Windows  10

Desempenho: 8256.5 Milhões de Hashes por segundo

Uma dica, o hashcat é todo por interface de linha de comando. Mas você pode baixar o hashkiller, uma ferramenta que vai te prover uma interface gráfica para o seu hashcat e facilitar muito a sua vida.

https://hashkiller.io/download

Você já tem quase tudo que precisa. Agora falta o mais importante: O Dicionário!. O seu sucesso vai depender praticamente disso, de ter um bom dicionário!

Aonde eu consigo bons dicionarios? Eu prefiro dizer que o melhor dicionário é aquele que você mesmo cria! Precisa dedicar tempo, paciência e criativade. Em linhas gerias dicas que eu dou: busque por dicinário aurelio, nomes de time de futebol, girias, palavrões, nomes, sobrenomes, usar os proprios logins e nomes dos proprios funcionários que constarem no proprio dump do AD, nome de filme, nome de personagem, desenho, frases de religião, nome de deuses, nomes de anjos, cidades, paises, comidas,marcas, cor, animais, nome de sistemas da sa empresa, palavras usuais da empresa, nome da empresa e de suas filiais/join ventures e por ai vai. Coloque tudo em um TXT, tudo em caixa baixa de preferência. Sanitize caracteres como Ç ou assentuações. Sanitize também as linhas duplicadas. Complemente seu dicionário com dicionários de internet. Um bem famoso é o rockyou, que já vem no Kali.

DICA: busque por wordlist no github, e você vai achar várias! Pode buscar por wordlist PT-BR que vai achar bastante em português também.

Depois de montado o seu dicionário basta fazer os testes combinando o seu dicionário com as rules do hashcat, além disso utilizar a técnica de apendar arquivos na frente e atrás funcionam muito bem, por exemplo, você pode criar um segundo arquivo TXT com as palavras: 123, 321, @123, @321 .. Aqui sua imaginação é quem manda. E mandar combinar o dicionario que você montou com esse segundo TXT.

Você pode encontrar boas rules no github também. Eu já acho as que vem no hashcat muito boas.

Eu considero pela minha experiência que um bom dicionário é aquele que é rico de palavras da cultura do pais do usuário que você está quebrando a senha + a maior quantidade de palavras possíveis que possam ser usuais + boas regras e boas combinações + um certo entedimento de como as pessoas pensam, como geralmente as pessoas criaram as suas senhas e isso só a experiência ao longo do tempo irá lhe responder, a combinação de todos esses fatores lhe trará sucesso na sua quebra de senhas.

Analisando os resultados

Sugiro que na etapa anterior você anote o tempo de execução de cada tipo de teste que você fizer para que você gere uma métrica do tipo: Em X horas foi possivel quebrar Y senhas.

Com as senhas quebradas, o proximo ponto é sanitizar a sua base. Verificar dos hashes quebrados, quais usuarios são contas habilitadas e quais estão desabilitadas. Quebrar senha de usuario desabilitado não é muito útil, e portanto deveria ser expurgado da sua contabilização. Após sanitizar sua lista, ai sim você poderá dar inicio a sua analise estatistica.

Com as senhas quebradas em mãos, coloque todas as senhas em um arquivo txt. Uma ferramenta excelente para fazer analise estatistica das senhas é o PIPAL:

https://github.com/digininja/pipal

Se algum leitor conhecer alguma parecida, por favor inclusive peço me indicar, mas essa é a melhor que conheço. Ela vai gerar dados bem riscos, como top 10 senhas entre outros.

Por fim, gere uma apresentação com os gráficos e apresente a quem seja de interesse, dependendo da % de senhas quebradas, tome as medidas de proteção que melhores sem encaixarem na sua estratégia. Ao se adotar isso como um processo continuo, você poderá também gerar estatisticas de reincidências, que é o usuário que teve a senha quebrada por 2 anos consecutivos, e esse funcionário você pode trabalhar com uma conscientização mais especifica.

Espero que tenham gostado das dicas, sei que não é nada muito novo, mas apesar disso eu realmente não vejo as empresas praticando esse tipo de teste com uma frequência estabelecida e gerando insumos que gerem um valor para o aumento da sua maturidade de segurança. Fica a dica!

Dica: Quebrando senha usando recurso colaborativo

Deseja quebrar alguns hashes, mas não tem uma super máquina? Aqui está uma dica interessante: você pode usar o Colaboratory do Google para criar duas placas gráficas robustas para fazer o que é necessário. É grátis e funciona muito bem! Por padrão a máquina vem com:

  • Hashcat
  • John
  • Hydra
  • SSH (with ngrok)

Segue link direto do projeto: Clique Aqui

Para aprender a usar o Google Colab, segue um tutorial: LINK

Dica do Cas van Cooten, consultor sênior de segurança na Holanda