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

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!

Mapa mental para Pentest em Active Directory

Achei um mapa mental bem bacana que o o Vinicius Vieira postou no seu twitter.

O mapa começa dede de um ataque onde você não tem nenhuma credencial até Persistência e o bacana que ele dá vários caminhos, para quem não tem muita experiência com teste de infra ou até pros mais experiências lembrarem de alternativas de forma rápida, é um excelente guia.

A imagem também pode ser vista clicando AQUI

Os papéis do Active Directory no Windows Server 2008

Excelente dica do Matheus Mauch

No Windows Server 2008 o Active Directory tem cinco papeis, são eles:

AD DS – Active Directory Domain Services

AD LDS – Active Directory Lightweight Directory Services

AD RMS – Active Directory Rights Management Services

AD CS – Active Directory Certificate Services

AD FS – Active Directory Federation Services

AD DS: O Active Directory Domain Services no Windows Server 2008 armazena informações sobre usuários, computadores e outros dispositivos existentes na rede. O AD DS ajuda os administradores a gerenciar com segurança essas informações e facilita o compartilhamento de recursos e a colaboração entre usuários. Também é necessário que o. AD DS esteja instalado na rede para a instalação de aplicativos habilitados no diretório como, por exemplo, o Microsoft Exchange Server, e para a aplicação de outras tecnologias do Windows Server tais como a Diretiva de Grupo.

AD LDS: O Active Directory Lightweight Directory Services é um serviço de diretório do protocolo LDAP. Ela oferece armazenamento e recuperação de dados para aplicativos habilitados em diretório, sem as dependências necessárias aos Serviços de Domínio Active Directory (AD DS).

O AD LDS do Windows Server 2008 abrange a funcionalidade que era oferecida pelo ADAM (Modo de Aplicativo do Active Directory), que está disponível para os sistemas operacionais Windows XP Professional e Windows Server 2003.

AD RMS: O Active Directory Rights Management Services, uma tecnologia agnóstica de aplicativo e formato, fornece serviços para permitir a criação de soluções de proteção de informações. Ele funcionará com qualquer aplicativo habilitado para AD RMS a fim de fornecer diretivas de uso persistente para informações confidenciais. O conteúdo que pode ser protegido pelo uso do AD RMS inclui sites de intranet, mensagens de email e documentos. O AD RMS inclui um conjunto de funções principais que permite que os desenvolvedores adicionem proteção de informações para a funcionalidade de aplicativos existentes.

AD CS: O Active Directory Certificate Services no Windows Server 2008 fornecem serviços personalizáveis para criação e gerenciamento de certificados de chaves públicas usados em sistemas de segurança de software que empregam tecnologia de chave pública. As organizações podem usar o AD CS para aumentar a segurança vinculando a identidade de uma pessoa, um dispositivo ou serviço a uma chave particular correspondente. O AD CS também inclui recursos para permitir o gerenciamento do registro e da revogação de certificados em diversos ambientes escaláveis.

AD FS: O Active Directory Federation Services é uma função de servidor no sistema operacional Windows Server® 2008 que você pode usar para criar uma solução de acesso a identidades que seja segura, altamente extensível e escalonável na Internet capaz de operar em várias plataformas, inclusive em ambientes Windows e não-Windows.

Mais informações:

AD DS: http://technet.microsoft.com/pt-br/library/cc753516(WS.10).aspx

AD LDS: http://technet.microsoft.com/pt-br/library/cc755080(WS.10).aspx

AD RMS: http://technet.microsoft.com/pt-br/library/cc771307(WS.10).aspx

AD CS: http://technet.microsoft.com/pt-br/library/cc753254(WS.10).aspx

AD FS: http://technet.microsoft.com/pt-br/library/cc772313(WS.10).aspx