Шпионаж за пользователями через Wi-Fi сеть или почему не стоит доверять общественным сетям

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

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

Целью статьи будет получить максимальное количество информации о деятельности людей в личной сети.

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

Для начала действий нам понадобится:

  • Компьютер (вероятно, ноутбук) с сетевой картой и установленным Debian (подойдет любой другой дистрибутив Linux, либо вовсе другое семейство ОС, но тогда инструкции в статье могут не совпадать).

  • Wireshark.

  • Nmcli.

  • Источник, обеспечивающий компьютеру доступ в Интернет, отличный от Wi-Fi (подойдет проводное соединение, либо банальный USB-модем на телефоне).

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

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

Для начала, отключаем компьютер от Wi-Fi сети.

Далее нужно получить имя сетевого интерфейса. В Debian получить это имя можно следующей командой:

ifconfig

Если /usr/sbin не добавлен в переменную PATH, то необходимо выполнить следующую команду вместо первой:

/usr/sbin/ifconfig

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

Далее необходимо создать саму сеть. У нас есть достаточное количество данных для этого процесса. Выполняем, предварительно заменив wlp2s0 на название своего сетевого интерфейса, а wifi - на название своей сети. Обратите внимание, что название сети должно кодироваться не более, чем 32-я байтами. Если Вы используете только английские символы, то 1 символ кодируется 1 байтом и можно использовать длину сети до 32-х символов. Если Вы используете символы иного алфавита, то 1 символ кодируется 2 байтами и можно использовать длину сети до 16-и символов.

INTERFACE="wlp2s0"
NAME="wifi"
nmcli con add type wifi ifname $INTERFACE con-name $NAME autoconnect yes ssid $NAME
nmcli con modify $NAME 802-11-wireless.mode ap 802-11-wireless.band bg ipv4.method share
nmcli con up $NAME

Команды выше поднимут сеть без шифрования, если же нам потребуется создать сеть с шифрованием, то следует выполнить следующие команды, предварительно, по аналогии с первым вариантом, заменив переменные INTERFACE и NAME, а также указать в переменную PASSWORD Ваш пароль. Обратите внимание, что длина пароля должна быть от 8-и символов.

INTERFACE="wlp2s0"
NAME="wifi"
PASSWORD="12345678"
nmcli con add type wifi ifname $INTERFACE con-name $NAME autoconnect yes ssid $NAME
nmcli con modify $NAME 802-11-wireless.mode ap 802-11-wireless.band bg ipv4.method share
nmcli con modify $NAME wifi-sec.key-mgmt wpa-psk
nmcli con modify $NAME wifi-sec.psk $PASSWORD
nmcli con up $NAME

Тут следует обратить внимание на опасную вещь, которая грозит почти каждому телефону и ноутбуку. Современные устройства по-умолчанию не подключаются к любым открытым сетям, они подключаются только лишь к знакомым сетям. Но этот механизм можно обмануть. Если знать к каким сетям подключалось устройство (а очень много устройств подключались к сетям в метро, кафе, аэропортах и т.д.), то можно создать сеть со знакомым для телефона названием и знакомым паролем (если пароля нет, то без пароля) и телефон сразу подключится к сети (при условии, что Wi-Fi включен и нет подключения к другой сети).

Созданная нами сеть будет работать и бить настолько далеко, насколько позволяет сетевая карта нашего компьютера. Чем сильнее сетевая карта, тем, соотвественно, дальше сигнал бьет. Но вот только есть одна проблема. Ни у компьютера на котором запущена сеть, ни у устройств, подключенных к компьютеру не будет доступа в Интернет. Чтобы решить эту проблему нужно подключить к компьютеру провод или USB-модем (его поддерживают почти все современные смартфоны). После подключения доступ в Интернет появится.

Поздравляем! Мы создали рабочую сеть! В любой момент ее можно отключить и удалить этой командой, заменив wifi на имя Вашей сети.

nmcli connection delete id "wifi"

Теперь, допустим, что кто-то подключился к этой сети. Запустим Wireshark, указав наш сетевой интерфейс. Далее надо сделать небольшую настройку. Переходим в "Редактирование" - "Параметры" - "Name Resolution". Далее надо поставить галочки на: "Resolve MAC addresses", "Resolve transport names", "Resolve network (IP) addresses" и "Use an external network name resolver".

Теперь наш компьютер захватывает все пакеты. Параллельно этому процессу будем настраивать фильтры.

В поле фильтра введем tcp. Если кто-то подключен к нашей сети, то пойдет много пакетов. И отправитель и получатель будет представлен в виде IP адреса, но IP сайтов Wireshark будет превращать в читабельные имена (например, google.com), а IP тех, кто подключен к сети будут, как правило, похожи на Ваш (Ваш можно узнать через тот же ifconfig). Если нас заинтересует какой-то конкретный клиент сети, то фильтр стоит изменить на tcp and ip.src == x.x.x.x, где x.x.x.x - заинтересовавший нас клиент. Таким образом, можно полностью просматривать с какими сайтами общаются клиенты сети.

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

В качестве защиты можно использовать привычные средства вроде Tor или VPN.

Спасибо за чтение.

Источник: https://habr.com/ru/post/647103/


Интересные статьи

Интересные статьи

Задача синхронизации состояния между клиентом и сервером может быть решена разными способами, я хотел бы расказать про вариант с использованием спецификации JSON Patch, а также про специф...
В разгар периода самоизоляции в центре внимания оказалось известное американское приложение для конференц-связи Zoom, популярность которого из-за массового перехода на дистанционную работу и ...
Я фриланс, и потому «и швец, и жнец, и на дуде игрец». И значительная часть рабочего времени уходит на переговоры с потенциальными заказчиками. Вот то базовое непонимание, которое я наблюдаю у лю...
Адаптировано из обсуждения 2015 года. Здесь Common Lisp служит лишь одним из многих наглядных примеров Будущее JavaScript? Я с 2007 года работаю в комитете по стандартам JavaScript (TC3...
Мы публикуем видео с прошедшего мероприятия. Приятного просмотра.