Pravdepodobne každý z vás sa už stretol s touto ochranou. Dnes patrí CAPTCHA k najnepopulárnejším ochranám na internete z pohľadu užívateľa. Často krát je veľmi otravná a nepríjemná. Nervozita používateľa sa stupňuje s každým zlým prepisom a vymazaním formuláru. Má teda dnes ešte captcha zmysel, alebo je už prežitkom?
CAPTCHA je skratkou pre “Completely Automated Public Turing test to tell Computers and Humans Apart”. Zjednodušene sa jedná o test, či sa za požiadavkou skrýva počítač, alebo skutočná osoba. U captchy sa tento test vykonáva tým, že je užívateľ prinútený vypísať text ktorý vidí vygenerovaný na obrázku do políčka. Ak text sedí, je vyhodnotený ako skutočná osoba a formulár je úspešne odoslaný.
Po rokoch sa stala captcha veľmi obľúbeným nástrojom programátorom, ktorí ju nasadzujú ako ochranu svojich webových aplikácií proti spamerom. Dnes je ju možné nájsť už aj na ďalších miestach, ako napríklad ochranu proti útokom CSRF.
Ako sa stávala captcha populárnejšou, objavovali sa aj rôzni ľudia (neviem aký názov pre týchto ľudí zvoliť, takže budem používať crackeri, čo ich vystihuje asi najlepšie), ktorí sa zaujímali o prelomenie tejto ochrany a začali vyvíjať rôzne nástroje pre jej pokorenie. Na tento účel sa začal hojne využívať OCR (Optical character recognition), vďaka ktorému bolo celkom jednoduché získať reťazec z captchi a tak tvorcovia pritvrdili. Do obrázkov začali vkladať veľmi príbuzné pozadia s textom, pridali niekoľko ďalších mätúcich obrazcov, občas podhodili kde tu písmenko, občas zas vyžadovali trošku logického uvažovania (vypíšte tretí, piaty a siedmy znak z reťazca). Aj tomu sa začali crackeri prispôsobovať a tak vznikali ešte sofistikovanejšie nástroje pre rozpoznávanie textu vpísaného do obrázku.
Tento boj je už však pravdepodobne za zenitom. Naposledy túto situáciu vyhnala do absurdna služba rapidshare, keď do captchy umiestnila obrázok mačky, podľa ktorého bolo potrebné znaky prepisovať. Aj tento systém sa podarilo ruským crackerom obísť a tak sa prevádzkovatelia služby rozhodli captchu stiahnuť. Podobne to je u niekoľkých iných službách, no nateraz väčšina služieb aktívne odoláva. Príkladom je aj Google, Yahoo, Facebook a ďalší.
Z mojich skúseností však viem, že prelomenie captchy nie je vždy tak úplne potrebné. Často krát je samotná captcha zle implementovaná a tak ju nie je potrebné používať, alebo je ju možné ľahko oklamať.
Najčastejšie chybné implementácie, s ktorými som sa stretol:
- Ak je odstránené políčko formuláru s captchou, tá je následne ignorovaná a formulár akceptovaný (azet)
- Captcha nie je definovaná tokenom (teda časovo obmedzeným a náhodne generovaným reťazcom) ale len hashom, ktorý má neobmedzenú platnosť a je ho teda možné používať donekonečna. Potom je možné používať jednu captchu dookola
- Captcha je definovaná tokenom, ktorý ma pevnú platnosť a nie je vymazávaný pri odoslaní formuláru. Do ukončenia platnosti tokenu je teda možné napríklad vytvoriť niekoľko kont, alebo poslať niekoľko emailov
- Captcha má rôzne pozadia definované parametrom, ktoré je možné meniť a vybrať si také, ktoré je jednoduchšie prelomiteľné (azet)
- Text captchy je ukladaný do skrytého formuláru alebo do cookies a je ho možné ľahko prečítať
- Captcha využíva veľmi primitívne maskovanie, napríklad rôznofarebné pozadia od textu, prekrývanie textu rôznofarebnými obrazcami, atď.
I keď sa vám môžu niektoré z týchto implementačných chýb zdať príliš hlúpe, stretol som sa s nimi už aj na veľkých weboch. U nás všetci čo začali nasadzovať blogovací systém Wordpress MU spolu s rozšírením pre ochranu formulárov (napríklad zoznam a zive) trpia na jednu z týchto zraniteľností. Konkrétne je captcha určená hash reťazcom a nie tokenom. Preto je možné definovať text z obrázku a posielať stále tu istú captchu. Ku príkladu má zoznam týchto obrázkov len 10, zive aspoň 20. Stačí vám však poznať len jediný.
http://blog.zoznam.sk/wp-content/mu-plugins/custom_anti_spam.php?antiselect=10Ak nahradíte červeným označené číslo za nižšie ako je uvedené, potom dostanete jeden konkrétny reťazec, ktorému sa mení jeho font a farba, text však ostáva.
http://notebook.blog.zive.sk/wp-content/mu-plugins/custom_anti_spam.php?antiselect=20
Ak je implementácia vykonaná správne, takéto captche bývajú štandardnými technikami ťažko zdolateľné. Mnohí zástancovia captche ich potom označujú ako len veľmi ťažko zdolateľné len vo veľmi malých počtoch. Dlhší čas som bol aj ja zástancom tejto ochrany, no rozhodol som sa sám si skúsiť, aké je zložité captchu skutočne zlomiť. Vybral som si niekoľko známych portálov, ktoré captchu používajú a začal som skúšať. Po troch mesiacoch mam celkom komplexný nástroj, ktorým som bol schopný dosiahnuť asi 30% úspech pri lámaní Google captche. Ako demonštráciu som si však zvolil jednoduchšie captche, aby videá neboli až príliš dlhé. Zvolil som si www.orangeportal.sk a www.delicious.com. Oba portály používajú vlastnú implementáciu captche. Na každom z videí môžete vidieť proces ich rozpoznávania a potom na linkách pod nimi porovnanie obrázku a získaného textu.
Výsledné porovnanie rozpoznávania captchy portálu www.orangeportal.sk.
Výsledné porovnanie rozpoznávania captchy portálu www.delicious.com.
U oboch portálov sa jednalo len o obrázkovú captchu. Existuje však zvuková captcha, ktorú používa mnoho portálov ako alternatívu k tým obrázkovým pre nevidiacich. Šikovní páni zo spoločnosti Wintercore však vytvorili nástroj, ktorý je schopný analyzovať aj takúto captchu a úspešne ju previesť na text.
Chvíľu mi trvalo zmeniť názor na túto ochranu, ale dnes už môžem aj ja povedať: Je koniec, táto ochrana viacej nemá zmysel, čím sa pridávam ku dvom mojím priateľom, ktorí túto ochranu už dlhší čas odsudzujú. Určite sa v rade čitateľov nájdu aj takí, čo nebudú so mnou súhlasiť a odôvodnia to hlavné tým, že nie každý vie takýto program napísať a captchu obísť. To je možno pravda, no zopár jedincov sa rozhodlo takýmto osobám pomôcť a tak jeden z najúspešnejších projektov PWNtcha je dnes už voľne stiahnuteľný. Online je však možné nájsť omnoho viac nástrojov, ktoré môžu tento proces rapídne uľahčiť, stačí len pohľadať. Ak už predsa len chcete captchu na svojich stránkach používať, zvoľte tú z originálneho projektu reCAPTCHA, ktorá je jedna z tých najťažších.





Vďaka za super článok, ale povedal si len A. Aké je teda B? Čo ďalej? Existuje nejaká použiteľná alternatíva? To by ma fakt zaujímalo. Díky.
nie je zac. prave mi jednu ukazal fczbkk na svojom portali/ velmi zaujimava captcha, lepsiu som dodnes skutocne este nevidel
Jj, tiež som si to pozeral, veľmi vtipné riešenie. Použiť dot matrix na captchu by mi asi nenapadlo. A pritom je to také jednoduché, keď už to človek vidí hotové. Toto je jeden z tých nápedov, ktorý ma jedinú chybu – že nebol môj :)
Medzi nami, captcha pomocou html tabulky je velmi lahko prekonatelna.. Ked to dokaze zobrazit browser, preco by si to nevedel zobrazit aj captcha lamac?
Najhorsie na tom vsetkom je, ze ani dot matrix nepomoze pred cinskymi alebo indickymi xichtami, ktore nerobia nic ine, len rucne lamanie CAPTCHA na objednavku. Osobne si aj ja myslim, ze tento sposob ochrany je momentalne uz prezitok…
napad zaujimavy, akurat by asi dlho nevydrzal,.. staci hocijake renderovacie jadro aplikovat na ten kusok kodu, ulozit ako bitmapu a sup do OCR
nikto predsa nehovori, ze je to totalne nepriestrelne. fczbkk o tom napisal blogpost pred chvilkou, takze si to precitajte. na konci presne hovori, preco je metoda funkcna. pretoze nie je velmi rozsirena a tak s nou nie su problemy. ak chcete nepriestrelne riesenie, tak tam dajte policko na telefonne cislo a kazdemu registrujucemu volajte :)
Tak ked berieme prevazne lokalne a malo vyuzivane moznosti, nie je problem spravit matematicko-textovu “cpatchu”..
Napriklad generovat text (aj s diakritikou) “tridsatosem plus strnast”..
Ostatne fakt chyba nejake B, co dalej ked je s captchou koniec?
cache: to je sice pravda, ale toto je sikovnejsie si myslim. kazdopadne b neexistuje. ked chces dostatocnu ochranu, musis ju priniest na inych miestach. napriklad google sa zmieril s tym, ze jeho captcha bude vzdy prelamovana a tak su na gmaily limity. napriklad neposles viac ako par ludom ten isty email, denne sa da poslat len urcity pocet atd. cize limitovat ine veci, kedze captchou uz nic neochranis.
Pripomienka k pouzitej terminologii:
Prepisovanie textu z obrazku do textoveho pola je najrozsirenejsou formou implementacie CAPTCHY, avsak nie je jedinou!
IMHO: Aj vygenerovanie otazky: Kolko 5+5 a napisanie vysledku do textoveho pola a nasledna kontrola vysledku je forma CAPTCHY. Pozaduje vsak uz kusok intelektu :-)
Z mojho pohladu pokial v buducnosti bude vyriesenia autentifikacia pouzivatelov (napr. kazda krajina bude mat svoj centralny autentifikacny server s digitalnymi verejnymi klucmi obcanov), tak captcha zanikne. Vsetci sa budu musiet autentifikovat a tak osoby, ktore sa nebudu vediet zmestit do koze, budu rychlo identifikovane a potlacene. (Otazkou mimo tejto temu je uz anonymita). Chcelo by to scivilizovat tuto divoku internetovu dzunglu.
[Berners Lee: Internet je zvacsa divoka neskrotena dzungla]
vlk: velmi pekny komentar. urcite, keby sa zaviedol komplexny PKI system pre kazdu krajinu, point, alebo uz cokolvek, bolo by to zaujimave, no anonymita by bola v pase. dnes su este ake take techniky, ako zabranit odhaleniu.
co sa tyka captche, mas pravdu. su vseliake formy, napriklad passpack mal klikacie, aj otazky typu 5+5 su captche. pisal som to v texte. ono to vychadza z toho co captcha je.
Ale aj také 5+5 je ľahko zlomiteľné. Však OCR img | bc. A je o to postarané. Ale však ako som v jednom mojom blogposte písala, vtedy o uverejňovaní e-mailu na stránke:
“Bots are still chasing us, and it’s only matter of time, when they run us down, then we’ll find other way and the chasing begins again.”
yulka: az prilis lahko ;) najlepsia ochrana je ta najnestandardnejsia
Kazde riesenie je prelomitelne. Ak niekto bude chcet zaspamovat tvoju stranku, tak ju zaspamuje. Ja som tiez velkym odporcom spamov, kedze som ale potreboval nejake riesenie tak som to spravil pomocou obfuscovania form tagu pomocou JS zapisu. Tiez je to lahko prekonatelne (podobne ako riesenie fczbkk) ale “svetovych” spamerov stranka principialne nezaujima a ochrani to proti nahodnym robotom, ktory submituju formular.
chcel som napisat ze som velkym odporcom CATPCHA systemov ;-)
Dobru implementaciu CAPTCHA-y urobil Hulan. Pouziva to tokeny, vygenerovane retazce si odklada do sqlite databazy a nechava im platnost 1h.
zdrojak
Z popisu “čo je vlastne CAPTCHA” na wikipedii:
A CAPTCHA system is a means of automatically generating new challenges which:
* Current software is unable to solve accurately.
* Most humans can solve.
* Does not rely on the type of CAPTCHA being new to the attacker.
Všimnite si obzvlášť tretieho bodu. Ten prakticky znamená, že akékoľvek farebné tabuľky, jednotvárne otázky na výsledky matematickej operácie, sú síce “iné” – nespĺňajú však podmienku na to, aby sa dali nazvať CAPTCHA-ou: ich riešenie sa totiž dá _ľahšie_ implementovať, ako napr. pre reCAPTCHA.
Captcha system fczbkk, ktory vcera opisal ma celkom zaujal a tak som sa rozhodol vytvorit si nan parser, ktory ho je schopny prelomit. Takze ak to niekoho zaujima, parser ako POC pre dot-matrix captchu najdete tu. Je to skompilovane pre windows a je to konzolovka, takze cez CMD. Zvysok je opisany uz v samotnom programe.
Zajimalo by mne, jakej mas nazor na uplny vypusteni CAPTCHy a odesilani formulare JavaScriptem? Na par webech jsem to pouzil a zatim jsem se s zadnym spamem nesetkal. Pletu se, ale pokud pouziju napr. prototype, bot by prece nemel mit sanci. Kdysi jsem se nekde videl implementaci JS v Perlu, ale umi DOM? A pokud ano, umi ho na takovy urovni, aby zvladl AJAXem poslat obsah formulare? Diky za tvuj cas. S
Pisal som to uz aj v clanku, teda aspon naznacil. JavaScript je zly hlavne kvoli 10% uzivatelom, ktori ho nemaju povoleni (ani ja napriklad). Za dalsie, nie je vobec ziadny problem napisat robota, ktory sa vysporiada s JavaScriptom. Sice to neurobi automaticky, ale urobit akukolvek interackiu na urovni JS nie je problem spravit. Do pythonu napriklad existuje velmi prijemny modul, ktory sa postara presne o toto.
takze nie, nepovazujem to za dobru ochranu.
‘kuju
Toto je zaujimave, lahko citatelne, inteligentne a zlozite na lamanie: http://snowflakejoins.com/grapcha/index
Kozo: mne to vobec nepride dobre citatelne. prave naopak, az velmi zle citatelne, sam by som rozmyslal pekne dlho co mam odpisat
Take zajimava captcha: http://doublethink.cleverweb.cz/22-textova-3d-captcha