Hacking DVD BackTrack, Linux, Hashe RSS Feed twitter airdump.cz BackTrack 3 4 5 6 CZ
Security a Tip
Donate a Sponzor

Hacking ochrany CAPTCHA

captcha image hack Web stranky dnes pred spam botama a holinkama pouzivaji ochranu zvanou captcha (Completely Automated Public Turing test to tell Computers and Humans Apart). Jde o test, ktery rozhodne zdali stranku prohlizi bot nebo clovek. Dnes jiz notoricky znama vec. Cist paznaky z obrazku, scitat cisla a hrusky, nebo poznat obrazek ktery se nehodi k ostatnim. Captcha by nemel od uzivatele vyzadovat zadne vedomostni informace protoze to rozhodne pouze o tom jak je uzivatel vzdelany, ale ne jestli je to clovek.Proto se ma pracovat s abstrakci a obecne znamymi slozkami. Pro zrakove nebo sluchove postizene lidi hardcore. Nedej Karle kdyz nemaj zvukovku nebo maj cernobilej monitor velikosti 9″. Zamysleme se nad tim a pomozme vsem ktere z nejakeho duvodu captcha oznaci jako nelidi.

Prvni captcha ktera se na webu objevila byla jednoducha textova hadanka. Kolik je 4 + 7?. Co do rady nepatri? „jablko, auto, mrkev, obloha, zidle, raketoplan“. A podobne. Zkouseli se i ruzne finty jako michani cisel v psane a ciselne podobe (tri a 12 je?). Textova captcha je omezena znakovou sadou a poctem pismenek, to snizuje jeho variabilitu. Nikdo nebude cist text na A4 a nikdo nebude lustit 1337 a jeste horsi modifikace slov. Proto textove captcha nejde uspesne uplatnit. Trocha regexpu, slovnik, lehky algoritmus a z bota se stane clovek.

Na radu prisli oblibene visualni captcha. Narozdil od zvukoveho captcha ma tu vyhodu ze se na nej muzes divat potichu. Prvni visualni captcha byl pouhy nijak nedeformovany text v obrazku. Pro bota opet nic sloziteho. OCR (Optical Character Recognition) Prevod obrazoveho textu do znakove formy je dnes uplne beznou veci (viz pogram gocr). Tuto metodu hojne pouziva http://books.google.com/ a warez e-booky. Clovek diky velikosti casti mozku kterou pouziva ke zpracovani zrakoveho vjemu je schopen rozlisovat predmety, obliceje, textury a dalsi slozite obrazy. Lidsky mozek pouhym divanim zpracovava obrovzske mnozstvi informaci. To dovoluje udelat captcha o neco zajimavejsi a tim presnejsi.

Pro opravdu zrakove postihnute jedince existuje zvukova captcha. Spis se jedna o vyjimku pokud na ni nekde narazis. Pro bota zvukova captcha nebude problem. Zvuk sam o sobe neni slozity a jeho analyza je jednoducha. Natoz pak zvuk ktery by byl vhodny pro captcha. Postub by zde fungoval jako v OCR, rozdelili by se hlasky od sebe a pak se podle vzoru porovnavali. Modulace na takove urovni aby hlaskam bylo porad rozumet je take knicemu. Kazda hlaska ma svuj specificky graf ktery kdyz nesedne do sablony pismena tak uz to ani clovek nerozezna. Tudy cesta k foru bez spamu nevede.

Dost bakcgroundu. Dejme si foreground.

Prolomeni obrazkove captcha se muze stat jednodusim nez prolomeni textoveho captcha. Zalezi od inteligence tvurce captcha. O obrazkovem captcha by si mel vedet jak vznika. Nic neni nahodou, vsechno ma svuj puvod. Konkretne v captcha, kdy resenim je spravny opis znaku z obrazku. Tyto znaky jsou vysledkem nejakeho algoritmu. Pokud dokazeme zjistit algoritmus vyberu znaku jsme s velkou pravdepodobnosti schopni captcha vyresit, aniz by sme se na nej podivali. Dalsi dulezita vec je prirazeni spravneho vysledku k uzivateli. Protoze uzivatel by nemel dostat zadne indicie k reseni captcha, vsechna dulezeita data by mela zustat na serveru a k uzivateli by se mel dostat jen identifikator. Ukazu par konkretrnich prikladu (21.8. 2007).

http://vybrali.sme.sk/register

Po odeslani prvniho formulare se dostanes na overeni s captcha. V cookies nic pouzitelneho neni. Dulezita informace pro nas je nazev obrazku s captcha ts_image.php?ts_random= Pokud captcha prozkoumame pozorneji, zjistime ze se genereuje podle parametru ts_random jehoz hodnotu mame primo pred ocima. Po kratkem hledani „ts_image.php“ na googlu nachazime balik se zdrojovym kodem. Ve zdrojaku se nachazi promenna $site_key ktera by mela obsahovat nam neznamou hodnotu, podle ktere se passphrase vytvari. V podstate je vse v poradku do te doby , dokud nezname prave tuto promennou. Nanestesti pro server sme.sk tato hodnota je prazdna (zjistil jsem pokusem). A dukaz:

http://vybrali.sme.sk/ts_image.php?ts_random=01020304
http://tst.airdump.net/sme.php?ts_random=01020304

Captcha pracujici se session se da obejit nekolika zpusoby.
– Chyba pri sprave sessions. Tato chyba vznikne pokud spravne vyplnime captcha a server neznici session se kterou jsme captcha uspesne prosli. To nam dovoli identifikovat stale se stejnou session a prochazet dalsi a dalsi captcha s predchozim uspechem dokud server neznici nasi session.
– Trosku nepravdepodobna, ale fungujici moznost je, mit na stejnem serveru kde je captcha, vlastni ulozny prostor, kde muzeme spoustet php pod stejnym uzivatelem jako bezi captcha kterou dobyvame. Vsechny sessions na serveru se vetsinou ukladaji do stejne slozky (/tmp). A pokud mame dostatecna prava muzeme si precist obsah session a tim zjistit spravny cpatcha passphrase.

http://registrace.seznam.cz/register.py/stageZeroScreen?service=email

Tady je to resene jinak. Captcha kterou obdrzime dostaneme i se svym identifikatorem (identifikator neovlivnuje generovani captcha, tudiz nema nic spolecneho s hodnotou passphrase). Klic identifikator pouze identifikuje uzivatele a jemu captcha prirazene. Tady dosly vsechny triky a napovedy. Pomuze uz jedine vyse zmineny OCR (konkretne program gocr). Obrazek ma navic rozbite pozadi, takze se nejdriv musi upravit tak, aby byla zretelne oddelena znaky od pozadi a kazdy mezi sebou. Toho docilime treba pouzitim aplikacky „convert“ z baliku ImageMagic. Kdyz uz mame vyextrahovane popredi, muzeme se pustit do identifikace. Na znaky s krivyma hakama standardni databaze nebude stacit. Proto musime gocr naucit novym znakum. Da to chvilku zabrat, ale cim vic ho naucite, tim vetsi pak budete mit uspech. Postup je nasledujici:

// stahni obrazek (jak je libo, ja pouzil GET z LWP knihovny pro PERL)
GET ‚http://registrace.seznam.cz/captchaImage?hash=LSBBQLGKCP‘ > captcha.gif
// oddel pozadi od popredi (zustanou jen znaky)
convert captcha.gif -gamma -10 -paint 2 -monochrome captcha.jpg
// a ted naucime gocr cist ze seznam.cz captcha
gocr -d 2 -p ./seznam/ -m 256 -m 130 captcha.jpg

Vysvetlim parametry pro gocr:
-d vynecha smitka v obrazku
-p definuje cestu k vlastni databasi znaku (musi koncit limitkem)
-m modifikator
|– 256 vypne defaultni databazi znaku
|– 130 rozsiri databazi o nove znaky
‚– 2 pouzije znaky z definovane databaze

S timto nastavenim se vas gocr bude ptat co ktery znak znamena (pri vyplnovani vzdy ukladejte do databaze – volba 2 po urceni znaku). Pokud gocr nedokaze rozdelit znaky odsebe, muzete slepenec definovat i retezcem ve tvaru „xyz“. Kdyz uz mas databazi dostatecne nalozenou. Uz muzes nechat script pracovat za tebe.

GET ‚http://registrace.seznam.cz/captchaImage?hash=XXXXXXXXXX‘ > captcha.gif
Captcha
convert captcha.gif -gamma -10 -paint 2 -monochrome captcha.jpg
Captcha
gocr -p ./seznam/ -m 256 -m 2 captcha.jpg
HBXPV

Ted uz zbyva jedina otazka: Stuj! Kdo tam? Ano nebo ne?

Diskuze AMP Security Fórum

Odkaz vede do sekce Diskuze článků a tutoriálů – komentáře směrujte do příslušné sekce.

Kam dál?



Přihlásit / Odhlásit odběr novinek

Počet přihlášených k odběru novinek

    2572