Проникновение в беспроводную сеть WiFi
/* Вступление */
Участники Defcon 2002 провели небольшое исследование (вообще то это больше походило на спортивное соревнование) на предмет проникновения в беспроводные сети. Изучив более 500 точек доступа в округе, они выявили интересную статистику: только около 30% беспроводных сетей защищены протоколом WEP; в каждой пятой сетке значение ESSID было выставлено «по умолчанию»; а еще было выявлено, что 20% беспроводных сетей абсолютно никак не защищены от доступа извне. На следующем Defcon 2003 эта статистика вновь подтвердилась (исследовались беспроводные сети Лас-Вегаса и Лос-Анджелеса). Такое положение дел характерно не только для США, но и для Европы, в том числе и России. Эксперты в области безопасности беспроводных сетей сходятся во мнении, что только около десяти процентов беспроводных сетей защищены чем-то большим, чем протокол WEP и фильтрацией MAC-адресов.
/* Готовимся к атаке */
Интересная статистика, не правда ли? Получается, что, имея ноутбук, кое-какие программы и немного знаний, можно проникнуть в 90% сетей 802.11. А имея более глубокие знания по беспроводным сетям и обладая некоторыми хакерскими навыками (социальной инженерией, например), процент удачных проникновений стремится к 100. Хочу поделиться с тобой некоторой информацией по этому поводу.
Что нужно для WiFi-хакинга:
- ноутбук;
- WiFi-карта с набором микросхем Prism2 (в принципе, можно работать и с другими, например, Hermes, но лучше все же Prism, т.к. под такие карты пишется большинство необходимого нам софта) и с возможностью подключения внешней антенны;
- антенна, а лучше две: всенаправленная и узконаправленная;
- автомобиль.
Ну, это в идеале, но может пройти и такой вариант: ноутбук со встроенным модулем wifi, две ноги (еще один вариант – домашний комп + позаимствованная у друга карта + присоединенная к ней наспех сделанная своими руками направленная антенна, которую с балкона нацеливаешь на офис какой-нибудь находящийся неподалеку фирмы ; ). Не стоит также недооценивать возможности КПК, поэтому если у тебя есть наладонник с wifi-модулем (желательно iPac или Zaurus, работающие по никсами), то он может весьма пригодится.
Какую ось выбрать для этого дела? Лучше если не винду. На то есть несколько причин, но самая главная – это отсутствие нормального софта под нее. Под словом «нормального» я понимаю качественного и бесплатного. Больше всего нужных нам прог написано под линукс, но так же вполне можно найти неплохой софт под фряху. Знаю, многие сейчас могут мне возразить, утверждая, что под винду есть проги, бесплатные, которыми можно легко и непринужденно взламывать wifi-сети, имея в виду NetStumbler, Aircrack для взлома WEP. С их помощью можно взломать те самые 70% сетей, а никсы – это трата времени и т.п. и пр. Да, конечно, софтом по винду пользоваться легко и просто, но ты должен знать, что возможности того же NetStumblera весьма ограничены по сравнению, например, с Kismet под линукс, нормальный админ легко сможет защитить сеть от Нетстамблера. Для проникновения в хорошо защищенную сеть винда уж точно не годится.
/* Выбор цели */
О том, как отыскивать сети, уже написано много раз, поэтому не буду здесь все это повторять. Вардрайвишь по центру города в поисках беззащитной, находишь и взламываешь ее, и вот тебе доступен канал в инет или еще что-нибудь интересненькое. В случае чего быстро сваливаешь…
Но возможен и другой вариант: тебе нужно проникнуть в беспроводную сеть определенной организации. Ты не знаешь, насколько хорошо она защищена, с чего же начать? Первое, что необходимо предпринять - провести интернет-разведку. Нужно узнать как можно больше о том кто занимается вопросами ИТ в организации, как они этим занимаются, т.е. накопить как можно больше информации о своем противнике. Зачем это может пригодиться? Во-первых, можно нарыть кучу полезной для себя информации, касающейся используемых фирмой технологий защиты. Во-вторых, знание имен должностных лиц компании может пригодиться при использовании социнженерии.
Поищи так же информацию на вардрайверских сайтах об интересующей тебя сетке.
Далее следует провести осмотр местности. Нужно выявить наиболее удобное место для атаки. Бывает так, что сеть никак не защищена, но присоединится к ней можно только находясь в непосредственной близости от нее. В этом случае тебе понадобится мощная остронаправленная антенна. Можно также пойти на более экстремальные действия: под каким-нибудь предлогом проникнуть внутрь здания и совершить взлом «изнутри», но в этом случае нужно сделать все «по-тихому», т.к. возможно наличие системы IDS.
/* Изучаем трафик */
Рассмотрим несколько прог для обнаружения сетей и анализа их трафика. Существует два способа обнаружения беспроводных сетей: метод активного сканирования и метод пассивного сканирования. Активное сканирование представляет собой посылку пробного запроса. В фрейме-ответе содержится такая информация как ESSID, канал передачи данных, информация о включенном или выключенном протоколе WEP, уровень сигнала, скорость передачи данных. Именно так действуют NetStumbler и MiniStumbler. Проблема в том, что админ легко может настроить точку доступа так, что она не будет отвечать на подобные запросы, таким образом, она станет невидимой для NetStumbler’а. Кроме того, сигнатурные IDS выявляют сканирование Нетстамблером, так что ты можешь привлечь к себе внимание используя его. Еще один трюк, который может предпринять админ – это посылка поддельного фрейма-ответа с заведомо несуществующими данными на твой фрейм-запрос, чтобы ввести тебя в заблуждение. Это можно реализовать, например, с помощью проги File2Air написанной Джошуа Райтом (Joshua Wright). Еще один минус активного сканирования – это высокий расход заряда аккумулятора.
Пассивное сканирование использует режим мониторинга wifi-карты. Оно состоит в перехвате трафика проходящего по всем каналам. Т.е. это сниффинг. Лучшим инструментом для пассивного сканирования, по моему мнению, является Kismet, созданная Майком Киршоу (Mike Kershaw) . По сути, эта прога предназначена для анализа трафика wifi и создания систем IDS. Kismet поддерживает все карты, умеющие работать в режиме rfmon, ее можно поставить на Linux, в том числе на дистрибутивы для КПК, FreeBSD и OpenBSD, MacOSX (и даже на винду, с помощью Cygwin’а). Найти последнюю версию Kismet можно на http://www.kismetwireless.net . Прежде чем собирать Kismet настоятельно рекомендую тебе обзавестись (если, вдруг, у тебя его нет) Ethernal’ом, который пригодится для изучения дампов, сформированных Kismet. Если у тебя есть GPS-приемник, то тогда неплохо установить еще и GpsDrive, интегрирующий с Kismet c ним. Компиляция Kismet весьма проста и не должна вызвать каких-либо сложностей. Если будет что-то непонятно, то прочитай README, там все очень подробно расписано.
Для настройки Kismet под наши нужды открываем /usr/local/etc/kismet.conf. Здесь нужно сделать несколько вещей:
- отключить фильтрацию MAC-адресов;
- разрешить устанавливать соединения с IP 127.0.0.1;
- выставить maxclient равным 1;
- установить в значение source источник перехватываемых данных;
- настроить интервал между операциями записи;
- параметры noiselog и beaconlog выставь в значение false – сэкономишь место на диске;
- если необходимо, настрой GPS;
- не забудь наделить правами запуска Kismet пользователя, под которым ты обычно работаешь, если конечно, не собираешься работать под рутом.
Остальные настройки не так важны для нас.
Итак, какими полезными умениями обладает эта прога. Во-первых, она выводит информацию о том, что точка доступа имеет конфигурацию «по умолчанию», вылавливает пробные запросы «затерявшихся» хостов, а так же пробные запросы Нетстамблера, может на лету расшифровывать пакеты, если задать правильный WEP, а в случае обнаружения IP-адресов, определяет, какой протокол применяется для их распознания (ARP, TCP, UDP или DHCP). Во-вторых, она генерирует дампы в формате pcap, что позволяет просматривать их затем с помощью анализатора сетевых протоколов Ethernal.
Существует еще множество программ, умеющих обнаруживать беспроводные сети стандарта 802.11, среди них я бы выделил такие инструменты как Airfart, консольная тулза WifiScanner тоже, на мой взгляд, весьма неплоха. Они обе работают только на картах с набором микросхем Prism и нуждаются в дровах linux-wlan-ng.
/* Обходим барьеры */
Простейшая защита сети wifi от незаконного вторжения может осуществляться с помощью таких методов как: скрытие ESSID сети от посторонних глаз, фильтрация MAC-адресов и фильтрация протоколов. Давай посмотрим, что мы можем противопоставить этому.
Если сеть закрытая, то ее ESSID (Extended Service Set ID – служебный идентификатор сети) не фигурирует в циркулирующих в ней фреймах. Не зная ESSID сети, взломщик не может присоединиться к ней. На самом деле ESSID присутствует в запросах на повторную аутентификацию и повторное присоединение, а значит можно узнать ESSID, послав поддельный фрейм деаутентификации хосту от MAC-адреса точки доступа. Затем нужно перехватить фрейм посылаемый хостом, содержащий интересующий нас ESSID. Реализовать это легко можно с помощью утилиты essid_jack содержащейся в комплекте программ AirJack. В своей статье о DoS-атаках в сетях WiFi я уже писал об AirJack’е, поэтому не буду заострять здесь на нем внимания.
Возможен такой вариант событий, когда точка доступа одна и нет в настоящий момент взаимодействующих с ней хостов. В этом случае остается опробовать вариант ESSID характерный для настроек «по умолчанию» производителя данной точки доступа. Некоторые админы, закрыв сеть, даже не подумывают изменить их значения.
Фильтрация MAC-адресов вообще обходится проще простого. Нужно изучить трафик на предмет встречающихся MAC-адресов, и когда какой-нибудь хост отсоединится от сети, можно присоединится к ней, установив себе такой же MAC. Если ждать отсоединения хоста не хочется, то можно выкинуть этот хост из сети задосив его ; ) (но тогда появляется риск быть засеченным системой IDS).
Фильтрация протоколов применяется намного реже, чем фильтрация MAC-адресов и скрытие ESSID, так как это не всегда удобно для работы в сети и не во всех точках доступа можно нормально использовать ее. Если ты столкнулся с такой сетью, то могу тебе посоветовать испытать на предмет наличия уязвимостей разрешенные в сети протоколы. Обычно такими протоколами являются SSH и HTTPS. Если используются устаревшие версии протоколов, то наверняка в них есть дыры, которые можно проэксплуатировать. Кроме того, весьма полезной может оказаться техника атак «Man-in-the-Middle».
/* Уделаем WEP */
Про взлом протокола WEP написано уже столько, что создается ощущение, что это чуть ли не единственная и самая главная защита беспроводных сетей от вторжений, и что на этом ограничиваются средства безопасности сетей wifi. Что ж, судя по статистике это верно в каждом третьем случае.
Выделяют несколько видов атак на WEP:
- атака методом полного перебора – возможен подбор только 40-битного ключа (в WEP применяются 64-х и 128-ми 256-ти 512-битные ключи, но так как первые 24 бита занимает так называемый вектор инициализации (IV), передающийся в открытом виде, то можно говорить, что длина ключей составляет 40 и 104 и т.д. бита), но такая атака может занять довольно продолжительное время, а потому неэффективна;
- атака по словарю – может осуществляться против одного перехваченного пакета, она реализована в проге Wepattack; в отличие от атаки методом полного перебора, возможна расшифровка 104-битного ключа;
- атаки методом полного перебора с использованием оптимизирующих алгоритмов – могут сократить время полного перебора 40-битного ключа с нескольких недель до половины минуты, но это при удачном для хакера раскладе, а в целом эти атаки так же неэффективны (64-битное шифрование встречается очень редко);
- атака FMS – имеет очень интересный механизм, позволяющий при наличии 6-8 млн. пакетов определить значение WEP;
- оптимизированные атаки FMS – например, хакер H1kari сумел оптимизировать алгоритм FMS так, что количество необходимых пакетов сократилось до 500 тысяч;
- другие атаки – сюда можно включить различные вспомогательные атаки, например, внедрение трафика для ускорения процесса сбора необходимого количества пакетов.
В реальности количество необходимых для взлома WEP перехваченных фреймах может колебаться в весьма широких пределах, но обычно это 1,5-2 млн. пакетов.
На сегодняшний день проги, взламывающие WEP используют, в основном, так называемую атаку по методу Флуера-Мантина-Шамира или атаку FMS, разработанную в 2001 году Скоттом Флуером (Scott Fluhrer), Ициком Мантином (Itsik Mantin) и Ади Шамиром (Adi Shamir), плюс различные оптимизирующие эту атаку алгоритмы. Одной из лучших программ для взлома WEP является на сегодня Aircrack. Помимо атаки FMS, она использует также несколько новых видов атак, разработанных хакером KoreK. Для взлома WEP нужно скормить Aircrack’у файл с перехваченными пакетами в формате pcap.
В сетях с низким трафиком процесс сбора пакетов может весьма затянуться. В документации к Aircrack’у подробно описан способ решения этой проблемы с помощью дополнительной карты, посылающей уже перехваченные фреймы снова «в эфир», предварительно вставляя в них ARP-запросы (хитро задумано, не правда ли?), что позволит получить дополнительный трафик в виде ответов на них. На мой взгляд, это не совсем удобный вариант из-за того, что не у всех есть две карточки wifi. Альтернативой может послужить использование проги File2Air, умеющей посылать данные в режиме мониторинга.
В принципе, есть еще один способ узнать WEP: если сеть подключена к Интернету, то, проникнув через него на одну из машин, можно попытаться определить WEP-ключ сетевого интерфейса wifi. К примеру, в Linux-системе он хранится в файле /etc/pcmcia/wireless.opts.
/* Что дальше? */
А дальше обычно ничего. Защитный потенциал большинства беспроводных сетей на этом и заканчивается. Но бывает, что нет. Сеть может функционировать на базе стандарта 802.1x, может быть развернута виртуальная частная сеть (VPN). Здесь успех проникновения будет зависеть от множества различных факторов. Универсального алгоритма дальнейших действий попросту нет.
В системе аутентификации протокола 802.1x могут использоваться различные реализации протокола EAP: EAP-TLS, EAP-TTLS, EAP-PEAP, EAP-LEAP, EAP-MD5. На счет двух последних могу сказать, что они обладают уязвимостями. Существуют софтины leapcrack, Asleap-imp для атаки против EAP-LEAP. EAP-MD5 уязвим к атаке «Man-in-the-Middle». Атакующий может внедрить фальшивую точку доступа между хостом и RADIUS-сервером, перехватив весь передаваемый трафик, в том числе имя и пароль.
Техника проникновения в VPN развернутую на базе беспроводной сети аналогична той, что может применяться в проводных сетях. Большинство VPN туннелируют трафик с помощью протоколов PPTP (Point-to-Point Tunneling Protocol) или IPSec. Для PPTP существует сплойт deceit.c от Aleph One. Протестировать на безопасность IPSec поможет тулза Ike-scan.
/* Системы IDS */
На всем протяжении взлома ты должен не забывать о возможном наличии системы обнаружения вторжений, следящей за функционированием сети и выявляющей различные аномалии в ней, т.е. тебя. Чтобы проникнуть в сеть незаметно, тебе пригодятся некоторые знания о принципах функционирования этих систем. IDS может быть сигнатурной, на основе базы знаний и смешанного типа. Сигнатурные IDS включают в себя базу данных о различных событиях, характерных для определенных атак. Системы на основе базы знаний ведут статистику работы сети при нормальных условиях ее функционирования и сигнализируют о различных отклонениях. Какие же действия взломщика могут вызвать тревогу IDS?
Во-первых, это активное сканирование. Поэтому используй только пассивное сканирование. Во-вторых, посылка фреймов с подозрительным ESSID. К числу подозрительных обычно причисляются: пустые, широковещательные ESSID, внесенные в блэк-лист и т.д. (кстати, в этом листе обычно содержаться ESSID, применяемые различными хакерскими прогами, поэтому перед их применением иногда нужно слегка подправить исходники). В-третьих, неправильно подделанный MAC-адрес (дело в том, что MAC-адрес зависит от производителя и от конкретной модели беспроводного оборудования, а IDS очень не нравится, когда попадается оборудование «неизвестного» производителя). Посмотреть диапазоны адресов различного беспроводного оборудования можно в файлах conf/ap_manuf и conf/client_manuf в каталоге, содержащем Kismet.