Hybride aanval
Projectreferentiedocument Time2Crack
Ontvangers: ontwikkelaars, security onderzoekers, geavanceerde gebruikers
Inhoud
addHybridAttacks()1. Overzicht
Hybride aanval is de kraakmethode die combineert een woordenboekwoordenlijst met een reeks transformatieregelsIn plaats van elk woord te testen in het woordenboek zoals het is (pure woordenboek aanval), genereert het op de vlieg alle plausibele varianten van elk woord "kapitalisaties, karakter substituties, prefix/suffix toevoegingen, inversies .. en systematisch testen ze.
Waarom is het zo effectief? Mensen kiezen niet voor "wachtwoord" als wachtwoord, ze kiezen voor "Password1," "p@ssw0rd," "PASSWORD123" of "wachtwoord!". Deze varianten lijken sterker omdat ze niet in de ruwe woordenboeklijst staan, maar ze behoren tot de eersten die worden gegenereerd door een modern hybride kraakgereedschap. De aanvaller gebruikt precies dezelfde "veilige" heuristieken die de gebruiker toepast.Hybride aanval is historisch gezien de verantwoordelijke methode voor de meerderheid van de echte "gemiddelde" wachtwoord kraakt die lijken te zijn sterk zonder sterk te zijn. (2014, IEEE S&P), de eerste 8 tot 10 regels toegepast op een huidig woord volstaan om het mediane wachtwoord te kraken bevolking.
In Time2Crack modelde de hybride aanval:
2. Historische en academische achtergrond
2.1 Oorsprong: John the Ripper en mutatieregels
De hybride aanval is formeel geboren met John de Ripper (Solar Designer, 1996), de eerste publieke tool om een woordenlijst te combineren met een configureerbare regel engine. Voorafgaand aan John de Ripper, woordenboek aanvallen getest rauwe woorden; John introduceerde het idee dat elk woord genereert een familie van kandidaten.
Chronologie van mijlpalen : JaarGebeurtenis --------------------- 1979Morris & Thompson: gebruikers vervangen letters om hun wachtwoorden te "veiligen" 1996John the Ripper 1.0: eerste publieke regel engine, JtR syntax (:, c, u, r, d...)
2000Alec Muffett documenteert dat 80% van het echte kraken door wordlist+regels gaat, niet brute kracht
2006Hashcat 0,01: migratie op GPU, regels gaan van 1M→1000M kandidaten / seconde
2009RockYou: 14.3M duidelijke wachtwoorden maken empirische kalibratie van de meest effectieve regels mogelijk
2012Gosney (Passwordscon): 8 GPU GTX 580, best64 regels, crack 90% LinkedIn in < 6 dagen
2013Löfstrand: publiceert "best64.rule," 64 regels voor 85-90% van de huidige menselijke transformaties
2014Ma et al. (IEEE S&P): eerste academische studie waarin de effectiviteit wordt gekwantificeerd op regelschaal
2016Hashcat open source: geïntegreerde best64, MD5 snelheid 2 TH/s op 8× GTX 1080
2019Hashcat 6.0: OneRegleToRegleThemAll spel (52k regels) gegenereerd door ML op corpus van wachtwoorden
2023NSA Advisory: beveelt expliciet het testen van bedrijfswachtwoorden met hybride tools aan
2.2 Oprichting van empirische studies
Klein (1990) Weir et al. (2009, IEEE S&P) Het PCFG model wordt voorgesteld maar geldig door de manier waarop de hashcat regels betrekking hebben op 78% van de transformaties waargenomen in RockYou. Demonstreert dat de wachtwoorden "Password1" en "P@ssw0rd" behoren tot de eerste 100 kandidaten gegenereerd door best64 op het woord "wachtwoord." Ma et al. (2014, IEEE S&P) De meest geciteerde studie over de effectiviteit van hybride regels.- Artikel 1 (
: → mot brut) : crack 18% van op dict-gebaseerde wachtwoorden
2.3 LinkedIn vlucht als schoolzaak
De 2012 LinkedIn lek (6.5 miljoen niet-gezouten SHA-1s) perfect illustreert de kracht van de hybride. In 72 uur, de hashcat gemeenschap had gekraakt:
Post-crack analyse onthulde dat "linkin1," "Linkedin1," "l!unked!n" en "LINKEDIN" alle varianten van "linkin" samen tienduizenden gecompromitteerde rekeningen vertegenwoordigden.
3. Conceptuele stichtingen: Waarom de hybride werken
3.1 Het menselijk gedrag van "veilig"
Wanneer een systeem legt regels van complexiteit (majuscule, nummer, symbool), gebruikers niet willekeurig genereren . voorspelbare transformaties toepassen op memorizeerbare woorden :
Menselijke strategieVoorbeeldGerelateerde hybride regel -------------------------------------------------------------- Hoofdletter maken van de eerste letter"Sunshine" → "Sunshine"c (kapitaliseren eerst)
Tel alles"Sunshine" → "SUNSHINE"u (bovenal)
Aan het einde een cijfer toevoegen"zonneschijn" → "zonneschijn1"$1 (bijlage "1")
Jaar toevoegen"sunshine" → "sunshine2024"$2 $0 $2 $4
E→3 vervangen"zonneschijn" → "zonneschijn"s e 3 (vervangen door 3)
Vervangen a→@"wachtwoord" → "p@ssword"s a @
Omgekeerd woord"sunshine" → "enihsnus"r (omkeringen)
Dubbel woord"zon" → "zonzon"d (dupliceren)
Toevoegen ! definitief"zonneschijn" → "zonneschijn!"$!
Meerdere combineren"wachtwoord" → "P@ssw0rd1"c s a @ s o 0 $1
Deze transformaties lijkt creatief aan de gebruiker. precies de eerste die de aanvaller probeert Zij komen overeen met de beperkingen die het veiligheidsbeleid oplegt.
3.2 Het concept van efficiënte vermindering van de ruimte
Een 10-karakter wachtwoord met letters+cijfers+symbolen heeft een ruwe sleutelruimte-kracht van 94^10, 5,4 × 10^19 combinaties. Te groot om in een redelijke tijd te reizen.
Maar als dit wachtwoord "Password1!" is een triviale transformatie van "wachtwoord" is het onder de 500 eerste kandidaten De aanvaller reist niet 5.4 × 10^19 combinaties: hij reist 500.
Dit is de fundamentele vermindering van de hybride aanval: de werkelijke ruimte van menselijke keuzes is astronomisch kleiner dan de theoretische ruimte van mogelijke karakters.
3.3 De machtswet van transformatie
Net zoals rauwe wachtwoorden een wet van macht (Zipf) volgen de transformaties die mensen toepassen ook een zeer geconcentreerde distributie. Ma et al. (2014) empirisch toonde:
Door deze concentratie kunnen 64 goed gekozen regels (best64) een dekking bereiken van 79-855%, waarbij 64 willekeurige regels slechts 10-15% zouden bereiken.
3.4 Interactie met de populariteit van het basiswoord
Hoe vaker het basiswoord, hoe eerder het afgeleide wachtwoord is in de lijst van de aanvaller prioriteit. De aanvaller beveelt zijn kandidaten in afnemende waarschijnlijkheid:
Candidats générés par l'attaquant (ordre de test) :
wachtwoord (bruto, meest voorkomende woord)
Wachtwoord (kapitaliseren eerst)
wachtwoord1 ($1)
PASSWORD (bovenaan alle)
Wachtwoord!
p@ssword (substitueer a→@)
passw0rd (substituut o→0)
Wachtwoord1 (c + $1)
P@ssword (c + s a @)
wachtwoord123 ($12$3)
...
p@ssW0rd! (combinatiecomplex)
"wachtwoord" is het meest voorkomende woord → zijn derivaten worden eerst getest. "papillon" is minder gebruikelijk → zijn derivaten worden veel later getest. Deze prioritering is het centrale mechanisme dat de drie verschillende sleutelruimtes in Time2Crack verklaart.
4. Architectuur van een moderne hybride aanval
4.1 Algemene pijpleiding
Phase 1 : Sélection de la wordlist
├── Passwords fuités triés par fréquence (RockYou, HIBP, Collections)
├── Dictionnaire linguistique (fr.txt, en.txt, de.txt...)
├── Wordlists thématiques (prénoms, villes, marques, séries TV)
└── Wordlists contextuelles (domaine cible, noms d'employés, termes métier)
Fase 2: Selectie van de regels Spel
- - beste64.regel (evenwichtige referentie, 64 regels)
OneRegleToRegleThemAll.rule (52.000 regels, ML-generated)
D3ad0ne.rule (34.000 regels, empirisch)
- JtR-regels (algemene regel, specifieke regel, extra regel)
- - Aangepaste regels (aangepast aan het doeldomein)
Fase 3: Uitbreiding (woordenlijst × regels)
Voor elk woord w in woordenlijst:
Voor elke regel in de regel:
│ aanvrager = aanvraag(r,w)
Promotie │ Als kandidaat
Promotionele wachtrij │van decandidates.push(candidate)
--Order: (w1, regel 1), (w1, regel 2)... (w2, regel1)...
of: (w1, regel 1), (w2, regel 1)... volgens strategie
Fase 4: Haching en vergelijking (GPU)
- - Verzenden door batch van ~10M kandidaten naar de GPU
- Parallelle berekening van hashs (SIMD, 168 GH/s voor MD5)
- Vergelijking met target hash(es)
Als dit overeenkomt: FINDED
Fase 5: Rapportage
- - Gebarsten kandidaat + regel gebruikt + rang in lijst
4.2 Hashcat-methoden
Hashcat implementeert de hybride op twee verschillende manieren:
Modus -a 0 (woordenlijst + regels) Dit is de klassieke hybride modus.hashcat -a 0 -m 0 hashes.txt rockyou.txt -r best64.rule
Modus -a 6 (woordenlijst + masker) : combineert een woordenlijst met een positionaal masker. Genereert alle combinaties mot + suffixegemaskerd.
hashcat -a 6 -m 0 hashes.txt wordlist.txt ?d?d?d?d
Test "sunshine0000," "sunshine0001, ..., "sunshine9999"
Modus -a 7 (masker + woordlijst) : Inverse, gemaskerd voorvoegsel + woord.
hashcat -a 7 -m 0 hashes.txt ?d?d wordlist.txt
Test "00sunshine," "01sunshine," ..., "99sunshine"
Time2Crack modelleert vooral de modus -a 0 (overschrijvingsregels), die betrekking hebben op het overgrote deel van de daadwerkelijk gedocumenteerde hybride aanvallen.
4.3 Orde van kandidaten en prioriteitenstrategie
De volgorde waarin kandidaten worden getest is cruciaal.
Strategie eerst (standaard hashcat): alle regels worden toegepast op W1 alvorens over te stappen op W2.(W1, R1), (W1, R2), ..., (W1, Rn), (W2, R1), (W2, R2)...
Voordeel: als W1 zeer waarschijnlijk is (bijvoorbeeld "wachtwoord"), ontdekt u snel zijn varianten.
Regel-eerste strategie : alle woordenlijsten worden uitgevoerd voor R1 voordat ze naar R2 gaan.
(W1, R1), (W2, R1), ..., (Wm, R1), (W1, R2), (W2, R2)...
Voordeel: de meest effectieve regel (: → mot brut) wordt eerst toegepast op alle woorden. Vaak effectiever voor diverse corpus.
In de praktijk gebruikt hashcat standaard woord-eerste, maar ervaren operators kiezen volgens het doelprofiel.
5. Stelt mutatieregels
5.1 Syntaxis van hashcat-regels
De hashcat-regels worden uitgedrukt in een minimumtaal waarin elk teken een operatie op de kandidaat-string vertegenwoordigt:
Gevalmodifiers :: Identiteit (bruto woord, geen transformatie)l Alle kleine letters ("PASSWORD" → "wachtwoord")u c Kapitaliseren eerste, kleine geval rust ("PASSWORD" → "Wachtwoord")C t Inschakelen van alle tekens ("Wachtwoord" → "PASSWORD")TN Schakel het vakje van teken naar positie Nr Omkeren ("wachtwoord" → "drowssap")d Dupliceren ("wachtwoord" → "wachtwoordwachtwoord")f { Roteer links ("wachtwoord" → "wachtwoordp")} Rechts draaien ("wachtwoord" → "dpasswor")[ Verwijder eerste teken ("wachtwoord" → "wachtwoord")] Het laatste teken verwijderen ("wachtwoord" → "passwor")$X X toevoegen ("wachtwoord" + $1 → "wachtwoord1")^X Prepend teken X ("wachtwoord" + ^1 → "1wachtwoord")iNX Plaats teken X op positie NsXY Vervang alle X door Y ("wachtwoord" + s a @ → "p@ssword")SNX Vervang teken op positie N door X'N Afkappen op positie N (wachtwoord + '4 → "pass")DN Teken verwijderen op positie N - Pas de regel alleen toe als lengte < N >N De regel alleen toepassen als lengte > N=N De regel alleen toepassen als lengte = N5.2. Samengestelde regels
Regels kunnen op één lijn worden geketend om complexe transformaties te creëren:
c $1 → "Password1" (capitalize + append 1)
c $! $1 → "Password!1" (capitalize + append ! + 1)
s a @ s e 3 → "p@ssw3rd" (substitute a→@ et e→3)
r $1 → "1drowssap" (reverse + append 1)
u $2 $0 $2 $3 → "PASSWORD2023" (uppercase + append year)
Macht zit in de samenstelling: 64 eenvoudige regels genereren duizenden verschillende transformaties door combinatie.
5.3 Hoofdregels
best64.rule (Löfstrand, 2013) OneRegleToRegleThemAll (NotSoSecure, 2019) d3ad0ne.rule 34.096 Communautaire regels, gericht op patronen die niet onder de beste64 vallen (accenten, uitgebreide karakters, niet-Engelse patronen). live.rule 99 000+ regels, de meest uitgebreide. Gebruikt voor lange termijn kraken wanneer anderen mislukt. Algemeen2.regel (JtR) Automatische gegenereerd door statistische analyse van reeds gekraakte wachtwoorden. Herberekend periodiek als nieuwe lekken optreden.6. Best64 regels: het referentiespel
Best64 is de set van 64 standaard regels van referentie in academische literatuur en industrie. Hier zijn de belangrijkste regels en hun empirische rechtvaardiging:
6.1 De 20 meest effectieve regels (in volgorde van uitvoering)
RangArtikelTransformatie% wachtwoorden behandeld (mei 2014) ------------------------------]---------------- 1:Grof woord-18%
2cHoofdletter~11%
3uHoofdletter alles6
4$1Invoegen "1"~5%
5lKleine letters~4%
6$!Voeg " toe!"~3%
7s a @a→@2,8%
8c $1Hoofdletter + "1"~ 2,5%
9$2"2" toevoegen~2,1%
10rOmgekeerd~1,9%
11$! + cHoofdletter + "!"~1,7%
12s o 0o→0~ 1,6%
13dDupliceren~1,4
14s e 3e→3~1,3%
15$1 $2 $3Voeg "123" toe~1,2
16c $1 $2 $3Kapitalisatie + "123"~1,1%
17$0"0" toevoegen~1,0%
18^1Prepareer "1"~0,9%
19s i 1i→1~0,8%
20c $! $1Hoofdletter + "!1"~0,7%
Cumulatieregels 1 : ~55% van op dict gebaseerde wachtwoorden
Cumulatieregels 1 : ~68% van dict-gebaseerde wachtwoorden
Cumulatieregels 1 : ~79% van op dict-gebaseerde wachtwoorden
6.2 Waarom zijn deze regels zo doeltreffend?
Elke top-10 regel komt overeen met een gemeenschappelijk veiligheidsbeleid:
c)$1)$!)c $1 of c $1 $2 $3Password beleid niet echt verhogen veiligheid als gebruikers te implementeren voorspelbare transformaties
7. Volledige taxonomie van transformaties
7.1 Categorie 1: Case transformaties
Gebruik makend van de verplichting om kapitaal te hebben:
c veranderingen)7.2 Categorie 2: Digitale achtervoegsels en voorvoegsels
Gebruik maken van de verplichting om een cijfer te hebben:
7.3 Categorie 3: Leervervangers
Systematische vervanging van letters door soortgelijke cijfers of symbolen:
VervangingEmpirische frequentie --]---------------------- a → @23% van de wachtwoorden met @ e → 331% van de wachtwoorden met 3 i → 119% van de wachtwoorden met 1 o → 027% wachtwoorden met 0 S → $14% van de wachtwoorden met $ l → 18% t → 76% g → 94%Gecombineerde vervangingen ("P@ssw0rd") lijken complex maar worden gegenereerd in een paar regels: c s a @ s o 0Zij behoren tot de 500 eerste kandidaten Op wachtwoord.
7.4 Categorie 4: Symbolische achtervoegsels
Gebruik maken van de verplichting om een speciaal karakter te hebben:
7.5 Categorie 5: Structurele veranderingen
Minder frequent maar nuttig voor sommige profielen:
7.6 Categorie 6: Compound transformaties (geavanceerd niveau)
Complexe regels combineren verschillende bewerkingen:
c $1 s a @ → "P@ssword1" (capitalize + append 1 + substitute a→@)
u $! $1 $2 $3 → "SUNSHINE!123" (uppercase + append !123)
r c $1 → "Drowssap1" (reverse + capitalize + append 1)
s e 3 s a @ c $! → "P@ssw3rd!" (multiple substitutions + capitalize + !)
Deze transformaties lijken zeer complex, maar blijven aantoonbaar door een goede set van regels. OneRuleToRuleThemAlle bevat duizenden van deze.
8. Frequentieprioriteit: Het hart van effectiviteit
8.1. De frequentie van het basiswoord bepaalt de prioriteit
Een intelligente aanvaller past de regels niet uniform toe op alle woorden.
Deze strategie wordt uitgevoerd in hashcat via het sorteren van de woordenlijst door het verlagen van de frequentie in combinatie met de woord-eerste strategie. Het verklaart waarom "Password1" (afgeleid van "wachtwoord," het woord #1) wordt gekraakt in milliseconden, terwijl "Soleil1" (afkomstig van "zon," woord ~5000 uit het Franse woordenboek) een paar seconden kan duren.
8.2 Mediane positie in zoekruimte
De belangrijkste maatregel is: het mediane aantal geteste kandidaten voordat het doelwachtwoord wordt gevonden. Ma et al. (2014) geven empirische metingen:
DerdeVoorbeeldMediane aanvragers voordat zij een -------------------------------------------------------------------- TOP100"wachtwoord1," "P@ssword"450 500 Gemeenschappelijke dobbelstenen (top-10k)Sunshine1, sunshine.5 000 15 000 Minder vaak"Paillon2024"50 000 200.000 Zonder woordenboek"Xk7#mP9q"N.v.t. (niet van toepassing zijnde hybride)Deze metingen zijn de directe basis van Time2Crack constanten:
const HYBRIDKEYSPACECOMMON = 500; // Ma et al. 2014 — médiane top-100
const HYBRIDKEYSPACEDICT = 81 000; // Ma et al. 2014
cont HYBRIDKEYSPACEFULL = 128e6; // Gosney 2012
8.3 Voorwaarden die nodig zijn om de hybride toe te passen
Hybride aanval vereist het wachtwoord te zijn structureel afgeleid van een woordenboekwoordTime2Crack detecteert deze aandoening via hybridVuln :
const hybridVuln = dictWord || (common && /[a-z]/i.test(pw));
dictWord = true : het wachtwoord is of is afgeleid van een taalwoordenlijstcommon && lettre : het wachtwoord verschijnt in GEMEENSCHAPPELIJK (HIBP top-400) en bevat letters Als dictWord noch hybridVuln het wachtwoord bevat geen detecteerbare woordenboek root null Een puur willekeurig wachtwoord als "xK9#mQ7@" is niet kwetsbaar voor hybride.
9. Uitvoering in Time2Crack: addHybridAttacks()
9.1 Volledige geannoteerde code
function addHybridAttacks(rows, hybridVuln, weak, common, dictWord) {
if (hybridVuln || weak) {
// Sélection du keyspace selon la popularité du mot de base :
// common → mot dans HIBP top-400 → position ~500 dans la liste de l'attaquant
// dictWord → mot dans la wordlist → position ~8000
// sinon (hybridVuln sans dictWord ni common) → scan exhaustif ~128M
const hybridKS = common ? HYBRIDKEYSPACEGEMEENSCHAPPELIJK
dictWord? HYBRIDKEYSPACEDICT
HYBRIDKEYSPACEFull;
voor (cont a van ALGOS) {
rijen.push({
atk: t("aHybrid");
hash: a.name,
tarief: a.rate,
// budgetTime: de keyspace IS het aantal gissingen dat door 2 wordt verdeeld
// (in tegenstelling tot BrutTime, hier worden kandidaten gerangschikt naar waarschijnlijkheid)
droog: zwak ? zwakGoestijd(a.rate): budgetTime(hybridKS, a.rate),
opmerking: zwak ? t("nWeakPassword") : t("nDictMut")
kat: "hybride,"
});
}
Anders {
// Wachtwoord zonder structuur woordenboek → hybride niet van toepassing
rijen.push({
atk: t("aHybrid");
hash: "(all),"
tarief: 0,
droog: nul, // N/A in de tabel
Opmerking: t(nStructUnrecog),
kat: "hybride,"
});
}
}
9,2 budgetTime vs bruteTime
Het onderscheid tussen beide functies is fundamenteel:
// bruteTime : l'attaquant ne sait pas où est le mot de passe dans l'espace.
// Il teste en moyenne la moitié avant de le trouver. → keyspace/2
function bruteTime(keyspace, rate) {
const ls = Math.log(keyspace / 2) - Math.log(rate);
return Math.exp(ls);
}
// budgetTijd: de aanvaller test kandidaten in dalende volgorde van waarschijnlijkheid.
// Keyspace IS het aantal kandidaten dat wordt verwacht voordat (mediane positie) wordt gevonden.
// Geen verdeling door 2
BegrotingsfunctieTijd, rente) {
const ls = Math.log(guesses) - Math.log(rate);
geeft wiskunde.exp(ls);
}
Voor de hybride, budgetTime is correct omdat de 500/8000/128M kandidaten empirische schattingen van de mediane positie, geen totale ruimte om te reizen.
9.3 Relatie met isDictWord()
Detectie dictWord welke voorwaarden de keuze van hybride sleutelruimte wordt geproduceerd door isDictWord() :
function isDictWord(pw) {
if (!DICTWORDS || !DICT(W VERMELDING.size) return false;
const l = pw.normalize("NFC").toLowerCase();
// Directe test: Is het wachtwoord zoals het in het woordenboek staat?
indien (DICT)
WORDS.has(l)) return true;
// Leetified test: "s0le1l" → "zon" in de dico?
const dl = deLeet(pw);
als (dl!)VERMELDING.has(dl) return true;
// Test substring: "zonneschijn123" bevat "zonneschijn" in de dico?
voor (const w van DICTW VERMELDING) {
indien (l.includes(w) &&w.length >= 4) return true;
}
Foutief retourneren;
}
Deze detectie bepaalt niet alleen of de hybride van toepassing is, maar ook welke sleutelruimte (vaak vs dict) wordt gebruikt om de tijd te berekenen.
10. De drie hybride sleutelruimtes en hun rechtvaardiging
10.1 HYBRIDKEYSPACEGEMEENSCHAPPELIJK = 500
Achtergrond Het wachtwoord is in GEMEENSCHAPPELIJK de hardgecodeerde lijst HIPP top-~400. Dit zijn enkele van de meest voorkomende wachtwoorden in de wereld ("wachtwoord," "letmein," "sunshine," "iloveyou" ...). Rechtvaardiging Ma et al. (2014) empirisch gemeten dat de mediane positie van een top-1000 wachtwoord in een hybride lijst gesorteerd op waarschijnlijkheid ~450 kandidaten is. Het getal 500 is een enigszins conservatieve schatting om tot ~400 rang te dekken. Interpretatie : een aanvaller die best64 toepast op een woordenlijst gesorteerd op frequentietests gemiddeld 500 kandidaten voor het vinden van het wachtwoord. Bij 2000 GH/s (MD5, 12× RTX 4090), 500 kandidaten = 0,25 picoseconden- Bijna onmiddellijk. Voorbeeld : "Sunshine1" → "sunshine" is in GEMEENSCHAPPELIJK → HYBRIDKEYSPACEGEMEENSCHAPPELIJK = 500 →budgetTime(500, 2027e9) 0,25 nanoseconden.
10.2 HYBRIDKEYSPACEDICT = 8.000
Achtergrond Het wachtwoord is afgeleid van een woord uit de taalwoordenlijst, maar niet van GEMEENSCHAPPELIJK. Dit zijn gewone woordenschat woorden ("zon," "berg," "paillon"...) met transformaties. Rechtvaardiging Ma et al. (2014) meet een mediane positie van 2000 tot 15.000 afhankelijk van de populariteit van het woord in RockYou. De empirische mediaan is ~ 8000. Deze sleutelruimte weerspiegelt dat de aanvaller het woord en zijn varianten test na het vermoeien van de meer voorkomende kandidaten. Interpretatie : 8.000 kandidaten bij 2.000 GH/s (MD5) = 4 nanosecondenVoor bcrypt (69 kH/s): 8.000 / 69 000 0,12 seconden. Voorbeeld : "Soleil2024" → "zon" in fr.txt → HYBRIDKEYSPACEDICT = 8000 → een paar nanoseconden op MD5, 0,12s op bcrypt.10.3 HYBRIDKEYSPACEFULL = 128.000.000
Achtergrond :hybridVuln is waar (wachtwoord heeft een woordenboekstructuur) maar geen van beide common noch dictWord De aanvaller moet door de hele wordlijst bladeren met alle regels.
Rechtvaardiging : Gosney (Passwordscon 2012) documenteert een woordenlijst van 3,5M woorden × best64 (64 regels) = 224M kandidaten in totaal. In de praktijk maken realistische woordenlijsten 2M woorden en de gedeeltelijke beste64 runs stoppen bij ~128M kandidaten voordat klimmen naar bredere regels.
Formule : 2000000 mots × 64 règles = 128000000 candidats
Interpretatie : 128 miljoen kandidaten bij 2000 GH/s (MD5) 64 microseconden. Op bcrypt (69 kH/s): ~31 minuten.
11. Kalibratie van hoge trouw
11.1 Rol van hoge betrouwbaarheid
Wanneer de hoge betrouwbaarheidsmodus (HF) wordt geactiveerd in Time2Crack, wordt een extra multiplier toegepast op de berekende tijd om de nauwkeurigheid te verfijnen. Voor hybride aanval houdt deze multiplier rekening met factoren die niet worden vastgelegd door de basissleutelruimtes.
HF multiplicators voor hybride
In applyHighFidelityCalibration() :
case "hybrid":
// Mots très courants : crackés encore plus tôt que la médiane Ma 2014
// car les attaquants modernes trient word-first + règle-first simultanément.
// Réduction de 30% sur les temps déjà courts.
m = context.vaak ? 0,7
: context.dictWord ? 0,8
- 1,0;
Break;
Rechtvaardiging :
common : moderne gereedschappen (hashcat met --markov-thresholdDe beste kandidaten komen nog eerder aan.dictWord : minder effect omdat de positie in de woordenlijst minder geconcentreerd is.hybridVuln alleen (FULL keyspace): geen enkele vermindering van volledige sleutelruimte is al een conservatieve schatting.11.3 Interacties met de monotone bewaker
De monotone bewaker zorgt ervoor dat geen gespecialiseerde aanval beweert te zijn sneller dat de ruwe kracht op de alfabetische subtekenreeks van het wachtwoord:
// Pour chaque row non-brute :
const floorAlpha = bruteTime(Math.pow(26, alphaOnly.length), algo.rate);
if (row.sec < floorAlpha) row.sec = floorAlpha;
Voor korte woorden (bv. "cat" = 3 letters, vloer = 26^3/rate
12. Relatie met afgeleide aanvallen
12.1 Hybrid vs. Puur woordenboek
CriteriaPuur woordenboekHybride --------------------------------------- Geteste kandidatenWoorden van correcte lijstWoorden + al hun varianten Dekking (RockYou)-18%~79-85% (met beste64) Sleutelruimte (200k woorden)200 000200 000 × 64 = 12,8M ToepasselijkheidWachtwoord = exact woordWachtwoord afgeleid van een woord Kwetsbaar voorbeeld"zonneschijn" (exact)Sunshine1! Bestand voorbeeld"Sunshine1""xK9#mQ7@" (geen root)12.2 Hybrid vs Regelgebaseerd
De regelgebaseerde aanval in Time2Crack is conceptueel vergelijkbaar maar met een veel bredere set regels:
const RULEKEYSPACE = 250000000; // vs 128M voor volledige hybride
Het verschil: de beste64 model hybride (64 regels, focus op gemeenschappelijke menselijke transformaties). De regel gebaseerde aanval modellen bredere games zoals d3ad0ne (34k regels) of OneRuleToRuleThemAll (52k regels), gebruikt wanneer best64 faalt. De regel-gebaseerd is de "tweede lijn" hybride
12.3 Hybrid vs. PCFG
PCFG (Probabilistic Context-Free Grammar, Weir 2009) modelleert de grammaticale structuur van het wachtwoord om kandidaten te genereren.
CriteriaHybridePCFG ---------------------------- AanpakBasiswoord + transformatieregelsAlgemene grammaticale structuur ForcerenBestaande woorden gemuteerdStructuurtype "word+Digits" Voorbeeld"zonneschijn" → "zonneschijn"Detecteert de structuur "Caps+lower+digit" ComplementariteitTriggers opdictWordTriggers op gedetecteerde structuur
Sleutelruimte (Time2Crack)500 / 8k / 128MpcfgKeyspace(pw) dynamisch berekend
PCFG kan aanvallen wachtwoorden zonder root woordenboek als hun structuur komt vaak voor (ex: "Thelonious8" → geen woord van de dico maar structuur Capitalize+lower+digit zeer voorspelbaar).
12.4 Hybrid vs Morfologisch (morf)
De morfologische aanval test taalkundige varianten (flexions, variaties). Het is een generalisatie van de hybride voor talen met rijke morfologie:
De hybride werkt op het oppervlak van het woord (karakter transformaties), de morfologische werkt op de lexicale structuur (derivatie, buigen), en ze zijn complementair.
13. Benchmarks per hash-algoritme
13.1 Tijd voor de drie hybride sleutelruimtes (12× RTX 4090)
AlgoritmePercentage (H/s)GEMEENSCHAPPELIJK (500)DICT (8k)FULL (128M) ----------------------------- [57]--------------- [57] MD52 027 GH/s0,25 ps3,9 ns63 μs SHA-1610 GH/s0,82 ps13 ns210 μs SHA-256272 GH/s1.84 ps29 ns470 μs NTLM3,462 GH/s0,14 ps2,3 ns37 μs bcrypt (kosten 10)69 kH/s7,2 ms0,12 s31 min. Argon2id800 H/s0,625 s10 s44 uur Lezen : voor MD5 en NTLM wordt zelfs de FULL keyspace (128M-kandidaten) gekraakt in een paar dozijn microseconden. Argon2id is het enige algoritme dat sterk weerstand biedt, zelfs voor gewone woorden: 0,625 seconden voor een GEMEENSCHAPPELIJK woord, 10 seconden voor een dictwoord. Deze tijden blijven kort in absolute waarde, maar vertegenwoordigen een vertraging van x10^12 vs MD513.2 Impact van het aanvalsprofiel
Time2Crack biedt twee profielen (Ervaren 12 GPU, Professional 100 GPU). Voor de hybride, het profiel verschil is direct evenredig:
ProfielGPU'sMultiplierVOLLEDIGE bcrypt ------------------------------- [57] Ervaren12× RTX 40901×31 min. Professioneel~100 GPU~8×~4 minVoor MD5, SHA-1, NTLM: het profiel verandert de tijd van microseconden naar nanoseconden, zonder enige praktische impact, beide zijn onmiddellijk.
14. Concrete voorbeelden van hybride kraken
14.1 Voorbeeld 1: "Wachtwoord1" (COMMON)
Analyse :isCommon("Password1") → onwaar (niet in exact HIPP)isDictWord("Password1") → waar ("wachtwoord" in DICTW VERMELDINGEN in kleine letters)COMMON.has("password") → waar → common = true: (bruto woord "wachtwoord" → nee), c ("Wachtwoord" → nee), c $1 ("Wachtwoord1" → FIND, rij ~8)
14.2 Voorbeeld 2: "Sun2024" (DICT)
Analyse :isCommon("Soleil2024") → onwaarisDictWord("Soleil2024") → waar ("zon" in fr.txt)COMMON.has("soleil") → vals → common = false, dictWord = truec $2 $0 $2 $4 ("Sun2024") in de rij ~3 van zijn regels → algemene positie ~15 003.
14.3 Voorbeeld 3: "p@pillon!" (DICT met substituties)
Analyse :isDictWord("p@pillon!") : de-leetification → "paillon" → in fr.txt → dictWord = trues a @ $! → "p@pillon!" in rij ~12. Algemene positie: ~180.000. Altijd goed in HYBRIDKEYSPACEDICT.
14.4 Voorbeeld 4: "xK9#mQ7@" (bestendig)
Analyse :isDictWord("xK9#mQ7@") → onwaar (geen root woordenboek)isCommon("xK9#mQ7@") → onwaarhybridVuln = falsesec = null → hybride niet van toepassingDit wachtwoord kan niet worden gekraakt door hybride aanval. Het heeft geen woordenboek root. De aanvaller moet gebruik maken van pure brute kracht, PCFG of statistische aanvallen (Markov, Neural).
14.5 Voorbeeld 5: "LinkedInB3st!"
Analyse :isDictWord("LinkedInB3st!") : "linkin" → wordlist en.txt + deLeet("b3st") → "beste" → dictWord = trueInteressant geval: het wachtwoord bevat twee roots ("linkedin" en "best" via de-leetification). Hybride aanval is van toepassing omdat ten minste één root wordt gedetecteerd. In de praktijk zou een combinatoraanval (twee woorden gelijmd) hier nog effectiever zijn.
15. Hybride aanvalslimieten
15.1 Intrinsieke grenswaarden
Afhankelijk van de kwaliteit van de woordenlijst : als het basiswoord niet in de woordenlijst staat, kan de hybride niet werken. Een wachtwoord gebaseerd op een zeer gespecialiseerde term (neologisme, obscure technische term, woord van een zeldzame taal) kan weerstaan als het ontbreekt in alle gangbare woordenlijsten. Onvolledige dekking van transformaties : zelfs OneRuleToRuleThemAlle met 52k regels dekt niet 100% van de denkbare transformaties. Sommige zeer zeldzame transformaties (base64 gedeeltelijke coderingen, uitgevonden patronen) ontsnappen aan de regels. Combinerende explosie met lange Wordlists Bij 2.000 GH/s (MD5), duurt het ~ 250 seconden, maar met bcrypt (69 kH/s), ~ 230.000 jaar. De schaalbaarheid van de hybride wordt beperkt door de lengte van de wordlist en de traagheid van de hash algoritme.15.2 Wat Time2Crack niet vastlegt
Context Woordenlijsten : een aanvaller die zich richt op een specifiek bedrijf zal een woordenlijst bouwen met de naam van het bedrijf, producten, namen van werknemers, zakelijke termen. "Renault2024!" zou direct worden gekraakt door een aanvaller gericht Renault Multipass-composietregels Sommige wachtwoorden weerstaan best64 maar geven toe aan twee-pass regels (toepassing van de ene regel, pas dan een andere regel toe op het resultaat). Time2Crack model slechts één regel pass. Cache effecten en geheugen : hashcat onderhoudt een tabel van kandidaten al getest om duplicaten te vermijden, die versnelt loopt in de praktijk. Niet gemodelleerd in Time2Crack (conservatief).15.3 Gevallen waarin de hybride wordt overschat
Time2Crack kan hybride snelheid overschatten in twee gevallen:
16. Doeltreffende verdediging
16.1 Wat bestand is tegen hybridisatie
Hybride aanval mislukt als het wachtwoord komt niet voort uit een bestaand woordenboekwoordEffectieve strategieën:
Willekeurige wachtwoorden "xK9#mQ7@vP2!" bevat geen woordenboekwortel. Geen enkele hybride regel kan het genereren. Weerstand: maximum. Wachtwoordgenerators : wachtwoord managers (Bitwarden, 1Password, KeePass) genereren willekeurige strings. Geen root woordenboek → hybride niet van toepassing. Wachtwoorden van echt willekeurige woorden : "tabouret-marmot-ginger-flash" vier willekeurige woorden. Hybride aanval in de klassieke modus genereert geen combinaties van 4 woorden (dit is de rol van de combinator). Passphrase weerstaat de standaard hybride.16.2 Wat is GEEN resistentie tegen Hybride
De meest voorkomende "versterkingsstrategieën" verzetten zich niet tegen:
StrategieVoorbeeldResistentie -------------------------›› Hoofdletter maken van de eerste letterZonneschijnArtikelc, rij 2
Een cijfer toevoegen"sunshine1"Artikel $1, rij 4
Toevoegen symboolSunshine.Artikel $!, rij 6
E→3 vervangen"suns3ine"Artikel s e 3, top-20
Alles combinerenSuns3ine.Een samengestelde regel, top-100
Kies een zeldzaam woordPapillon123.
Dubbel woord"zonzon"Artikel d, top-30
Omgekeerd"enihsnus"Artikel r, top-15
Conclusie Elke strategie op basis van "neem een woord + wijzigen" is kwetsbaar voor de hybride. De uitzondering is zo'n complexe en zeldzame wijziging dat het niet wordt gedekt door een regel ..maar als de gebruiker moet onthouden deze complexe transformatie, hij eindigt meestal kiezen voor iets voorspelbaar.
16.3. Resistent hash-algoritmen
Zelfs als een wachtwoord kwetsbaar is voor de structurele hybride, kan het hash-algoritme de aanval economisch onlevenbaar maken:
AlgoritmeTijd voor DICT (8k gissingen)Oefenaanval ---------------------------------------------------------------- MD5 / NTLM< 1 nanosecondeDirect SHA-25630 nanosecondenDirect bcrypt kosten 100,12 secondenTriviaal bcrypt kosten 14~32 secondenUitvoerbaar Argon2id (standaard)~10 secondenUitvoerbaar Argon2id (sterk parametraat)~100 secondenLangzaam maar mogelijk Argon2id met hoge parameters (t=4, m=65536) is het enige algoritme dat de hybride echt duur maakt, zelfs op zwakke wachtwoorden.16.4 Praktische aanbevelingen
17. Referenties
Academische publicaties
Klein (1990) "Foiling the Cracker": Een overzicht van, en verbeteringen aan, wachtwoordbeveiliging Werkzaamheden van de USNIX Security Workshop, 1990. Weir, M., Aggarwal, S., de Medeiros, B., & Glodek, B. (2009) Wachtwoord volgen met behulp van probabilistische contextvrije grammatica's IEEE Symposium on Security and Privacy (S&P), 2009. Opgericht het PCFG model en geldig door de manier waarop de hashcat regels betrekking hebben op 78% van de menselijke transformaties waargenomen in RockYou. Ma, J., Yang, W., Luo, M., & Li, N. (2014) Een studie van Probabilistische Password Modellen IEE Symposium on Security and Privacy (S&P), 2014. Wat? Directe referentiestudie voor Time2Crack: empirische meting van mediane posities (500 voor top-100, 2000 Durmuth, M., Chaabane, A., Perito, D., & Castelluccia, C. (2015) Wanneer Privacyvergaderingen Beveiliging: Persoonlijke gegevens voor Wachtwoord volgen ESORICS 2015. Veras, R., Collins, C., & Thorpe, J. (2014) Op de Semantische patronen van wachtwoorden en hun impact op de beveiliging NDSS 2014. Taalanalyse van semantische patronen. Ur, B., Bees, J., Segreti, S. M., Bauer, L., Christin, N., & Cranor, L. F. (2015) Komen gebruikerspercepties van wachtwoordbeveiliging overeen met realiteit? ACM CHI 2015. Demonstreert dat gebruikers systematisch de sterkte van gemuteerde wachtwoorden overschatten. "P@ssw0rd" ontvangt een subjectieve score van "sterk" maar wordt gekraakt in < 1s. Wheeler, D.L. (2016) zxcvbn: Low-Budget Wachtwoord Sterkteschatting 25e USENIX Security Symposium, 2016. Krachtschatting bibliotheek integratie mutatie regel detectie. Referentie voor de implementatie van detectie heuristiek.Industriële conferenties en presentaties
Gosney, J (2012) 8x Nvidia GTX 580 Cluster Hashcat Benchmarks / LinkedIn crack sessie Wachtwoordencon 2012, Oslo. Documenteer de LinkedIn crack: best64 + wordlist 3.5M = 224M kandidaten, 90% gebarsten in 6 dagen.KEYSPACEFULL = 128M. Löfstrand, K. (2013) best64.rule Intern, gepubliceerd op GitHub. Een set van 64 regels die empirisch geselecteerd zijn op RockYou om de cracksnelheid te maximaliseren. Steube, J. (2016 Hashcat Advanced Password Herstel https://hashcat.net/hashcat/ Officiële mode documentatie -a 0, -a 6, -a 7. Syntaxis van regels. Officiële GPU benchmarks op 12× RTX 4090. NotSoSecure (2019) OneRegleToRegleThemAll https://github.com/NotSoSecure/wachtwoordkrakenregels 52 218 regels gegenereerd door automatisch leren op corpus van gebarsten wachtwoorden.Referentiegereedschappen
John de Ripper (Solar Designer, 1996 https://www.openwall.com/john/ Pioneer van de wordlist+rules hybride. JtR syntax altijd gebruikt parallel met Hashcat. Hashcat (Steube, 2009 https://hashcat.net/hashcat/ Referentie GPU implementatie. Modi -a 0/6/7 voor hybride. best64 geïntegreerd. RockYou wordlist (2009) 14,3M duidelijke wachtwoorden. Standaard kalibratie corpora voor alle hybride regelsets. Seclists (Daniel Miessler, 2012 https://github.com/danielmeissler/SecLists Collectie van wordlists per taal, domein, thema. Belangrijkste bron van Time2Crack taal wordlists.Webbronnen geciteerd in de Time2Crack-toepassing
Chick3nman (Hashcat benchmarks/regels). https://gist.github.com/Chick3nman/32e662a5bb63bc4f51b847bb4222fd Verwante brondescHybrid (app.js) voor de orde van grootte van de toegepaste mutatieregels.
IEEE Xplore (hybride referentie).
https://ieeexplore.ieee.org/document/6956583
Verwante bron descHybrid (app.js) betreffende de empirische effectiviteit van gemuteerde wachtwoorden.
Document gegenereerd als onderdeel van het Time2Crack-project 2026 Zie ook: BRUTEFORCEAANVAARDINGUITGEBREIDE MD, MARKOVAANVAARDINGTOELICHTINGAANVAARDINGUITGEBRACHT.md