Wi-Fi мережі: проникнення та захист. 2) Kali. Приховування SSID.

Перша частина циклу була дуже швидко зустрінута хабраспівтовариством, що надихнуло мене на прискорене написання наступної частини. До попередньої статті було залишено багато слушних коментарів, за що я щиро вдячний. Як кажуть, хочеш знайти огріхи у своїх знаннях – напиши статтю на Хабр.

У цій статті ми поговоримо про те, як можна виявити «приховані» мережі, обійти MAC-фільтрацію на точці доступу і чому WPS (QSS в термінології TP-LINK) — це «бекдор у кожному будинку». А перед цим розберемося, як працює бездротовий адаптер та антена та як Kali Linux (ex. Backtrack) допоможе нам у тестах на проникнення у бездротові мережі.

----------------------<cut>----------------------

Все це так чи інакше вже описувалося раніше, як тут, так і на інших ресурсах, але цей цикл призначений для збору розрізненої теорії та практики воєдино, простою мовою, зі зрозумілими кожному висновками.

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

Kali… Kali Linux

Дізнавшись про існуючі на сьогодні механізми захисту бездротових мереж у першій частині, саме час використовувати ці знання на практиці і спробувати щось зламати (природно, що належить нам самим). Якщо вийде – наш захист нікуди не годиться.

Всі маніпуляції проводитимемо з використанням Kali Linux — kali.org. Це збірка на основі Debian, яка раніше була відома під ім'ям Backtrack. Якщо ви вперше знайомитеся з цією системою, то раджу почати відразу з Kali, тому що там є все те, що було в Backtrack, але у свіжому вигляді.

(Читачі підказують, що є й інші подібні збірки, наприклад, wifiway.org. Однак я з ними не працював.)

Під Windows теж можна робити багато з описаного, але основна проблема у відсутності/поганій підтримці режиму монітора бездротових адаптерів, через що ловити пакети проблематично. Кому цікаво – зверніть увагу на CommView та утиліти Elcomsoft. Усі вони потребують спеціальних драйверів.

Kali дуже зручно використовувати з флешки — у неї у спадок від Debian Wheezy (у мене одного закладає ніс від такої назви?) є persistence mode, який дозволяє завантажуватись у трьох режимах: роботи без збереження даних (read only), роботи з їх збереженням на окремий розділ на флешці, так званому persistence, або роботи без збереження в live/vanilla mode (тобто read only і без використання даних у persistence — початкова чиста версія дистрибутива).

Але, звичайно, хто хоче встановити її на жорсткий диск може легко зробити це і з завантажувача, і вже з запущеної оболонки. ОС підтримує шифровані розділи (LVM). Крім цього, можна зробити власне складання Kali — додати пакети, налаштувати завантажувач та інше. Все це докладно описано в документації проблем не викликає, хоча складання вимагає пари годин часу.

Отже, допустимо ви завантажили ISO і записали його на флешку (для * nix — dd, для Windows — Win32DiskImager). Що далі?

Режим persistence

Ця стаття — не посібник з Linux, однак у мене самого були проблеми із запуском цього режиму, тому вирішив спеціально описати його роботу.

Користуватися Kali цілком можна і в режимі Live CD, але якщо ви хочете мати можливість зберігати стан системи між перезавантаженнями (дані та налаштування) — потрібно створити окремий ext2-розділ на флешці з ім'ям persistence, для чого можна використовувати GParted у складі Kali і розбити флешку прямо під час роботи з нею. Коли розділ створено, змонтуйте його і запишіть туди єдиний файл з ім'ям persistence.conf і таким вмістом:

  1. / union

Далі під час кожного завантаження Kali потрібно вказати, в якому режимі запускати систему. Для цього в завантажувачі при виділеному першому пункті Live (i686-pae) (аналогічно x64) натискаємо Tab — з'являється рядок завантаження ядра. Туди в кінець додаємо пробіл і тип завантаження:

persistence, «повна сталість» — завантаження всіх даних на розділі та збереження змінених у процесі роботи даних на нього жpersistence persistence-read-only, «постійність без збереження змін» — зверніть увагу, що це два слова і вказувати потрібно обидва, через пробіл, оскільки без першого цей режим не запуститься (буде live mode). У цьому режимі раніше збережені на розділ дані будуть завантажені, але зміни протягом цієї сесії збережені не будуть і після вимкнення дистрибутив повернеться у вихідний стан

Якщо не вказати тип завантаження, система буде запущена в live (vanilla) mode – розділ persistence не буде використаний і після завантаження його можна буде змонтувати та зробити якісь зміни. Всі дані та налаштування протягом роботи в live-режимі не будуть збережені і містяться тільки в тимчасовій пам'яті.

Щоб не вбивати ці режими при кожному завантаженні можна створити свою збірку Kali (див. інструкції на сайті) — там є налаштування завантажувача, куди можна вписати потрібні режими так, щоб спочатку завантажуватися в persistence persistence-read-only — на мій погляд, це саме зручне, тому що спочатку налаштував все, що потрібно, а потім кожна сесія починається із чистого аркуша.

Use the tools, Luke

Збори закінчені, розходимося, розходимося.

Ну, от і дісталися терміналу. Подивимося, хто довкола нас світить ультрахвилями.

Режими роботи Wi-Fi адаптера

Але спочатку потрібно перевести наш бездротовий адаптер (мережеву карту) в «хакерський режим» — monitor mode.

Справа в тому, що кожен Wi-Fi адаптер, а точніше, антена, фізично вловлює будь-які сигнали, що пересилаються пристроями в радіусі дії. Антена не може «не приймати» сторонні пакети. А ось драйвер може працювати в трьох режимах (насправді 6, але це за рамками цієї статті):

Client mode (також managed mode) — пакети, не призначені цьому адаптеру — відкидаються, інші передаються всередину ОС як «отримані». У цьому режимі пошкоджені пакети також відкидаються. Нормальний режим роботи «без свистелок». Monitor mode (також rfmon mode) — драйвер не фільтрує пакети і передає все, що вловлює антена, в ОС. Пакети з неправильною контрольною сумою не відкидаються і їх можна побачити, наприклад, у Wireshark.Promiscuous mode («безладний режим») — режим монітора «наполовину». Драйвер буде передавати в ОС пакети, отримані в рамках мережі, до якої ми зараз підключені (associated), але на відміну від звичайного режиму, не будуть відкидатися пакети, призначені іншим клієнтам цієї мережі. Пакети інших мереж ігноруватимуться. Зрозуміло, що це працює лише коли ви можете успішно підключитися та авторизуватись у деякій мережі (відкритій чи ні). На відміну від монітора цей режим підтримується меншим числом адаптерів. При роботі в цьому режимі, так само як і в режимі клієнта, драйвер прибиратиме з переданих в ОС пакетів низькорівневі заголовки каналу.

Нам потрібен якраз режим монітора — в режимі клієнта нам не цікаво дивитися на пакети, які нам самим і призначені, а для promiscious режиму нам потрібно спочатку підключитися до деякої мережі. Якщо не рахувати пошкоджених пакетів та наявності заголовків 802.11, режим монітора може те ж і більше, що і безладний режим, та й підтримується левовою часткою адаптерів. Єдина проблема — не всі адаптери можуть одночасно передавати дані в режимі монітора, але я особисто з цим проблем не мав.

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

Відкриваємо термінал та виконуємо:

  1. airmon-ng start wlan0

wlan0 – ідентифікатор пристрою-адаптера. *nix це wlan + порядковий номер (wlan0, wlan1, wlan2 і т.д.). Номер адаптера можна дізнатися, виконавши ifconfig або iwconfig (це виведе лише пристрої бездротових адаптерів та специфічну для них інформацію).

Якщо airmon-ng виведе повідомлення (monitor mode enabled on mon0), адаптер успішно переведений в режим спостереження.

Зверніть увагу, що в командах, які ми будемо виконувати далі, також вказується ідентифікатор адаптера, але віртуального mon0 (mon1, etc.), а не вихідного wlan0. mon0 – адаптер, створений airmon-ng, призначений для роботи з функціями монітора.

Зараз цей режим підтримується 80-90% всіх адаптерів (на мій досвід), найпоширеніші з них — Atheros, Intel і TP-LINK. Останній виробляє зовнішні адаптери зі змінними антенами до $30 (я користувався TL-WN722NC + TL-ANT2408CL — до того ж завдяки USB їх можна підключити до VMware). Список підтримуваних адаптерів є у вікі Aircrack-ng.

Бездротові канали

Wi-Fi — технологія передачі даних по радіоканалу, тобто даремно з використанням того ж механізму, що і в радіостанціях. І так само, як у радіостанціях, якщо передавати надто багато даних на одній частоті (зазвичай 2.4 ГГц), то не можна буде розібрати, що до чого належить. І тому існує поділ на канали.

Усього каналів 13, хоча останній канал — тринадцятий — нещасливий і в деяких країнах заборонений, тому найчастіше використовуються 1-12. Однак 13-й можна увімкнути, вибравши для бездротового адаптера таку країну, як Болівія (BO) або будь-яку іншу, де дана частота дозволена. Так, технічна можливість, як це часто буває, є в будь-якому адаптері, але заблокована за етичними перевагами.

Крім цього, є і 14-й канал (японці, як завжди, відзначилися) і частота 5 ГГц з ще 23 каналами. Взагалі, канали 2.4 ГГц частково перетинаються, плюс їхня ширина може бути 20 і 40 МГц. Ця тема заплутана через наявність різних версій стандарту, кому цікаво можуть почитати у Вікіпедії. Нам вистачить і те, що вже сказано. Поки що 5 ГГц застосовуються рідше, але описані далі прийоми можна застосувати і до цієї частоти.

Деякі використовують 13 канал для приховування своїх мереж, але цей спосіб тут навіть не розглядається, так як достатньо перевести адаптер в потрібний регіон, як він сам їх побачить. Наприклад:

  1. ifconfig wlan0 down

  1. iw wlan0 reg set BO

  1. ifconfig wlan0 up

  1. iwconfig wlan0 channel 13

Будь-який бездротовий адаптер може приймати та передавати дані лише на одному каналі за один раз. Однак поточний канал можна змінювати як завгодно часто — для отримання повної інформації про бездротові передачі навколо airodump-ng (після реклами нижче) перемикає канал кілька разів на секунду і ловлять все, що трапляється. Це називається channel hopping («стрибки каналами»). Це роблять і системні програми — наприклад NetworkManager для GNOME, який показує список бездротових мереж у правому верхньому кутку.

Якщо канал не зафіксований, деякі пакети можуть бути втрачені — адаптер переключився на сусідній канал, а в цей час по попередньому каналу пройшов новий пакет, але його антена вже не вловила. Це критично, коли ви намагаєтеся перехопити handshake, тому для відключення всіх програм, які використовують бездротовий адаптер і не дають зафіксувати канал, використовується ця команда:

  1. airmon-ng check kill

Без kill буде виведено список усіх підозрілих процесів, а з kill вони будуть завершені. Після цього адаптер залишиться у вашому розпорядженні. Команду вище рекомендується виконувати перед будь-якими діями, крім простого огляду мережі, оскільки бездротовий адаптер є спільним ресурсом; декілька програм можуть використовувати його одночасно (наприклад, можна ловити список мереж в airodump-ng і одночасно підбирати WPS в reaver), але будь-яка з них може переключити канал, тому важливо зафіксувати його і при запуску (зазвичай параметр називається -c або — channel).

Antenna overclock

Крім маніпуляцій з регіоном ifconfig може спробувати змусити адаптер працювати на більшій потужності, ніж це робить за замовчуванням. Результат сильно залежить від типу адаптера і регіону, при довгому використанні може зіпсувати пристрій і взагалі підсмажити ніс, так що використовуйте на свій страх і ризик. У разі успіху антена зможе вловлювати слабші сигнали.

  1. ifconfig wlan0 down

  1. # Обход региональных ограничений на максимальную мощность передатчика.

  1. iw reg set BO

  1. iwconfig wlan0 txpower 500mW

  1. # Либо:

  1. iwconfig wlan0 txpower 30

  1. ifconfig wlan0 up

Звичайна потужність — 15-20 дБм. При помилці буде повідомлення типу Invalid argument, проте його може і не бути після перевірки перевірте значення txpower в iwconfig.

Вони серед нас

Виконуємо:

  1. airodump-ng mon0

airodump-ng — команда для збору пакетів у радіоефірі. Вона виводить у консоль дві таблиці. У верхній виводяться знайдені бездротові мережі, у нижній — клієнти, підключені до них, або не підключені, але з активним бездротовим адаптером, який транслює якісь пакети (наприклад, пошук мережі з певним ім'ям).

Останнє, до речі, особливо цікаве, бо ми можемо люб'язно надати їм шукану мережу та подивитися, що нині модно в «Однокласниках»? На цю тему днями комрадом KarasikovSergey була опублікована стаття використанням Karma — але так як це вже на межі шкідницького проникнення в цьому циклі ми цю тему не зачіпатимемо. Але це дійсно проблема і варто подбати про те, щоб ваш пристрій не чіплявся за всі мережі без вашого дозволу, у тому числі за відомі — автентичність точок доступу не перевіряється і ви можете опинитися в мережі зловмисника. У всіх сенсах.

Стовпці першої таблиці з доступними бездротовими мережами:

BSSID — унікальна MAC-адреса бездротової мережі. За аналогією з MAC-адресою мережевих карт, це 6 чисел у шістнадцятковому форматі, розділених двокрапкою, наприклад: AA:00:BB:12:34:56. Він передається до більшості інших команд. PWR – рівень сигналу. Це негативне число; чим воно ближче до 0 – тим сигнал сильніший. Зазвичай для комфортної роботи це число -50, для відеозв'язку — до -65, для VoIP — до -75. Значення нижче -85 і особливо нижче -90 вважатимуться вкрай слабким рівнем. Число залежить як від потужності передавача, так і від коефіцієнта посилення антени у вашому адаптері (зовнішні адаптери мають посилення 0-12 dB, зовнішні 1-2-метрові всеспрямовані антени — до 24 dB). пакетів, що оповіщають пристроїв про існування цієї бездротової мережі, рівні сигналу, її імені (BSSID/ESSID) та іншої інформації. Використовується для підключення. За промовчанням точки доступу зазвичай налаштовані на передачу маячків кожні 100 мсек (10 разів на секунду), але інтервал можна збільшити до 1/сек. Відсутність маячка не говорить про відсутність бездротової мережі — у прихованому (hidden) режимі точка доступу не передає маячків, але до неї можна підключитися, якщо знати точне ім'я мережі. Про спосіб виявлення таких мереж нижче. # Data – кількість пакетів з даними, які прийшли від цієї точки доступу. Це може бути HTTP-трафік, ARP-запити, запити на авторизацію (handshake) та інше. Якщо до мережі не підключений жоден клієнт або якщо він нічого не передає, це значення не змінюється і може бути 0.#/s — число пакетів з даними в секунду. #Data поділений на час спостереження за цією мережею. CH — номер каналу. Як було описано вище, весь доступний спектр Wi-Fi розділений на 14 каналів; точка доступу і, відповідно, клієнти, передають дані певному каналі і це стовпець вказує, якого каналу прив'язана ця точка доступу та її клиентыMB — швидкість передачі (ширина каналу) в Мбіт/с. Крапка в кінці означає, що точка доступу підтримує коротку преамбулу (short preamble). Можна побачити значення 11, 54, 54e. Нас це зазвичай мало хвилює ENC – тип бездротової мережі – OPN (відкрита), WEP, WPA, WPA2. На підставі цього параметра ми вибираємо відповідну схему атаки. CIPHER – тип шифрування даних після handshake. Можливо TKIP і CCMP (див. огляд у першій частині). AUTH — механізм автентифікації передачі часового ключа. Можливо PSK (звичайна авторизація за єдиним паролем для WPA(2)), MGT (WPA(2) Enterprise з окремим сервером з ключами RADIUS), OPN (відкрита).ESSID — ім'я бездротової мережі. Саме його ви бачите в диспетчері бездротових мереж у Windows і вказуєте в налаштуваннях точки доступу. Так як це ім'я користувача, то воно може не бути унікальним, і для всіх внутрішніх операцій використовується BSSID (тобто MAC-адреса адаптера в точці доступу), а це — просто відображається назва.

Іноді в деяких шпальтах можна побачити числа -1, а в останньому стовпці — <length: 0>. Це ознаки бездротової мережі, яка не транслює свої дані у відкритому вигляді, а відповідає лише коли клієнт зробив явний запит на підключення із зазначенням коректного ESSID та пароля. Крім цього, точка доступу може взагалі не транслювати маячки і стане активною тільки, коли до неї підключиться клієнт, який знає її ім'я. Якщо залишити airodump-ng запущеним досить довгий час і якщо в цьому проміжку до прихованої мережі підключиться новий клієнт, то рядок, що відповідає «прихованій» мережі, буде автоматично розкрито і там з'явиться номер каналу, ESSID та дані про захист. При цьому може бути потрібно зафіксувати канал, щоб не пропустити момент підключення (див. нижче).

Стовпці другої таблиці з бездротовими клієнтами:

BSSID — MAC-адреса точки доступу, до якої підключено клієнта (див. першу таблицю). Якщо вказано (not associated) — клієнт відключений від усіх мереж, але адаптер працює (можливо він шукає доступні мережі). STATION — MAC-адреса клієнта. Колись ці адреси були вшиті до адаптера на фабриці і не могли бути змінені, але сьогодні може бути налаштований у переважній більшості випадків. У Linux/Mac для цього є штатні засоби. У Windows з цим складніше і підтримка залежить від драйвера. MAC-адреса так само, як і в дротових мережах, передається буквально в кожному пакеті від цього клієнта і це основна причина, чому фільтрація по MAC майже марна. PWR — рівень сигналу від клієнта. Чим ближче до 0, тим клієнт ближче/сигнал потужніший (див. першу таблицю). дефісу) і від клієнта назад (праворуч). Lost – кількість втрачених пакетів, які наша система (не клієнт) не зареєструвала. Це легко обчислити, оскільки в пакетах, що передаються, є лічильник. Frames або Packets — число пакетів з даними, які ми вловили від цього клієнта (див. #Data в першій таблиці). підключитись. Тут можуть бути перераховані зовсім не ті мережі, які ви бачите навколо, а ті, до яких клієнт підключався раніше, або приховані мережі. На основі цього можна організувати атаку типу Karma, як згадано раніше.

Параметри запуску airodump-ng (можна комбінувати; більш детально в наступних частинах):

airodump-ng -c 3 mon0 — зафіксувати канал №3 — повний прийом пакетів без втрат при перемиканні на інші канали (через частоти, що перекриваються, до списку можуть потрапити сусідні канали). airodump-ng -w captures.pcap mon0 — записувати всі прийняті пакети у файл captures.pcap — використовується для offline-атаки на перебір пароля WEP/WPA (буде освітлено в наступній частині). airodump-ng --essid "Ім'я мережі" mon0 — фільтрувати пакети, що приймаються (записуються/відображаються) за належністю до заданого імені мережі. Зазвичай використовується зменшення розміру файла, оскільки на якість перехоплення це ніяк не впливає. airodump-ng --bssid 01:02:03:AA:AA:FF mon0 — фільтрація за MAC-адресою точки доступу (BSSID). Аналогічно — essid.

Приховані мережі… такі приховані

Часто в побуті можна почути, що приховані мережі дуже складно виявити/підключитися/зламати/забрати (потрібне підкреслити). Однак як уже було показано, «прихована» мережа — не що інше, як мережа, яка не передає маячки про своє існування 10 разів на секунду, або передають їх, але з порожнім ESSID та іншими полями. На цьому різниця закінчується.

Як тільки до такої мережі підключається клієнт, він передає її ESSID та пароль, і якщо така мережа існує в радіусі дії – точка доступу відповідає на запит і проводить усі звичайні процедури авторизації та передачі даних. А якщо клієнт уже був підключений раніше — його можна побачити у списку активних адаптерів і відключити.

Кожен підключений клієнт спілкується з базовою станцією з її BSSID — і це саме те, що ми бачимо в обох таблицях airodump-ng. Ми можемо «відключити» клієнта від мережі, після чого він повинен буде підключитися знову — і в цей момент airodump-ng перехопить потиск рук з усіма ідентифікаторами і ключами. Або ми можемо просто залишити ноутбук увімкненим на пару годин з airodump-ng на потрібному каналі і почекати. До речі, при успішному «розтину» у правому верхньому кутку з'явиться повідомлення виду [Decloak: 00:00:11:11:22:22] з BSSID точки доступу, конспірацію якої ми розкрили.

Відключення клієнтів передбачено у всіх бездротових стандартах і робиться за допомогою aireplay-ng (усі три вже знайомі нам утиліти — частина проекту Aircrack-ng, який містить у своєму наборі всілякі інструменти для роботи з тонкими матеріями):

````

  1. aireplay-ng wlan0 --deauth 5 -a AP_BSSID -c CLIENT_BSSID

````

Увага: ця команда є винятком і приймає ідентифікатор реального бездротового адаптера, а не mon0, створеного за допомогою airmon-ng.

Якщо при запуску з'явилася помилка про незафіксований канал та/або airodump-ng показує у правому верхньому кутку [ fixed channel -1 ] — означає, якась програма або сервіс змушує адаптер перескакувати з каналу на канал (це може бути той самий airodump-ng ) та їх потрібно закрити за допомогою airmon-ng check kill, як було описано на початку.

Команда вище імітує ситуацію, коли точка доступу повідомляє клієнту, що старий ключ недійсний (і що його слід оновити, повторивши handshake, тобто передавши пароль та ім'я мережі заново). На адресу клієнта надсилаються повідомлення нібито від точки доступу про те, що слід відключитись від мережі та оновити дані сесії. Так як цей тип пакетів не захищений шифруванням (тобто команда може бути виконана ще до аутентифікації), то протидіяти йому неможливо з тієї простої причини, що неможливо встановити особистість того, хто це розсилає — MAC-ад

Нет комментариев. Ваш будет первым!
Посещая этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.