Вразливості і атаки Bluetooth
5.2.1 Базова pairing атака (атака на сполучення)
Проаналізуємо дані, обмін якими йде впродовж процесу сполучення:
Представимо ситуацію: зловмисникові вдалося прослуховувати ефір і під час процедури сполучення, він перехопив і зберіг всі повідомлення. Далі знайти PIN можна використовуючи перебір.
Перш за все необхідно скласти сам алгоритм перебору. Ми маємо в своєму розпорядженні перехоплені величини IN_RAND (він нешифрований) і BD_ADDR (нагадаємо, що адреси пристроїв видно в ефірі) і запускаємо алгоритм E22. Йому передаємо вищеперелічені дані і наш передбачуваний PIN. В результаті ми набудемо передбачуваного значення Kinit. Виглядає воно зразково так:
Kinit = E22[IN_RAND, BD_ADDR(B), PIN'] де PIN' передбачуваний нами PIN-код
Далі, повідомлення 2 і 3 піддаються XOR з тільки що отриманим Kinit. Отже, наступним кроком ми отримаємо LK_RAND(A) і LK_RAND(B) в чистому вигляді. Тепер ми можемо вирахувати передбачуване значення Kab, для чого проробляємо наступну операцію:
LK_K(A)= E21[BD_ADDR(A), LK_RAND(A)] де LK_K(A|B) це проміжні величини
LK_K(B)= E21[BD_ADDR(B), LK_RAND(B)]
Kab = LK_K(A) XOR LK_K(B)
Перевіримо PIN. Візьмемо отриманий Kab і перехоплений AU_RAND(A) і обчислимо SRES(A).
Після порівнюємо отриманий результат з SRES(A)', номер, що зберігається в повідомлен-ні, 5:
SRES(A)= E1[AU_RAND(A), Kab, BD_ADDR(B)]
Якщо SRES(A)== SRES(A)' PIN успішно вгаданий. Інакше повторюємо послідовність дій спочатку з новою величиной PIN'.
Першим, хто відмітив цю уразливість, був англієць Оллі Вайтхауз (Ollie Whitehouse) в квітні 2004 року. Він першим запропонував перехопити повідомлення під час сполучення і спробувати обчислити PIN методом перебору, використовуючи отриману інформацію. Проте, метод має один істотний недолік: атаку можливо провести тільки у випадку, якщо вдалося підслуховувати всі аутентифікаційні дані. Іншими словами, якщо зловмисник знаходився поза ефіром під час початку сполучення або ж упустив якусь величину, то він не має можливості продовжити атаку.
5.2.2 Re-pairing атака (атака на пересполучений)
Вулу і Шакеду вдалося знайти вирішення труднощів, пов'язаних з атакою Вайтхауза. Був розроблений другий тип атаки. Якщо процес сполучення вже початий і дані упущені, ми не зможемо закінчити атаку. Але був знайдений вихід. Потрібно змусити пристрої спочатку ініціювати процес сполучення (звідси і назва). Дана атака дозволяє у будь-який момент почати вищеописану pairing атаку.
Розглянемо наступну ситуацію. Допустимо, що пристрої вже встигли зв'язатися, зберегли ключ Kab і приступили до Mutual authentication. Від нас потрібно змусити пристрої наново почати pairing. Всього було запропоновано три методи атаки на переспряження, причому всі з них залежно від якості реалізації bluetooth-ядра конкретного пристрою. Нижче приведені методи в порядку убування ефективності:
1) За pairing слідує фаза аутентифікації. Master-пристрій посилає AU_RAND і чекає у відповідь SRES. У стандарті декларує можливість втрати ключа зв'язку. У такому разі slave посилає «LMP_not_accepted», повідомляючи master про втрату ключа. Тому основна мета зловмисника відстежити момент відправки AU_RAND master-пристрієм і у відповідь упровадити пакет LMP_not_accepted, що містить. Реакцією master буде реинициализация процесу pairing. Причому це приведе до анулювання ключа зв'язку на обох пристроях.
2) Якщо встигнути відправити IN_RAND slave-пристрію безпосередньо перед відправкою master-пристроєм величини AU_RAND, то slave буде упевнений, що на стороні master загублений ключ зв'язку. Це знову ж таки приведе до процесу реинициализации сполучення, але вже ініціатором буде slave.
3) Зловмисник чекає відправки master-пристроєм AU_RAND і відправляє у відповідь випадково SRES, що згенерував. Спроба аутентифікації провалена. Далі слідує низка повторних спроб аутентифікації(кількість залежить від особливостей реалізації пристроїв). За умови, що зловмисник продовжує вводити master-пристрій в оману, незабаром (по лічильнику невдалих спроб) пристроями буде ухвалено рішення об реинициализации сполучення.
Використавши будь-який з цих методів, зловмисник може приступити до базової атаки на сполучення. Таким чином, маючи в арсеналі ці дві атаки, зловмисник може безперешкодно викрасти PIN-код. Далі маючи PIN-код він зможе встановити з'єднання з будь-яким з цих пристроїв. І варто врахувати, що в більшості пристроїв безпека на рівні служб, доступних через bluetooth, не забезпечується на належному рівні. Більшість розробників роблять ставку саме на безпеку встановлення сполучення. Тому наслідки дій зловмисника можуть бути різними: від крадіжки записника телефону до встановлення вихідного виклику з телефону жертви і використання його як прослуховуючого пристрою.
Ці методи описують, як примусити пристрої «забути» link key, що само по собі веде до повторного pairing, а значить, зловмисник може підслуховувати весь процес із самого початку, перехопити всі важливі повідомлення і підібрати PIN.