Probijanje CAPTCHA sistema!

Učinkovitost primjene određenog CAPTCHA sistema u nadzoru pristupa računarskim sistemima zasniva se na korištenju što težeg AI problema u CAPTCHA testu te na mogućnosti automatskog stvaranja i ocjenjivanja velikog broja različitih testova. Naime, ako je problem iz područja umjetne inteligencije koji se koristi u CAPTCHA testu prejednostavan, onda je vjerovatnoća razvoja računarskih programa koji uspješnije rješavaju takve testove veća. Slično, ukoliko nije moguće automatski stvoriti velik broj različitih testova, postoji veća vjerovatnoća razvoja računalnih programa koji će metodom pokušaja i pogrešaka riješiti CAPTCHA test.

Probijanje CAPTCHA zaštite zasniva se na automatskom rješavanju CAPTCHA testova koje računarski sistemi šalje korisniku kako bi utvrdio je li korisnik čovjek ili računar. Na sljedećoj slici prikazan je osnovni model probijanja CAPTCHA sistema. Računarski korisnik traži pristup sistemu slanjem zahtjeva pristupnom podsistemu (1). Računarski sistem prosljeđuje zahtjev CAPTCHA sistema (2), koji stvara CAPTCHA test i prosljeđuje ga korisniku (3). Računarski korisnik CAPTCHA test prosljeđuje sistemu za probijanje CAPTCHA testova (4), dohvaća rješenje CAPTCHA testa (5), te rješenje šalje kao odgovor CAPTCHA sistemu (6). CAPTCHA sistem ocjenjuje odgovor, te putem pristupnog podsisstema (7), omogućuje korisniku pristup poslovnoj logici sistema (8, 9).

sema probijanja CAPTCHA sisitema

Kao što je prikazano na predhodnoj slici, dva su osnovna načina automatskog rješavanja CAPTCHA testova ovisno o tome rješavaju li testove ljudi ili računarski programi. Kako su CAPTCHA testovi osmišljeni upravo s ciljem da ih ljudi rješavaju bez većih poteškoća, ima smisla koristiti upravo ljude u sistemu probijanja CAPTCHA testova. Ukoliko testove rješavaju ljudi, postoje dvije daljnje podjele ovisno o tome rješavaju li se testovi izravno ili posredno. Kod izravnog rješavanja CAPTCHA testova, skup ljudi prijavljuje se u specijalizirane računarske sisteme, te svjesno prihvaćaju i rješavaju CAPTCHA testove s ciljem probijanja CAPTCHA sistema. Motivacija za rješavanje CAPTCHA testova na ovakav način najčešće je novčana dobit. Naime, zlonamjerni napadač može spomenutim ljudima ponuditi određenu količinu novca za svaki ispravno riješeni CAPTCHA test. S obzirom da  je napadačeva dobit od riješenog testa najčešće višestruko veća nego novac uložen u rješavanje, i napadač i ljudi koji rješavaju testove imaju ekonomski poticaj za ovakav oblik suradnje. Ovakav oblik probijanja CAPTCHA zaštite iznimno je popularan u nekim zemljama svijeta poput Indije i Kine, te se pretpostavlja da postoji čak cijela organizirana industrija rješavanja CAPTCHA testova.

S druge strane, posredno rješavanje CAPTCHA testova zasniva se na ostvarivanju drugog računarskog sistema od strane zlonamjernog napadača. Postupak probijanja CAPTCHA zaštite na ovakav način prikazan je slic koja slijedi. Sistem za probijanje CAPTCHA zaštite te Primjenski računarski sistem napadačarazvijeni su su od strane zlonamjernog napadača koji želi probiti CAPTCHA zaštitu Napadnutog računarskog sistema. Korisnik pristupa Primjenskom sistemu napadača čiju funkcionalnost želi koristiti (1), ne znajući pritom da je sistem dio većeg procesa za probijanje zaštite nekog drugog računarskog sistema. Primjenski sistem napadača dojavljuje postojanje korisnika Sistemu za probijanje CAPTCHA zaštite (2) koji po primitku dojave šalje Napadnutom sistemu zahtjev za pristupom (3). Napadnuti računarski sistem odgovara postavljanjem CAPTCHA testa (4) kojeg Sistem za probijanje CAPTCHA zaštite prosljeđuje Primjenskom sistemu napadača (5). Primjenski sistem napdača prikazuje primljeni CAPTCHA test korisniku pri tome ne dajući do znanja korisniku da će rješavanjem CAPTCHA testa omogućiti napadaču i pristup Napadnutom računarskom sistemu. Korisnik nudi odgovor na postavljeni CAPTCHA test (6), koji se prosljeđuje Napadnutom računarskom sistemu (7,8). Po primitku odgovora na CAPTCHA test, Napadnuti računarski sistem omogućuje Sistemu za probijanje CAPTCHA zaštite pristup (9), zaključujući krivo da pristup zahtjeva ljudski korisnik. Ovakav oblik napada koristi se jako često, gdje se kao drugi sistem kojem korisnici pristupaju koriste web stranice pornografskog sadržaja kojima pristupa jako velik broj korisnika.

sema2

Drugi način automatskog rješavanja CAPTCHA testova jest primjena računarskih programa za rješavanje AI problema. Iako su CAPTCHA testovi osmišljeni s ciljem da ih računarski programi rješavaju jako teško, područje umjetne inteligencije bilježi veliki napredak te se razvijaju sve bolji postupci za rješavanje teških AI problema. Posebno se za rješavanje CAPTCHA testova koriste sistemi za raspoznavanje uzoraka. Primjer rada sistema za raspoznavanje teksta prikazan je na slici koja slijedi. Osim toga, CAPTCHA sistemi koriste AI probleme različitih težina, te se time omogućuje i razvoj računarskih programa koji uspješnije rješavaju pojedine testove. Razvoj takvih sistema znatno je olakšan ako je algoritam za stvaranje CAPTCHA testove javno objavljen, primjerice u znanstvenim člancima. Na Sveučilištu Simon Fraser razvijen je jedan takav sistem koji s uspješnošću od 92% probija CAPTCHA zaštitu sistema Gimpy koji se koristi u sistemima tvrtke Yahoo.

sema3

U literaturi se navode dva pristupa raspoznavanju riječi iz dvodimenzionalnog grafičkog prikaza. U prvom pristupu znakovi se raspoznaju posebno te iz raspoznatih znakova pokušava rekonstruirati tražena riječ, odnosno provodi se sljedeći algoritam:

  1. pronađi pozicije mogućih znakova na slici
  2. za svaku lokaciju, odredi skup znakova koji su najbolje odgovaraju slikovnom elementu
  3. odredi skup znakovnih nizova koje je moguće stvoriti kombinacijama raspoznatih znakova
  4. za rješenje problema odaberi znakovni niz s najvećom vjerovatnoćom

U drugom pristupu znakovi se ne raspoznaju posebno, već se izravno pokušavaju raspoznati nakupine slova, te se iz raspoznatih nakupina odabire ona najvjerojatnija.
U ovaj skup načina probijanja CAPTCHA testova ubraju se i računarski programi za pretraživanje prostora stanja (engl. brute force attack). Kod ovakvog napada, napadač primjenom posebnih programskih sistema pretražuje skup svih mogućih rješenja na određeni CAPTCHA test te na taj način uz dovoljan broj pokušaja i probija zaštitu. Ovakvi napadi najčešće nisu uspješni upravo zbog iznimno velikog broja različitih CAPTCHA testova te zbog iznimno velikog broja mogućih rješenja svakog. Naime, napadaču se pri svakom pristupu zadaje CAPTCHA test različit od prethodnog, te se time znatno otežava postupak pretraživanja prostora svih rješenja.