
grandes conjuntos de regras do hashcat gerados a partir de senhas comprometidas do mundo real
Aviso de manutenção do projeto: Este projeto é considerado concluído. Nenhum pull request ou alteração será feito neste projeto no futuro, a menos que sejam bugs reais ou migrações para permitir que essas regras funcionem com versões mais recentes do hashcat.
Pantagrule é uma série de regras para o quebrador de senhas hashcat geradas a partir de grandes quantidades de dados reais de comprometimento de senhas. Embora os arquivos de regras do Pantagrule possam ser grandes, as regras são ajustáveis e têm desempenho superior a muitos conjuntos de regras existentes.
Pantagrule foi gerado usando o algoritmo Levenshtein Reverse Path do PACK para geração automatizada de regras (Kacherginsky, 2013). A saída do PACK foi então ordenada com base no número de vezes que o PACK gerou a regra para formar o conjunto base de regras. Este processo é semelhante às regras geradas por _NSAKEY para competições de quebra de senhas em 2014 (_NSAKEY, 2014), no entanto, Pantagrule foi gerado a partir de um conjunto significativamente maior de senhas.
A versão 2 do Pantagrule foi desenvolvida a partir do corpus "founds" do hashes.org disponível publicamente, uma lista de palavras pública de primeira linha. Isso produz resultados mais transparentes do que a variante original, que usava um corpus proprietário contendo 842.643.513 senhas únicas.
Quando conjuntos de regras tão grandes são processados pelo PACK, milhões de regras resultam. No entanto, como a maioria das regras geradas aparece apenas algumas vezes, a maioria das regras úteis são aquelas geradas com mais frequência pelo algoritmo. Este repositório contém um subconjunto de regras geradas pelo PACK ao iterar pelo corpus existente.
Para gerar uma otimização de segunda passagem das regras contra dados reais, o milhão de regras geradas mais bem classificadas foi executado contra a lista NTLM do Pwned Passwords usando a wordlist rockyou. Qualquer regra que quebrou uma senha foi adicionada à sua própria lista e as regras com pior desempenho foram descartadas.
Quatro tipos de otimização foram criados:
popular.rule: pantagrule.1m executado contra as 25.000.000 senhas mais comuns do conjunto HIBP.random.rule: pantagrule.1m executado contra 25.000.000 senhas selecionadas aleatoriamente do conjunto HIBP.hybrid.rule: Uma lista ordenada de uma combinação das regras popular e random mais bem-sucedidas, depois cortada pela metade, na tentativa de criar um conjunto de regras mais leve e "equilibrado" que funcione em um conjunto de amostras maior.one.rule: Uma versão do OneRuleToRuleThemAll na qual as regras hybrid de melhor desempenho são anexadas, e a lista é truncada para o tamanho do conjunto de regras dive. Curiosamente, há apenas alguns milhares de regras em sobreposição entre o OneRuleToRuleThemAll e as regras do Pantagrule, tornando as duas estratégias complementares. O one do Pantagrule tem desempenho melhor do que outras listas conhecidas deste tamanho, e é recomendado que você comece com este conjunto de regras antes de tentar uma das variantes maiores.Após o sucesso desses grandes conjuntos de regras, foi feita uma tentativa do inverso da variante royce, na qual a metodologia original do Pantagrule foi usada, mas ambos os conjuntos de dados eram diferentes. O Pantagrule agora usa a lista "founds" pública do hashes.org como base de wordlist para geração de regras, e uma passagem de otimização foi então feita contra a lista NTLM V6 do Have I Been Pwned. Dada a natureza totalmente pública dos dados usados, também permite a publicação de dados brutos de reprodutibilidade, incluindo pantagrule.v2.1m.rule, que são o milhão de regras geradas mais bem classificadas por esta metodologia. Os dados para V5 e V6 são os mesmos para as 25 milhões de senhas principais.
Para esta versão, a forma como one é gerado mudou. Para gerar one, a lista completa de 1 milhão foi anexada a OneRuleToRuleThemAll.rule e então todo o conjunto foi calibrado no Pwned V6, ao invés de apenas anexar regras e truncar.
As convenções de nomenclatura para as regras agora foram alteradas para o formato pantagrule.${corpus}.${trainingversion}.${extension}. Isso facilita entender para que a regra foi otimizada. Por exemplo, para pantagrule.hashorg.v6.random, usamos a metodologia random com hashes.org como base para a geração de regras, otimizada no Pwned Passwords V6.
As regras originais foram treinadas usando a wordlist proprietária juntamente com o conjunto Pwned Passwords NTLM v5 usando rockyou.txt como base. Como os "dados de treinamento" e os dados de validação são os mesmos, faria sentido vê-los otimizados para o conjunto de dados V5.
royceA pedido do contribuidor do hashcat Royce Williams, otimizações do milhão de regras mais bem classificadas também foram executadas com a lista founds do hashes.org. Isso se deve ao corpus HIBP ser relativamente sujo, e a lista founds do hashes.org provavelmente produzir um conjunto de regras mais prático para quebra de senhas no mundo real. Estas foram adicionadas como as variantes royce. As otimizações royce parecem consistir em um número marginalmente menor de regras no geral, e random.royce é substancialmente mais eficaz em uma cauda longa de senhas do que o random original. O desempenho não aumentou em relação às regras existentes em algumas variantes, mas dado que os dados de treinamento e validação do Pantagrule original são ambos do conjunto de dados Pwned Passwords, isso não parece surpreendente. As variantes royce do Pantagrule existem na pasta rules/royce.
Para testar quaisquer sucessos da estratégia Pantagrule contra outros conjuntos de regras, executaremos dados de validação nas 25 milhões de senhas principais do Pwned Passwords V5 e nas 100 milhões de senhas principais do Pwned Passwords V5 para entender a eficácia das regras em quebrar a "cauda longa" com cada conjunto de regras. O rockyou.txt canônico será nosso dicionário e nossa linha de base.
A geração da variante original foi feita em uma máquina com 8x 1070Ti executando hashcat v5.1.0. As variantes royce do Pantagrule foram criadas em uma máquina com 4x Radeon VII executando hashcat git build v5.1.0-1774-gf96594ef. As variantes hashorg.v6 foram criadas e validadas (muito lentamente) em uma única NVIDIA Tesla M4, uma única 1070Ti e hashcat v6.1.0.
Para observar o desempenho das regras em senhas muito comuns, 0-25M é separado em sua própria coluna. A coluna RPP é regras por porcentagem no conjunto de dados de 100M. Isso é calculado usando a fórmula rpp = Math.round(num_rules / (0_100m_percent - 6.450)). Quanto maior esse número, mais regras são executadas por porcentagem quebrada. Isso ajuda a perceber os retornos decrescentes nos conjuntos de regras e dá uma ideia do custo ampliado de executar as regras em hashes mais lentos.
Este trabalho confirma as limitações do algoritmo PACK LRP originalmente testemunhadas por _NSAKEY em conjuntos de dados modernos ao usar o dicionário rockyou. Embora o algoritmo LRP gere regras que aumentam a porcentagem de quebra, ele o faz com um grande aumento no espaço de busca. Por esta razão, o Pantagrule é mais útil em casos onde a quebra difícil requer regras exóticas.
É importante notar que se você puder usar o PACK para gerar regras baseadas em um corpus específico e então direcionar seus hashes restantes com ele, você provavelmente obterá uma porcentagem de quebra maior do que usando um desses grandes conjuntos de regras. Por exemplo, o Pantagrule V2 não tem um desempenho tão bom no PPv5 quanto o conjunto de regras calibrado para v5.
Desde o lançamento original do Pantagrule, essas regras provaram seu valor em múltiplos engajamentos de red team em grandes empresas de tecnologia e consultorias. A lista original pantagrule.1m quebrou 8% dos hashes HIBP restantes que resistiram ao corpus usado para gerar o Pantagrule, os conjuntos de regras comuns acima, uma força bruta alfanumérica de 7 caracteres e as topologias PathWell da KoreLogic.
Como até o autor da meta-regra One Rule to Rule Them All (Hunt, 2017) afirma, não existe uma regra que funcione melhor que as outras. Cada caso de uso é diferente, e cada fonte de regra pode ser uma que ajude você mais do que outra em um dump de hashes específico ou com uma wordlist específica. Observe que esses dados não mostram o que foi quebrado; algumas regras quebraram hashes que outras regras não quebraram.
As regras do Pantagrule são lançadas sob a licença MIT. Sinta-se à vontade para integrá-las em suas próprias ferramentas.
| Regras | Número de Regras | V5 25M | V5 100M | RPP |
|---|
| Sem Regras (apenas rockyou.txt) | 0 | 16.549% | 6.450% | N/A |
| pantagrule.private.v5.one | 99,092 | 79.814% | 69.417% | 1,574 |
| pantagrule.private.v5.hybrid | 355,205 | 81.346% | 73.372% | 5,308 |
| pantagrule.private.v5.popular | 478,736 | 81.792% | 73.544% | 7,135 |
| pantagrule.private.v5.random | 616,236 | 81.687% | 69.805% | 8,828 |
| pantagrule.hashorg.v6.one | 99,092 | 74.500% | 60.573% | 1,831 |
| pantagrule.hashorg.v6.hybrid | 339,953 | 77.649% | 68.341% | 5,493 |
| pantagrule.hashorg.v6.popular | 514,416 | 80.668% | 72.377% | 6,931 |
| pantagrule.hashorg.v6.random | 638,773 | 80.603% | 72.713% | 8,614 |
| pantagrule.private.hashorg.one.royce | 99,092 | 79.618% | 69.092% | 1,582 |
| pantagrule.private.hashorg.hybrid.royce | 314,268 | 81.068% | 73.082% | 4,716 |
| pantagrule.private.hashorg.popular.royce | 420,984 | 81.386% | 73.102% | 6,316 |
| pantagrule.private.hashorg.random.royce | 592,235 | 81.659% | 74.010% | 8,766 |
| best64 | 64 | 45.117% | 24.985% | 3 |
| hob064 | 68 | 37.786% | 19.773% | 5 |
| OneRuleToRuleThemAll | 52,014 | 78.058% | 64.541% | 895 |
| d3adhob0 | 57,548 | 51.274% | 34.800% | 2,030 |
| dive | 99,092 | 77.111% | 63.314% | 1,743 |
| _NSAKEY V1 | 123,289 | 76.42% | 64.121% | 2,138 |
| _NSAKEY V2 | 123,289 | 76.882% | 64.472% | 2,124 |