MITM атаки на клиентов Wi-Fi сетей при помощи подставной точки доступа.
При конфигурировании беспроводного адаптера на автоматическое подключение к известным беспроводным сетям пользователь подвергает себя риску стать жертвой атаки «человек посередине» (MITM). Злоумышленник может развернуть точную копию доверенной для мобильного устройства Wi-Fi сети. В результате клиентское устройство автоматически подсоединится к такой точке доступа и будет работать через нее, а атакующий получит возможность перехватывать «весь трафик» своей жертвы. Так ли это на самом деле я попытаюсь разобраться в рамках данной статьи. Для начала, немного теории.
Теория
Перед тем как подключиться к точке доступа, станция должна обнаружить доступные сети, для этого она сканирует радиоэфир в активном и пассивном режиме.
При пассивном сканировании станция прослушивает радиоэфир на наличие фреймов Beacon передаваемых точкой доступа, в которых содержится SSID.
В ходе активного сканирования станция по всем каналам рассылает широковещательные фреймы Probe-Request, ожидая отклик точки доступа, которую она ищет для подключения. Во фреймах Probe-Request может указываться или не указываться SSID сети, которую ищет станция. Отвечая на Probe-Request, точка доступа шлет фреймы Probe Response, содержащие аналогичную информацию, что и пакеты Beacon.
Полагаясь на полученные данные, такие как имя сети, отношения сигнал/шум, поддерживаемые стандарты 802.11, и собственные настройки станция должна принять решение о соединении с одной из доступных сетей и точек доступа.
В чем заключается MITM атака
Задача злоумышленника заключается в следующем: узнать о сконфигурированных профилях беспроводных сетей клиента, создать точный «клон» такой сети и подсунуть ее клиенту в надежде на то, что тот благополучно к ней подключится. Создать клон защищенной сети (WPA-WPA2-PSK) возможно, но достаточно проблематично, т.к. по мимо имени сети нужно знать ключ безопасности сети, а его можно получить, только если удачно сложатся несколько условий: атакующий должен перехватить «рукопожатие» (handshake) клиента с доверенной сетью, а затем методом brute force атаки подобрать пароль к WPA сети (если тот не достаточно сложен, а атакующий обладает необходимыми ресурсами для его подбора). Поэтому основной упор делается на открытые сети, в данном случае необходимо: узнать есть ли у клиента сконфигурированные профили таких сетей и как осуществляется подключение к таким сетям. После получения данной информации делается вывод о целесообразности проведения данной атаки.
Есть куда более простые способы «завладеть трафиком» клиента, создав открытую точку доступа с привлекательным SSID в месте, где люди, скорее всего, будут искать открытые сети (кафе, рестораны, вокзалы и т.п. людные места «ожидания»), но их я рассматривать не буду, т.к. вопросов быть не должно, все максимально ясно.
Практика
Моя лаборатория будет состоять из следующих устройств:
- 1. Роутер.
- 2. Подставная точка доступа (Raspberry Pi с установленными pwnpi и fruitywifi).
- 3. Ноутбук атакующего с установленным Kali Linux.
Клиентские устройсва:
- 1. Ноутбук с Windows 7
- 2. Планшет с ОС Android 4.4.4
- 3. Iphone 2G с прошивкой 3.1.3
- 4. Windows XP
- 5. …..
Устаревшие ОС в списке из-за того, что ими все еще пользуется большое количество людей.
Условия для всех клиентских устройств одинаковые. Каждое из устройств настроено на автоматическое подключение к двум сетям: home c типом безопасности WPA2-PSK и bruteforcer без какой либо защиты (OPEN).


Задача злоумышленника заставить клиента подключиться к своей точке доступа и тем самым получить контроль над трафиком своей «жертвы».
Проверяем, насколько защищены клиенты Wi-Fi сетей в Windows 7
Начнем с того, что в управлении беспроводными сетями у нас нет ни одной сконфигурированной беспроводной сети.

Здесь мы можем создать подключение вручную, нажав в вертикальном меню на кнопку «Добавить».

Обратите внимание на пункт меню, который отмечен стрелкой. Эта галочка включает передачу имени сети (SSID) во время активного сканирование сети (см. теорию выше). Почему Windows не рекомендует включать передачу SSID рассмотрим ниже, когда я буду описывать действия злоумышленника. А сейчас просто жмем «далее».

Подключение добавлено, мы можем закрыть мастер подключения либо изменить параметры подключения.

Здесь можно видеть, что по умолчанию отмечен один пункт – «Подключаться автоматически, если сеть в радиусе действия». Как активация данного параметра влияет на безопасность клиента, мы также рассмотрим далее. Жмем «ОК» , «Закрыть» и переходим к созданию профиля открытой сети.
Действия по созданию подключения к открытой сети аналогичны предыдущим, я предлагаю обратить внимание на следующий момент.

Сеть не защищена, поэтому мастер установки по умолчанию не настраивает запуск подключения к сети автоматически. Пользователь конечно вправе изменить параметры, установленные по умолчанию, чем ему это грозит, рассмотрим далее. А сейчас жмем «Далее» и смотрим свойства подключения.

Как видим данное подключение максимально ограничено, а установить галочку в пункте «подключаться к более подходящей сети, если она есть» вообще не возможно. Жмем «ОК» и «Закрыть».
Профили подключения к беспроводным сетям созданы.
Но это не единственный способ создания подключения, есть более простой, без мастера настройки, к которому пользователи прибегают чаще всего – через иконку подключения к сети в правом нижнем углу панели задач.


Здесь, как можно видеть, присутствует пункт, позволяющий запомнить сеть и подключаться к ней автоматически, если при подключении к защищенной сети это удобство оправдано, то в случае открытой сети может выйти “боком”», о чем опять же поговорим далее. Большинство людей ради удобства (неосведомленности, беспечности) отмечают этот пункт и подвергают себя риску.
Все подготовительные работы завершены, переходим к возможным атакам злоумышленника.
Действия злоумышленника
Отключаем точку доступа и приступаем к сканированию радиоэфира в Kali Linux.
root@kali:~# ifconfig –a
root@kali:~# airmon-ng start wlan1
root@kali:~# airodump-ng mon0
root@kali:~# airodump-ng mon0
![]()
Как видно, никакой информации ни о сети home ни о bruteforcer. А все потому, что в настройках подключения мы последовали рекомендациям и не включили возможность подключаться к сети, даже если она не ведет вещание своего имени (активное сканирование, см. теорию). Активация данной возможности может быть «полезна» только в том случае если вы подключаетесь к скрытой сети. В некоторых руководствах по конфигурированию точки доступа Wi-Fi можно встретить рекомендации по включению режима сокрытия вещания SSID, такая мера якобы усложняет обнаружение точки доступа злоумышленником и уменьшает шансы взлома беспроводной сети. На самом деле от активации сокрытия SSID больше вреда, чем пользы. Сокрытие SSID защитит только от факта обнаружения сети обычными пользователями, которые сканирую эфир в поисках открытых сетей. Такие пользователи, кроме того как узнают имя сети никакого вреда нанести не смогут т.к. у них, как правило, нет этого в планах и что более важно, у них нет необходимых знаний для осуществления взлома. Настоящего взломщика сокрытие SSID не остановит, т.к. скрытая сеть не является большой преградой.
Сконфигурировав свою сеть как скрытую, администратор принудительно заставляет своих клиентов настраивать свои беспроводные устройства так, чтобы те передавали SSID во время активного сканирования.
Давайте рассмотрим, что произойдет при таких настройках, активировав пункт в свойствах подключения — «подключаться к сети даже тогда, когда сеть не ведет вещание своего SSID».

Сетевая карта клиента начинает активно искать скрытую сеть, тем самым выдавая SSID. Давайте рассмотрим, что может предпринять злоумышленник, попади к нему такая информация.
Запускаем подставную точку доступа с SSID home и открытым доступом и смотрим, что произойдет.

Подключения автоматически не произошло, не смотря на то что, в свойствах подключения к сети home. указано, подключаться автоматически (у сетей одинаковое только имя сети, а сами сети разные).
Пробуем подключиться к сети принудительно (некоторые пользователи могут не обратить внимание на предупреждение отсутствия защиты у сети).

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

Подведем промежуточный итог, зная имя сконфигурированной в Windows 7 сети (WPA-WPA2), нападающий, размещая поддельную точку доступа с аналогичным именем, может рассчитывать только на невнимательность клиента сети, который в ручную подключится к сети злоумышленника.
Перейдем к открытым сетям, занимаясь сетью home, я не видел, чтобы беспроводная карта «болтала» об открытой сети bruteforcer, что говорит о правильных рекомендациях и настройках по умолчанию мастера добавления сети в Windows 7. Давайте попробуем «ослабить гайки» и включим автоматическое подключение к сети, если та в области видимости.

Теперь, если злоумышленник создаст сеть с аналогичным именем, клиент беспрепятственно подключится к ней.
Но как злоумышленник узнает о сконфигурированной у клиента открытой сети, если клиент с ней не взаимодействует? Как видно из скриншота выше, карта клиента «не болтает» о таких сетях (в нашем случае о сети bruteforcer).
На помощь злоумышленнику опять может прийти неправильная конфигурация открытых сетей у клиента, заставим карту «подключаться к сети даже тогда, когда сеть не ведет вещание своего SSID» как из примера выше и посмотрим, что произойдет.


Как видно, клиентская карта начала «болтать», теперь задача злоумышленника — создать подставную точку с таким же именем и клиент автоматически к ней подключится. Существуют способы автоматизации данного процесса (проект karma).
В заключении, хочется отдать должное Windows 7 и ее мастеру конфигурирования беспроводных сетей, если не вмешиваться в его работу, по умолчанию все работает, так как надо испортить все может только человеческий фактор.
Проверяем, насколько защищены клиенты Wi-Fi сетей в Android 4.4.4
Готовим планшет, сохраняя подключения к двум сетям из предыдущего примера (home (wpa-2-psk) и bruteforcer (open)).

Отключаем обе сети и запускаем airodump-ng в Kali Linux.
root@kali:~# airodump-ng mon0

Как видно из скриншота, Android планшет в процессе активного сканирования указывает SSID которые он ищет, атакующему это как раз и нужно. Попробуем «подсунуть» сеть home.
На планшете появляется вот такое уведомление, но к сети он автоматически не подключается.


Есть вероятность, что пользователь, увидев такое уведомление, сам захочет подключиться к сети, если бы уведомление не появилось, то факт появления сети, скорее всего, остался не замеченным (уведомления об открытых сетях отключается в настройках).
Пробуем запустить точку доступа с SSID bruteforcer.

Планшет «без вопросов» к ней подключается в автоматическом режиме, теперь весь трафик идет через подставную точку доступа и очень плохо, если критически важные данные, например логины и пароли, будут передаваться в открытом виде, кроме этого у атакующего масса других инструментов которые он может применить против своей жертвы.
Уже в процессе тестирования клиента на Android, я заметил, что airodump-ng не идеален для работы с фреймами Probe-Request, для этих целей больше подходит пакетный фильтр. Но хотелось бы еще и автоматизации, поискав интернете, я нашел скрипт hoover.pl (https://github.com/xme/hoover), написанный как раз для сбора фреймов Probe-Request в беспроводных сетях с помощью консольного пакетного фильтра tshark. Скрипт оказался хорошей заменой airodump-ng, поэтому далее я решил вести анализ фреймов с его помощью.
Проверяем, насколько защищены клиенты Wi-Fi сетей в устаревших версиях Apple IOS на примере версии 3.1.3
Действуем по уже знакомой схеме, сперва подключаемся к двум сетям.

Обращаю внимание на переключатель «Подтвердить подключение». Не зависимо от его положения, подключение к известным сетям происходит автоматически. Но как атакующему узнать известные сети?
При попытке перехватить SSID во фреймах Probe-Request меня настигла неудача, мой Iphone не передавал имя сети в данных фреймах.
root@kali:~# perl hoover.pl --interface mon0 --dumpfile ssid.txt
!! Dumping detected networks:
!! MAC Address SSID Count Last Seen
!! -------------------- ------------------------------ ---------- -------------------
……..
!! AA:AA:AA:AA:AA:AA home 125 1970/01/01 03:00:50 //Android
………
!! AA:AA:AA:AA:AA:AA bruteforcer 57 1970/01/01 03:00:50 /Android
………..
10 1970/01/01 03:00:00
!! Total unique SSID: 24
Планшет на Android в списке, Iphone нет. Настало время тяжелой артиллерии. Запускаем Wireshark.
root@kali:~# wireshark
Фильтруем пакеты по MAC адресу интересующего адаптера и типу.
wlan.addr == AA:AA:AA:AA:AA:AA && wlan.fc.type_subtype == 0x04

В данном случае я отфильтровал вывод wireshark, чтобы тот выводил фреймы probe request от iphone. Как видно, в фреймах нет SSID точек, которые ищет устройство.
На broadcast отвечает множество устройств, фреймами Probe Response, указывая свой SSID.
wlan.addr == AA:AA:AA:AA:AA:AA && wlan.fc.type_subtype == 0x05

Как только во фреймах Probe Response будет обнаружено имя сети (SSID) из списка сохраненных профилей, устройство попытается к ней подключиться автоматически.
Здесь мой Iphone проявляет себя более «благоразумно» по сравнению с планшетом на Android.
wlan.addr == XX:XX:XX:XX:XX:XX && wlan.fc.type_subtype == 0x04

“Забыть сеть” (удалить из профилей подключения) можно только подключившись к ней. Из чего следует, что однажды подключившись к сети, пользователь iphone с версией IOS 3.1.3, уязвим перед злоумышленником, способным выяснить о возможных точках доступа (с открытой аутентификацией), через которые выходит в интернет его жертва. Он может поднять у себя аналогичные, после чего iphone беспрепятственно подключится к ним (в настройках iphone такой режим работы нельзя отключить).
Проверяем, насколько защищены клиенты Wi-Fi сетей в Windows XP SP3
Описывать все подготовительные работы я не стану, а перейду сразу к делу. Как видно на скриншоте ниже, в Windows XP существует приоритет сетей к которым будет пытаться подключиться устройство, если последней сетью к которой подключался клиент была сеть с открытой аутентификацией, эта сеть будет первой в списке.

По умолчанию профиль беспроводной сети с открытой аутентификацией не настроен на передачу SSID во фреймах probe request.

А вот автоматическое подключение, если сеть находится в радиусе действия задано.

В случае закрытой сети (WPA,WPA2-PSK), оба параметра включены по умолчанию.


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

Получить SSID открытой точки доступа через фреймы probe request не получится, поэтому единственный вариант – перебирать возможные SSID.
[video_player type=»youtube» width=»560″ height=»315″ align=»center» margin_top=»0″ margin_bottom=»20″]aHR0cDovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PU1wSlVWamZVbnBN[/video_player]
Вывод: Наиболее защищенной к атакам “человек по середине” с применением подставной точки доступа оказалась ОС Windows 7, наименее защищенной – Android 4.4.4, а вот так могут выглядеть сами уязвимые клиенты в реальной среде.

Комментарии