
실제 유출된 비밀번호로 생성된 대규모 hashcat 규칙 세트
프로젝트 유지 관리 경고: 이 프로젝트는 완료된 것으로 간주됩니다. 향후 이 프로젝트에 대한 풀 리퀘스트나 변경 사항은 실제 버그나 새로운 버전의 hashcat에서 이 규칙들이 작동할 수 있도록 하는 마이그레이션이 아닌 한 이루어지지 않습니다.
Pantagrule은 대규모 실제 비밀번호 유출 데이터로부터 생성된 hashcat 암호 크래커용 규칙 시리즈입니다. Pantagrule 규칙 파일은 크기가 클 수 있지만, 규칙들은 조정 가능하며 기존의 많은 규칙 집합보다 성능이 뛰어납니다.
Pantagrule은 PACK의 Levenshtein 역경로 알고리즘을 사용한 자동 규칙 생성(Kacherginsky, 2013)으로 생성되었습니다. 그런 다음 PACK이 규칙을 생성한 횟수를 기준으로 정렬하여 기본 규칙 집합을 만들었습니다. 이 과정은 2014년 암호 크래킹 대회를 위해 _NSAKEY가 생성한 규칙(_NSAKEY, 2014)과 유사하지만, Pantagrule은 훨씬 더 큰 비밀번호 집합을 기반으로 생성되었습니다. Pantagrule 버전 2는 공개적으로 제공되는 hashes.org "founds" 코퍼스(최고 수준의 공개 단어 목록)를 기반으로 개발되었습니다. 이는 842,643,513개의 고유 비밀번호를 포함한 독점 코퍼스를 사용했던 원래 변형보다 더 투명한 결과를 제공합니다.
이렇게 큰 규칙 집합을 PACK에 입력하면 수백만 개의 규칙이 생성됩니다. 그러나 생성된 규칙의 대부분은 몇 번만 나타나므로, 유용한 규칙은 대부분 알고리즘에 의해 가장 일반적으로 생성되는 규칙들입니다. 이 저장소는 기존 코퍼스를 반복하면서 PACK에 의해 생성된 규칙의 하위 집합을 포함합니다.
실제 데이터에 대한 규칙의 2차 최적화를 생성하기 위해, 상위 100만 개의 생성된 규칙을 rockyou 단어 목록을 사용하여 Pwned Passwords NTLM 목록에 대해 실행했습니다. 비밀번호를 크래킹한 모든 규칙은 자체 목록에 추가되었고, 성능이 낮은 규칙은 폐기되었습니다.
4가지 최적화 유형이 생성되었습니다.
popular.rule: HIBP 집합의 상위 25,000,000개 비밀번호에 대해 실행된 pantagrule.1m.random.rule: HIBP 집합에서 무작위로 선택된 25,000,000개 비밀번호에 대해 실행된 pantagrule.1m.hybrid.rule: 가장 성공적인 popular 및 random 규칙 조합의 정렬된 목록을 반으로 줄여 더 가볍고 "균형 잡힌" 규칙 집합을 만들어 더 큰 샘플 집합에서 작동하도록 한 것입니다.one.rule: _OneRuleToRuleThemAll_의 변형으로, 최고 성능의 hybrid 규칙을 추가하고 목록을 dive 규칙 집합의 크기로 자릅니다. 흥미롭게도 _OneRuleToRuleThemAll_과 Pantagrule 규칙 간에는 수천 개의 규칙만 겹쳐 두 전략이 상호 보완적입니다. Pantagrule의 one은 이 크기의 다른 알려진 목록보다 성능이 뛰어나며, 더 큰 변형을 시도하기 전에 이 규칙 집합으로 시작하는 것이 좋습니다.이러한 대규모 규칙 집합의 성공 이후, royce 변형의 역방향 시도가 이루어졌습니다. 원래 Pantagrule 방법론을 사용했지만 두 데이터 세트가 모두 달랐습니다. 이제 Pantagrule은 규칙 생성을 위해 공개 hashes.org "founds" 목록을 단어 목록 기반으로 사용하고, Have I Been Pwned의 V6 NTLM 목록에 대해 최적화 패스를 수행했습니다. 사용된 데이터가 완전히 공개적이기 때문에, pantagrule.v2.1m.rule(이 방법론으로 생성된 상위 100만 개 규칙)을 포함한 원시 재현성 데이터의 게시도 가능합니다. V5와 V6의 데이터는 상위 2500만 개 비밀번호에 대해 동일합니다.
이 버전에서는 one을 생성하는 방식이 변경되었습니다. one을 생성하기 위해, 전체 100만 개 목록을 OneRuleToRuleThemAll.rule에 추가한 다음 전체 집합을 Pwned V6에 대해 보정했습니다(단순히 규칙을 추가하고 자르는 대신).
규칙의 명명 규칙이 이제 pantagrule.${corpus}.${trainingversion}.${extension} 형식으로 변경되었습니다. 이렇게 하면 규칙이 무엇에 최적화되었는지 이해하기 쉬워집니다. 예를 들어 pantagrule.hashorg.v6.random의 경우, random 방법론을 사용하고 hashes.org를 규칙 생성의 기반으로 하여 Pwned Passwords V6에 최적화되었습니다.
원래 규칙은 rockyou.txt를 기본으로 사용하여 독점 단어 목록과 Pwned Passwords NTLM v5 집합을 함께 훈련했습니다. "훈련 데이터"와 검증 데이터가 동일하므로 V5 데이터 세트에 최적화된 것으로 보는 것이 합리적입니다.
royce 변형hashcat 기여자 Royce Williams의 요청에 따라, 상위 100만 개 규칙의 최적화도 hashes.org founds 목록을 사용하여 실행되었습니다. 이는 HIBP 코퍼스가 비교적 더럽고 hashes.org founds 목록이 실제 크래킹에 더 실용적인 규칙 집합을 산출할 가능성이 높기 때문입니다. 이것들은 royce 변형으로 추가되었습니다. royce 최적화는 전체적으로 약간 더 적은 규칙으로 구성되는 것으로 보이며, random.royce는 원래 random보다 긴 꼬리(long tail)의 비밀번호에서 훨씬 더 효과적입니다. 일부 변형에서는 기존 규칙에 비해 성능이 향상되지 않았지만, 원래 Pantagrule의 훈련 및 검증 데이터가 모두 Pwned Passwords 데이터 세트에서 비롯되었기 때문에 이는 놀라운 일이 아닙니다. Pantagrule royce 변형은 rules/royce 폴더에 있습니다.
Pantagrule 전략의 다른 규칙 집합 대비 성공 여부를 테스트하기 위해, Pwned Passwords V5의 상위 2,500만 개 비밀번호와 Pwned Passwords V5의 상위 1억 개 비밀번호에 대해 검증 데이터를 실행하여 각 규칙 집합으로 "긴 꼬리"를 크래킹하는 규칙 효과를 파악할 것입니다. 표준 rockyou.txt가 사전 및 기준선이 됩니다.
원래 변형 생성은 hashcat v5.1.0을 실행하는 8x 1070Ti 장비에서 수행되었습니다. royce Pantagrule 변형은 hashcat git 빌드 v5.1.0-1774-gf96594ef를 실행하는 4x Radeon VII 장비에서 생성되었습니다. hashorg.v6 변형은 단일 NVIDIA Tesla M4, 단일 1070Ti 및 hashcat v6.1.0에서 (매우 느리게) 생성 및 검증되었습니다.
매우 일반적인 비밀번호에 대한 규칙 성능을 기록하기 위해 0-25M은 자체 열로 분리되었습니다. RPP 열은 100M 데이터 세트에 대한 _규칙 당 백분율_입니다. 이는 rpp = Math.round(num_rules / (0_100m_percent - 6.450)) 공식을 사용하여 계산됩니다. 이 숫자가 높을수록 크래킹된 백분율당 실행되는 규칙이 더 많습니다. 이는 규칙 집합의 수익 체감을 실현하는 데 도움이 되며, 느린 해시에서 규칙 실행의 증폭 비용을 파악하는 데 도움이 됩니다.
이 작업은 rockyou 사전을 사용할 때 현대 데이터 세트에서 _NSAKEY가 원래 목격한 PACK LRP 알고리즘의 한계를 확인합니다. LRP 알고리즘은 크래킹 비율을 높이는 규칙을 생성하지만, 검색 공간이 크게 증가합니다. 이러한 이유로 Pantagrule은 어려운 크래킹에 이국적인 규칙이 필요한 경우에 가장 유용합니다.
특정 코퍼스를 기반으로 PACK을 사용하여 규칙을 생성한 다음 남은 해시를 대상으로 사용할 수 있다면, 이러한 대규모 규칙 집합을 사용하는 것보다 더 높은 크래킹 비율을 얻을 가능성이 높다는 점에 유의하는 것이 중요합니다. 예를 들어, Pantagrule V2는 v5로 보정된 규칙 집합만큼 PPv5에서 잘 수행되지 않습니다.
원래 Pantagrule 릴리스 이후, 이 규칙들은 대형 기술 기업과 컨설팅 회사 모두에서 여러 레드 팀 참여를 통해 입증되었습니다. 원래 pantagrule.1m 목록은 Pantagrule을 생성하는 데 사용된 코퍼스, 위의 일반적인 규칙 집합, 7자리 영숫자 무차별 대입, 그리고 KoreLogic의 PathWell 토폴로지에도 저항했던 나머지 HIBP 해시의 8%를 크래킹했습니다.
One Rule to Rule Them All(Hunt, 2017) 메타 규칙의 저자조차도 다른 규칙보다 더 잘 작동하는 규칙은 없다고 말합니다. 모든 사용 사례는 다르며, 모든 규칙 소스는 특정 해시 덤프나 특정 단어 목록에 대해 다른 규칙보다 더 도움이 될 수 있습니다. 이 데이터는 무엇이 크래킹되었는지 보여주지 않는다는 점에 유의하십시오. 일부 규칙은 다른 규칙이 크래킹하지 못한 해시를 크래킹했습니다.
Pantagrule 규칙은 MIT 라이선스로 배포됩니다. 자신의 도구에 자유롭게 통합하십시오.
| Rules | Number of Rules | V5 25M | V5 100M | RPP |
|---|
| No Rules (just 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 |