BadUSB

Izvor: SIS Wiki
Skoči na: orijentacija, traži

Sadržaj

BadAndroid

Andro Krezić, Zoran Antolović, Roko Labrović


DNS / Ethernet Spoofing

DNS je omogućio ljudima bezbrižno surfanje bez potrebe za pamćenjem IP adresa koje se često mogu i promijeniti. Umjesto da pamtimo adresu 31.13.93.3 jednostavnije koristimo samo facebook.com. Ali kako onda znamo da facebook.com pokazuje upravo na ispravan IP? Vjerujemo da će naš zahtjev za "resolve"-anjem DNS-a u IP adresu proći bez problema te da ćemo dobiti ispravne podatke. Sigurnosna prijetnja koju ovdje primjećujemo jest mogućnost namjerne promjene DNS odgovora na dva načina:


Dok je prvi od dva napada na prvi pogled bezazlen, drugi postaje prava prijetnja ukoliko se ne otkrije na vrijeme. Napad je moguće izvesti na nekoliko načina:

Primjer: Phishing free email servisa

Uzmimo za primjer servis freemail.net.hr koji ne koristi sigurni protokol https te ne osigurava potvrdu identiteta stranice koja je posjećena. Žrtva napada može u preglednik upisati http://freemail.net.hr i u nadi da će joj se prikazati originalna stranica email servisa. Napadač je pripremio lažnu stranicu koja se izgledom ne razlikuje od originalne te je podesio preusmjeravanje/izmjenu DNS poruka. Stranica koju žrtva otvori na spomenutom URL-u nije originalna već identična kopija koju je gotovo nemoguće primjetiti. Ukoliko žrtva u pokušaju prijave unese svoje korisničke podatke, vrlo je vjerojatno da su podaci dostupni napadaču a da žrtva toga nije ni svjesna.

BadAndroid Ethernet Spoofing

Upute

Projekt dostupan na BadAndroid omogućuje napad s Android uređaja koji će emulirati Ethernet karticu na priključenom računalu te na taj način napraviti napad na DNS zapise. Za napad je potrebno:

Objašnjenje

Sva logika za napad nalazi se u skripti bad.sh. Analizom iste lako je utvrditi temelje za ovaj napad:

Phishing primjer: Facebook

U nastavku je prikazana jednostavna phishing stranica koja simulira početnu stranicu Facebook društvene mreže. Izgled stranice vidljiv je na slici.

Napredni korisnik odmah može primjetiti kako se radi o nesigurnoj vezi (http umjesto https) i to mu može biti sumnjivo. Nažalost mnogo je više korisnika koji ne primjećuju i ne razumiju sigurnost na internetu. Aplikacija će prihvatiti korisnički unos i pohraniti ga u datoteku te napadaču omogućiti pristup korisničkom imenu (emailu) i lozinku koju žrtva koristi za Facebook. Nakon toga napadač jednostavno može žrtvi onemogućiti korištenje Facebook servisa, ali uz činjenicu da korisnici često koriste iste podatke, opasnost ovog napada eksponencijalno raste.

Kloniranje stranice

Izrada identične stranice vrlo je jednostavna budući da današnji preglednici prilikom pohrane stranice na disk pohranjuju i sve vezane dokumente (slike, css i js file-ove itd.). Dovoljno je odabrati izbornik File -> Save i pohraniti stranicu na disk. Pohranjuje se jedna html datoteka i jedan folder unutar kojeg se nalazi vezani materijal. Stranicu je moguće doraditi po izboru (dodati i ukloniti elemente, podesiti ponašanje formi i sl.).

Postavljanje servera

Server je potrebno postaviti s uputom o domeni koju će posluživati. U ovom slučaju to je domena facebook.com stoga apache virtual host config file izgleda ovako:

<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName facebook.com
ServerAlias www.facebook.com

DocumentRoot /var/www/facebook
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

BadAndroid Keyboard Emulator

BadAndroid Keyboard Emulator nam omogućava emulaciju standardne USB tipkovnice pomoću Android uređaja. Računalo će prepoznati Android kao tipkovnicu i primati inpute koji su definirani u skriptama koje odaberemo na uređaju. Kako bi natjerali Android da se predstavlja kao tipkovnica, potrebno je instalirati custom kernel. Preuzimanje potrebnog kernela (Upozorenje: ovaj kernel je namijenjen samo za Asus Google Nexus 7 (2012) sa 5.0.x verzijom Android-a, za instalaciju na ostale uređaje provjerite GitHub repozitorij).

Flash-anje kernela

Za flash-anje custom kernela, potrebno je imati root pristup uređaju i instalirati ADB i Fastboot. Upute za root, ADB i Fastboot instalacija

Nakon root-anja uređaja:

Emuliranje tipkovnice

Da bismo mogli započeti koristiti Android uređaj kao tipkovnicu, potrebno je prebaciti hid-gadget-test na uređaj:

Nakon toga je potrebno preuzeti i instalirati Android Terminal Emulator sa Play Store, otvoriti ga i upisati:

Potpuna lista podržanih tipki se nalazi na GitHub-u.

Android aplikacija za slanje tipki

U svrhu ovog projekta napravljena je Android aplikacija koja olakšava slanje tipki na računalo. Unutar aplikacije se nalazi klasa koja čita skripte koje mi zadamo i prevodi ih u jezik potreban za simulaciju pritiska tipke, kako nebi svaki put trebali upisivati echo a | ./hid-gadget-test /dev/hidg0 keyboard za svako slovo.

Screenshot 2015-01-18-18-23-27.png

Unutar aplikacije je implementiran file explorer kojim možemo odabrati skriptu koju postavimo na uređaj, a primjer skripte koja otvara notepad i ispiše "hello world" u njemu izgleda ovako:

#CMD echo left-meta r

#BASH sleep 1;

notepad

#BASH sleep 1;

#CMD echo enter

#BASH sleep 1;

hello world

#BASH sleep 1;

Kako bismo lakše pisali i razumjeli skripte, napravili smo klasu koja sadrži metode koje provjeravaju početak svake linije. Ako linija počinje sa:

Ova skripta prvo otvara "Run" prozor u Windowsu pomoću Windows tipke + R, zatim unutra upiše "notepad" i klikne enter. Nakon toga se čeka 1 sekunda da bi se otvorio notepad i unutra se upiše "hello world".

Aplikacija pokreće skriptu pritiskom na tipku "Run", ali također je omogućeno da se zadnja skripta sama pokrene prilikom spajanja uređaja na računalo. To je postignuto pomoću Broadcast Receivera na Androidu koji je podešen tako da čeka promjenu stanja iz "not charging" u "charging".

Dobivanje root pristupa uređaju

Za ovaj projekt su korištena dva Android uređaja koje je bilo potrebno root-at, odnosno, dobiti potpuni pristup uređaju. Uređaji su Samsung Google Nexus S (Android 4.1.2) i Asus Google Nexus 7 (Android 5.0.2).

Samsung Google Nexus S

Otključavanje bootloader-a

Prije samog root-anja, potrebno je otključati bootloader. Bootloader služi za pokretanje kernela i operacijskog sustava, a obično je zaključan na uređajima od strane proizvođača uređaja. Zaključani bootloader osigurava da će korisnik koristiti proizvođačev ROM (firmware uređaja).

Potrebne potrebne datoteke za root-anje

Prije nego što se krene sa otključavanjem, potrebno je instalirati Samsung drivere ako već nemamo, kako bi uopće mogli komunicirati sa uređajem pomoću računala i zatim uključiti USB debugging na uređaju (Settings -> Developer Settings -> USB Debugging). Sljedeće korake treba poduzeti kako bi se otključao bootloader na Nexus S uređaju (NAPOMENA: otključavanje bootloader-a briše sve podatke sa mobitela – napraviti backup):

Instaliranje Custom Recovery

"Custom Recovery" je potrebno instalirati kako bi se na sustav uređaja mogao instalirati neslužbeni (custom) software, a on nam je potreban za instalaciju root programa. Postoje dva popularna Custom Recovery-ja za Android: ClockworkMod (CWM) i TeamWin Recovery Project (TWRPPodebljani tekst). Za ovaj projekt je korišten CWM ali i sa TWRP nebi trebalo biti razlike.

Root-anje uređaja

Asus Google Nexus 7

Preuzimanje skripte i potrebnih datoteka. Za ovaj projekt je korišten Asus Google Nexus 7 naziva nakasi, a ime uređaja je grouper i Android verzija 5.0.2. Dobivanje root pristupa na Nexus 7 uređaju je nešto jednostavnije jer postoji skripta koja napravi sve za nas, potrebno ju je samo pokrenuti. Jedini preduvjet je da su driveri uređaja instalirani na računalu (download driver-a). Važno je napomenuti da ova skripta također vrši otključavanje bootloader-a i da će sve datoteke na uređaju biti izbrisane, tako da je pametno napraviti backup prije pokretanja ukoliko uređaj sadrži neke važne podatke.

Nakon što imamo sve potrebne uvjete:


BadArduino Keyboard Emulator

Arduino Leonardo

Arduino Leonardo je mikrokontrolerska ploča sa ATmega32u4 čipom koja ima 20 digitalnih ulazno/izlaznih pinova (7 PWM izlaza i 12 analohnih ulaza), kristalni oscilator od 16MHz, mikro USB konektor, priključak za napajanje, ICSP konektor i reset taster. Sadrži sve što je potrebno za podršku mikrokontroleru. Ono što Arduina Leonarda razlikuje od ostalih ploča jest ugračen ATmega32u4 čip koji ima ugrađenu USB komunikaciju. Uprabo to mu omogućava da se ploča Leonardo računalu predstavi kao miš, tipkovnica ili dodatni serijski port ili nešto drugo. Upravo mogućnost predstavljanja ove ploče kao tipkovnica na računalu koristit će se za prikaz BadUSB ranjivosti.


Ploča Arduino Leonardo














Instalacija HID keyboard funkcija

Kako bi omogućili korištenje Leonarda potrebno je napraviti određene izmjene.

1. Potrebno je skinuti sljedeće biblioteke

2. Učitati biblioteke unutar Arduino IDE-a (Import library: In Arduino IDE -> Sketch -> Import Library -> Add library -> Path to HID-master)

3. Zamjeniti sve datoteke s ekstenzijom .h i .cpp u direktoriju C:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino sa datotekama uz github repozitorija kojeg smo skinuli u koraku 1. (HID-master)


Keyboard Library

Sad kad smo omogućili Arduino korištenje keyboard library-a ukratko će biti opisane najvažnije funkcije. Bitno je napomenuti upozorenje s radom ove biblioteke. Ukoliko ona stalno radi može doći do poteškoća u programiranju ploče. Funkcije poput Keyboard.print() poslat će tipke na računalo i bilo bi ih poželjno pozvati samo u trenutku kada vi to hoćete. Zbog toga preporuča se sustav kontrole za uključivanje na tu funkciju poput fizičkog prekidača.

Primjer manipulacije hosts datotekom u Windows 7 operacijskom sustabvu

Kako bi se pokazalo kako to sve funkcijonira za primjer će se uzeti manipulacija hosts datotekom unutar Windows7 opracijskog sustava putem cmd komande linije. Kako bi izbjegli poteškoće tjekom programiranja tipkovnice na Arduino ćemo postaviti prekidač i pritiskom na prekidač pokrenuti funkcijonalnost koju smo isprogramirali.


KeyboardMessage3 bb.png KeyboardMessage3 schem.png


Primjer programa

Program.PNG

Osobni alati
Imenski prostori
Inačice
Radnje
Orijentacija
Traka s alatima