Перехват и анализ трафика в открытых Wi-Fi

Опасно ли пользоваться открытым Wi-Fi

Интернет-доступ через Wi-Fi в настоящее время очень популярен. Wi-Fi есть во многих квартирах, на рабочих местах. При использовании беспроводного доступа важно поддерживать безопасность своей Точки Доступа (смотрите статью «Как защитить Wi-Fi роутер от взлома»).

В настоящее время также очень популярными стали публичные сети Wi-Fi. Они есть в ресторанах, спортивных залах, в торговых центрах, в метро, в отелях, в частных больницах и поликлиниках, в апартаментах и кондоминиумах — их можно найти практически везде, где собирается довольно много людей.

У этих сетей есть особенность — часто это открытые сети Wi-Fi для подключения к которым не требуется пароль. Есть ли какие-то дополнительные правила безопасности для работы с такими сетями?

Да, при использовании открытой Wi-Fi сетью нужно хорошо понимать, что:

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

С первым пунктом, думаю, всё понятно: если кто-то с компьютером и Wi-Fi картой находится достаточно близкой, то он может захватывать и сохранять весь трафик, передаваемый между беспроводной Точкой Доступа и всеми её клиентами.

Что касается второго пункта, то нужно пояснить по поводу шифрования передаваемых данных. Например, если вы открываете какой-либо сайт, который использует протокол HTTPS (то есть безопасный протокол), например сайт https://hackware.ru/, то передаваемые данные на этот сайт и с этого сайта к вам зашифрованы. Если вы открываете сайт работающий по протоколу HTTP, то все передаваемые данные: какие страницы вы посетили, какие комментарии оставили, какие кукиз получил ваш веб-браузер — эти данные передаются в незашифрованном виде. Так вот, если вы подключены к Wi-Fi Точке Доступа которая требует ввод пароля, то передаваемый трафик шифруется ещё раз. То есть даже если вы открываете сайт на протоколе HTTPS, то передаваемый трафик шифруется два раза (первый раз при передаче от веб-браузера до веб-сервера и в обратном направлении, второй раз при передаче от вашего устройства и до Точки Доступа, а также в обратном направлении). А если вы открываете сайт на протоколе HTTP, то передаваемый трафик шифруется только один раз (только при передаче от вашего устройства до Точки Доступа и обратно).

Но открытые точки доступа не шифруют трафик. Из этого следует: если вы используете открытую точку доступа и открываете сайт, работающий на протоколе HTTP, значит ваши данные передаются в открытом виде и кто угодно рядом с вами может их захватить и сохранить. Если вы открываете сайт на протоколе HTTPS, то эти данные зашифрованы, тем не менее, всё равно видно, какие именно сайты вы открывали (хотя не видно, какие именно страницы и что вы вводили, например, какие оставили комментарии).

Итак: нужно помнить, что открытые беспроводные сети подвержены перехвату информации.

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

Перехват трафика в открытых Wi-Fi сетях

Для успешной атаке нужен компьютер на Linux (например, с Kali Linux или с BlackArch), а также Wi-Fi карта из этого списка.

Начнём с того, что посмотрим имена беспроводных интерфейсов:

iw dev

Как можно увидеть, у меня несколько беспроводных интерфейсов, я буду использовать wlp0s20f0u2.

Переводим беспроводной интерфейс в режим монитора:

sudo ip link set ИНТЕРФЕЙС down
sudo iw ИНТЕРФЕЙС set monitor control
sudo ip link set ИНТЕРФЕЙС up

В предыдущих командах вместо ИНТЕРФЕЙС нужно вписать то имя, которое беспроводной интерфейс имеет в вашей системе. Например, для wlp0s20f0u2 команды выглядят так:

sudo ip link set wlp0s20f0u2 down
sudo iw wlp0s20f0u2 set monitor control
sudo ip link set wlp0s20f0u2 up

Запускаем airodump-ng командой вида:

sudo airodump-ng ИНТЕРФЕЙС -t OPN

Где:

  • ИНТЕРФЕЙС — имя беспроводного интерфейса в вашей системе
  • -t OPN — фильтр, который показывает только открытые Wi-Fi сети

У меня интерфейс называется wlp0s20f0u2, поэтому я запускаю следующей командой:

sudo airodump-ng wlp0s20f0u2 -t OPN

Пример полученных данных:

 BSSID              PWR  Beacons    #Data, #/s  CH  MB   ENC  CIPHER AUTH ESSID
                                                                                             
 00:15:6D:9A:26:C0  -35       19      454    8   1   65  OPN              Anan Apartment     
 00:15:6D:9C:26:84  -45       29        1    0   6   65  OPN              Anan Apartment     
 00:27:22:02:C0:D0  -64       17        0    0   1   65  OPN              Anan Apartment     
 C8:3A:35:01:3F:90  -78        9        1    0  11  135  OPN              Tenda         

Как можно увидеть, имеется сразу несколько открытых Точек Доступа. В принципе, можно выбрать любую из них для перехвата данных, но нужно помнить, что: для успешного анализа данных важно захватить передаваемые данные и от ТД, и от Клиентов. То есть я могу выбрать для захвата данных дальнюю ТД и, вероятно, я буду захватывать большую часть её беспроводных фреймов, но дело в том, что у Клиентов обычно менее мощные беспроводные передатчики. Также Клиенты могут находиться ещё дальше от меня, чем сама Точка Доступа. По этой причине лучше выбирать самую близкую ТД. Чем больше значение PWR, тем лучше сигнал (на всякий случай напомню: отрицательные числа чем ближе к нулю, тем они больше). Например, в моей ситуации я выбираю ТД с сигналом -35.

Направленные антенны могут значительно улучшить качество беспроводного соединения, если направлены в нужную сторону. Что касается захвата данных, то лучше не использовать направленную антенну, поскольку ТД может быть в одном направлении, а её Клиенты — в других. Желательно использовать большую внешнюю антенну.

Неважно, является ли ТД хот-спотом с авторизацией на веб-интерфейсе (Captive Portal — Перехватывающим Порталом) или просто открытой Точкой Доступа — описанный способ перехвата работает одинаково для любого из этих вариантов.

Для захвата данных вновь запускаем airodump-ng, но уже командой вида:

sudo airodump-ng ИНТЕРФЕЙС --channel НОМЕР --write openap

Где:

  • ИНТЕРФЕЙС — имя беспроводного интерфейса,
  • --channel НОМЕР — номер канала, на котором находится целевая ТД
  • --write openap — опция для сохранения захваченных данных в файл. В данном случае название файла будет начинаться с openap (можно поменять на своё усмотрение)

Например, я хочу прослушивать ТД, которая работает на первом канале, для этого я хочу использовать беспроводной интерфейс wlp0s20f0u2 и сохранять перехваченную информацию в файл, имя которого начинается на openap, тогда моя команда следующая:

sudo airodump-ng wlp0s20f0u2 --channel 1 --write openap

Далее ждём, когда соберётся достаточно данных. Анализировать данные можно прямо в процессе захвата — без остановки airodump-ng.

Анализ трафика в открытых Wi-Fi сетях

В процессе работы airodump-ng будет создан файл с расширением .cap, например, openap-01.cap.

Для анализа данных можно использовать разные программы, я покажу анализ беспроводного трафика с Wireshark.

Откройте файл с захваченными данными в Wireshark.

Для выделения разных данных нам понадобятся фильтры Wireshark. Здесь я покажу пример использования только некоторых фильтров, рекомендуется изучить большую подборку полезных фильтров Wireshark здесь.

Для оценки качества захвата, можно начать с фильтров, которые выводят результаты анализа TCP протокола.

Например:

tcp.analysis.duplicate_ack_num == 1

Этот фильтр выводит информацию о фреймах с флагом ACK, которые являются дублями. Большое количество таких фреймов может говорить о проблемах связи между Клиентом и Точкой Доступа.

Фильтр показа фреймов для которых не захвачен предыдущий сегмент:

tcp.analysis.ack_lost_segment

Это нормально в начале захвата данных — поскольку информация перехватывается не с самого начала. Но если эта ошибка часто возникает в дальнейшем, значит вы находитесь слишком далеко от Точки Доступа или Клиентов и вы не захватывает часть данных, которые они передают.

Для показа фреймов, которые являются ретрансмиссией (отправляются повторно):

tcp.analysis.retransmission


Большое количество таких фреймов может говорить о том, что между Клиентом и ТД плохая связь и им часто приходится отправлять повторно одни и те же данные.

С помощью фильтра

arp

Можно увидеть ARP трафик — с его помощью удобно анализировать, сколько всего устройств в данный момент подключено к локальной сети, какие у них IP адреса и какие MAC адреса. Зная MAC адрес устройства можно узнать его производителя.

С помощью фильтра

dns

можно увидеть все отправленные DNS запросы.

Благодаря этим запросам можно узнать, какие сайты посещали пользователи (даже если эти сайты используют HTTPS!), а также к каким онлайн сервисам были сделаны запросы.

Например, на скриншоте можно увидеть адреса онлайн кинотеатра Netflix, Facebook, различных сервисов Google.

Для фильтрации HTTP трафика фильтр:

http

Здесь можно узнать множество интересной информации. Например, можно увидеть запросы к сервисам и передаваемые данные, в том числе API ключи, идентификаторы устройств и прочее:

Можно увидеть посещённые URL адреса со всеми передаваемыми параметрами:

Видны информация авторизации, используемой при отправке данных:

Видны загруженные и открытые в Интернете файлы:

Вы можете сохранить любой переданный файл. Для этого выделите мышкой пакет, который его содержит (1), затем в средней панели, которая содержит подробную информацию, пролистните в самый низ, чтобы найти поле с данными и кликните на него правой кнопкой мыши, чтобы вызвать контекстное меню (2), в контекстном меню выберите Export Selected Packet Bytes (3) — Экспортировать байты выбранного пакета:

Введите имя файла, выберите расположение и сохраните его.

Кто-то обновляет Windows:

Также видны установленные пользователю кукиз или переданные им кукиз:

С помощью фильтра

http.cookie

можно увидеть HTTP запросы, в которых передавались кукиз.

А с помощью фильтра

http.set_cookie

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

Соседи скачивают странные торренты:

Переданные методом POST данные также видны:

Для поиска любых переданных изображений:

http.content_type contains "image"

Для поиска определённых видов изображений:

http.content_type contains "gif"
http.content_type contains "jpeg"
http.content_type contains "png"

Для поиска файлов определённого типа:

http.content_type contains "text"
http.content_type contains "xml"
http.content_type contains "html"
http.content_type contains "json"
http.content_type contains "javascript"
http.content_type contains "x-www-form-urlencode"
http.content_type contains "compressed"
http.content_type contains "application"

Поиска в Wireshark запросов на получения файлов определённого типа. Например, для поиска переданных ZIP архивов:

http.request.uri contains "zip"

Вместо http.request.uri для большей точности можно использовать фильтры http.request.uri.path или http.request.uri.query, например, для поиска запросов на скачивание файлов JPG (ссылки на картинки):

http.request.uri.path contains "jpg"

Фильтр, который показывает только данные, переданные методом POST:

http.request.method == "POST"

Фильтр, который показывает только данные, переданные методом GET:

http.request.method == "GET"

Поиск запросов к определённому сайту (хосту):

http.host == "<URL>"

Поиск запросов к определённому сайту по части имени:

http.host contains "здесь.частичное.имя"

Заключение

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

Даже сайты, который используют HTTPS, могут непроизвольно выдавать данные. Например:

Видно, что от пользователя данные на booking.com передаются в незашифрованном виде, поэтому можно перехватить эту ссылку.

Приложение iPhone постоянно загружает какие-то (аудио?) файлы не используя безопасное соединение:

Популярная (в некоторых регионах) qq.com или не использует шифрование, либо использует свой собственный алгоритм:

Гарантированной защитой от такого перехвата является использование доверенного VPN сервиса. Надёжным VPN сервисом можно считать тот, который вы настроили сами, либо VPN вашей корпоративной сети.

Рекомендуется Вам:

2 комментария to Перехват и анализ трафика в открытых Wi-Fi

  1. ranon:

    Извените я мож тупой вопрос задам а почему такие длиные команды на перевод в мониторный режим интерфейса а почему нельзя 

    ifconfig wlan0 down

    iwconfig wlan0 mode monitor

    ifconfig wlan0 up 

    ? или без разницы?

    • 1nside:

      ifconfig и iwconfig считаются устаревшими утилитами. Сейчас вместо ifconfig - ip, а вместо iwconfig - iw.

Добавить комментарий

Ваш e-mail не будет опубликован.