Jelszófel(nem)törési verseny, eredmény

Az ELTE IIG üzembe helyezendő új szuperszámítógépének egyik tesztje egy jelszóbiztonsági teszt volt. Ezúton is köszönöm a lelkes HUP olvasók részvételét. A megkapott 69 jelszóból 14-et sikerült megtörni. Ez mintegy 20%-os arány.

Az alábbi HUP tagok által megadott próbajelszavak bizonyultak gyengének:


Batman
bujdi.1
bujdi.2
CamelTH
DirtY_iCE.3
hrgy84
KoS
mauzi
prkc.2
radix.2
radix.3
strygg
Zaneck

A módszerről

A John the Ripper program egy disztributív verzióját futtattam 2 napig 45 szerveren, 704 szálon. A méréseim szerint ez a gép az összes erőforrását erre áldozva másodpercenként mintegy 3 millió jelszót próbál végig.

Kis-, nagybetű, szám, speciális karakter, maximum 8 hosszú jelszavakat 28121 nap alatt próbálna végig. Csak kisbetűkből álló maximum 8 hosszú jelszavakkal viszont fél nap alatt végez. A teszt alatt az 1,2,3,4 hosszú jelszavakat bármilyen karakterrel, az 5,6 hosszú jelszavakat kis-, nagybetű, szám karakterrel, a 7,8 hosszú jelszavaknál csak a kisbetűsöket próbáltattam végig. Ezen túl egy szótár alapú próbálkozás is történt egy szálon.

A megtalált jelszavakat letöröltem. A gépről bővebben itt.

Hozzászólások

"a 7,8 hosszú jelszavaknál csak a kisbetűsöket próbáltattam végig"

jaaaa... tehát nálad az "abcdefgh" egy könnyen törhető jelszó, az "ABCDEFGH" pedig feltörhetetlen :P

valójában arra voltam kiváncsi a csupa-kisbetűs jelszavammal, hogy bruteforce esetén - amikor az ember a rendelkezésre álló karakter-szett összes variációját végigpróbálja - van-e értelme bonyolult jelszót adni, hiszen a bruteforce szempontjából az "abcdefgh" ugyanannyira bonyolult, mint az "Av8g3My7".

de, ezek szerint van. a gonosz krekkerek először a kisbetűket nézik végig :)

miutan tudatosult bennem, hogy nem all rendelkezesemre 28121 nap a teljes kulcster vegigprobalasara, ugy dontenem kellett, hogy melyik reszet probaljam vegig.

a teljes karaktervariacio (96 karakter) 1,2,3,4,5 hosszu jelszavak, plusz a 6 hosszu jelszavak eleje.
Vagy nem?
A bruteforce jelszofeltores muveszetenek pont az a lenyege, hogy a rendelkezesre allo iszonyatotosan nagy kulcsterben a bejarasi utvonal a leheto legtobb jelszot a leheto leghamarabb talalja meg.
Ha teljes bejarast vegeztem volna (28121 nap alatt) akkor sem lexikografikus lenne a jo, akkor is a kisbetu, vegyes kis-nagybetu, vegyeskis-nagybetu-szam, leggyakrabban hasznalt nehany spec karakter+kisnagybetuszam stb. Az emberek ugyanis nem random jelszavakat hasznalnak, hanem a kulcster nehany altere kituntetett valoszinusegu.

Es igen, ha az emberek tobbsege kisbetus jelszavakat valaszt, akkor a jelszotoro programok a kisbetus jelszavakkal kezdik, tehat a kisbetus jelszavak gyengebbek, mint a vegyes karakteres jelszavak. Igenis, letezik gyenge jelszo, ez nem egy ertelmetlen definicio. Meg akkor is, ha ez a definicio szociologiai/pszichologiai nem pedig matematikai.

5 év 11 hét :)
ps: mivel nálam sokkal öregebb vagy, nem vagyok benne biztos hogy rákérdezhetek:
bár a "Az alábbi HUP tagok által megadott próbajelszavak bizonyultak gyengének:" mondatot nyelvtanilag lehetne úgy érteni hogy ezek jelszavak, ha feltételeznénk hogy elfelejtette a vesszőket, de a "A megtalált jelszavakat letöröltem." nem zavar össze annyira hogy a cikkbeli első linkre kattintva megnézd miről van szó?

nem hozzád szólt a kérdés, hanem Csab-nak, aki azt hitte (gondolom) hogy a listában szereplő "CamelTH" egy megtalált jelszó.

valószínű a
"Az alábbi HUP tagok által megadott próbajelszavak bizonyultak gyengének:"
mondatot olvasta úgy, hogy:
"Az alábbi, HUP tagok által megadott, próbajelszavak bizonyultak gyengének:"
(bár talán ezt gondolatjelekkel kellene?)

és a rtfa-t nem mertem megkockáztatni :)

a john forrasa nyilvanos, minden linux disztribbe csomagkent megvan, weboldalak ezrei foglalkozik vele.
- szotar
- szotar szavai nagy kezdobetuvel (tovabbiakban Szotar)
- Szotar x szam
- {Szotar,szam} x {Szotar,szam}
- {Szotar,szam} x {Szotar,szam} x {Szotar,szam}

vagy valami ilyesmi. Lehet neki magyar szoszedetet is megadni szotarkent.

ah, azt nem is irtam, hogy az egy szalu, szotar alapu probalkozas, amit barki tudna otthon futtatni, nem kell hozza szuperszamitogep -

a megtalalt jelszavak felet talalta meg
a 45 gepes bruteforce a masik felet.

Őszinte leszek: sztem ez így gyenge eredmény..
Bár arra számítottam, hogy az általam megadott próba jelszót nem fogod tudni megtörni ( ez volt az: Íű3_`^Z¸ ( Hunger - nyugodtan levonhatod a tanulságot :))) mert iszonyat nagy kulcsteret kellett volna bejárnod ( jópár spec char-t is beleraktam ), de attól még én személy szerint jobb eredményt reméltem egy ilyen méretű computing cluster esetén, főleg, hogy "csak" sima DES-re engedted rá a gépet, ami azért eléggé gyenge lábakon áll a mai egyéb technológiák mellett..
____________________________________
Az embert 2 éven át arra tanítják hogyan álljon meg a 2 lábán, és hogyan beszéljen... Aztán azt mondják neki: -"Ülj le és kuss legyen!"..

az eredmenyek sorban:
- egy kernelhiba megfogva, kikerulve
- sok apro csomagelavultsagi hiba megfogva, javitva
- egy boot order problema megfogva, javitva
- egy konfiguracios problema megfogva, javitva
- egy hardverhiba megfogva
- 12 kabelezesi hiba javitva
- cluster boot&cluster shutdown megoldva
- mpi konfigolva
- klimatechnikai stressz-teszt OK
- 1900 ember olvasta el, hogy van nalunk ilyen

:-)

Ergo akkor a tényleges jelszó törésre alig hagytatok időt, és most egy ilyen gyenge eredményt mutogattok? :))) Én a helyedben lehet újrakezdeném a tesztelést újabb jelszavakkal, mert ez így tényleg satnya..
____________________________________
Az embert 2 éven át arra tanítják hogyan álljon meg a 2 lábán, és hogyan beszéljen... Aztán azt mondják neki: -"Ülj le és kuss legyen!"..

nem tudom, hogy a 20% gyenge eredmeny-e.

nem dolgozom ebben a szakmaban, nem csinaltam soha ilyet. Gondolom, hogy egy atlag gep atlag userparkja jelszavainak 90% -a esne aldozatul, de ezt csak gondolom. Nem astam bele magam, pl nem adtam a johnnak magyar szotart. Nem debuggoltam ki, hogy mi a skalazhatosagi problema a john-mpi -vel, igy a heurisztikaval megtamogatott kereses csak egy szalon futott. Azt sem tudom, hogy ez a 3 millio/masodperc eredmeny ez egy mai gepnek mi. Nincs specialis DES hardver a rendszerben sehol.
Feltetelezem, hogy versenyben reszt vevo emberek az atlagnal erdeklodobbek, es emiatt az atlagnal tajekozottabbak a jelszohasznalati kerdesekben. Egyetlen 'mkpqsswd -S 8' jellegu jelszot sem tudtam volna megtalalni, megis volt 20% kapas.

klotild:~# john --test
Benchmarking: Traditional DES [64/64 BS MMX]... DONE
Many salts: 504704 c/s real, 721005 c/s virtual
Only one salt: 456972 c/s real, 643623 c/s virtual

Ez egy db AMD Athlon(tm) 64 Processor 3200+ (1 mag) procinak a jelenlegi sebessége..
Ami a bajom a te teszteddel: azzal a clusterrel szerintem sokkal nagyobb kulcsteret be lehetett volna járni ( kis+nagybetű a minimum ), főleg ha megnézed, hogy az a test szerint a géped kb 6 db azonos géppel ér fel, holott a te gépedben ennél jóval több is volt, ráadásul Xeon procik..
____________________________________
Az embert 2 éven át arra tanítják hogyan álljon meg a 2 lábán, és hogyan beszéljen... Aztán azt mondják neki: -"Ülj le és kuss legyen!"..

Átlagos merítésű jelszóhalmaz esetén ekkora géppel ennyi idő alatt ez meglehetősen gyenge eredmény.
Persze ez itt nem átlagos merítés volt, nem tudhatjuk, a sikertelen törések jelszavainak megalkotói vajon nem szándékosan szivatták-e a rendszert.

Én is meg vagyok lepve amúgy az össz rendszer áteresztőképességén, ennél jóval többnek kellene lennie, egy optimalizált john egy szimpla procin is tud nem sokkal kevesebbet.

Szóval egyrészt egy jó szótár, másrészt némi optimalizáció ráfért volna a dologra.

irjal mar legyszives konkretumokat!

mint lattad, a john-mpi beepitett --test funkcioja ezt mondta:

883906K c/s real.

A korabbi posztolo athlon 64 3200+ procija

504704 c/s real.

Ez mintegy 1700 szor! nagyobb teljesitmeny.
Ettol teljesen fuggetlen meres, hogy 1 millio probalkozassal 3 perc 55 masodperc alatt vegzett egy szal, rendelkezesre all 720 szal, tehat 3 perc 55 masodperc alatt 720 millio jelszot probal ki, ami 3 millio masodpercenkent.
Nem tudom, hogy a fenti c/s mit jelent es hogyan viszonyul ehez a mert ertekhez.

A feladat elvileg extrem jol parhuzamosithato. Azonban es konkretan a john egyszalu. Van neki tobbszalu modositasa, a john-mpi. Azonban olyan 50 szal felett az nem mukodott. Ezen kivul talaltam egy 6 eve nem modositott djohn rendszert, ami az eredeti john programot futtatja tetszoleges szamu peldanyban, mikozben az --external parancsal es a john.ini modositassal eteti meg az adott peldanyt a megfelelo kulcster-reszlettel. A john-mpi kodjaba nem volt kedvem belenyulni, nem errol szolt az ugylet. Igy a djohn -t futtattam. Lehet, hogy az --external modszer sokkal lassabb? Lehet, de egy nagysagrend lassulast akkor sem varok.

Szoval, mit kellene mashogy csinalni? Konkret szamokat szeretnek.

Whoops, a kora reggeli olvasás átugorja a szám végén szereplő K betűt. Javítanom kell a karakterfelismerő algoritmuson. :-D
Mea culpa.

Viszont valamit nem értek a számokkal most így, konkrétan az Athlon64 3200+-os eredményen. Most néztem, egy c2d 1.8-as, nem optimalizált john szerint neki 900K megyen, egy 2.66-os c2d-nek meg ugyanazzal 1200k.
Ugyanazon az 1.8-as c2d-n egy Jumbo patch-elt optimalizált john tud 1860K-t.

Sorry, így már nem is döbbenet rossz a dolog, bár a találati arány gyengeségét így is fenntartom. Egy jó szótárral azért 45% környéke sima ügy kellene legyen.

A konkrétumokról: igen, anno én is próbáltam körüljárni a john párhuzamosítási dolgait, és biz elkeserítő. Adott egy extrém jól párhuzamosítható feladat, meg egy progi, ami nagyon jó algoritmusokkal permutál szótári szavakat (ebben a john verhetetlen), és ugyanakkor ez a remek program semmit nem kezd a párhuzamosítással. Bosszantó.

Ha a ma oly divatos GPU alapú jelszótörők csak közelébe érnének a john permutációs képességeinek, sokkal egyszerűbb dolgunk lenne.

"Egy jó szótárral azért 45% környéke sima ügy kellene legyen."

Szerintem ebben az esetben nem. Itt nem egy átlagfelhasználói jelszóhalmaz volt az áldozat, hanem kifejezetten a feltörési bróbálkozásra beküldött, valószínűleg jellemzően nem szótári alapokon nyugvó jelszavakat kellett törni.

Whoops.. A K-t én is benéztem.. Amúgy majd szerintem megnézem mit tud a john kezdeni az adott gépen normális optimalizáció mellett ( mmx, sse ).
____________________________________
Az embert 2 éven át arra tanítják hogyan álljon meg a 2 lábán, és hogyan beszéljen... Aztán azt mondják neki: -"Ülj le és kuss legyen!"..

Hát nem sokkal lett jobb így se az eredmény:

klotild:/tmp/john/john-1.7.3.4/run# ./john-x86-sse2 --test
Benchmarking: Traditional DES [128/128 BS SSE2]... DONE
Many salts: 634982 c/s real, 909716 c/s virtual
Only one salt: 564582 c/s real, 797432 c/s virtual

Majd még valamikor egy 64 bitet megnézek, de nem hiszem, hogy sokkalta többet lehetne kihozni belőle..Esetleg még külső patchekkel talán lehetne javítani a dolgon.. bár most így meglepődtem, hogy ez a szegény kis proci mennyire de le van maradva a mai prociktól :)
____________________________________
Az embert 2 éven át arra tanítják hogyan álljon meg a 2 lábán, és hogyan beszéljen... Aztán azt mondják neki: -"Ülj le és kuss legyen!"..

az ekezetes karakterek onmagaban erdekes fejezetet nyit(hat).

Egy korrektul osszerakott egyseges rendszerben lehet ekezetes karaktereket hasznalni, ugy altalaban viszont inkabb nem.
Gond van a kodolassal.
Leuti a user, hogy hosszu kis o
"\H{o}" TeX
"\325" latin2
"+AVA" unicode/utf7
"\305\220" unicode/utf8
"\120\001" 16-bit unicode
"ő" html(unicode)

a fentiekbol minimum 2 felevel talalkozik egy rendszergazda, persze idoben egyszerre, es akkor a user sir, hogy nem engedi be a gep. Olyan jelszoprotokolrol meg nem tudok, ahol utazna a jeszoval a charset, es lehetne valahol normalizalni. Egy sima opremdszer loginnal megoldhato, egy bonyibb egyuttmokodo tobb resztvevos rendszerben aligha.

Konkétan pont ezért is használtam ilyen charsetet a jelszó megadásakor (ez tudatosan generált jelszó volt, nem gép alkotta ). Olyan helyen, ahol a charset soha (!) nem változik, ott ezek a fajta jelszavak biztosítják szerintem a legnagyobb szintű biztonságot, tekintve, hogy mint te is mondtad a charset nem utazik a hash-el ( ezért is voltam kíváncsi, hogy megtalálod e ennek a hash-nek egy olyan módosulatát, ami kitotózható a kisebb kulcstérből is, mert ezen a szinten már nagyobb az esélye az ilyen "anomáliáknak" ). Pl egy kínai jelszót érdekes vicc lehet magyar gépen törni :)))
Amúgy igazad van: Egy olyan helyen, ahol a használt jelszó más-más beállítású gépeken is használatos, ott ez bukó ( több szinten is, nem csak az ékezetek kevernének be itt, hanem a spec karakterek is (pl. ¸) ). Viszont standalone gépen szerintem plusz egy biztonsági réteg.
____________________________________
Az embert 2 éven át arra tanítják hogyan álljon meg a 2 lábán, és hogyan beszéljen... Aztán azt mondják neki: -"Ülj le és kuss legyen!"..

Hunger - nyugodtan levonhatod a tanulságot

Nekem nem kell levonni belőle tanulságot, mert egyrészről nem mond ellent annak, amit írtam, másrészről aki ismer tudja, hogy én azt szoktam inkább hangsúlyozni, hogy igazi haxor nem brute-force-ol... és ezt nem (csak) jelszótörésre értem.

Félreértesz: Arra gondoltam, hogy most mindenki megtudhatta ( veled az élen ), hogy amikor jelszót választok, akkor milyen kulcstérből lehet válogatni :)) Amúgy igazad van: kismillió más módszer létezik a jelszó megszerzésére, ami valszeg sokkalta könnyebb és ráadásul gyorsabb is.
____________________________________
Az embert 2 éven át arra tanítják hogyan álljon meg a 2 lábán, és hogyan beszéljen... Aztán azt mondják neki: -"Ülj le és kuss legyen!"..

És itt megemlékezhetünk Kevin Mitnick "munkásságáról" aki valójában egy nagyon rossz programozó volt, (mindig elkapták) és legtöbbször offline trükkökkel szerezte meg a jelszavakat :) Mégis a leghíresebb hacker.
--
AGA@
Clyde Radcliffe Exterminates All the Unfriendly Repulsive Earth-Ridden Slime
Windows hate ;)

A legmagasabb helyértékű bitek törlése után, egy 56 bites kulcsot állítanak elő, és azzal indul a kódolás. Például utf8 esetén az ékezetes karakter helyett egy 7 biten ábrázolható karaktert fog használni a rendszer. Ebből csak akkor lesz "nyereség", ha a 7 bites változat egy nem nyomtatható karakter (kódja < 32).

-----
Innen most töltsünk tiszta vizet a nyílt kártyákba: ...

A sillydes elvérzett. Ahogy arra számítani lehetett.

Köszönet a tesztért, tanulságos volt.

köszi a tesztet, kb erre számítottam...

megbírkózott az üres stinggel, és az 12345678-al.
A 'zt2vb76k'-t nem találta gyengénekj!

Koszonom a tesztet. En egy gyengebb, regebben hasznalt minta alapjan osszeallitott jelszavat probaltam ki. Legalabb tudom hogy nem volt felesleges modositani a jelszogeneralasi mintamat :)

Bocs a buta kérdésért, vagy ha már volt, de hogy ismerte fel a program, hogy sikeresen feltört egy jelszót ?

10 tipp = következő tipp a jelszóra
20 if ( törendő != des(tip) ) then goto 10
30 print feltört jelszó: tipp

ebben hol akadtál el? az a kérdésed hogy több jelszónak lehet ugyanaz a des kódja? mivel nem kimerítő keresés a használt brute force hanem azokat keresi amiket az emberek megszoktak adni, hogy két, ebben az értelemben értelmes jelszónak ugyanaz legyen a kódja, a valószínűsége eszméletlen kicsi :)

A DES-nél maximum 8 karakter lehet a jelszó. Ha annál hosszabb jelszót adsz meg, akkor csonkolja a 8. karakter után. Ha a des("enjelszo") és a des("talaltjsz") megegyezik egymással, akkor bármelyikkel be tud lépni az adott felhasználó. Tehát lényegtelen, hogy melyik az igazi eredeti.

-----
Innen most töltsünk tiszta vizet a nyílt kártyákba: ...

ahogy ironcat írta, azon kívül magamat tudom ismételni:
lehet a des('jelszo')==des('ˇ$Шˇ€'), de ebből a tipikus (most is használt) brute force először a 'jelszo'-t találja meg ami ugye látszik hogy az kell legyen az eredeti, hogy des('jelszo')=des('muskatli') legyen viszont gyakorlatilag nulla

a feltor csak erzelmi felhanggal rendelkezo szo, valojaban a program megtalalja a jelszavakat.

Tehat ez, erzelmi es egyeb felhangoktol mentesen arrol szol, hogy megtalalhatoak-e a jelszavak, ha csak a kodolt (des -sel cryptalt) formajuk van meg.

A valasz az, hogy ezzel (az altalanos clusterrel) 28 ezer nap alatt biztosan, 2 nap alatt meg 20% -os valoszinuseggel.

mellesleg ennyi penzert (24M huf) lehet epiteni olyan celeszkozt (rengeteg des chipet) ami 1 ora alatt vegez a feladattal. (ez nem most derult ki, ez egy regi eredmeny).