Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
assless-chaps — Quebre desafios/respostas MSCHAPv2 rapidamente usando um banco de dados de hashes NT | Kitploit
Ferramentas/GitHubGitHub/sensepost/assless-chaps
Quebra de SenhasAuditoria de Wi-FiAnálise de HashCriptografiaTestes de Penetração
GitHubsensepost/assless-chaps

assless-chaps

Quebre desafios/respostas MSCHAPv2 rapidamente usando um banco de dados de hashes NT

Ver Repositório
1411922há 2 mesesRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

assless-chaps

Quebre desafios/respostas MSCHAPv2/NTLMv1 rapidamente usando um banco de dados de hashes NT

Introdução

Assless CHAPs é uma maneira eficiente de recuperar o hash NT usado em uma troca MSCHAPv2/NTLMv1 se você tiver o desafio e a resposta (por exemplo, de um ataque WiFi EAP WPE).

Requer um banco de dados de hashes NT, instruções sobre como criá-los a partir de listas existentes ou usando hashcat com wordlists e regras estão disponíveis abaixo. Incluí um banco de dados de exemplo do SecLists. Você precisará descomprimir com bunzip.

Técnica

Uma troca MSCHAPv2 não exige que a senha em texto claro seja "quebrada"; em vez disso, precisamos apenas do NThash usado.

MSCHAPv2 divide o NThash em três partes e usa cada parte como chaves diferentes para criptografar DES o mesmo desafio (derivado dos desafios do par e do autenticador). O NTHash é dividido em duas chaves de 7 bytes e uma chave de 2 bytes. Isso significa que a última chave é preenchida com NULLs para formar uma chave do comprimento necessário. Isso pode ser rapidamente forçado por brute force devido à eficiência da operação DES e a um espaço de chaves de 65.535. Uma vez que temos esses dois bytes, podemos procurar todos os NThashes em nosso banco de dados que terminam nesses dois bytes. Isso fornece um conjunto muito menor de hashes possíveis para verificar.

Esta é uma forma de compromisso entre espaço e tempo, semelhante a uma tabela rainbow. Também é uma forma de hash shucking.

Apresentação

Isso foi apresentado pela primeira vez no Defcon 29's RF Hacking Village. Os slides estão incluídos neste repositório.

Velocidade

Aqui está a comparação para três amostras de desafio/resposta e três wordlists diferentes: uma pequena privada, rockyou e a lista Have I Been Pwned. Os testes foram feitos no meu Macbook Pro 2016. O Hashcat está usando este kernel de hash shucking e as duas GPUs integradas, e um kernel puro em vez de otimizado (pois este último ainda não existe). Hash3 não está nas listas para simular o pior caso de desempenho. Não estou incluindo o tempo que o hashcat leva para construir o cache do dicionário na primeira execução.

Hash1

Small hashlist:

hashcat 0.50s user 0.27s system 55% cpu 1.405 total (8597.8 kH/s)
assless 0.05s user 0.00s system 294% cpu 0.018 total

Rockyou hashlist:

hashcat 2.67s user 0.51s system 93% cpu 3.413 total
assless 0.05s user 0.01s system 281% cpu 0.021 total

HIBP hashlist:

hashcat 59.97s user 11.72s system 136% cpu 52.603 total (5620.6 kH/s)
assless 0.05s user 0.00s system 292% cpu 0.018 total

Hash 2

Small hashlist:

hashcat 0.51s user 0.27s system 55% cpu 1.409 total (8704.7 kH/s)
assless 0.03s user 0.00s system 248% cpu 0.012 total

Rockyou hashlist:

hashcat 2.20s user 0.46s system 110% cpu 2.409 total (5798.4 kH/s)
assless 0.03s user 0.00s system 231% cpu 0.015 total

HIBP hashlist:

hashcat 65.37s user 12.74s system 135% cpu 57.712 total (5768.7 kH/s)
assless 0.03s user 0.00s system 249% cpu 0.013 total

Hash 3

Hash 3 doesn't exist in any of the hashlists to simulate a worst case lookup performance.

Small hashlist:

hashcat 0.67s user 0.34s system 66% cpu 1.526 total (7550.1 kH/s)
assless 0.02s user 0.00s system 211% cpu 0.012 total

Rockyou hashlist:

hashcat 2.71s user 0.52s system 94% cpu 3.415 total (5685.4 kH/s)
assless 0.02s user 0.01s system 181% cpu 0.014 total

HIBP hashlist:

hashcat 125.19s user 27.62s system 139% cpu 1:49.75 total (5634.9 kH/s)
assless 0.06s user 0.03s system 115% cpu 0.075 total

Instalação

A versão em Rust requer SQLite 3.6.8 ou mais recente.

A versão em Python requer python3, sqlite3 e pycryptodome.

O utilitário de criação do banco de dados requer python3 e a CLI do sqlite3.

Compilação

Isso se aplica apenas à versão em Rust. Você precisará do cargo.

Com o cargo instalado, basta mudar para o diretório assless-chaps-rs e compilar com: cargo build --release

O binário resultante estará no diretório target/release/.

Uso

O Assless requer o desafio, a resposta e o banco de dados de NThashes. Opcionalmente, a versão em Python pode usar o arquivo de consulta de dois bytes otimizado incluído. O uso mais simples é assim:

./assless-chaps <Challenge> <Response> <hashes.db>

Por exemplo:

./assless-chaps 5d79b2a85966d347 556fdda5f67d2b746ca3315fd8b93adcab5c792790a92e87 rockyou.db

A saída deve parecer com:

[-] Two byte lookup file not provided, will brute force instead.
[+] Found in 22636 tries: 586c
[-] Found 222 hashes ending in 586c
[+] Found hash: 8846f7eaee8fb1
[-] Found after 186 hashes.
[+] Found hash: 17ad06bdd830b7
[+] Full hash: 8846f7eaee8fb117ad06bdd830b7586c

O hash completo final 8846f7eaee8fb117ad06bdd830b7586c é o hash NT para password.

Consulta de dois bytes - Apenas Python

Passei algum tempo construindo uma lista de todos os 65.535 valores possíveis de dois bytes, ordenados pelos mais prevalentes em um grande corpus de senhas. Este arquivo está incluído como twobytes. Você pode simplesmente passá-lo como o quarto argumento para o assless.

Isso geralmente economiza algumas rodadas de DES, mas não faz uma grande diferença de velocidade. Pode fazer se você estiver processando muitos hashes.

python3 assless-chaps.py 5d79b2a85966d347 556fdda5f67d2b746ca3315fd8b93adcab5c792790a92e87 rockyou.db twobytes

[+] Found in 65533 tries: 586c
[-] Found 222 hashes ending in 586c
[+] Found hash: 8846f7eaee8fb1
[-] Found after 186 hashes.
[+] Found hash: 17ad06bdd830b7
[+] Full hash: 8846f7eaee8fb117ad06bdd830b7586c

Criando seu próprio dicionário de hashes

O arquivo mksqlitedb.py ajudará a transformar um arquivo CSV de hashes no banco de dados.

python3 mksqlitedb.py <database name> <csv file>

O arquivo CSV requer três colunas:

  • Os últimos dois bytes do hash (os últimos quatro caracteres ASCII)
  • Os primeiros 7 bytes (os primeiros 14 caracteres ASCII)
  • Os segundos 7 bytes (os caracteres ASCII 15 a 29)

Por exemplo, o hash 8846f7eaee8fb117ad06bdd830b7586c se tornará:

586c,8846f7eaee8fb1,17ad06bdd830b7

Um exemplo de transformação regexp para isso seria: echo 8846f7eaee8fb117ad06bdd830b7586c | sed "s/^\(.\{14\}\)\(.\{14\}\)\(.\{4\}\)$/\3,\1,\2/"

Você pode usar uma lista existente de hashes (como as listas Have I Been Pwned) ou gerar a sua própria usando hashcat e suas combinações favoritas de wordlist/regras.

Usando Have I Been Pwned

As listas de senhas HIBP já são baixáveis como hashes NT, basta remover a contagem do arquivo e convertê-las para o formato CSV para serem importadas para o banco de dados.

Isso pode ser feito usando o utilitário Unix padrão sed da seguinte forma:

sed "s/^\(.\{14\}\)\(.\{14\}\)\(.\{4\}\):.*/\3,\1,\2/" pwned-passwords-ntlm-ordered-by-hash.txt > hibp.csv

Após o que pode ser importado usando mksqlitedb.py hibp.db hibp.csv.

Convertendo uma wordlist em uma hashlist

Para converter uma wordlist simples em uma hashlist de nthashes, você pode usar nthasher, que processa grandes wordlists rapidamente. Os hashes resultantes precisarão ser transformados no formato CSV necessário, conforme descrito acima.

Um nthasher muito mais lento, que gera os hashes diretamente no formato CSV necessário, está incluído neste repositório e é executado simplesmente com:

python3 nthash-from-clear.py <wordlist> > hashlist.csv

Se você quiser expandir a wordlist com regras, veja a próxima seção sobre o uso do hashcat.

Usando hashcat para criar um arquivo CSV de hashes a partir de wordlists e regras

Baixar ferramenta