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

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

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

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

Введение

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

Действительно ли плох WEP?

В настоящее время многие говорят о том, что WEP не так уж плох. Эти доводы сводятся к тому, что если вы используете современное оборудование, которое отфильтровывает слабые векторы инициализации (Initial Vectors) и часто (или хотя бы время от времени) меняете ваши ключи, никто никогда не взломает ваш WEP. В будущем, возможно, появятся новые эффективные методы атаки на WEP, которые все изменят, но на данный момент WEP хорошо подходит для всего, кроме критически важных сетей.

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

Давайте рассмотрим некоторые из этих утилит, а затем в подробностях изучим, почему реализованные в них методы атак работают.

Как все начиналось

Начиная с лета 2001, атака на WEP стала тривиальным, но занимающим много времени процессом. Несколько утилит, наиболее известной из которых является AirSnort, реализующих атаку Fluhrer-Mantin-Shamir (FMS) приобрели известность в сообществе специалистов безопасности, которое на тот момент знало о проблемах WEP, но не имело практических реализаций атак для испытаний на проникновение. Эти утилиты просты в использовании, но для успешной атаки на WEP им требуется перехватить очень большое количество пакетов. На сайте AirSnort это количество оценивается примерно в 5-10 миллионов, но фактическое число пакетов для каждого конкретного случая может быть и выше.

Первый недостаток этого старого метода заключается в том, что нужны только зашифрованные пакеты. Так как точка беспроводного доступа передает несколько незашифрованных пакетов в секунду, можно очень легко быть введенным в заблуждение относительно того, что вы имеет больше полезных пакетов, чем есть на самом деле. Если для перехвата пакетов вы используете Kismet, он будет показывать вам количество “Crypted” пакетов из общего количества перехваченных пакетов, как это показано ниже:


Рисунок 1. Kismet в работе.

Второе обстоятельство, работающее против вас, состоит в том, что только “interesting” или “weak” векторы инициализации (IVs) уязвимы для атаки. Kismet также сообщает вам, какое их количество было перехвачено, хотя методы подсчета могут отличаться от других подобных утилит. Ответом производителей беспроводных точек доступа на FMS атаку было отфильтровывание большинства слабых IVs, которые передают их точки доступа и wireless карты. Если в целевой сети используется относительно новое оборудование, для успешной атаки с использованием этих устаревших утилит, вам нужно будет перехватить не меньше 10 миллионов зашифрованных пакетов.

В начале 2002 года h1kari выпустил утилиту, названную dwepcrack (входит в пакет bsd-airtools), которая улучшила существующую реализацию FMS атаки. Но, несмотря на то, что в dwepcrack была проделана хорошая работа по улучшению практической реализации статистического криптоанализа WEP, суть алгоритма атаки осталась прежней.

Утилита, которая изменила все

8 августа 2004, хакер, называющий себя KoreK, опубликовал на форумах NetStumbler новый код статистического криптоанализа WEP (впоследствии ставший утилитой под названием chopper). На данный момент chopper еще функционален, но уже существуют более быстрые реализации атаки в утилитах aircrack и WepLab. Однако именно утилита KoreK-a все изменила. Теперь для атаки на ключ WEP не нужны миллионы пакетов и не важно число “weak” и “interesting” векторов инициализации. Критический компонент новой атаки – общее количество перехваченных уникальных IVs, и ключ может быть получен, используя несколько сотен тысяч, а не миллионов, пакетов.

Aircrack

Первой утилитой, которую мы рассмотрим, будет aircrack, написанная Кристофом Девайном (Christophe Devine). Осуществляя атаку KoreK-a также хорошо, как и улучшенную атаку FMS, aircrack имеет самые быстрые и эффективные показатели статистической атаки. Чтобы посмотреть aircrack в работе, просто перехватите как можно больше пакетов из зашифрованной WEP беспроводной сети, сохраните их как pcap файл и запустите aircrack из командной строки.


Рисунок 2. Успешная атака aircrack.

Какое количество пакетов требуется?

Число пакетов, необходимое для успешной атаки сильно варьируется. Как правило, для атаки на 64-битный ключ нужно не менее 200,000 пакетов и не менее 500,000 для 128-битного ключа, причем именно зашифрованных пакетов с уникальным вектором инициализации. aircrack поставляется с удобной утилитой для перехвата пакетов – airodump, которая сохраняет необходимое число уникальных IVs (метод подсчета несовершенен, но в скором времени будет исправлен) и может работать с файлами очень большого размера. Лично мне кажется, что Kismet более прост в использовании, примерное количество уникальных IVs в котором можно оценивать по количеству “Crypted” пакетов. Количество зашифрованных пакетов с уникальными векторами инициализации обычно составляет более 95% от общего количества зашифрованных пакетов.

Сколько времени это займет?

Часто aircrack определяет WEP ключ в течение нескольких секунд, но это время может сильно изменяться. Продолжительность работы утилиты зависит от уникальности IVs, удачи и установленного значения “fudge factor”, настройки, указывающей aircrack алгоритм генерации ключей. Чем выше это коэффициент, тем большее количество ключей будет сгенерировано, что увеличит время атаки и вероятность, что она будет успешной. По умолчанию fudge factor имеет значение 2, но может быть изменен на любое положительное целое число. Значение по умолчанию может быть хорошим стартом, но если с первого раза ключ не был определен, увеличение этого коэффициента часто приносит результат. Я сталкивался с данными, которые могли быть расшифрованы с fudge factor равным 1, несколько раз с данными, расшифровываемыми при значение коэффициента 3, 4 или выше и один раз с данными, ключ для расшифровки которых можно было подобрать с fudge factor равным 31 или выше.

Чем выше fudge factor, тем выше вероятность успешной атаки. Также это приведет к увеличению времени работы, если только атака успешно не завершится в самом начале. Следующий график показывает зависимость времени выполнения (не считая загрузку и обработку файла) от fudge factor-a для утилиты aircrack. Голубыми точками обозначено время, необходимое для успешной атаки, красными – время потраченное на неудавшеюся попытку.


Рисунок 3. Продолжительность работы aircrack.

Если при значении fudge factor по умолчанию (два) не удается определить ключ, я обычно удваиваю значение этого коэффициента. Прерывая любую атаку, занимающую больше пяти или десяти минут, мне удавалось быстро подбирать успешное значение fudge factor-a.

Одна из особенностей aircrack состоит в том, что эта утилита по умолчанию работает и с 64 и со 128-битными WEP ключами. Если вам известен размер ключа в целевой сети, вы можете ускорить процесс атаки, указав его в командной строке при запуске aircrack.

WepLab

Не такой удачный в моих тестах, WepLab, написанный Хосе Игнасио Санчесом (Jose Ignacio Sanchez), предоставляет альтернативную реализацию KoreK атаки, которая может быть почти такой же эффективной, как и aircrack. Подобно fudge factor в aircrack, WepLab позволяет устанавливать вероятность успешной атаки с помощью опции командной строки –perc. Это значение по умолчанию равно 50%, что не всегда приводит к успешному результату, поэтому часто требуется увеличение этого параметра. В дополнение к хорошим статистическим атакам, WepLab может производить полный перебор возможных значений или перебор по словарю, что может быть достаточно эффективно. Благодаря такой комбинация, WepLab является очень полезной утилитой.

Сравнение утилит

WepLab и aircrack конечно серьезные утилиты, но лучшие ли они? Чтобы узнать это, я произвел ряд тестов, сравнивающих возможности различных утилит статистического криптоанализа WEP. Для тестирования я сконфигурировал точку беспроводного доступа со случайным 128-битным ключом, сгенерировал большой объем трафика и собрал примерно 25 миллионов зашифрованных пакетов. Собранные данные я разбил на подмножества различных длин и попробовал взломать каждое подмножество каждой из тестируемых утилит, замеряя продолжительность каждой успешной атаки (включая время загрузки файла). Тестирование продолжалось более десяти часов. Результаты меня мало удивили.

Пакеты данных Слабые
IVs
Уникальные
IVs
Время взлома 128-битного ключа в секундах
aircrack aircrack (4) AirSnort WepLab WepLab (95) WEPCrack dwepcrack
23457438 8560 16775533 Неудача 245 92 Неудача 244 Неудача Ошибка
21016149 1807 16775167 Неудача 249 41 Неудача 247 Неудача Неудача
19584364 9340 16275925 Неудача 230 114 Неудача 229 Неудача Неудача
15690079 8694 12860342 Неудача 184 90 Неудача 179 Неудача Ошибка
15628308 5505 12361369 Неудача 176 70 Неудача 174 Неудача Неудача
11743639 8473 11743639 Неудача 154 69 Неудача 153 Неудача Ошибка
11739339 3037 11693841 Неудача 150 Неудача Неудача 151 Неудача Неудача
7829104 1001 5031233 Неудача 74 Неудача Неудача 77 Неудача Ошибка
7799213 5225 7779299 Неудача 87 37 Неудача 101 Неудача Неудача
4175159 1554 4069824 52 51 Неудача Неудача 54 Неудача Неудача
3914568 767 3914568 Неудача Неудача Неудача Неудача Неудача Неудача Ошибка
3914553 3958 3914553 48 49 Неудача Неудача 56 Неудача Ошибка
3884657 1490 3864743 48 46 Неудача Неудача 52 Неудача Неудача
978652 986 978652 Неудача Неудача Неудача Неудача 11 Неудача Ошибка
978633 371 978633 Неудача 12 Неудача Неудача 13 Неудача Ошибка
977219 264 974902 Неудача 9 Неудача Неудача 13 Неудача Неудача
684992 143 684992 8 8 Неудача Неудача 11 Неудача Ошибка
683605 238 681288 Неудача 18 Неудача Неудача 13 Неудача Неудача
587184 117 587184 Неудача 27 Неудача Неудача Прервано (слишкм долго) Неудача Ошибка
489293 103 489293 8 7 Неудача 5 5 Неудача Ошибка
489286 115 489286 15 16116 Неудача Неудача Прервано (слишкм долго) Неудача Ошибка
391465 78 391465 5 13 Неудача Неудача Прервано (слишкм долго) Неудача Ошибка
391433 78 391433 Неудача 6 Неудача Неудача 6 Неудача Ошибка
293596 65 293596 Неудача 5 Неудача Неудача Прервано (слишкм долго) Неудача Ошибка
293579 65 293579 Неудача Неудача Неудача Неудача Неудача Неудача Ошибка

Таблица 1. Время взлома 128 битного WEP ключа (в секундах).

Несмотря на то, что aircrack успешно отработал с большими наборами данных, мои ожидания об успешной атаке со значением fudge factor по умолчанию не оправдались. Фактически, при обработке примерно до четырех миллионов пакетов, атаки успешны с fudge factor по умолчанию, но после этого порога эффективность заметно снижается. Это проблема легко решается увеличением коэффициента. При значение fudge factor равным 4, атаки была успешны в большинстве случаев. В тех немногих ситуациях, когда коэффициент 4 не срабатывал, я находил успешное значение fudge factor в диапазоне от пяти до двадцати.

WepLab с опциями по умолчанию потерпел неудачу почти во всех опытах, но после установки –perc в 95% были получены результаты, конкурирующие с лучшими результатами aircrack. Для некоторых наборов данных более успешнее был WepLab, для других aircrack. В целом обе утилиты показали хорошие результаты с небольшими отличиями, хотя aircrack обогнала WepLab на небольших объемах данных.

Результаты AirSnort почти полностью совпали с моими ожиданиями – атака успешна в большинстве случаев с десятью или более миллионами пакетов, но при использовании меньших объемов данных определить ключ не удается. Во всех тестах AirSnort по скорости опережает aircrack и WepLab, но дополнительная минута или две редко имеют большое значение, поэтому утилиты на базе KoreK (WepLab и aircrack), которые гораздо менее требовательны к входным данным, в совокупности значительно опережают AirSnort.

Самые неожиданные результаты показали WEPCrack и dwepcrack. WEPCrack правильно определял одиннадцать из тринадцати байтов, но в конечном результате всегда присутствовали неправильные байты. Из-за недостатка в алгоритме проверки правильности ключа, WEPCrack каждый раз выдавал ложный положительный результат. dwepcrack, потерпевший неудачу во всех тестах, жаловался на “недостаток IVs”, выдавал необъяснимую ошибку “не найден корректный пакет в лог-файле” или, для больших объемов данных, “Файл слишком большой”. Так как все тесты проводились под Linux, возможно dwepcrack будет более успешно работать в родной BSD среде.

Не игнорируйте очевидное

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

Простейший перебор “в лоб” каждого возможного двоичного ключа непрактичен для 128-битных ключей, но в случае с 64-битным ключом такая атака может иметь смысл при наличии нескольких супер-компьютеров под рукой. WepLab и dwepcrack обеспечивают реализацию, вы – такты процессора.

WepLab и WepAttack поддерживают два способа перебора по словарю, один из которых основан на обычной технике MD5 хеширования, включающей в себя много разных способов превращения секретной фразы (passphrase) в бинарный WEP ключ, а в другом генерируются ключи, состоящие только из ASCII символов, используемые в некоторых устройствах. Знание аппаратных средств, используемых в целевой сети, может помочь определить, какой метод предпочтительнее для конкретного случая.

Так как обе утилиты могут использовать любой словарь из текстового файла или стандартного потока ввода, для генерации словаря можно использовать любые средства, например утилиту John The Ripper. Совмещенные со способностями John-a применять правила (различные преобразование регистра букв, добавление чисел и т.д.) эти утилиты удивительно часто определяют ключ. Хотя обе атаки по словарю во время тестирования были успешны, WepLab отработал быстрее, но WebAttack предоставил большое количество одновременных режимов атаки.

Если перебор по словарю не принес результата, имеет смысл попробовать оптимизированный перебор “в лоб”, основанный на особенностях секретной фразы устройств конкретного производителя. Для устройств, использующих ASCII строку, WepLab предоставляет атаку перебора только ASCII байтов, что в результате уменьшает пространство возможных ключей. Для более распространенных хешированных MD5 секретных фраз dwepcrack может использовать оптимизированную атаку перебором для 64-битных ключей. Этот метод, исследованный и впервые реализованный Тимом Ньюшемом (Tim Newsham), уменьшает потенциальное пространство ключей с 2^40 до 2^21 возможных ключей, что существенно уменьшает время атаки.

Коллекция полезных утилит

Так как в aircrack реализованы самые эффективные статистические атаки, эту утилиту можно назвать самой важной в коллекции. WepLab, предоставляющий несколько разных техник, в том числе превосходную реализацию KoreK атаки, также является важным элементом коллекции. При наличии большого количества пакетов, возможно, стоит попробовать AirSnort, но лидером в статистической атаке он не является. WepAttack – хорошее дополнения к атакам по словарю, а dwepcrack реализует самую эффективную методику лобового перебора. Другой важный момент – способы перехвата пакетов. Большинство утилит имеют встроенный механизм перехвата и сбора пакетов, но я предпочитаю использовать Kismet. Все перечисленные утилиты можно найти на Auditor Security Collection live Linux CD-ROM.

В завершение первой части

Глядя на успехи aircrack и WepLab, при количестве пакетов от 500,000 до 1,000,000, становится ясно, что появилось новое поколение атак на WEP. Усилия производителей по ограничению передачи “слабых” IVs не спасли ситуацию, а время, необходимое для сбора пакетов для успешной статистической атаки, уменьшилось на порядок. Если вы думали, что WEP надежен, подумайте еще раз.

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

Примечания

По той причине, что большинство утилит называют ключи 64 и 128-битными, в этой статье используется та же терминология. Но важно понимать, что секретная часть 64-битного ключа составляет 40 бит, а 128-битного – всего 104 бита.

Все тесты проводились на ноутбуке с процессором Pentium-M 1.6 Ггц, на котором установлена ОС Gentoo Linux (ядро 2.6.8.1). Причина выбора Linux состоит в наличии наибольшего количества утилит, работающих под этой ОС. Некоторые утилиты также доступны под OS X, Windows и/или различными версиями BSD. Кроме этого, существует несколько утилит для других платформ, не доступных под Linux. Но, однако, кроме текущей версии KisMAC, ни одна из них не реализуют KoreK атаку.

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

Информация об утилитах и ссылки

aircrack
  • версия: 2.1
  • пример использования: aircrack -n 128 packets.pcap
  • пример использования: aircrack -f 4 -n 128 packets.pcap
  • исходники: http://www.securitylab.ru/tools/47900.html
AirSnort
Auditor Security Collection
dwepcrack
  • версия: 0.4
  • пример использования: dwepcrack -s -w packets.pcap
  • пример использования: dwepcrack -b packets.pcap
  • исходники: http://www.e.kth.se/~pvz/wifi/
  • примечание: тестирование скомпилированной версии из Auditor Security Collection дало те же результаты
John the Ripper
Kismet
WepAttack
  • версия: 0.1.3
  • пример использования: john -w:words.txt -rules -stdout | wepattack -m n64 -f packets.pcap
  • исходники: http://wepattack.sourceforge.net/
WEPCrack
  • версия: 0.1.0
  • пример использования: pcap-getIV.pl -b 13 -f packets.pcap; WEPCrack.pl
  • исходники: http://wepcrack.sourceforge.net/
WepLab
  • версия: 0.1.3
  • пример использования: weplab -rpackets.pcap --key 128 testers.pcap
  • пример использования: john -w:words.txt -rules -stdout | weplab -y --key 64 --attacks 1 testers.pcap
  • исходники: http://weplab.sourceforge.net/

Антивирус для мозга!

Лечим цифровую неграмотность без побочных эффектов

Активируйте защиту — подпишитесь