Kolejny startup stworzył nowe urządzenie: do automatycznego otwierania samochodu za pomocą smartfona. Przekonani iż użycie AES czyni komunikację niemożliwą do złamania, w celu promocji kampanii crowdfundingowej zorganizowali nietypowy konkurs - "hacking challenge": jeśli komuś uda się przełamać zabezpieczenia i "ukraść" samochód, wówczas legalnie trafi on do "złodzieja".
W trakcie prezentacji - przy aktywnej pomocy widowni, wspomaganej niezbędnym do zrozumienia nowej technologii wprowadzeniem - krok po kroku przeprowadzimy analizę bezpieczeństwa tego rozwiązania: zaczynając od aplikacji mobilnej, przez warstwę radiową Bluetooth Low Energy,
słabości stworzonego protokołu komunikacyjnego, niewłaściwe założenia i brak zrozumienia ograniczeń bezpieczeństwa użytych komponentów. Ostatecznie wspólnie odkryjemy nowy, zaskakujący dla twórców atak: złamiemy zabezpieczenia, przejmując pełną kontrolę nad samochodem, po
uprzednim jednokrotnym zbliżeniu się do nieświadomego właściciela.
Podzielę się prawdziwym doświadczeniem sukcesu i porażki udziału w konkursie "hacking challenge" - trudnych do spełnienia warunków, problemów technicznych, przeszkód organizacyjnych i kontaktu z organizatorem - przed i po upadku kampanii. Opowiem o ekonomii startup-ów podporządkowanej twardym zasadom crowdfundingu, oraz o
urządzeniach które wkrótce nieuchronnie staną się częścią otaczającej nas rzeczywistości.
Uczestnicy wyniosą wyczerpującą wiedzę dotyczącą bezpiecznego użycia najpopularniejszej technologii IoT: Bluetooth 4 (Low Energy) - na przykładzie nie tylko samochodu, ale także innych urządzeń - m.in. coraz
popularniejszych beacon-ów. Wspólnie zastanowimy się również nad warunkami wykorzystania potencjalnych słabości, oraz ich rzeczywistym wpływem na ryzyko.
2. Pentester / konsultant bezpieczeństwa
Konsultacje i ocena bezpieczeństwa
rozmaitych aplikacji – www, mobile,
embedded...
Od 2003 / ponad 400 projektów
Sławomir Jasek
9. "Pierwszy na świecie smart" kosz na śmieci
Okazja!
Jedyne 249$
+ worki 19$
https://www.kickstarter.com/projects/brunosmartcan/trash-can-vacuum-bruno-the-worlds-first-smartcan
10. A może bidon który przypomni o piciu wody?
https://www.kickstarter.com/projects/582920317/hidrateme-smart-water-bottle
11. A może kubek który powie co jest w środku?
www.myvessyl.com
13. "A sensor embedded in a tooth could one
day tell doctors when people have defied
medical advice to give up smoking or eat
less. Built into a tiny circuit board that fits in
a tooth cavity, the sensor includes an
accelerometer that sends data on mouth
motion to a smartphone. Machine learning
software is taught to recognise each telltale
jaw motion pattern, then works out how
much of the time the patient is chewing,
drinking, speaking, coughing or smoking"
Chip w zębie
http://nslab.ee.ntu.edu.tw/publication/conf/TeethProbeISWC.pdf
15. 1. Wymyślić do czego jeszcze nie włożono chipa.
2. Kupić devkit (Nordic, TI...), czasem odrobinę
lutowania
3. Zaimportować kod BLE do aplikacji mobilnej
4. Przekonująca strona + video (bootstrap)
5. Kampania crowdfundingowa!
6. Profit.
Startup – jak zrobić urządzenie
16. Ekonomia startup-u wg Cartmana
http://southpark.cc.com/full-episodes/s18e01-go-fund-yourself
22. Internet of Things – najczęstszy scenariusz
machine learning,
Big Data "cloud"
"HUB"
23. IoT – te scenariusze ataku znamy od lat...
machine learning,
Big Data "cloud"
"HUB"
24. Bluetooth Smart, Low Energy, 4...
Jedna z najpopularniejszych,
najprężniejszych technologii IoT.
Kompletnie inny protokół niż poprzednie
wersje BT.
Główny cel: niskie zużycie energii.
Najczęstsze sposoby użycia:
a) Rozgłaszanie pakietów
b) Wymiana danych między urządzeniami
26. Łatwość wdrożenia, dostępność i koszt komponentów.
Coraz więcej urządzeń – "wearables", medyczne, smart home
Rozkwit beacon'ów i pozycjonowania wewnątrz budynków
Physical web
Bluetooth Mesh
Web bluetooth – dostęp do urządzeń z przeglądarki (API)
IPv6 over Bluetooth Smart
Przyszłość IoT należy do Bluetooth Smart
27. IPv6 over Bluetooth Smart
machine learning,
Big Data "cloud"
IPv6
IPv6
IPv6
IPv6
IPv6
IPv6
IPv6
28. Pairing
Key Generation
Encryption
Encryption in Bluetooth LE uses AES-CCM cryptography. Like BR/EDR, the
LE Controller will perform the encryption function. This function generates
128-bit encryptedData from a 128-bit key and 128-bit plaintextData using
the AES-128-bit block cypher as defined in FIPS-1971.
Signed Data
Bezpieczeństwo - wg specyfikacji
https://developer.bluetooth.org/TechnologyOverview/Pages/LE-Security.aspx
29. Ochrona przed atakami na różnych warstwach:
• Man-in-the-Middle (MITM)
• Pasywny podsłuch
• Śledzenie urządzeń/użytkowników
"The goal of the LE security mechanism is to protect
communication between devices at different levels of the
stack. "
Bezpieczeństwo - wg specyfikacji
https://developer.bluetooth.org/TechnologyOverview/Pages/LE-Security.aspx
31. Niewielkie urządzenia Bluetooth Low
Energy do precyzyjnej lokalizacji.
Rozgłaszają:
• unikalne identyfikatory
interpretowane przez aplikacje
(standard Apple iBeacon)
• dodatkowe opcje: URL, dane np.
temperatura (Google Eddystone)
Beacony
Beacon Eddystone
rozgłaszający URL
http://www.aislelabs.com/reports/beacon-guide/
Beacon Eddystone
widoczny w telefonie
32. Dodatkowe informacje (np. o produktach na półce) na
podstawie precyzyjnej lokalizacji.
Nagrody, punkty lojalnościowe, "gamifikacja".
Automatyczny "Check-in".
Nawigacja wewnątrz budynków.
Informacja o kradzieży roweru, portfela.
"Smart home" – automatyczne otwieranie drzwi,
włączanie światła...
Beacony – przykładowe scenariusze użycia
33. Detal: ktoś inny może użyć naszych beaconów żeby
przedstawić lepszą ofertę konkurencji.
Aplikacje dające jakiś zysk po zbliżeniu do beaconu:
- możliwość oszukania tego faktu
Przejęcie kontroli, rekonfiguracja, kradzież urządzenia:
- wymaga fizycznego zbliżenia, ataki celowe lub
przypadkowe
Ryzyka – zależą od użycia
34. Beacony rozgłaszają sygnał publicznie
Szczegóły można podglądnąć np. w
darmowej aplikacji.
https://play.google.com/store/apps/details
?id=uk.co.alt236.btlescan
45. # 1. Aby zrekonfigurować dowolny beacon wystarczy
zainstalować aplikację deweloperską.
# 2. Użytkownik może konfigurować wyłącznie swoje
urządzenia (weryfikacja w "chmurze").
Jednak okazuje się, iż ograniczenie jest tylko w GUI.
Rekonfiguracja urządzenia nadal nie wymaga
uwierzytelnienia.
Beacony - konfiguracja
47. # 3. Stały klucz uwierzytelniający zaszyty w SDK
# 4. Indywidualne dane uwierzytelniające w "chmurze".
Nowa funkcja: możliwość rekonfiguracji urządzenia za
pośrednictwem telefonu użytkownika końcowego (?)
Beacony - konfiguracja
48. Po co?
- Wandalizm
- Rozsiewać spam w Physical Web (URL Eddystone)
Warunki wykorzystania
- Fizyczna bliskość
- Przejęcie telefonu
Jeśli atak byłby trywialny (np. publicznie dostępna aplikacja),
mógłby być przeprowadzony przez przypadkowego intruza.
Beacony – konfiguracja: ryzyko ataku
54. Znany od lat, z powodzeniem stosowany przez złodziei, zwłaszcza
kradnących rzeczy z samochodu (nie potrzebują zapłonu).
Warunki:
• aktywne automatyczne otwieranie po zbliżeniu
• zbliżenie się do ofiary w tym samym czasie co kradzież
• nie pozwala na otwarcie samochodu w dowolnym momencie
później
Ale w samochodzie jest również blokada zapłonu...
Atak "relay"
56. Bluetooth LE - kanały
http://www.connectblue.com/press/articles/shaping-the-wireless-future-with-low-energy-applications-and-systems/
kanały rozgłoszeniowe
57. Open-source (software, hardware).
Sprzętowo łapie połączenia i pakiety
Bluetooth.
Podgląd pakietów w Wireshark.
Potrzebne 3 urządzenia aby obstawić
wszystkie 3 kanały rozgłoszeniowe.
Podsłuch Bluetooth: Ubertooth – 120$
http://greatscottgadgets.com/ubertoothone/
58. Bardzo drogie skanery komercyjne – profesjonalna
analiza całego pasma jednocześnie
Podsłuch Bluetooth
http://www.ellisys.com/products/bex400/
Ellisys Bluetooth Explorer 400
All-in-One Bluetooth® Protocol
Analysis System
http://www.fte.com/products/BPA600.aspx
ComProbe BPA® 600 Dual Mode
Bluetooth® Protocol Analyzer
60. Szyfrowanie działa domyślnie, transparentnie.
1. Parowanie - ustalenie wspólnego "Long Term Key"
obu urządzeń za pomocą jednej z metod:
JustWorks(R) – po prostu działa ;)
PIN
Out of band
2. Połączenia po sparowaniu – szyfrowanie AES za
pomocą kluczy sesji z LTK
Bluetooth LE - szyfrowanie
61. 1. Parowanie
Podsłuchanie parowania => odzyskanie klucza Long Term Key
(narzędzie crackle), umożliwia odszyfrowanie transmisji
szczegóły: http://lacklustre.net/bluetooth/
2. Połączenia po sparowaniu
Teoretycznie możliwy aktywny atak wymuszający renegocjację
LTK, w praktyce w większości przypadków nie działa.
Bluetooth 4.2 (2014) poprawia bezpieczeństwo transmisji.
Bluetooth LE – podsłuch transmisji
63. Podsłuch parowania – trudne do spełnienia warunki:
• musimy być w zasięgu w trakcie pierwszej konfiguracji
telefonu z samochodem.
Podsłuchiwanie połączenia już sparowanego nie ma
sensu – wymagałoby złamania AES.
Czy podsłuchanie transmisji nam w ogóle coś da?
Atak w praktyce?
65. Urządzenie w samochodzie rozgłasza się jako iBeacon.
Pakiety rozgłaszane są publicznie, z łatwością zobaczymy je np. w telefonie.
Jak to działa?
A jak łączy się do urządzenia aplikacja?
67. 1. Wyszukiwanie konkretnego iBeacona po UUID:
ProximityUUIDReady = "61150620-fc5e-11e3-a3ac-0800200c9a01";
int Major, Minor – zapisane w telefonie
2. Nawiązanie połączenia z beaconem
public void onEvent(XxxxxScannedEvent paramXxxxxScannedEvent) {
beaconList.add(xxxxxBeacon);
BleManager.connectManager.connect(xxxxxBeacon.getBluetoothAddress());
To co robimy?
Jak działa aplikacja?
69. Czekamy 5 minut
Czekamy 10 minut
Czekamy 20 minut
... samochód nie działa ;)
Jedziemy na miejsce i...
https://www.flickr.com/photos/artvlive/19548772122
70. OK, ale jak rozwiązać ten problem?
Alice
Bob
Mallory
71. Stanąć bliżej?
Przedłużacz USB?
Nie działa ;)
A jedna próba to 10 minut w plecy.
Podejść bliżej?
http://www.usb-cable.com/html/usb-extension-cables.html
72. Class 1 +8dBm
Zasięg 100 m
112.90 PLN
"little difference in range whether the other end of the
link is a Class 1 or Class 2 device as the lower
powered device tends to set the range limit"
https://en.wikipedia.org/wiki/Bluetooth
Silniejszy sygnał?
http://www.lairdtech.com/products/bt820
75. Dyfrakcja (ugięcie fali) to zjawisko fizyczne
zmiany kierunku rozchodzenia się fali na
krawędziach przeszkód oraz w ich pobliżu.
https://pl.wikipedia.org/wiki/Dyfrakcja
Zasada Huygensa:
"każdy punkt ośrodka, do którego dotarło czoło
fali można uważać za źródło nowej fali kulistej"
https://pl.wikipedia.org/wiki/Zasada_Huygensa
Wróćmy do podstaw
https://ilf.fizyka.pw.edu.pl/podrecznik/3/5/10
78. Wiele sygnałów?
Na każdym interfejsie wystawiamy iBeacon.
Jedziemy na miejsce i....
Znowu wyładował się akumulator ;)
Poza tym trudności z ogarnięciem w systemie wielu
interfejsów.
79. Aplikacja łączy się do pierwszego beacon-a którego
usłyszy.
Co zrobić żeby to naszego beacon-a usłyszała wcześniej
niż beacon samochodu?
Częściej wysyłać pakiety rozgłoszeniowe!
My nie musimy się martwić o baterię.
Zaraz, zastanówmy się raz jeszcze...
85. CSR nie działa stabilnie przy mniej niż 100ms.
Komunikacja z firmware niekiedy wymaga specjalnej
uwagi.
Gdy coś nie działa jak powinno, trzeba wykonać
sekwencję różnych komend w odpowiedniej kolejności ;)
Problemy z firmware...
86. BLE – funkcja zapewnienia
prywatności przez zmianę
adresu MAC co sekundę...
... powoduje crash Androida ;)
"Bluedroid can only handle seeing
1,990 different Bluetooth MAC
addresses before the Android
BluetoothService crashes"
Stabilność nowych technologii...
http://developer.radiusnetworks.com/2014/04/02/a-solution-for-android-bluetooth-crashes.html
87. - Stabilność nie jest cechą nowych technologii
//FAKT TECHNICZNY #3
88. OK to jedziemy jeszcze raz, i...
https://www.flickr.com/photos/artvlive/19548772122
Próbujemy ... działa! Aplikacja łączy się do naszego beacona!
Ale od razu przerywa połączenie i łączy się do samochodu...
Po dłuższej chwili jednak udało się "zhakować" samochód!
Ale mój ;)
90. Akumulator kwasowo-ołowiowy – rodzaj akumulatora elektrycznego, opartego na
ogniwach galwanicznych zbudowanych z elektrody ołowiowej, elektrody z tlenku
ołowiu(IV) (PbO2) oraz ok. 37% roztworu wodnego kwasu siarkowego,
spełniającego funkcję elektrolitu.
Akumulator ołowiowy został wynaleziony przez francuskiego fizyka Gastona
Planté w 1859 r. Mimo wielu jego wad jest to wciąż najbardziej popularny rodzaj
akumulatorów elektrycznych. Występuje w niemal wszystkich samochodach, a
także wielu innych pojazdach (np. Melex). Oprócz tego stanowi często jeden z
elementów awaryjnego zasilania budynków, zakładów przemysłowych, szpitali,
central telefonicznych i polowych systemów oświetleniowych.
Akumulator kwasowo-ołowiowy
https://pl.wikipedia.org/wiki/Akumulator_kwasowo-o%C5%82owiowy
94. Jak działa parowanie?
Tryb konfiguracji
Generuj
24 losowe
hasła
Zapisz hasła w urządzeniu
Używaj pierwszego hasła
95. Jak działa uwierzytelnienie po sparowaniu?
ID hasła (00)
AES("LOGIN",
AES
(Challenge,
hasło
Pobierz "Challenge"
Komendy
Challenge
AES("LOGIN",AES(Challenge,hasło)
98. "Charakterystyki" i "serwisy"
"Charakterystyka" to w skrócie
zmienna do której można zapisywać lub
odczytywać – w zależności od
uprawnień.
Komunikacja odbywa się za pomocą
protokołu GATT.
Serwisy i charakterystyki typowe mają
krótsze, ustandaryzowane nazwy:
GATT
Service
Characteristic
Characteristic
Characteristic
Service
Characteristic
Characteristichttps://developer.bluetooth.org/gatt/services/Pages/ServicesHome.aspx
99. Serwisy własne mają nazwy w formie UUID:
public static void readStatus() {
BleManager.connectManager.readCharacteristic("f8718d0
0-a51e-11e3-a5e2-0800200c9a66", "8e4f78d0-f6c5-11e3-
a3ac-0800200c9a66");
}
Odczyt "challenge" w kodzie aplikacji
CharacteristicService
100. BlueZ www.bluez.org - gatttool
noble (nodejs) https://github.com/sandeepmistry/noble
Go https://godoc.org/github.com/paypal/gatt
PyBT https://github.com/mikeryan/PyBT
"PyBT is a crappy half implementation of a Bluetooth
stack in Python"
GATT – klient
101. - GATT – jak rozmawiać z urządzeniami BLE
//FAKT TECHNICZNY #5
102. Uzbrojeni w wiedzę o akumulatorach i opłatach parkingowych bierzemy
2 laptopy + rower.
Jedziemy na miejsce...
https://www.flickr.com/photos/mikecogh/6628027085/
Niestety atak na tablicę haseł
nie działa.
Może funkcja uwierzytelnienia
innym kluczem nie jest jeszcze
zaimplementowana w
urządzeniu? W aplikacji
mobilnej nie jest...
110. Potrzebny serwer GATT z którym połączy się ofiara + klient
GATT do jednoczesnego połączenia z samochodem.
Dostępne opcje:
BlueZ
bleno (node)https://github.com/sandeepmistry/bleno
PyBT (wtedy jeszcze nie było)
BlueZ – wygląda najbardziej obiecująco, od razu wbudowany
też klient GATT.
MITM Bluetooth GATT ?
111. BlueZ – próba po dobroci...
http://www.deezer.com/album/8932449
Dobry wieczór, siadamy do
kodu
112. BlueZ – próba po dobroci...
http://www.deezer.com/album/8786649
Mają DBUS, możemy to
wysterować z command-line
113. BlueZ – próba po dobroci...
http://www.deezer.com/album/6761388
Niestety jesteśmy w lesie,
DBUS jest w trakcie
tworzenia ;)
114. BlueZ – próba po dobroci...
http://www.deezer.com/album/434685
Wychodzimy z lasu – są
przykładowe profile
urządzeń.
Wystarczy podmienić
charakterystyki i
zrekompilować.
115. BlueZ – próba po dobroci...
http://www.deezer.com/album/9121411
Niestety znowu piętrzą się
trudności.
Nie działa.
117. BlueZ – wyższy poziom abstrakcji
http://www.deezer.com/artist/6807821
Wielowątkowość jest tu
nieźle zamieszana.
Tego kodu nie da się tak
łatwo zrozumieć...
118. BlueZ – wyższy poziom abstrakcji
http://www.deezer.com/album/550125
Gypsy Punk na ratunek!
119. BlueZ – wyższy poziom abstrakcji
http://www.deezer.com/album/550140
Dopiero druga płyta daje radę
120. Emulator samochodu działa w "lab" z moim telefonem!
Wydajność: 800 challenge+response na minutę.
Przy okazji spostrzeżenie: telefon loguje się do
urządzenia nawet jeśli ma wyłączoną funkcję
automatycznego otwarcia zbliżeniowo.
Ta podatność ułatwiłaby atak w praktyce.
Wreszcie...
122. Moja żona wspominając że potrzebuje nowy samochód nie myślała o
takim modelu ;) No i były ważniejsze prace...
Niestety limit czasu się wyczerpał...
123. The circuit behaved in a manner that was inconsistent with
the design due to jitter in the setting clock. The voltage
across the main power rail fluctuated more than ten volts in
either direction during normal operation due to stray
harmonics. Moreover, spurious data corruption was noted in
the RAM due to residual capacitance caused by the
microcontroller. Attempts to further diagnose the source of
the problem were unsuccessful due to excessive heat emitted
by the bluetooth and the PCB inducing current in the USB
connector. We recommend further analysis to rule out
electromagnetic interference.
Wreszcie przekonujące wyjaśnienie dlaczego nie zadziałało!
125. "Challenge" statyczny, lub problemy z losowością.
Fuzzing serwisów GATT.
Nadmiarowa, ukryta funkcjonalność (np. debug OTA
chipsetu).
Funkcjonalność pożyczania.
Brute-force?
... i jeszcze kilka innych pomysłów
Co jeszcze mogło pójść nie tak?
127. Uwierzytelnienie drugiej strony transmisji! Traktuj BLE
jako niezaufane medium.
Aplikacja loguje się do samochodu również gdy opcja
autounlock jest wyłączona.
Zaciemnienie kodu aplikacji – trzeba jednak pamiętać że
to tylko spowalnia analizę.
Warto zwrócić uwagę, iż analiza bezpieczeństwa byłaby
zdecydowanie łatwiejsza po kupieniu urządzenia.
Co można było zrobić lepiej?
130. Analogicznie jak WWW 20 lat temu - był SSL ale nikt nie słyszał o
SQL injection.
Specyfikacja przekonująco mówi o bezpieczeństwie, ale warstwy
transportu.
Za bezpieczeństwo warstwy aplikacji odpowiedzialny jest
programista. Traktuj BLE jako niezaufane medium.
Ryzyko ataku na urządzenia BLE zależy od scenariusza użycia, może
zmienić się w czasie – nowe narzędzia, powszechność technologii.
Bluetooth Low Energy: ograniczenia sprzętowe, problemy ze
wsparciem, problemy ze stabilnością.
BLE != CACY
134. Bądź czujny – tak,
strzeż tajemnicy – tak,
opieraj bezpieczeństwo na tajemnicy – NIE!
135. Zaciemnienie, ograniczenia mogą co najwyżej spowolnić
intruza.
We współpracy osiągniemy najwięcej w (zawsze)
ograniczonym czasie.
Wspólnie jesteśmy w stanie wypracować najlepsze
rozwiązania problemów.
Nawet krótka rozmowa ze specjalistą od bezpieczeństwa
może bardzo dużo zmienić, zwłaszcza na etapie koncepcji.
Bezpieczeństwa często nie da się "dorobić" później.
Whitebox!
137. W prezentacji wykorzystano dostępne w serwisie YouTube fragmenty
polskich kronik filmowych (m.in z przemówieniami Edwarda Gierka),
a także programu edukacyjnego "Przybysze z Matplanety".