Man In The Middle Network Attack with Android
Članovi:
Zoran Jovanović--Zoran Jovanović 12:23, 7. studenog 2015. (CET)
Stefano Kliba
--Skliba 20:51, 8. studenog 2015. (CET)
Sadržaj |
Man in the middle attack
U kriptografiji i kompjutorskoj sigurnosti man-in-the-middle napad je često skraćeno nazvan MITM, MitM, MIM, MiM ili MITMA. To je napad gdje napadač potajno odašilje i/ili možda izmijeni komunikaciju između dvije strane koje vjeruju da komuniciraju samo jedna s drugom. MITM se može smatrati analogijom šaha. Miranda koja jedva i zna igrati šah tvrdi da može igrati s dva grandmastera u šahu odjednom i da će pobijediti jednu partiju ili odigrati izjednačeno s obje. Čeka da prvi grandmaster odigra svoj potez i onda napravi taj isti potez s drugim grandmasterom. Kada drugi odgovori s nekim potezom Miranda napravi isti potez protiv prvog. Ovom logikom Miranda ne može izgubiti jer zapravo obojica igraju jedan protiv drugog, jedini problem koji bi se mogao dogoditi ovdje je da Miranda ima problema s vremenom jer joj oduzme kopiranje poteza jer ima blagi delay između njih. MITM je sličan kao i igranju ovakvog šaha, postoje dvije strane koje komuniciraju i osoba koja stoji između njih i prisluškuje cijeli razgovor, na osnovi toga što osoba između njih čuje ona može promijeniti cijeli tijek razgovora samo izmjenom par informacija koje prolaze kroz nju. Ključna stvar je da se komunikacija odvija preko napadača koji je izmeđju dvije osobe i napadač zapravo dostavlja informacije od jedne do druge osobe, tako da ono što napadač dopusti da dođe do druge strane, to će i doći. Drugim riječima, napadač kontrolira cijeli razgovor. Ovakva vrsta napada se često događa na javnim mjestima gdje su wifi wireless access pointovi nezaštićeni lozinkama, tj. ako i jesu zaštićeni lozinkama one su u 99% slučajeva javno dostupne. (Kafići, disko klubovi, teretane i sl.) --Skliba 15:27, 11. siječnja 2016. (CET)
U Man-in-the-Middle napadu napadač presreće svu komunikaciju između dva domaćina. Postavlja se tako da sva komunikacija između klijenta i servera mora ići preko njega, što mu dozvoljava da prilagodi komunikaciju. Pošiljatelj poruka ne prepoznaje da je primatelj zapravo napadač koji pokušava urediti poruku prije nego ju proslijedi stvarnom primatelju. Protokoli koji se oslanjaju na razmjenu javnih ključeva kao zaštitu komunikacije su česte mete upravo ovakvih napada.
MITM presreće komunikaciju između dva domaćina i napad je moguć kada napadač kontrolira usmjernik (router) do normalne točke prometa. Napadač je u većini slučajeva na istoj domeni kao i žrtva. Na primjer, u HTTP transakciji, TCP veza postoji između klijenta i servera. Napadač dijeli TCP vezu na dvije veze - jedna između žrtve i napadača i druga između napadača i servera. Na presretanju TCP veze, napadač glumi proxy dok čita, mijenja i ubacuje podatke u presrelu komunikaciju. Sesijski kolačić (session cookie) koji čita HTTP zaglavlje može lako uhvatiti napadač. U HTTPS vezi su dvije nezavisne SSL veze uspostavljene preko TCP veze. MITM napad iskorištava slabost u protokolu mrežne komunikacije, uvjeravajući žrtvu da šalje promet kroz napadača umjesto kroz normalni usmjernik (router), što se općenito naziva ARP spoofing. Drugim riječima, preglednik uspostavlja SSL vezu s napadačem te napadač uspostavlja drugu SSL vezu sa web serverom. Preglednik upozorava korisnika na nevažeće digitalne certifikate što najčešće korisnik zanemaruje jer ne razumije prijetnju. Ponekad upozorenje se ni ne prikazuje jer je certifikat servera uređen od strane napadača ili je napadačev certifikat potpisan kao pouzdan.
MITM napad je jako efikasan zbog prirode HTTP protokola i prijenosa podataka koji su osnovani na ASCII. Upravo zbog toga je moguće vidjeti i utjecati na HTTP protokol i prijenos podataka, te vrlo lako promijeniti iznos u novčanoj transakciji.
--Skliba 04:37, 18. siječnja 2016. (CET)
Mete MITM napada
- financijske stranice - između prijave i autentifikacije
- veze koje bi trebale zaštićene javnim ili privatnim ključevima
- stranice koje zahtjevaju prijavu i time osobi omogućuju pristup nečemu
Scenariji napada
- injection
- key manipulation
- downgrade attack
- filtering
Injecting
Dodavanje paketa već uspostavljenoj komunikacijskoj vezi
Napadač može modificirati brojeve niza i održati komunikaciju sinkroniziranom dok dodaje pakete te ako je MITM napad preko proxy-a onda je čak i lakše za nadodati pakete
Ovaj primjer je koristan u scenariju gdje one-time-auth se koristi tipa RSA token, u tim slučajevima izvlačenje passworda iz paketa je beskorisno, ali krađa provjerene sesije je ključna i iznimno korisna, jer ako se mi uspijemo predstaviti kao verificirani korisnik u sesiji imamo doslovno sve.
Injectanje naredbi prema serveru isto naravno pale
Kreiranje lažnih odgovora od servera prema klijentu
Manipulacije ključevima
- SSH v1
- IPSEC
- HTTPS
SSH v1
Predstavljaju izmjene u ključevima koje izmjenjuju poslužitelj i klijent, kada napadač dobije taj ključ onda može raditi štogod želi u komunikaciji
IPSEC
Ako postoje više od jednog klijenta s istim tajnim pitanjem svaki od njih može se predstaviti kao poslužitelj i zavarati drugog
HTTPS Možemo jednostavno napraviti lažni certifikat koji se oslanja na krivo konfiguriranje browsera ili korisničku glupost
Filtriranje
Predstavlja postupak gdje napadač modificira payload od paketa tako da ponovno kalkulira checksum. Može kreirati filtere u toku. Dužina payloada može se samo mijenjati u full-duplex načinu rada. U ovom slučaju može se također insertati određeni maliciozni kod u nekakve web stranice, mailove i sl. Mogu se modificirati binarni fileovi u tijeku downloadanja podataka (virus, backdoor i sl.)
Primjer:
HTTPS redirekcija
Imamo Anu koja bi se htjela ulogirati u svoj facebook account, s obzirom da napadač Ivan koji stoji između nje i facebooka prisluškuje vezu vidi da je Ana requestala page
facebook.com/login.php
Ivan "dobar" kakav jest, odgovara sa svojim siteom
Srećom Ivan nije glup pa je napravio da njegova stranica ima isti dizajn kao i facebook login stranica te Ana ne primjećuje da se radi o varci. Ona normalno upisuje svoj username i password u stranicu od Ivana koji željno iščekuje njezine auth podatke. Ana ih submittta i Ivan dobiva njene podatke, nakon toga Ivan je normalno ulogirava u facebook, konkretnije, Ivan šalje Anine login podatke prema poslužitelju facebook.com i proslijeđuje odgovor od facebook.com poslužitelja prema Ani, tako da ona ni ne posumnja slučajno da se nešto krivo dogodilo, Ana nastavlja koristiti svoj facebook account, a Ivan samo prisluškuje i čeka svoju iduću priliku da joj ukrade nešto drugo od veće važnosti.
Downgrade napadi
Konkretno to su napadi u kojem napadač može smanjiti verziju algoritma da mu bude lakše kasnije raditi s njime. Predstavlja parametre koji se izmjenjuju između poslužitelja i klijenta koji su lako izmjenjivi na početku konekcije. Napadač može natjerati klijenta da inicijalizira SSH1 konekciju umjesto SSH2 koju inače koristi poslužitelj. Jedino što mora napraviti je sljedeće:
server odgovara sa:
- SSH-1.99 -- the server supports ssh1 and ssh2 - SSH-1.51 -- the server supports ONLY ssh1
napadač samo mora napraviti filter koji izmjenjuje "1.99" u "1.51"
MITM alati
Postoje pojedini alati s kojima je moguće realizirati MITM napad. Ovi alati su posebno učinkoviti u LAN mrežama jer provode dodatne funkcionalnosti kao što je ARP spoof koje omogućuju presretanje komunikacija između domaćina.
- PacketCreator
- Ettercap
- Dsniff
- Cain e Abel
MITM Proxy
Proxy alati jedino dozvoljavaju interakciju s dijelovima HTTP protokola poput zaglavlja i tijela transakcije, ali nemaju sposobnost presretanja TCP veze između klijenta i servera. Kako bi se presrela komunikacija, potrebno je koristiti druge alate za mrežne napade ili konfigurirati preglednik.
- OWASP WebScarab
- Paros Proxy
- Burp Proxy
- ProxyFuzz
- Odysseus Proxy
- Fiddler (Microsoft)
Forenzička analiza MITM napada
Snimljeni mrežni promet za koji se sumnja da je MITM napad može se lako analizirati kako bi se utvrdilo da li je to stvarno bio MITM napad ili ne. Dokazi koje je potrebno analizirati da bi se to utvrdilo su:
- IP adresa servera
- DNS ime servera
- X.509 certifikat servera
- je li certifikat
- je li certifikat samopotpisan?
- je li certifikat potpisan od nekog trećeg trusted CA?
- je li certifikat opozvan?
- je li certifikat izmijenjen nedavno ?
- imaju li ostali klijenti, negdje drugdje na internetu isti certifikat?
--Skliba 04:37, 18. siječnja 2016. (CET)
Upotreba MITM napada
Najlakše će se izvesti MITM napad ukoliko ga izvodimo na računalu uz pomoć Backtrack alata, on je generalno distribucija Linux operativnog sustava. Konkretnije, Backtrack je distribucija operativnog sustava bazirana na Ubuntuu, a koristi se u području informacijske sigurnosti. Backtrack ima preko 300 alata koji mogu služiti za penetracijska testiranja, mrežna testiranja, digitalna forenzika, stress testing i slične stvari. Kako bi izvršili MITM napad koristimo dva alata Backtrack distribucije - iptables i arsproof koji se naravno mogu zamijeniti s ettercapom.
Da bi pokrenuli i pozicionirali se kako spada u mrežu idemo na računalo s kojeg ćemo lansirati MITM napad i moramo prvo omogućiti da paketi prolaze kroz nas, jer ako oni ne bi prolazili kroz nas i ostajali s nama bi napravili DOS napad, a to ne želimo,želimo se pozicionirati u mrežu bez da ostali korisnici znaju da smo tu i da možemo nesmetano slušati podatke to izvršavamo naredbom:
echo 1 >> /proc/sys/net/ipv4/ip_forward
Kako bi otkrili korisnička imena i lozinke potrebna nam je python skripta koju smo spominjali već u ovom radu koja se zove SSLstrip koju preuzimamo sa stranice autora.
wget http://www.thoughtcrime.org/software/sslstrip/sslstrip-0.9.tar.gz tar zxvf sslstrip-0.9.tar.gz
iptables
Administratorski kernel alat koji se koristi da bi se postavila pravila filtriranja ip paketa. Ovaj alat je postavljen unutar linux kernela pod Netfilter projektom i predstavlja firewall u linuxu. Iptables radi na način da se paketi koji se šalju ili primaju uspoređuju s određenim pravilima koja su zapisana u tablice. Naravno skup pravila kroz koje određeni paket prođe naziva se lanac te i njega definiramo naredbom Iptables. Poznati lanci koje imamo su:
Input - propušta pakete lokalnim procesima
Output - propušta pakete lokalnih procesa prema mreži
Forward - prosljeđuje pakete drugim računalima
Prerouting - prevodi odredišne adrese
Postrouting - prevodi izvorne adrese
Na idućoj slici vidimo neke akcije koje možemo izvesti nad paketima, od kojih su najznačajnije: accept, drop, reject, queue, return i log
Kako bi proveli onu SSLstrip skriptu moramo TCP pakete preusmjeriti na port s kojeg će skripta slušati promet, za to koristimo naredbu
iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port (zeljeniPort)
Kod definiranja ovog lanca koristimo tablicu nat u kojoj definiramo prevođenje porta. Uz opciju append -A navodimo akciju prerouting. -p flag je postavljen da označi koji protokol koristimo za slušanje, tu komotno poslije -p zastavice napišemo tcp. Nakon toga slijedi odredišni port koji preusmjerimo na željeni port koji je unutar zagrada (zeljeniPort) s kojega se sluša promet (to može biti 8080 ili 10000 ili nešto simbolično tome).
sslstrip.py
Kod ovog napada kao što je i nebrojeno puta rečeno prije ključno nam je da nam je žrtva prosječni korisnik koji ne gleda nikada u url i favicon kod unosa nekakvih login podataka ili slično. Ova py skripta zamjenjuje https s http prometom i izvodi tipičan MITM napad, što znači da ne koristimo ranjivosti SSL protokola nego na slabost browsera i njegovog usera.
Skripta uzima ime porta kao ulazni podatak, tako da je pokrećemo na sljedeći način:
python sslstrip.py -l (port)
gdje je (port) naš port koji smo odabrali za preusmjeravanje prometa.
arpspoof
Ovaj alat je vrlo vjerojatno najmoćniji u ovom setu alata. Konkretno nalazi se u Backtracku i dio je paketa dsniff, on generalno šalje lažne arp poruke mreži. ARP protokol je bitan protokol ISO OSI modela koji povezuje mrežni s podatkovnim slojem, a njegova zadaća je mapiranje MAC adresa mrežnog uređaja s lokalnom ip adresom. ARP funkcionira tako da samo mapiranje MAC adresa obavlja ruter, a komunikaciju s uređajima na mreži se odvija preko arp protokola tako da se šalje zahtjev na ruter koji odgovara u obliku mac ipv4 para. Tablica u kojoj se nalaze ip parovi je pohranjena u privremenoj memoriji tj cacheu i takvu memoriju imaju ruter i svi uređaji koji su u mreži spojeni. ARP spoofingom šaljemo lažne arp poruke mrežom s ciljem kako bi se naša (napadač) mac adresa povezala s ip adresom rutera čime bi se onda našoj žrtvi predstavili kao ruter. Kada bi to uspjeli sav promet koji dolazi prema ruteru dolazi do našeg računala i mi imamo svu kontrolu nad komunikacijom, naravno to vrijedi za obratnu komunikaciju isto.
arpspoof -t victim gateway -> ovom naredbom šaljemo lažnu arp poruku u kojoj je victimgateway ip adresa žrtve
arpspoof -t gateway victim -> šaljemo arp poruku u kojoj je gatewayvictim ip adresa rutera
No ako želimo biti pravi h4xx0rz onda možemo napraviti sve u jednoj naredbi
arpspoof -i <interface> -t <targetIp> <default gateway ip>
TargetIp je ovdje ip adresa od žrtve. Default gateway IP je IP adresa rutera.
Nemojmo zaboraviti
tcpdump host victim and not arp
Kako bi vidjeli točno sav promet koji prolazi kroz naše računalo. --Skliba 11:01, 18. siječnja 2016. (CET)
Uvod u MITM napade
Zbog velike raširenosti bežičnih veza uveliko je povećan i rizik od neovlaštenih pristupa podacima koji se prenose putem istih. Često prisluškivanje prometa prolazi neprimjećeno, a razvojem mobilnih tehnologija to je uveliko olakšano. Android operacijski sustav za smartphone-ove je baziran na Linux operativnim sustavima te zbog open source prirode operacijskog sustava Linux naprednijim korisnicima je omogućena zloupotreba istih.
Man in the middle (MITM) je vrsta napada koja omogućuje napadaču predstavljanje žrtvi kao router. Napadač je posrednik u vezi korisnika između žrtve i interneta. Žrtva normalno koristi internet te nije svijesna da je još netko na mreži te prisluškuje sav promet. MITM napad omogućuje napadaču presretanje prometa iz kojeg može preuzeti podatke iz korisničkih “kolačića” (Cookies) pomoću kojih može ukrasti osjetljive podatke ili ih mijenjati bez znanja žrtve, preusmjeravati promet na lažne web lokacije te čak i ukrasti identitet žrtve, ako je to cilj napada, podmetnuti i instalirati zlonamjernu skriptu koja omogućuje druge načine napada. U nastavku ću obraditi na koji način je moguće to napraviti pomoću smartphone-a koji koristi Android operacijski sustav. Dok se na računalu MITM napadi izvode pomoću Backtrack alata koji je distribucija Linux-a pomoću raznih naredba na Android smartphoneu je dovoljno imati rootan(otključan) uređaj i instaliranu aplikaciju. Takvih aplikacija ima mnogo, neke od njih su: zAnti, Dsploit, Csploit, Faceniff, Packet Capture. Za ovaj rad ću koristiti aplikaciju zAnti 2 koja je samodostatna za napad.
Kako se zaštititi od MITM napada na Android uređajima
MITM napad je relativno primitivan i lako se obraniti od njega. Generalno on se zasniva na korisničkoj nepažnji jer taj napad ostavlja brdo tragova (breadcrumbova) za detekciju i jedan je od jednostavnijih napada za implementirati, pogotovo na javnim mjestima gdje je lozinka neke mreže bazično javna. Možemo očuvati sve naše informacije koje se kreću kroz mobitel koristeći VPN primjerice ko PRIVATE Wifi. VPN čuva sve podatke koji ulaze i izlaze iz mobitela tako da čak i da napadač ih uspije presresti to bi bila samo hrpa besmislica. No, neovisno o tom alatu postoje razni načini kako se korisnik sam može zaštititi.
- Provjerite uvijek da ste na HTTPS protokolu, to se napravi tako da pogledate na url bar ili nešto slično. Postoji čak i mogućnost primjerice SSLStrip koja onemogućava bilokoju konekciju koja nije HTTPS i uz to ako Vas se pokuša redirectati s HTTPS-a na HTTP SSLStrip ne dopušta takve radnje.
- Postoji aplikacija Wifi Protector koja provjerava vašu trenutnu mrežu i ukaže vam na moguće napadače.
- Izbjegavajte javne mreže one su najveća prijetnja. Srećom ovakvi napadi nisu učestali tako da ne bi trebali uhvatiti napadača ako ste većinom na privatnim mrežama.
--Skliba 04:37, 18. siječnja 2016. (CET)
zAnti aplikacija i primjena
zAnti je mobilni toolkit koji je zamišljen kao pen test aplikacija za security administratore kako bi testirali sigurnosnu razinu mreže u par klikova na zaslonu mobilnog uređaja. Aplikacija prilikom pokretanja analizira mrežu te nalazi sigurnosne propuste koje je moguće zlorabiti. Nakon analize prikazani su svi uređaji spojeni na mrežu te je moguće napasti samo jednog korisnika klikom na njegovu IP adresu ili sve uređaje odabirom IP adrese routera. Napad je moguće izvršiti spajanjem na neku otvorenu mrežu, na zatvorenu mrežu kojoj imamo pristup ili kreiranjem vlastite mreže. Kod kreiranja vlastite mreže napadač dolazi na javno mjesto, po mogućnosti bez pristupa bežičnoj mreži, te kreira vlastitu pristupnu točku (po mogućnosti odgovarajućeg naziva koji ne izaziva sumnju žrtve, naziv kafića ili lokacije napada) te čeka da se netko spoji. Nakon što se žrtva spoji sav promet ide kroz napadačev mobilni uređaj te mu ostaje samo čekati i prikupljati informacije, a žrtva nije toga svjesna jer internet funkcionira sasvim normalno. Na slici 1 se vidi početni zaslon aplikacije nakon što završi analiza dostupnih uređaja na mreži. Za svaki uređaj vidimo broj ranjivih portova. Drawer aplikacije (slika 2) sadrži dodatne mogućnosti: promjenu MAC adrese, tether (dijeljenje mreže), Routerpwn (link na stranicu sa ranjivostima raznih routera), pristup security report-ovima spremljenima na cloud servisu, Wifi Monitor (analiza mreže) te HTTP server.
Slika 1: Screenshot početnog zaslona aplikacije
Slika 2: Drawer aplikacije
Nakon što imamo sve uređaje na mreži otvaramo određenu IP adresu te pokrenemo automatizirano skeniranje ranjivosti kao što je vidljivo na slici 3 (Mapping network). Postoji mnogo načina skeniranja (slika 4) te je moguće i prilikom skeniranja pokrenuti neku spremljenu skriptu kako bi omogućili dodatne načine napada. Nakon završenog skeniranja možemo vidjeti detalje svih uređaja na mreži u Nmap scans kartici.
Slika 3: Prikaz mogućnosti testova nad cijelom mrežom
Slika 4: Mogućnosti skeniranja propusta na mreži
Nakon završenog skeniranja mreže možemo odabrati određeni uređaj na glavnom zaslonu (slika 1) te napraviti dodatna skeniranja, spojiti se na žrtvin uređaj, izvršiti MITM napad, provjeriti da li postoje lose lozinke na uređaju koje je moguće “probiti” implementiranim alatima, provjeriti ShellShock ranjivost žrtve te izvršiti SSL Poodle. Nas u ovom radu zanima MITM napad te pritiskom na navedeni imamo mnogo opcija za odabrati.
Slika 5: Mogućnosti MITM napada
Slika 6: Mogućnosti MITM napada
Prije pokretanja MITM napada poželjno je odabrati željene postavke te nakon toga pokrenuti napad.
Logged Requests prikazuje sve otvorene web lokacije u obliku liste s brojem zahtjeva za web lokacijom te poslanih lozinki. Ukoliko je poslana lozinka tekst web lokacije je označen žutom bojom. Otvaranjem imamo nekoliko kartica koje su redom: Sessions (prikazuje kolačiće sesije), Passwords (prikazuje presretnute lozinke i korisnička imena žrtve), Requests (svi zahtjevi za lokaciju), User Agents (preglednici s kojima je pristupano lokaciji te mogućnost Zetasploit napada). Pritiskom na kolačić moguće je krivotvoriti zahtjev za lokacijom i vidjeti što je žrtva pregledavala.
Logged Images omogućava napadaču da vidi sve slike koje preuzete(pregledane) na mreži.
zPacketEditor je interaktivni način pregledavanja zahtjeva, slično Logged Requests ali omogućava njihovu promjenu. Nakon što pronađemo željeni zahtjev, moguće ga je otvoriti potezom prsta na desnu stranu te se odvara editor koji omogućava napadaču modificiranje zahtjeva bez znanja žrtve (primjer slika 7 i 8).
Slika 7: Prikaz editora zahtjeva
Slika 8: Prikaz editora zahtjeva
Sljedeća opcija je MITM method, postoji mogućnost odabira ARP i ICMP. ARP MITM napad radi tako da šalje lažne ARP poruke lokalnoj mreži s ciljem da našu MAC adresu poveže s IP adresom routera te na taj način sav promet prolazi preko napadačevog uređaja, dok ICMP šalje poruke kako bi promet išao što boljom rutom. Slanjem lažnih ICMP reroute poruka, promet žrtve se preusmjerava preko napadačevog uređaja te nije nužna lokalna mreža. Nedostatak je šo mnogi routeri imaju statičke rute te ne prihvaćaju preusmjeravajuće ICMP pakete.
Ukoliko uključimo opciju SSL Strip tada će se svi https linkovi promijeniti u http te preusmjeriti kroz uređaj, ovo utječe samo na adrese koje se preusmjeravaju s http-a na https, dok posjećivanje direktno https lokacija ostaje nepromijenjeno.
Redirect HTTP preusmjerava sav promet na određenu proizvoljnu adresu što omogućava preusmjeravanje na phishing site-ove.
Replace images mijenja sve slike koje žrtva učitava u sliku koju želimo sami postaviti.
Ukoliko uključimo Capture download opciju sve datoteke koje žrtva „skida“ (Downloada) se spremaju na sd karticu uređaja.
Intercept download je idealan za podmetanje vlastitih zlonamjernih datoteka jer ukoliko žrtva želi nešto skinuti s interneta možemo zamjeniti s proizvoljnom datotekom bez sumnje na neispravnost sve do pokretanja.
Insert HTML omogućava ubacivanje vlastitog html koda u stranice koje žrtva učitava.
Pripremio: --Zoran Jovanović 17:16, 11. siječnja 2016. (CET)
Tko sluša kada dvije aplikacije komuniciraju?
Androidov ekosustav je sav oko komunikacije i trenutno vrišti upomoć. To je zato što SSL ranjivosti i MITM napadi omogućavaju da se napravi jako puno loših stvari s sigurnošću podataka. Najstrašniji dio svega je to što su te ranjivosti javno poznate, kao što ćemo malo kasnije napomenuti.
FireEye je analizirao Google Playeve najviše preuzimane aplikacije i saznali su da značajan dio njih su osjetljive na MITM napade. Ove popularne aplikacije omogućuju napadaču da presretne podatke koje razmjenjuje Android uređaj s udaljenim poslužiteljem.
Mobilne aplikacije jako često komuniciraju s udaljenim poslužiteljem za njihove funkcionalnosti. Aplikacije mogu komunicirati putem HTTP protokola koji olakšava jako drugima da presreću pakete koji se razmjenjuju ili HTTPS protokol koji to otežava ako ne i onemogućuje. Sigurnosni podaci od HTTPSa se odvijaju kroz SSL-a i njegovog nasljednika TLS-a. Android platforma nudi biblioteke i metode za komunikaciju sa serverom koristeći te sigurne protokole mreže, koji čine okosnicu PKI (Public-Key infrastructure), ali dokle god SSL/TLS protokol služi da bi poboljšao sigurnost, neispravno korištenje istog bi moglo pojednostavniti napade. U tim napadima MITM napadač prisluškuje promet iz aplikacije ili obrnuto i može:
- biti tihi osluškivač koji otkriva podatke koji se pošalju od aplikacije prema serveru ili obratno
- presresti podatke od servera i modificirati ili izmijeniti s nekim malicioznim podacima koji se umetnu u aplikaciju
- preusmjeriti promet u kompletno novu destinaciju koju kontrolira napadač
--Skliba 04:37, 18. siječnja 2016. (CET)
Detektiranje SSL ranjivosti u Androidu
Sljedeće su poznate ranjivosti od SSL/TLS-a:
- Većina trust managera ne provjeravaju lance certifikata od udaljenih poslužitelja, to je ono što omogućava MITM napad da uspije -> verificiranje certifikata ukoliko su potpisani od strane CA je integralni dio komunikacije poslužitelja i klijenta uz posredstvo certifikata
- Ne provjerava se remote server i njegov hostname -> Kada postoji trust manager u ovoj situaciji koji provjerava certifikate on jednostavno nije doovljan, tj. ako je slučaj da napadač ima validan certifikat koji je potpisao CA i prezentira validan cert chain. Međutim, da bi se spriječio MITM napad moramo provjeriti hostname servera koji se izvuče iz certifikata koji je izdao CA i taj hostname se mora matchati onom hostnameu na koji aplikacija šalje podatke (api endpoint, url, kakogod)
- Aplikacije ignoriraju SSL erore kada koriste WebKit da renderaju web stranice na mobilnim aplikacijama -> kada se koristi poslužiteljska komunikacija koja koristi SSL/TLS bilokakava pogreška koja je bačena mora biti uhvačena, inače se otvaramo prema aplikacijama koje su ranjive na MITM napade koji mogu iskoristiti ranjivosti kao Javascript binding over HTTP
FireEye je napravio analizu top 1000 najviše skidanih aplikacija s google play servisa i ovo su njihovi rezultati bili:
674 (~68%) ima jedan od tri prethodno navedene SSL/TLS ranjivosti:
Aplikacije koje koriste trust managere koji nikada ne provjeravaju certifikate:
- od 614 aplikacija koje koriste SSL/TLS da bi komunicirali sa serverom 448 oko 73% ne provjeravaju certifikate
Koriste hostname verifikatore koji ne rade ništa
- 50 oko 8% koriste vlastite hostname verifikatore koji ne provjeravaju hostnameove
Ignoriraju SSL errore u WebKitovima
- 285 koje koriste WebKit, 219 oko 77% ignoriraju SSL errore koji se generiraju u WebKitovima
--Skliba 04:37, 18. siječnja 2016. (CET)
Aplikacije koje su ranjive zbog ranjivih biblioteka
Aplikacije vrlo često koriste third party biblioteke kao dio svojih funkcionalnosti. Kada te biblioteke imaju u sebi integrirane ranjivosti onda se predstavlja veliki problem, jer svaka aplikacija koja koristi tu biblioteku ili jednostavnije svaki mobitel koji vrti aplikaciju koja koristi ranjivu biblioteku je potencijalno i sam ranjiv. Nadalje, ove ranjivosti nisu slabosti u aplikacijama nego u mogućnostima koje se oslanjaju na određenu funkcionalnost. Flurry je prva po redu biblioteka za reklame koju koristi 9702 od 70k+ aplikacija na google playu s više od 50k downloadova. Ove aplikacije su bile skinute više od 8.7 milijardi puta i kao i svaka biblioteka za reklame Flurry koristi HTTPS sa ranjivim trust managerom da bi uploadao informacije kao device IMEI i lokaciju.
Ovako izgleda hexdump Flurry aplikacije
--Skliba 04:37, 18. siječnja 2016. (CET)
Najbolje prakse za SSL/TLS u Androidu
Bilokoja aplikacija koja se spaja na third party web servis je lako moguće da će moći verificirati certifikat i hostname. Te platforme imaju najčešće vise od 100CA-ova i validirati će bilokoji third party poslužitelj koji prezentira certifikat koji je potpisao on. Ako je certifikat samopotpisan ili ako dolazi od CA kojoj android platforma ne vjeruje onda to zahtjeva pozornost developera aplikacije. U tim slučajevima najbolje za učiniti je sljedeće:
- Napraviti keystore i settati njegov cert unos jednak onom certifikatu od kojeg se pokušavamo obraniti - Inicijalizirati TrustManager instancu s KeyStoreom - Iskoristiti tu instancu TrustManager klase u SSLContext objektima da bi se uspostavila SSL konekcija
Mobilne aplikacije se mogu same zaštititi ako se ne spajaju s javnim mrežama koje koriste bilokakve login podatke i slično. Ovo i ne otvaranje čudnih emailova koje dobijemo će napraviti čuda u obrani protiv MITM napada. Kao što je rečeno prethodno.--Skliba 04:37, 18. siječnja 2016. (CET)
Implementacija danog problema
Planirano je bilo napisati aplikaciju koja može napraviti MITM napad, ali zbog manjka vremena i opreme to nije bilo izvedivo. --Skliba 04:37, 18. siječnja 2016. (CET)
Literatura
1. https://www.techopedia.com/definition/4018/man-in-the-middle-attack-mitm dostupno 11.01.2016.
2. https://www.veracode.com/security/man-middle-attack dostupno 11.01.2016.
3. http://hackersonlineclub.com/android-tools/ dostupno 11.01.2016.
4. http://androidhackz.blogspot.hr/2015/04/android-wifi-hacking-how-mitm-attack.html 11.01.2016.
5. http://www.treeks.net/2015/06/hacking-wifi-man-middle-attack-android-zanti.html dostupno 11.01.2016.
6. https://www.youtube.com/watch?v=5vEkyLRs75g dostupno 11.01.2016.
7. https://stackoverflow.com/questions/34104592/how-avoid-man-in-the-middle-attack-when-using-google-cloud-endpoints dostupno 11.01.2016.
8. https://commonsware.com/blog/2013/03/05/ssl-android-mitm.html dostupno 11.01.2016.
9. http://www.last.fm/group/Last.fm+Android/forum/114391/_/2258919 dostupno 11.01.2016.
10. https://op-co.de/blog/posts/java_sslsocket_mitm/ dostupno 11.01.2016.
11. http://www.securityweek.com/cert-warns-android-apps-vulnerable-mitm-attacks dostupno 11.01.2016.
12. https://support.silentcircle.com/customer/en/portal/articles/2118924-what-is-a-man-in-the-middle-attack-mitm-and-why-do-i-need-to-verify-the-authentication-keywords- dostupno 11.01.2016.
13. https://wiki.archlinux.org/index.php/iptables dostupno 15.01.2016.
14. https://en.wikipedia.org/wiki/ARP_spoofing dostupno 15.01.2016.
15. https://pypi.python.org/pypi/sslstrip/0.9.2 dostupno 15.01.2016.
--Skliba 04:37, 18. siječnja 2016. (CET)