Obijanje bluetooth brave sa bluetooth snifferom

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

Temu rezervirao: Domagoj Draženović


Bluetooth uređaji su danas posvuda, i ne ograničavaju se samo na mobitele, smartphonove, i sl., nego Bluetooth postoji i npr. u uređajima koji otvaraju garažna vrata, te sigurnosnim sustavima sa Blutetooth modulima. Bluetooth lockovi su elektromehanički lock-ovi, koji su napravljeni da se otključaju ili zaključaju nakon šta dobiju naredbu, preko wireless protokola, od odgovarajućeg uređaja za to. Ta naredba je zapravo kriptirani ključ i on vrši postupak autorizacije kod otključavanja/zaključavanja brave. Za komunikaciju ključa i brave se koristi Bluetooth SMART(Bluetooth LE) i SSL, a za enkripciju te komunikacije 128/256-bitni AES[8].


Sadržaj

Master Lock Bluetooth

Slika 1. Master Lock BLuetooth (Izvor: [1])

Brava prikazana na slici ima sljedeće karakteristike:

  1. Otporno na vremenske uvjete
  2. Baterija: 9V
  3. Baterija (zamjenjiva): CR2
  4. Outdoor


Pomoću aplikacije na slici 2, se ta brava može zaključati ili otključati.


ELocks.png

Slika 2. Master Lock Vault eLocks (Izvor: [9])


Lako se može npr. na građevinskim poslovima bolje voditi evidencija kada je tko došao na određeni prostor, jer aplikacija bilježi tko je otključao lokot i u koje vrijeme. Zaposlenici se ne moraju više zamarati sa evidencijom dolazaka i odlaska, bilježeći na papir. Isto tako u slučaju pokušaja otvaranja lokota na silu, lokot šalje aplikaciji upozorenje da treća strana želi otključati lokot i nanijeti štetu. Ukoliko vlasnik lokota želi nekome dati dopuštenje da otključava/zaključava lokot, jednim klikom u aplikaciji da toj osobi cjelodnevnu kontrolu nad lokotom. Uvelike je olakšano korištenje lokotom, samo se stisne gumb, ako je mobitel vlasnika u blizini i bluetooth je uključen skupa sa aplikacijom, lokot će se odmah otključati, nisu potrebne šifre ili ključevi, samo jedan klik gumba[10].

Ubertooth One

Ubertooth One je nova generacija hardware Projekta Ubertooth, znatno nadamšuje svoju preteču, Ubertooth Zero.

Slika 3. Ubertooth One i komponente (Izvor: [2])
Slika 4. LED svjetla na Ubertooth One (Izvor: [3])

Sastoji se od (prikazano na slici):

  1. RP-SMA - RF konektor koji se spaja na testnu opremu, antenu i sl.
  2. CC2591 - RF front end
  3. CC2400 - bežićni primopredajnik
  4. LPC175x - ARM mikrokontroler sa Full-Speed USB 2.0
  5. USB priključak


Postoje 3 važne komponente kod korištenja Ubertootha:

  1. Hardware - izgradnja Ubertooth One-a je vrlo jednostavna i svako može napraviti svoj
  2. Firmware - software koji pokreće ARM procesor na Ubertooth One-u. Pri pokretanju se treba imati USB bootloader sa bluetooth_rxtx firmware-om
  3. Host code - programski kod koji se nalazi na računalu sa kojeg se pokreće Ubertooth One


Ubertooth One je razvojna platforma i na njoj se može pisati kod po potrebi, odnosno za bilo koju svrhu koja mu je namijenjna. Glavna razlika između Ubertooth i Bluetooth razvojne platforme je ta što Ubertooth, osim slanja i primanja 2.4GHz signala, može i raditi stanje nadziranja, odnosno nadzire promet Bluetooth paketa u stvarnom vremenu. Jedna of funkcionalnosti Ubertooth One-a je spektralna analiza, koja se bavi analizom frekvencija. Zatim postoji i opcija LAP sniffing-a, koja služi za nadgledanje LAP-a adrese Bluetooth uređaja (BD_ADDR) i po tom identificira o kojem se Bluetooth uređaju radi. Naprednija verzija sniffing-a se implementirala u pluginu za Kismet. Takva verzija ne pronalazi samo LAP Bluetooth uređaja, nego i UAP, koji se dobiva analiziranjem vremena i drugih karakteristika poslanih paketa kod Bluetooth prijenosa. Prednost je da se mogu ti paketi dump-ati u pcapbtbb datoteku, koja se onda može pokrenuti pomoću Wireshark-a. Učitavanje takve datoteke u Wireshark-u se može samo kada se odredi UAP Bluetooth uređaja[11].


libbtbb

libbtbb je biblioteka za Bluetooth baseband funkcije. Bez nje se nemogu pokrenuti svi alati koji se mogu koristiti sa Ubertooth One. Instalacija je dosta jednostavna, iako zasad je jedino testirana na Linuxu, smatra se da bi trebala raditi na drugim platformama. Instalacija se vrši na sljedeći način, prvo se sa [gita] skine projekt, zatim se upisuju iduće naredbe[12]:

$ mkdir build
$ cd build
$ cmake ..
$ make
$ sudo make install

Te naredbe će instalirati biblioteku u folder pod putanjom /usr/local/lib i headere u folder pod putanjom /usr/local/include. Nakon šta je instalacija uspješno završena se mogu koristiti funkcionalnosti na Ubertooth One-u.

Spektralna analiza

Slika 5. Spektralna analiza (Izvor: [4])



Kod pokretanja spektralne analize na Ubertooth One, nikada se ne smije ključivati hardware, bez priključene antene. Nakon priključivanja Ubertooth One, RST i 1v8 LED-ice će zasvijetliti, što označava da se pokrenuo LPC175x mikrokontroler, i da struja dolazi u bežini primopredajnik CC2400 IC (1V8). Sljedeći korak je ili izrada vlastitog koda ili preuzimanje nečijeg drugog, zato da alat zna šta treba raditi. Na linku file release se mogu naći svi potrebni zahtjevi da bi spektralna analiza radila. Da bi sve funckionalnosti kod Ubertooth One radili, mora se na računalu imati libbtbb-2015-10-R1 ili novija verzija. To je biblioteka koja omogućava rad Ubertooth One. Može se ili skinuti file release ili cijeli projekt za gita, kada se to napravi, navigira se do direktorija[13]:

host/python/specan_ui

Kada se nađemo u tom direktoriju, izvrši se naredba:

ubertooth-specan-ui

koja onda pokreće spektralnu analizu. Prilikom rada operacije ubertooth-specan-ui, RX-LED će se osvjetliti, a USR LED će biti prigušen.


Spektralna analiza u Kismetu

Spec an.png

Slika 6. Primjer spektralne analize na Kismet-u (Izvor: [14])


Postupak instaliravanja Ubertooth One alata je isti, ali potrebno je još na računalo instalirati Kismet, jedan od načina je idući[15]:

root@kali:~# git clone https://www.kismetwireless.net/spectools.git
Cloning into 'spectools'...
root@kali:~# cd spectools
root@kali:~/spectools# ./configure
root@kali:~/spectools# make
root@kali:~/spectools# make install

Sa Kismetom su se još i instalirali Spectools. Nakon instalacije se pokreće Spectools sa:

root@kali:~/spectools# /usr/local/bin/spectool_gtk


Jednom kada je sve pravilno instalirano, sad postoji više opcija skeniranja, kao što su:

1. skeniranje i prikazivanje MAC adrese i naziv svakog Bluetooth uređaja u blizini:

root@kali:~# hcitool scan

2. pasivno nadgledanje Bluetooth prometa:

root@kali:~# ubertooth-scan –s

3. prikazivanje prometa između BLE kompatibilnih uređaja i spremanja rezulata u pcap file:

root@kali:~# ubertooth-btle –p –f -c capture.pcap

Primjer skeniranog paketa sa uberooth-btle:

systime=1441512979 freq=2440 addr=8d651b4d delta_t=3.599 ms
86 9e d1 00 65 92 86 01 5d 3e 0e 5e 65 e0 61 9a 7d f7 04 c8 9f f5 45 00 ce f5 cc c8 8f 67 02 f5 4f a7 f5
Data / AA 8d651b4d (valid) / 30 bytes
    Channel Index: 17
    LLID: 2 / LL Data PDU / L2CAP start
    NESN: 1  SN: 0  MD: 0

    Data:  d1 00 65 92 86 01 5d 3e 0e 5e 65 e0 61 9a 7d f7 04 c8 9f f5 45 00 ce f5 cc c8 8f 67 02 f5
    CRC:   4f a7 f5

systime=1441512979 freq=2440 addr=72f844df delta_t=146.421 ms
01 00 9b 72 68
Data / AA 72f844df (valid) /  0 bytes
    Channel Index: 17
    LLID: 1 / LL Data PDU / empty or L2CAP continuation
    NESN: 0  SN: 0  MD: 0

    Data:
    CRC:   9b 72 68

LAP Sniffing

Slika 7. LAP Sniffing (Izvor: [5])


Zašto kažemo da je Bluetooth MAC adresa? Zato jer je BD_ADDR 48-bitni broj (kao i MAC adresa), koja je jedinstvena svakom Bluetooth uređaju, sastoji se od 3 dijela:

  1. NAP - 16-bitni beznačajni dio adrese (Non-Significant Address Part)
  2. UAP - 8-bitni gornji dio adrese (Upper Address Part)
  3. LAP - 24-bitni donji dio adrese (Lower Address Part)

Primjer: Za bluetooth adresu 01:02:03:04:05:06 potrebno je znati samo 00:00:00:04:05:06 da bi se spojili na uređaj.

Bd addr.jpg

Slika 8. Prikaz BD_ADDR (Izvor: [16])

Napadaču je potreban sam UAP i LAP, dok kod LAP Sniffing-a samo LAP. Prije se LAP Sniffing radio s USRP za 1000$, sada sa Ubertooth One za samo 100$. Razlog zašto je samo LAP dovoljan da se odredi kojem bluetooth uređaju pripada, zato jer, kao što je prije rečeno, svaki bluetooth uređaj ima jedinstveni LAP, u prometu tog uređaja, svaki paket sadrži njegov LAP i preko toga se može analizirati što se sve prenosi u tom prometu paketa. LAP Sniffingom se mogu pronaći svi bluetooth uređaji u blizini i od svakoga se može odrediti njihov LAP. Da bi se koristio LAP Sniffing, isto kao i za spektralnu analizu, mora se prvo instalirati libbtbb biblioteka, koja sadrži se funckionalnosti Ubertooth One. Nakon instalacije biblioteke, navigira se do foldera koji sadrži trenutnu funkcionalnost[17]:

host/bluetooth_rxtx

Kada dođemo u traženi folder, upišemo u CMD:

$ ubertooth-rx

Naredba koja pokreće LAP Sniffing i koja će nam pokazati LAP dijelove adrese bluetooth uređaja. Prilikom skeniranja prometa, pojavljuje se veliki broj lažnih LAP-ova, pomiješanih sa pravim, da bi se utvrdilo koji su pravi, a koji lažni, pomoću svog bluetooth uređaja možemo obaviti npr. radnju Scan for new devices, koja će u velikom broju slučajeva dati paket sa LAP-om 0x9e8b33. Kada to napravim više puta, onda možemo sa sigurnošću utvrditi koji je LAP stvaran, a koji su lažni[18].


Bluefruit LE Sniffer

Slika 9. Bluefruit LE Sniffer (Izvor: [6])
Slika 10. Veličina Bluefruit LE Sniffer-a u usporedbi sa 25 centa (Izvor: [7])

Bluefruit LE Sniffer, je nisko-budžetni Bluetooth Low Energy sniffer, koji traži pakete poslane u prijenosu između dva BLE uređaja. Bluefruit LE Sniffer je nRF-Sniffer, koji se bavi pasivnim skeniranjem paketa, ali postoji i opcija za krađu paketa tokom skeniranja istih. Bluefruit LE Sniffer je odličan alat za naučiti kako funkcionira i kako izgleda promet paketa između 2 BLE uređaja, na razini paketa. Ta analiza se vrši u alatu Wireshark, gdje se najbolje može vizualno predočiti svaki paket, promet paketa i sadržaj svakog paketa. Bluefruit LE Sniffer radi samo na BLE uređajima, ali ne i na klasičnim Bluetooth uređajima[19].


Postoje 2 načina korištenja ovog sniffera[20]:

  1. Nordic's nRF Sniffer Utility

Za ljubitelje Windowsa, ovo je bolja opcija korištenja Bluefruit LE Sniffera, uređaj se koristi pomoću službene aplikacije Nordic nRFSniffer, koja se skida sa stranice Nordic Semiconductors, nakon šta se napravi 'My Pages' acc. Da bi Sniffer radio, mora se koristiti Wireshark, jer sav promet koji se skenira se odmah šalje u Wireshark na analizu. Mana je, što se može nadgledati samo jedan uređaj istovremeno, ako želimo drugi uređaj nadgledati, mora se odbrati port tog uređaja preko UART COM porta. Kada se počne sa nadgledanjem, otvara se Wireshark i prikazuje promet paketa od nadgledanog uređaja.

  1. Python API

Ovaj način korištenja se može koristiti na više platformi, a ne samo Windowsima kao Nordic's nRFSniffer, zasad su to: OS X 10.10, Windows 7 x64, Ubuntu 14.04. Ostali koraci postupka skeniranja, su slični kao i kod Nordic-a.


Noridc's nRF Sniffer Utility

Da bi se osposobio Bluefruit LE Sniffer, treba se prvo skinuti sa Nordic službene web stranice paket nRF-Sniffer, koji skuplja podatke na Windowsima i prosljeđuje te podatke na Wireshark radi analize. Iz priloženoga se može zaključiti i da korisnik treba imati Wireshark da bi mogao upotpunosti razumjeti pakete u prometu između dva bluetooth uređaja. Kada se instalira sav potreban software, može se uključiti hardware i pokrenuti sniffanje. nRF-Sniffer je ograničen na skeniranje prometa samo jednog uređaja, pa se prvo treba odabrati uređaj kojeg će se skenirati.

NRF-Sniffer.png

Slika 11. CMD od Bluefruit LE Sniffer-a (Izvor: [21])


Nakon šta se ponude uređaji koje možemo skenirati, odaberemo jedan, prema rednom broju i stisnemo 'w', ta naredba će pokrenuti Wireshark i sav skenirani promet slati u taj program. Prednost korištenja alata Wireshark je ta da, Wireshark može interpretirati paket na najosnovnijoj razini i u čitljivom formatu ga prezentirati korisniku. Svi podaci o paketu su prikazani pod opcijom Bluetooth Low Energy Layer. Ako korisnik želi, može skenirati i promet između 2 BLE uređaja, no pošto Bluefruit LE Sniffer pasivni uređaj, on može samo skenirati promet, ne može se i spojiti na jedan od uređaja. Sami postupak spajanja dva BLE uređaja se može isto prikazati u Wireshark-u. Ako jedan od dva BLE uređaja odabere opciju Scan for new devices, u Wireshark-u će se pojaviti paket sa nazivom 'SCAN_REQ' ili 'SCAN_RSP'. Kada korisnik odobri spajanje, javlja se novi paket sa nazivom 'CONNECT_REQ', te kada se spajanje izvrši, počinje proces Write Requesta, odnosno slanje prometa, što rezultira novim paketom u Wireshark-u preko handle-a 0x001E[22].

Ako korisnik ima OS X, može koristiti nRF-Snifer pomoću paketa[23]:

nrf-ble-sniffer-osx


Python API

Ako korisnik ima već instaliran Python 2.7.x, onda je idući korak skidanja API-a pomoću kojeg će koristiti nRF-Sniffer, na [gitu] se nalazi sav potreban kod. Za početak se mora napraviti kod za sniffer.py Wrapper, u koji će se spremati port BLE uređaja. Primjer koda sa nalazi ispod[24]:

$ sudo python sniffer.py -h
usage: sniffer.py [-h] [-v] serialport

Interacts with the Bluefruit LE Friend Sniffer firmware

positional arguments:
  serialport     serial port location ('COM14', '/dev/tty.usbserial-DN009WNO',
                 etc.)

optional arguments:
  -h, --help     show this help message and exit
  -v, --verbose  verbose mode (all serial traffic is displayed)

Ovisno na kojoj platformi korisnik radi, jedini dio koda koji se mijenja je port:

''Za Windowse:''
COM15
''za Linux:''
/dev/ttyACM*
''Za OS X:''
/dev/tty.usbserial*

Kada se wrapper spoji na Bluefruit LE Sniffer, vršit će skenirnanje od 5 sekundi i ponuditi će odabir uređaja koje želimo skenirati.

$ sudo python sniffer.py /dev/ttyACM0
[sudo] password for ktown: 
Logging data to logs/capture.pcap
Connecting to sniffer on /dev/ttyACM0
Scanning for BLE devices (5s) ...
Found 2 BLE devices:

  [1] "" (E7:0C:E1:BE:87:66, RSSI = -52)
  [2] "" (14:99:E2:05:29:CF, RSSI = -94)

Select a device to sniff, or '0' to scan again
> 

Kada odaberemo uređaj, započet će skeniranje i ažurirat će se podaci svake sekunde, '.' će označavati svaki dohvačeni paket:

Select a device to sniff, or '0' to scan again
> 1
Attempting to follow device E7:0C:E1:BE:87:66
.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
............................
..............................
...........................
..............................


Kada smo skenirali količinu podataka za koju smatramo da je dovoljna, sa 'CTRL+C' zaustavljamo skeniranje i u Wiresharku otvaramo log datoteku formata .pcap, te dalje analiziramo skenirani promet.

Literatura

  1. http://www.masterlock.com/bluetooth
  2. https://www.adafruit.com/product/2269
  3. https://learn.adafruit.com/introducing-the-adafruit-bluefruit-le-sniffer/introduction
  4. https://cdn-learn.adafruit.com/downloads/pdf/introducing-the-adafruit-bluefruit-le-sniffer.pdf
  5. http://ubertooth.sourceforge.net/hardware/one/
  6. https://greatscottgadgets.com/ubertoothone/
  7. http://hackaday.com/2016/08/08/the-terrible-security-of-bluetooth-locks/
  8. https://www.security-sleuth.com/sleuth-blog/2015/9/6/now-i-wanna-sniff-some-bluetooth-sniffing-and-cracking-bluetooth-with-the-ubertoothone
  9. http://ubertooth.blogspot.hr/2014/06/discovering-bluetooth-uap.html
  10. https://penturalabs.wordpress.com/2013/09/04/bluetooth-sniffing-why-bother/
  11. https://learn.adafruit.com/introducing-the-adafruit-bluefruit-le-sniffer?view=all
  12. https://github.com/greatscottgadgets/ubertooth/wiki/Getting-Started
  13. https://github.com/greatscottgadgets/ubertooth/wiki/Building-from-git
  14. https://en.wikipedia.org/wiki/Bluetooth_low_energy
  15. https://en.wikipedia.org/wiki/ARM_architecture
  16. https://en.wikipedia.org/wiki/MAC_address
Osobni alati
Imenski prostori
Inačice
Radnje
Orijentacija
Traka s alatima