23.05.2005

Атаки на WEP, часть 2

В первой части мы рассмотрели последнее поколение утилит для пассивной атаки на WEP, использующих статистические методы или лобовой перебор для восстановления ключа из перехваченного трафика беспроводной точки доступа. В этой, второй и заключительной части статьи, мы познакомимся с утилитами, использующими особенности протокола 802.11 для атак на WEP сети.

Майкл Оссман, перевод Владимир Куксенок

Введение

В первой части мы рассмотрели последнее поколение утилит для пассивной атаки на WEP, использующих статистические методы или лобовой перебор для восстановления ключа из перехваченного трафика беспроводной точки доступа. В этой, второй и заключительной части статьи, мы познакомимся с утилитами, использующими особенности протокола 802.11 для атак на WEP сети.

Все описанные методы атаки требуют передачи произвольных пакетов в беспроводную сеть. Несмотря на то, что существует большое разнообразие способов внедрения пакетов в сеть, большая часть из них или требует Linux или не поддерживается, либо использует модифицированные версии драйверов, имеющих проблемы с поддержкой и доступностью. Для всех их необходима хотя бы одна wireless PCMCIA карта на чипсете Prism2 (например Senao 2511-CD-PLUS). К счастью, Auditor Security Collection [ссылка 1] live cd-rom может избавить вас от многих головных болей, так как включает в себя готовые к использованию драйверы для некоторых утилит активной атаки.

Остерегайтесь сбоев в работе сети, которые могут стать результатами активной атаки. Использование описанных утилит может иметь непредсказуемые последствия в разных сетях. Во время тестирования я столкнулся с несколькими системами, которым, после бомбардировки нашими пакетами, требовалась перезагрузка для восстановления работоспособности.

Быстрая генерация трафика

Если вам приходилось проводить время за сбором пакетов беспроводной сети (если вы читаете эту статью, готов спорить что так и есть), тогда вероятно вы заметили что MAC адрес источника и приемника явно видны для каждого пакета, даже когда он зашифрован с помощью WEP. Это позволяет вам однозначно идентифицировать хосты беспроводной сети, так же как и в LAN. Если вы никогда не пробовали анализировать трафик беспроводной сети, я настоятельно рекомендую сделать это. Найдите рабочую сеть, запустите Ethereal [ссылка 2] и попытайтесь ответить на максимальное количество таких вопросов:
  • Сколько точек доступа имеют одинаковые ESSID?
  • Это обычная машина или маршрутизатор?
  • Используется ли EAP? Если да, какого типа?
  • Система открыта или используется аутентификация по ключам?
  • Какой MAC адрес у главного узла?
  • Кто владелец NIC беспроводных хостов?
  • Кто владелец NIC хостов, использующий проводные способы доступа в сеть?
  • Кто производитель точки доступа?
  • Можете ли вы обнаружить обмен данными с DNS сервером?
  • Можете ли вы обнаружить три этапа установления TCP соединения?
  • Можете ли вы обнаружить HTTP соединение?
  • Какие хосты передают/получают большинство пакетов?
  • Какой трафик генерируется периодически (например, соединения по протоколу POP3 каждые 5 минут)?
  • Можете ли вы обнаружить ARP трафик (подсказка: frame.pkt_len==68 и wlan.da==ff:ff:ff:ff:ff:ff)?
Ни одна беспроводная сеть, использующая WEP, не защищена от активной атаки. С помощью соответствующих утилит вы можете перехватить любой пакет и повторно передать его в сеть. Пакет будет правильно зашифрован, даже если вы понятия не имеете о его содержимом. Затем, проанализировав трафик, вы можете сделать достаточно точное предположение о содержимом пакета. Вы можете выбрать что-нибудь подобное ARP запросу, надеясь, что это вызовет ответ другого хоста в сети. Если так и произойдет, вы можете повторить эти действия сотни или тысячи раз в секунду, заставляя хост генерировать огромное количество ответов, зашифрованных одним и тем же ключом и имеющих различные IV.

Описанный метод точь-в-точь соответствует методу, используемому в aireplay, утилите входящий в состав aircrack [ссылка 3]. В рабочем состоянии aireplay показана на Рисунке 1. Как мы установили в первой части статьи, и aircrack и WepLab [ссылка 4] требуется несколько сотен тысяч пакетов для взлома WEP ключей. С помощью aireplay, вы можете генерировать такое количество пакетов каждые несколько минут. Поэтому те, кто говорят, что смена ключа каждые 10 минут делает WEP не взламываемым, сильно ошибаются. Использование новых ключей для каждой сессии или пользователя также не имеет шансов против этой атаки. Защита WEP в очередной раз терпит крах.


Рисунок 1. Aireplay в действии.

Auditor Security Collection live cd-rom делает использование aireplay относительно простым, так как имеет в своем составе версию драйвера hostap с aircrack патчами. Правда, вам понадобятся две wireless карты с расстоянием между их антеннами хотя бы несколько дюймов. Возможно, проще будет использовать два ноутбука, один с картой Prism2 для повторной отправки перехваченных пакетов, и другой для сбора всего генерируемого трафика. Будьте готовы потратить некоторое время для поиска подходящего пакета. Вы можете сохранить некоторые, выбранные вами, пакеты с помощью Ethereal и передать их утилите aireplay.

Другая утилита, реализующая подобную атаку, уже давно присутствует в мире BSD. Утилита reinj, входящая в состав OpenBSD Wnet, осуществляет ту же атаку, что и aireplay, и использует при этом только одну карту Prism2 (правда последняя бета версия aireplay также имеет такую возможность). Так или иначе, неважно, что вы используете для генерации трафика, для взлома WEP ключа я рекомендую использовать WepLab или aircrack.

Инъекция зашифрованных пакетов

Большинство современных утилит для атаки на WEP сосредоточены на взломе WEP ключа, но существуют и другие уязвимости WEP, которые можно использовать для атаки. WEPWedgie [ссылка 5] – утилита, выпущенная в 2003 году Энтоном Рейджером (Anton Rager), позволяет атакующему создавать текстовые пакеты и отсылать их в беспроводную сеть без знания WEP ключа. Получатель принимает пакет, если отправитель использовал правильный ключ для шифрования пакета. WEPWedgie реализует это путем реконструкции ключевой последовательности (keystream), используемой для шифрования конкретного текста. Знание некоторого открытого текста и результата шифрования позволяет получить ключевую последовательность как результат операции XOR между соответствующими IV. А так как WEP позволяет повторно использовать одинаковые IV, WEPWedgie может использовать полученную ключевую последовательность для правильного шифрования и инъекции любого количества пакетов, содержание которых ограничено длиной этой последовательности.

Есть много способов получить шифротекст для известного открытого текста, но метод, используемый в WEPWedgie's prgasnarf, состоит в ожидании аутентификации по закрытому ключу. Стандарт 802.11 предусматривает два типа аутентификации, “открытая аутентификация системы” (open system authentication), которую можно назвать отсутствием аутентификации, и аутентификация по закрытому ключу (shared key authentication), механизм которой можно охарактеризовать как наиболее дезинформирующий из когда-либо придуманных. В случае аутентификации по закрытому ключу, точка доступа передает 128 байтов открытого текста, затем рабочая станция шифрует этот текст и передает шифротекст, используя тот же ключ и шифр, что используется WEP для шифрования последующего трафика. Верите или нет, но эта ужасающая схема до сих пор рекомендуется некоторыми производителями [ссылка 6] как усиление защиты, хотя на практике этот способ хуже, чем открытая аутентификация.

Как только ключевая последовательность была перехвачена (подсказка: spoofed deauthentication), WEPWedgie позволяет осуществить несколько интересных атак с инъекцией пакетов. Простейшая из них отправляет пинг-пакет на целевую машину. Другие атаки предоставляют метод сканирования портов целевых машин в беспроводной сети, используя произвольный обратный адрес. Если целевая сеть имеет соединение с интернет, вы можете использовать адрес подконтрольного вам хоста в удаленной сети и сохранить результаты сканирование на этом хосте. Вам останется только правильно интерпретировать результаты.

Рисунок 2. Wepwedgie отсылает пинг-пакеты.

Для использования WEPWedgie вам понадобится система, на которой установлена ОС Linux с ядром 2.4, карта Prism2 и драйвер Abaddon's AirJack [ссылка 7]. К сожалению, ядро 2.6, используемое на Auditor CD, не поддерживается AirJack, поэтому вам придется подготовить систему самостоятельно. Инструкции по работе с AirJack можно найти в кратком руководстве под названием “Wi-Fi Dog of War” [ссылка 8].

Дешифрование отдельного пакета

KoreK, человек, принесший нам улучшенные алгоритмы, используемые в aircrack и WepLab, несколько месяцев назад выложил на форумах NetStumbler утилиту, которая позволяет атакующему расшифровывать индивидуальные пакеты без знания WEP ключа. Эта утилита, имеющая название chopchop [ссылка 9], повторно отсылает зашифрованный пакет, за раз модифицируя один байт. Осуществляя слежение за точкой доступа, чтобы узнать, принимает ли она измененный пакет, chopchop способен определить исходное значение того конкретного байта и перейти к следующему. В течение нескольких секунд (и тысяч повторно отосланных пакетов) chopchop может расшифровать весь пакет. Не имеет значение, какой использовался ключ шифрования, используется ли отдельный ключ для каждого пользователя или ключ меняется каждый час или минуту – любой пакет может быть расшифрован.


Рисунок 3. chopchop расшифровывает отдельный пакет.

Чтобы посмотреть на chopchop в работе вы можете воспользоваться Auditor CD и одной картой Prism2. Запустите скрипт switch-to-wlanng, который входит в состав Auditor, вытащите и снова вставьте карту, и тогда драйвер linux-wlan-ng будет работать с поддержкой атаки инъекции модифицированных пакетов KoreK-a.

Следующее поколение

С момента появления chopchop задача получения правильной ключевой последовательности для инъекции зашифрованных пакетов стала тривиальной для всех шифруемых WEP сетей. Джошуа Райт (Joshua Wright) в настоящее время работает над новой версией WEPWedgie, которая будет включать в себя chopchop атаку и поддерживать новые версии драйверов. Новая версия aireplay Кристофа Девайна (Christophe Devine), в данный момент доступная в виде бета-версии, использует ту же методику для подделки всех ARP запросов. Различные люди работают над улучшением wireless драйверов, включая реализацию инъекции пакетов для более широкого спектра аппаратных средств (как сообщалось, уже есть поддержка Prism54) и проектированием абстрактного уровня для инъекции пакетов.

Заключение

Некоторые производители до сих пор предлагают решения, имеющие все известные недостатки безопасности беспроводных сетей. Даже спустя два месяца после публикации первой части статьи, я столкнулся с новым устройством, имеющим функции Wi-Fi VOIP-телефонии и беспроводной точки доступа, предлагаемым интернет провайдером, не предоставляющим никаких других возможностей шифрования, кроме WEP. Пока такое будет продолжаться, сообщество информационной безопасности будет улучшать методы атак, которые сделают WEP даже хуже, чем бесполезным.

Большинство методов, используемых в большинстве современных утилит для атаки на WEP, в теории были описаны четыре или даже больше года назад. Возможно глядя на историю WEP, люди усвоят урок, как теоретические уязвимости становятся реальными. Пока этого не произошло, вы можете с помощью утилит для тестирования на проникновение оценить слабость защиты вашей сети и возможно даже убедить кого-то в необходимости перемен.

Утилиты и ссылки

[1] Auditor Security Collection: http://remote-exploit.org/?page=auditor
[2] Ethereal: http://www.ethereal.com/
[3] aircrack: http://www.cr0.net:8040/code/network/aircrack/
[4] WepLab: http://weplab.sourceforge.net/
[5] WEPWedgie: http://sourceforge.net/projects/wepwedgie/
[6] Linksys recommends shared key authentication: http://www.linksys.com/splash/wirelessnotes.asp
[7] AirJack: http://sourceforge.net/projects/airjack/
[8] Wi-Fi Dog of War Mini How-To: http://www.geekspeed.net/~beetle/download/wifi_dog.html
[9] chopchop: http://www.netstumbler.org/showthread.php?t=12489
или введите имя

CAPTCHA