Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #123, МАРТ 2009 г.

Вторая жизнь WEP. Немного о том, как можно запутать weplab и aircrack

D0znp (http://oxod.ru)




Ты админ в среднестатистическом офисе с беспроводной сетью. Куча разношерстных клиентов, старое оборудование, почти полное отсутствие финансирования. Ни о каких новых серверах для Radius и речи быть не может. Поддержка WPA есть не у всех клиентов, а, скорее всего, еще и не у всех точек доступа. Короче, хватит жаловаться – используешь ты старый и порванный со всех сторон WEP! Ну что будешь делать, товарищ? Ротацию ключей с частотой два дня или OpenVPN для всех клиентов? В дополнение ко всем ухищрениям на верхних уровнях стека я хочу предложить еще один метод. Идея проста до безобразия – внедрение в эфир специального мусорного трафика с целью запутать хакера.

Как работают программы, которыми с большой вероятностью нас попытаются сломать? Самые популярные WEP-кракеры – это weplab и aircrack. Первая утилита – классический кракер со снифером, вторая же – полноценный комплекс для аудита с кучей алгоритмов, активными атаками и мощным функционалом. Обе программы работают под большинством UNIX-систем. Более подробное описание есть на сайтах производителей. Для дистрибутива Debian, как и для большинства других дистрибутивов, обе программы есть в репозиториях. Кроме того, aircrack имеет сборку под Windows, а weplab можно запустить и под Cygwin. Вообразим себя на месте взломщика, который просканил нашу сеть. Что мы будем делать сначала? Правильно, собирать дампы. Бороться с избыточной зоной покрытия, конечно, надо, но не очень эффективно в силу физики этого бренного мира. Рано или поздно взломщик получит дамп. Заранее хакер о нашей сети ничего не знает – ни длины ключа, ни даже то, что мы используем лохматый WEP. Рассмотрим поведение хакера при использовании каждой из этих прог.

Ломаем с помощью weplab

По умолчанию программа пытается сломать 64-битный WEP-ключ. Работа со 128-битными ключами выставляется флагом –k 128. Очевидно, что для взлома 64-битного ключа надо гораздо меньше зашифрованных пакетов, чем для 128-битного. Резонно сначала попробовать сломать в дампе 64-битный ключ: если он найден, вряд ли хакер будет пробовать искать еще какие-то ключи. Это мы запомним на будущее. Программа знает три алгоритма взлома: прямой брутфорс (перебор ключей), атака по словарю и эвристический анализ. Если не указывать мак-адрес точки доступа, программа будет пытаться взломать первую попавшуюся последовательность. Команды выглядят следующим образом:

weplab –b dump.pcap //Атака перебором
cat slovar.dict | weplab –y dump.pcap //Атака по словарю
weplab –r dump.pcap //Эвристический метод

Единственный перспективный метод – последний. Остальное долго и бесполезно. Скорее всего, просто осталось аппендиксом со времен, когда работы по статистическому анализу WEP еще не были опубликованы. Теперь второй момент – как поведет себя программа, если в одном файле встретятся пакеты, зашифрованные разными ключами? Какой ключ подберется быстрее? Тот, которого найдено больше? А не будут ли те, «неверные» пакеты запутывать алгоритм кракера? Много вопросов? Попытаемся разобраться на деле.

Запутываем weplab

После ряда экспериментов, проб и ошибок, а также недолгого изучения исходников, которое я просто не в состоянии уже вспомнить, было выявлено следующее: программа очень плохо переносит коктейль из трафика, зашифрованного разными ключами или типами шифрования. Алгоритму для успешного взлома надо определенное количество идущих подряд пакетов WEP. Получается, нам необходимо прямо противоположное – вещать через определенные интервалы времени ложный WEP- или WPA-трафик! В моменты простоя сети, когда подключенный клиентов нет, можно посильнее разбрасывать фейковый трафик в эфир. С содержанием можно не напрягаться – взломщик не станет анализировать каждый пакет.

Подытожив все сказанное, заключаем: чтобы обмануть статистические алгоритмы weplab, надо прерывать прямую последовательность «правильных» пакетов ложными. Максимальная длина прямой последовательности «правильных» пакетов должна быть меньше минимального количества пакетов, необходимого для взлома ключа данной длины. Эта величина равна примерно 50.000 пакетов для 64-битного ключа и 200.000 пакетов – для 128-битного ключа, хотя цифры очень приблизительные. Программа работает с высокой однозначностью: при повторных запусках результат не меняется (во всяком случае, я такого не наблюдал). Приготовив коктейль из настоящих 64-битных WEP-пакетов и ложных 128-битных в пропорции 10/1 (20.000 настоящих, 2.000 ложных и так 20 раз), я натравливал на полученный дамп weplab с различным порогом чувствительности (опция --perc).

На 80% я остановился в связи с большим временем работы программы (больше суток для 100% на целероне 1.4), но так ни разу не увидел взломанный ключ! Таким образом, у меня был дамп, состоящий из 400.000 пакетов 64-битного WEP, который не взламывался кракером weplab. Если бы я вырезал две прямые последовательности «правильного» трафика руками, ключ бы был найден за 5 минут. Вторым и завершающим экспериментом стал коктейль из 20 последовательностей 50.000 настоящих 128-битных WEP и 5.000 ложных WPA. Подобное тоже оказалось не под силу wepcrack. Хотя для взлома было бы достаточно 200.000 из этого миллиона, если бы они располагались друг за другом. Результат получен довольно многообещающий!

Ломаем с помощью aircrack

Эта продвинутая программа имеет в своем арсенале массу утилит. Я рассмотрю пока только сам aircrack-ng. Программа умеет ломать и WPA, и WEP. При запуске без дополнительных параметров она показывает интерфейс с отображением всех MAC-адресов точек доступа в дампе с их алгоритмами шифрования. Стоит ли говорить, что этот режим – самый популярный среди молодежи? Теперь немного об опциях. Здесь просто море различных настроек wep-кракера. Если хочешь познакомиться со всеми современными методами взлома WEP, просто прочитай мануал. Вкратце: программа знает две базовые атаки – PTW (Pyshkin, Tews, Weinmann) и FMS (Fluhrer, Mantin, Shamir). Обе основаны на статистическом анализе. Вот примеры использования:

aircrack-ng dump.pcap //Интерактивный режим
aircrack-ng –b 00:00:00:00:00:00 //Подбор ключа к заданной точки доступа
aircrack-ng –y //Атака по словарю

Запутываем aircrack-ng

Мое внимание сразу привлек метод автоматического определения типа шифрования. Очень скоро была найдена обманка: если последние записанные пакеты зашифрованы WPA, aircrack определяет тип шифрования как WPA, независимо от того, сколько «правильных» WEP-пакетов (или каких-либо других) было вначале. Я создал файл с 1.000.000 настоящих 128-битных WEP-пакетов и хвостом из 1.000 WPA. Скормив это aircrack в интерактивном режиме, я с радостью обнаружил, что моя точка использует WPA. Естественно, через меню программы такой дамп взломать было невозможно. При этом, если руками задать тип шифрования (aircrack-ng –a1 dump.pcap), то взлом будет успешным. Нельзя наверняка угадать, когда взломщик закончит снимать дамп, но такая обманка может использоваться в комплексе с другими. Всегда будет существовать вероятность, что хакеру не повезет – а это уже немало. Второй коктейль, который я приготовил, состоял из 450.000 пакетов 128-битного WEP, зашифрованных настоящим ключом, и 200.000 пакетов, зашифрованных ложным 128-битным WEP-ключом. Aircrack сразу нашел ложный ключ (ему просто хватило 200.000 ложных пакетов в хвосте).

Для пущей уверенности я попробовал явно указать программе настоящий ключ и попытаться взломать дамп (aircrack-ng –d XX:XX:XX:XX:XX:XX: XX:XX:XX:XX:XX:XX:XX). Результат был плачевным – 450.000 пакетов не хватало, чтобы найти в них настоящий ключ! Повторив эту команду 100 раз, я выявил следующее: aircrack находит настоящий ключ в комбинированном дампе (если его указать явно; то есть, если он знает заранее) в 9 случаях из 100. Результат свидетельствовал только об одном – продвинутый статистический анализ aircrack’а попался на обманку. Да, aircrack-ng очень чувствителен к концу дампа. Таким образом, ложный ключ, внедренный в легитимный эфир, станет хорошим семафором для IDS. Можно заворачивать взломщиков (если пытается подключиться с ложным ключом – значит, он его сломал и никакими другими методами получить не мог, а поэтому закон уже нарушил) в специальную подсеть, изучать, триангулировать и прочее-прочее-прочее.

Использование на практике

Ну что, товарищ админ, будем делать с нашими наблюдениями? Конечно, попытаемся использовать в своей старой беспроводной сетке! Можно, например, заюзать старый 486-й компьютер с беспроводной картой для разбрасывания ложного трафика. Вариант покрасивее и подороже – беспроводная USB-сетевуха. Ее можно подключить к USB-порту точки доступа (есть практически во всех современных WiFi-роутерах) и немного поковыряться со сборкой дров под busybox. В итоге получим второй беспроводной интерфейс. Теперь подумаем, откуда взять этот самый ложный трафик. К примеру, реально нагенерить дампов с пакетами и, как на магнитофоне, прокручивать циклом в эфире. Файлы получатся объемные, так что надо будет еще купить флешку и подключить к нашей точке. Как проигрывать дампы в эфир – ты уже, наверное, догадался: все тем же aircrack-ng. В его состав входит очень полезная для нас утилита aireplay, которую взломщики применяют для атак типа деаутентификации (чтобы заставить точку выдавать больше пакетов).

Запускаем наше ложное вещание из файла опцией «–r fakedump.pcap» и едем дальше. Полезным будет регулировать зону вещания нашего ложного трафика. Это делается опцией txpower команде iwconfig. Мощность задается в децибелах (iwconfig eth1 txpower 15) или в милливольтах (iwconfig eth1 txpower 30mW). Кроме того, рекомендую изучить и поиграться с опциями sens, rts, frag, и power – поможет тебе создать оптимальную схему вещания. На базе этого же оборудования можно развернуть IDS и специальную подсеть с повышенной чувствительностью ведения логов. Приложив минимум усилий, мы получим высококачественный honeypot. Только не следует забывать о наших клиентах. После всех настроек и твиков надо обязательно понаблюдать какое-то время за работоспособностью легитимных пользователей. При возникших проблемах стоит посидеть с tcpdump’ом и понять, на каком этапе и как именно пользователю помешал ложный трафик. Не забывай про типы пакетов – взломщик с большой вероятностью не будет изучать каждый пакет, а кракер съест все, что ему предложат.

Ломай, чтобы защитить

На понятном языке, без низкоуровневых терминов фрейм, IV и прочего, я попытался рассказать о слабостях современных статистических методов взлома WEP. Впрочем, все мы знаем, что за 128-битным ключом скрывается 104 реальных бита, а за 64-битным – 40 реальных и так далее. Статья не претендует на инструкцию или даже методику по защите. Это всего-навсего рассказ о моих наблюдениях и экспериментах.

Лишний раз напомню – не надо принимать «на веру» совершенство отлаженных и проверенных всем миром программ. Во всех, даже самых стойких продуктах, можно найти недочеты. Хороший взломщик не должен дрейфить, когда безотказный прежде инструмент дает сбой. Ведь это просто лишний повод изучить цель более глубоко и не попасться в хитроумно расставленные капканы. Здесь рассмотрены только пассивные атаки, а в случае, если хакер будет использовать внедрение фреймов или другие методы, схема должна претерпеть некоторые изменения. Если будут вопросы или идеи – всегда готов обсудить их в моем блоге http://oxod.ru.

WWW

  • http://aircrack-ng.org – страница набора утилит aircrack.
  • http://weplab.sourceforge.net – сайт программы weplab.
  • http://oxod.ru – мой блог. Жду комментариев, отвечу на вопросы.
  • http://www.cdc.informatik.tu-darmstadt.de/aircrack-ptw – описание атаки PTW.
  • http://aircrack-ng.org/doku.php?id=links&DokuWiki=d63d97ef16cadcdb9e1281e83d4e5875#technique_papers – сборник ссылок на все существующие атаки WEP.

INFO

Использование этой идеи в коммерческих продуктах запрещено. Если есть конкретные предложения – свяжись со мной.

WARNING

Внимание! Информация представлена исключительно с целью ознакомления! Ни автор, ни редакция за твои действия ответственности не несут!

Содержание