MITM (Man In The Middle) napad

Ako vas je ikada interesovalo kako se dešavaju stvari poput krađe online identiteta, šifara kao i ftp ili ssh identiteta, u okviru ovog članka možete saznati jedan od načina za izvođenje ovakve vrste napada, kao i mogućnosti zaštite. Jedan od najčešće korišćenih napada, koji cilja kako individe, tako i organizacije, jeste Man-in-the-middle (MITM) vrsta napada. MITM napad funkcioniše tako što kreira vezu između napadnutih mašina i prosleđuje poruke između njih. Žrtve veruju da zaista komuniciraju jedna sa drugom dok zapravo njihova komunikacija teče preko mašine koja izvodi napad. Rezultat ovakvog napada nije samo prisluškivanje poverljivih podataka, već i podmetanje i upravljanje podacima radi sticanje još veće kontrole nad žrtvama napada.

Postoje mnoge forme MITM napada koje se izdvajaju kao zasebne celine kao što su ARP cache poisoning, DNS spoofing, HTTP session hijacking i mnoge druge. U ovom članku ćemo se usredsrediti na DNS spoofing.

U stvarnosti ćete najčešće naići na situacije u kojima je žrtva Windows mašina, prema tome u primerima ćemo koristiti Windows 10 kao žrtvu i Kali Linux kao napadača. Operativni sistemi su izabrani kako zbog prednosti koje pružaju, tako i zbog realističnosti scenarija.

DNS Spoofing

DNS Spoofing je MITM tehnika koja se koristi za snabdevanje žrtve lažnim DNS informacijama, tako da u slučaju korišćenja pretraživača, na primer, www.facebook.com koji se nalazi na IP adresi XXX.XX.XX.XX žrtva biva poslata na www.facebook.com čije je odredište zapravo druga IP adresa YYY.YY.YY., kojoj je napadač kreirao autentičnu stranu za prijavljivanje i ima nameru da ukrade kredencijale za prijavljivanje. Ovakve napade je neočekivano lako izvesti, tako da ćemo pokazati kako sve funkcioniše, kako se izvode napadi, i naravno, kako da se zaštitite od ove vrste napada.

Regularna DNS komunikacija

Domain Naming System (DNS) protokol je, po mišljenju mnogih, jedan od najbitnijih protokola koji se koriste na Internetu. Razlog za to jeste taj što DNS zapravo drži domene na okupu. Zapravo, kada god u vašem pretraživaču unesete neku web adresu kao sto je www.facebook.com, DNS zahtev biva poslat DNS serveru sa ciljem da sazna na kojoj se IP adresi zapravo nalazi ta web adresa. Ovo se radi iz razloga što mašine poput rutera ne znaju šta je www.facebook.com, jer jedino što one razumeju jesu IP adrese.

DNS serveri rade tako što skladište podatke koji opisuju relaciju između IP adresa i DNS imena, dostavljaju podatke klijentima, kao i ostalim DNS serverima. Sada ćemo razmotriti najjednostavniji oblik komunikacije između klijenta i DNS servera.

Klijent – lokalni DNS

DNS funkcioniše po query/resposne (upit/odgovor) formatu. Klijent koji želi da sazna IP adresu određenog DNS imena šalje upit DNS serveru, i server šalje traženu informaciju nazad klijentu u svom odgovoru. Iz perspektive klijenta razmenjena su samo dva paketa, upit i odgovor.

Primer DNS upita i odgovora

Navedena situacija postaje malo komplikovanija ako uzmemo u obzir DNS rekurziju. S obzirom na hijerarhijsku prirodu DNS strukture, DNS serverima je potrebna sposobnost međusobne komunikacije kako bi odgovorili na pitanje klijenta. Naravno, možemo da očekujemo od našeg internog DNS servera da zna da prevede ime u adresu našeg lokalnog servera, ali ne možemo da očekujemo da zna gde se nalazi google ili facebook. U ovakvim situacijama rekurzija stupa na snagu. DNS rekurzija je situacija u kojoj jedan DNS server u ime klijenta zatraži od drugog DNS servera informaciju o adresi nekog DNS imena. Najprostije rečeno, sam DNS server postane klijent drugom DNS serveru.

Rekurzivni DNS upit

Trovanje ARP tabela

Kako bismo objasnili DNS Spoofing, moramo prvo ukratko da razjasnimo trovanje ARP tabela, čije će nam razumevanje dosta značiti u nastavku. Trovanje ARP keša je jednostavno zbog same nesigurne prirode ARP protokola. Zapravo uređaji koji koriste ARP će prihvatiti ažuriranje tabele u bilo kom trenutku, što znači da bilo koji uređaj može da pošalje ARP odgovor drugom uređaju i naterati ga da ažurira svoju tabelu novim vrednostima. Slanje ARP odgovora bez zahteva se naziva gratis ARP. Upotrebom gratis ARP paketa, može se izazvati da jedan uređaj komunicira sa drugim, dok u realnosti komunicira sa napadačem koji je u sredini.

Trovanje ARP tabela

DNS IP Spoofing

Postoji mnogo tehnika kojima može da se izvede DNS Spoofing, a mi ćemo koristiti tehniku DNS IP Spoofing.

Svaki DNS upit koji se šalje mrežom ima jedinstveno generisani identifikacioni broj, kako bi upit i odgovor servera mogli da se prepoznaju i uvežu. To znači da kada bi kompjuter koji napada mogao da presretne DNS upit izdat od strane žrtve, sve što bi bilo potrebno da se uradi jeste kreiranje lažnog paketa koji sadrži identifikacioni broj i lažne informacije i pošalje ih nazad klijentu. Kako bismo ovo izveli, moraćemo da uradimo dve stvari. Prvo ćemo morati da izvedemo trovanje ARP keša (ARP cache poisoning) računara koji želimo da napadnemo, kako bi smo njegov saobraćaj premestili da ide preko našeg računara u svrhu presretanja DNS zahteva. Svrha ovakvog napada jeste preusmeravanje korisnika na lokalnoj mreži na naš maliciozni websajt.

DNS Spoofing

Postoji više alata kojima može da se izvede DNS spoofing napad. Mi ćemo koristiti Ettercap, jer je dostupan i na Linux-u a i na Windows-u. Ettercap možete preuzeti sa zvaničnog sajta. Ako malo pročitate o samom alatu, videćete da je često korišćen za mnoge vrste MITM napada.

Pošto u slučaju korišćenja Kali Linuxa Ettercap dolazi uz sistem, nećemo se baviti instalacijom softvera koja je zapravo jednostavna. Ettercap poseduje i grafičko okruženje koje solidno radi, ali ćemo zbog jednostavnosti primera koristiti staru dobru komandnu liniju.

Pre nego što pokrenemo Ettercap, potrebno je izvršiti neke sitne konfiguracije. Ettercap je u suštini alat za usisavanje paketa koji koristi mnogobrojne plug-in-ove kako bi izvodio raznovrsne napade. Mi ćemo koristiti dns_spoof plug-in za izvođenje napada. Prema tome, moraćemo da izmenimo konfiguracioni fajl ovog plug-in-a. Na Linux sistemima ovaj fajl bi gotovo uvek trebalo da se nalazi na putanji /etc/ettercap/etter.dns. Fajl je krajnje jednostavan i sadrži DNS-ove koje želimo da maskiramo. Za naše potrebe, kao primer, želimo da svaki korisnik na mreži koji želi da poseti microsoft.com bude prebačen na mašinu u lokalnoj mreži na kojoj ćemo podići web server.

Konfiguracioni fajl

Deo fajla sa slike iznad predstavlja konfigurisanje plug-in-a. Doslovno mi plug-in-u stavljamo do znanja da ukoliko se desi DNS upit za “microsoft.com” ili .microsoft.com”* ili “www.microsoft.com”, želimo da odgovori adresom 192.168.1.4. U realnom scenariju bi na ovoj adresi postojala identična kopija sajta. Pošto mi imamo nameru samo da demonstriramo napad, naša web strana će sadržati jednostavnu poruku. Samo kreiranje web strane i pokretanje Apache servera neće biti obrađeno u okviru ove teme.

Nakon konfigurisanja plug-in-a možemo da pređemo na pokretanje samog napada. U okviru man strana možete naći celokupnu specifikaciju za Ettercap, dok ćemo ovde objasniti samo parametre koji su nam potrebni:

  • -TText-based interface
  • -q – Pokreće komandu u “tihom modu” tako da nisu svi uhvaćeni paketi prikazani na ekranu.
  • -P dns_spoof – Određuje upotrebu dns_spoof plug-in-a.
  • -M arp – Inicijalizuje napad MITM Arp trovanje.
  • /// /// – Određuje za opseg celokupnu mrežu.

Konačna komanda bi izgledala ovako: ettercap -T -q -P dns_spoof -M arp /// ///

Pokretanje komande bi trebalo da rezultuje sledećim:

root@192:~# ettercap -T -q -P dns_spoof -M arp /// ///

ettercap 0.8.2 copyright 2001-2015 Ettercap Development Team

Listening on:
  eth0 -> 08:00:27:B3:E6:EE
      192.168.1.4/255.255.255.0
      fe80::a00:27ff:feb3:e6ee/64

SSL dissection needs a valid ';redir_command_on'; script in the etter.conf file
Ettercap might not work correctly. /proc/sys/net/ipv6/conf/eth0/use_tempaddr is not set to 0.
Privileges dropped to EUID 65534 EGID 65534...

  33 plugins
  42 protocol dissectors
  57 ports monitored
20388 mac vendor fingerprint
1766 tcp OS fingerprint
2182 known services
Lua: no scripts were specified, not starting up!

Randomizing 255 hosts for scanning...
Scanning the whole netmask for 255 hosts...
* |==================================================>| 100.00 %

5 hosts added to the hosts list...

ARP poisoning victims:

 GROUP 1 : ANY (all the hosts in the list)

 GROUP 2 : ANY (all the hosts in the list)
Starting Unified sniffing...


Text only Interface activated...
Hit ';h'; for inline help

Activating dns_spoof plugin...

Bilo ko u mreži ko pokuša da pristupi microsoft.com, www.microsoft.com ili **.microsoft.com* bi trebalo da dobije sledeći rezultat:

Izgled lažirane strane

Kako se odbraniti od DNS Spoofing-a?

Sam DNS Spoofing je jako težak za detektovanje, a najčešće se primeti neposredno nakon izvođenja samog napada. Jednostavno primetite da web strana koju posetite nije baš ista kao originalna. Neretko se dešava da žrtve i ne primete da su na lažnoj strani koja im, primera radi, traži ponovno unošenje kredencijala. Čak nećete ni biti svesni da ste nekome dali svoje kredencijale dok vam ne zazvoni telefon ili stigne mail vezan za otkup sopstvenih podataka. Ali opet postoji nekoliko mera koje mogu da se preduzmu povodom zaštite od ovakve vrste napada.

  • Osigurajte svoju internu mrežu: Pošto većina ovih napada zapravo počinje iz lokalne mreže, bilo bi dobro potpuno osigurati lokalnu mrežu i time umanjiti šanse od spoljašnjih upada.
  • Ne oslanjajte se na DNS: Prilikom upotrebe web servisa koje želite sa sigurnošću da koristite, odnosno ne želite da iko ima priliku za ovakvu vrstu napada, dobra praksa je da u samoj mašini kojom pristupate servisima specificirate IP adrese istih. Ovim izbegavate upotrebu DNS-a za osetljive servise a samim tim i mogućnost napada.
  • Koristite IDS (intrusion detection system): Sistem za detekciju upada, ukoliko se pravilno konfiguriše, može da bude vrlo efikasan u prevenciji većine MITM napada.
  • Koristite DNSSEC: DNSSEC (Domain Name System Security Extensions) je novija alternativa DNS-a koja koristi DNS zapise potpisane digitalnim sertifikatima, kako bi obezbedila validnost podataka. DNSSEC još uvek nije globalno zastupljen, ali je prihvaćen kao dobar kandidat za naslednika DNS-a.

Zaključak

Kao što smo i demonstrirali, DNS Spoofing napad je izuzetno jednostavan za izvođenje, što povećava šanse da postanete žrtva. Situacija postaje drastično lošija ukoliko koristite otvorene wireless konekcije na svojim uređajima. Prema tome, potrebna je opreznost i što veće mere zaštite koje su gore opisane. U okviru ove teme bavili smo se DNS Spoofing napadom koji se najčešće koristi za zloupotrebe nad pojedincima, dok ćemo u drugom delu razmotriti jednu interesantnu vrstu DoS napada koja omogućava samostalnoj mašini da onesposobi ili ozbiljno ugrozi rad web servera.

Literatura i korisni linkovi

Ako želite da saznate još detalja vezano za ovu temu ,možete posetiti neke od sledećih linkova koji su poslužili kao inspiracija i materijal prilikom pisanja ovog teksta.