Wireshark. первое знакомство с сетевой акулой

capinfos

В комплекте с Wireshark поставляется удобный инструмент командной строки . Эта утилита генерирует статистику пакетного дампа, с временем начала/окончания записи и другими подробностями. С опцией  она выдаёт текст с табуляцией — он подходит для импорта в электронные таблицы или анализа в консоли.

test@ubuntu:~$ capinfos test.pcap
File name:           test.pcap
File type:           Wireshark/tcpdump/... - pcap
File encapsulation:  Ethernet
File timestamp precision:  microseconds (6)
Packet size limit:   file hdr: 262144 bytes
Number of packets:   341 k
File size:           449 MB
Data size:           444 MB
Capture duration:    3673.413779 seconds
First packet time:   2018-12-01 11:26:53.521929
Last packet time:    2018-12-01 12:28:06.935708
Data byte rate:      120 kBps
Data bit rate:       967 kbps
Average packet size: 1300.72 bytes
Average packet rate: 93 packets/s
SHA256:              989388128d676c329ccdbdec4ed221ab8ecffad81910a16f473ec2c2f54c5d6e
RIPEMD160:           0742b6bbc79735e57904008d6064cce7eb95abc9
SHA1:                d725b389bea044d6520470c8dab0de1598b01d89
Strict time order:   True
Number of interfaces in file: 1

Перехват трафика в открытых 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.

Особенности приложения

Чем, собственно, хорош Wireshark, и что он умеет?

  • Wireshark захватывает сетевые пакеты на ходу, собирая информацию с беспроводных и проводных интерфейсов или из файла с соответствующими данными. Поддерживаются интерфейсы: Ethernet, IEEE 802.11, PPP и даже виртуальные интерфейсы, существующие только в локальной сети.
  • Полученные сетевые пакеты можно сортировать, используя заданные правила, коих в утилите великое множество.
  • В интерфейсе программы есть четкое разграничение данных по протоколам. Например, FTP, HTTP или DNS. Все протоколы визуально подчеркиваются, чтобы было легче ориентироваться при поиске.
  • Wireshark умеет собирать сетевые пакеты, передаваемые в ходе VoIP-звонков.
  • Также эта программа умеет расшифровывать трафик HTTPS, WEP, WPA, если имеются ключи.
  • Wireshark собирает статистику оказываемой нагрузки на сетевое подключение.
  • А еще можно получить дополнительную информацию о трафике. Это касается содержимого пакетов разных уровней и времени, которое уходит на отправку и получение данных.

Как перевести Wi-Fi адаптер в режим монитора в Windows

Если у вас тоже возникли проблемы с захватом сырых Wi-Fi фреймов, то в качестве утешительного приза, можете перевести свою Alfa в режим монитора в Windows — с этим никаких проблем нет. Проблема в том, что какое-либо применение этого режима монитора отсутствует полностью: Airodump-ng эти интерфейсы не понимает. И даже Wireshark, которая вроде как работает с Npcap, не понимает этот режим монитора — нужно, чтобы она сама перевела карту в режим монитора.

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

Чтобы его включить, откройте командную строку от администратора и перейдите в папку C:\Windows\System32\Npcap\:

cd C:\Windows\System32\Npcap\

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

netsh wlan show interfaces

Мой интерфейс я переименовал в awus052nh, по умолчанию он может называться «Беспроводная сеть» или как-то похоже. Как написано в справке, программа WlanHelper.exe должна понимать и Имя интерфейса и Идентификатор GUID, который показан на пару строк пониже. Но у меня WlanHelper.exe категорически не принимает Имя интерфейса, появляется ошибка

Error: makeOIDRequest::strAdapterGUID error, the adapter name is incorrect.
Failure

Хотя работа Идентификатором GUID протекает нормально.

Поэтому в последующих командах вместо имени я буду использовать именно Идентификатор GUID (замените его на свой).

Чтобы просмотреть текущий режим монитора введите:

WlanHelper.exe 1eff05d6-56c5-4a12-bb4b-d96a7ef0af2f mode

Чтобы перевести в режим монитора:

WlanHelper.exe 1eff05d6-56c5-4a12-bb4b-d96a7ef0af2f mode monitor

Проверяем:

WlanHelper.exe 1eff05d6-56c5-4a12-bb4b-d96a7ef0af2f mode

Всё получилось:

Настолько же просто, насколько и бесполезно…

Анализ трафика в открытых 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 == ""

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

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

Установка и настройка

Скачать Wireshark можно с официального сайта разработчика. Программа совершенно бесплатна

Стоит обратить внимание на то, что последняя версия (2.0.5) не работает с Wi-Fi адаптерами. Поэтому, если вам нужно анализировать трафик беспроводного соединения, следует скачать более старую версию

Установка утилиты стандартна и не вызовет никаких проблем даже у новичков. В инсталляторе все понятно, хоть он и на английском. Кстати, Wireshark на русском языке в природе не существует, поэтому для того, чтобы успешно справляться с этим софтом придется напрячь память и вспомнить английский. В принципе, для простого захвата и просмотра TCP пакетов ничего сверхъестественного не понадобится. Хватит и школьного уровня английского.

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

Ничего страшного в нем нет. В этом вы сейчас убедитесь. Для начала работы нужно сначала выбрать источник, из которого будет производиться захват TCP пакетов. Перехват может осуществляться как с Ethernet подключения, так и с WLAN адаптера. В качестве примера рассмотрим вариант с WLAN. Для настройки нужно зайти в пункт «Capture», подпункт «Options». В открывшемся окне следует выбрать ваш беспроводной адаптер и отметить его галочкой. Для начала захвата трафика достаточно нажать кнопку «Start».

После нажатия «Start» начнется анализ и захват пакетов. В окне появится много непонятных букв и цифр. Некоторые из пакетов имеют собственную цветовую маркировку. Для того, чтобы хоть что-то понять, нужно определить какой цвет к чему относится. Зеленый – TCP трафик, темно-синий – DNS, светло-синий – UDP и черный – пакеты TCP с ошибками. Теперь разобраться в этой горе данных проще.

Для остановки процесса перехвата достаточно нажать кнопку «Stop», которая помечена красным прямоугольником. Теперь можно выбрать интересующий вас пакет и просмотреть его. Для этого нужно щелкнуть по пакету правой клавишей мыши и в появившемся меню выбрать пункт «Show packet in new window». Тут же появится куча непонятных букв и цифр.

Но при углубленном изучении представленной информации можно понять, откуда и куда шел пакет и из чего он состоял. Для того чтобы просмотреть данные о TCP пакетах позднее, нужно использовать функцию сохранения захваченной информации. Она находится в пункте меню «File», подпункт «Save as». Потом можно будет загрузить информацию из файла и спокойно просмотреть ее.

Сам процесс работы с программой довольно прост

Для запуска перехвата сетевых пакетов нужно просто зайти в главное меню, а именно Menu/Capture Options, а затем в поле Interface выбрать необходимый интерфейс и нажать кнопку Start.

Вот собственно и все. 

Естественно, можно воспользоваться и дополнительными настройками, представленными в этом окне.

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

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

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

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

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

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


Страница программы:

Инструкция по использованию mitmAP

Скачайте скрипт:

git clone https://github.com/xdavidhu/mitmAP.git
cd mitmAP/

Запустите его:

sudo python3 mitmAP.py

Скрипт начнёт с вопроса:

 Install/Update dependencies? Y/n:

Перевод: установить / обновить зависимости?

Если запускаете первый раз, то согласитесь, т.е. нажмите Enter. В дальнейшем можно выбирать n (нет).

Следующий вопрос:

 Please enter the name of your wireless interface (for the AP):

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

ip a

Она покажет все сетевые интерфейсы вашей системы. А команда

sudo iw dev

покажет только беспроводные сетевые интерфейсы.

В Kali Linux беспроводной интерфейс обычно называется wlan0 (а если их два, то второй имеет имя wlan1).

Далее

 Please enter the name of your internet connected interface:

Перевод: пожалуйста, введите имя интерфейса, подключённого к Интернету.

В Kali Linux проводной интерфейс обычно называется eth0. Также для подключения к Интернету можно использовать вторую Wi-Fi карту.

 Use SSLSTRIP 2.0? Y/n:

Перевод: скрипт спрашивает, использовать ли SSLStrip+. В настоящее время, когда значительная, если уже не большая, часть трафика передаётся через HTTPS (в зашифрованном виде), эта опция крайне рекомендуется.

Теперь

 Create new HOSTAPD config file at '/etc/hostapd/hostapd.conf' Y/n:

Перевод: Создать ли новый конфигурационный файл hostapd.

Если запускаете первый раз, то это нужно сделать обязательно. При последующих запусках, если вы не собираетесь менять настройки ТД, то можно выбрать n (т.е. «нет»).

Настройка ТД:

 Please enter the SSID for the AP:

Перевод: введите имя для ТД.

Далее:

 Please enter the channel for the AP:

Перевод: введите номер канала ТД.

Затем:

 Enable WPA2 encryption? y/N:

Перевод: включить ли WPA2 шифрование?

Если вы включите шифрование, то для подключения к вашей ТД нужно будет вводить пароль. Для наших целей выбираем «нет».

Последняя настройка ТД:

 Set speed limit for the clients? Y/n:

Перевод: установить ли ограничение по скорости для клиентов?

Я выбираю «нет»,

Теперь:

 Start WIRESHARK on wlan0? Y/n:

Перевод: запустить ли Wireshark на интерфейсе wlan0?

И ещё один вопрос:

 Spoof DNS manually? y/N:

Перевод: Осуществлять ли ручной DNS спуфинг.

Если вы выберите «да», то вам нужно будет ввести количество сайтов, для которых вы будете подменять DNS ответы, а затем ввести домен каждого сайта и IP, на которой должны указывать DNS ответы. Кроме этого, вам нужно подготовить виртуальные хосты с фишинговыми страницами на серверах, куда будут перенаправлены пользователи. Можно обойтись без этого. Но если пользователь не будет авторизовываться на сайтах, то мы не узнаем его пароль (только кукиз). Фишинговые страницы подведут пользователя к вводу данных. Более подробно об этой атаке вы сможете прочитать в «Инструкции по работе с DNSChef: анализ DNS запросов, фальсификация DNS ответов, перенаправление на фальшивые копии сайтов».

Анализ данных в Wireshark

Приведу примеры нескольких ходовых фильтров.

Для отображения в Wireshark всех HTTP запросов, переданных методом POST:

http.request.method == "POST"

Для отображения данных переданных или полученных с определённого домена (вместо введите интересующий домен, например, vk.com):

http.host==""

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

frame contains ""

Для отображения кукиз в Wireshark:

http.cookie

Если вас интересует кукиз с определёнными именем, то используйте:

http.cookie contains ""

Для показа запросов в Wireshark, переданных методом GET или POST:

http.request.uri contains "?" or http.request.method=="POST"

Если вы хотите найти данные обмена с FTP сервером, то в Wireshark можете использовать один из следующих фильтров:

ftp

или

tcp.port==21 || tcp.port==20

3 Как включить интерфейсы Wireshark, если они недоступны

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

Первое, что нужно сделать – перезагрузить компьютер. Программа начинает функционировать только после перезапуска.
Вторая возможная и самая распространенная причина – у вас не скачан WinPcap. Это бесплатные библиотеки от Windows, которые нужны программе Wireshark. Скачайте их в сети интернет, перезагрузите компьютер и попробуйте снова.

Под статьей вы найдете объемное видео, которое расскажет вам о более глубоком интерфейсе программы.

Скрипт для разделения рукопожатий

Для автоматизации разделения одного файла на рукопожатия, я написал скрипт. Помните, что если вы разбиваете файл полученный с помощью Besside-ng или искусственно при слиянии хендшейков, то скрипт отработает без проблем.

Если вы разделяете на отдельные хендшейки файл захвата, полученный в шумных условиях (например, во время длительной работы Airodump-ng), то скрипт будет работать так:

  • если для какой-либо точки доступа не найдено ни одного рабочего хендшейка, то все данные для неё будут отброшены (не будет создаваться файл вывода)
  • если для точки доступа найдено хотя бы одно рабочее рукопожатие, то все фреймы EAPOL будут сохранены в один файл.

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

Хотя aircrack-ng вроде бы правильно находит нужный хендшейк, но с cap2hccapx (из набора hashcat-utils, используется для конвертации в формат хеша Hashcat) замечены проблемы, если предварительно не почищены ненужные фреймы EAPOL от непригодных хендшейков.

Создайте файл handshakes_extractor.sh:

gedit handshakes_extractor.sh

И скопируйте туда:

Для запуска укажите .(p)cap файл, из которого нужно извлечь рукопожатия.

Пример запуска:

bash handshakes_extractor.sh wpa.cap

Пример работы программы:

Если найдено хотя бы одно рабочее рукопожатие, то в текущей директории создаётся папка вида 2018-04-13-155818, в которую в виде отдельных файлов сохраняются хендшейки для всех точек доступа.

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

Дополнительно

Библиотека и 

Библиотеку (в ОС семейства *nix) или (в ОС Windows) можно
использовать в своих программах, чтобы перехватывать пакеты без Wireshark
или tcpdump. При этом доступна фильтрация захватываемых пакетов, запись
и считывание файлов , но недоступен продвинутый анализ протоколов.

Инструменты на основе и их альтернативы

  • Упомянутая доступна в большинстве ОС семейства *nix. Возможности
    по обработке трафика в ней ограничены, её задача — захват пакетов.

  • Программа является текстовой версий Wireshark. Её использование
    подобно , но пакеты анализируются с использованием всех
    интеллектуальных алгоритмов, заложенных в Wireshark.

  • Утилита позволяет проигрывать файлы , то есть посылать
    в сеть содержащиеся в них пакеты.

  • Инструмент Microsoft Message Analyzer является
    аналогом Wireshark для ОС Windows, созданным относительно недавно.
    Его возможности по захвату и анализу сетевого трафика ограничены
    по сравнению с , однако есть возможность захватывать и
    анализировать сообщения, передаваемые по служебным каналам Windows.

Большой список инструментов имеется на сайте Wireshark.

Расширенные возможности Wireshark

За рамки дисциплины выходит ряд мощных возможностей Wireshark:

  • Создание модулей разбора (dissectors) для , которые могут
    обрабатывать PDU протоколов, не встроенных в библиотеку.
  • Написание сценариев обработки пакетов для Wireshark на языке Lua.
  • Восстановление и анализ при помощи Wireshark защищенных соединений
    SSL (преимущественно HTTPS) и аудиопотоков (преимущественно VoIP).
  • Подсчет Wireshark разнообразной статистики по захваченным пакетам.
  • Захват кадров IEEE 802.11 (Wi-Fi), которые не должны обрабатываться данной
    машиной (monitor mode).

Захват пакетов в Windows

Ядро Wireshark, библиотека , в ОС Windows не способна перехватывать
пакеты, передаваемые между интерфейсами одной машины. Простейшее решение — вынудить ОС прокладывать маршрут для таких пакетов через другую машину; подходит
шлюз по умолчанию. В ОС семейства *nix проблема отсутствует.

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

Проложить маршрут, действующий до перезагрузки, можно следующей командой:

Например, если локальный адрес 192.168.1.2, и шлюз — 192.168.1.1:

Изменение таблицы маршрутизации разрешено только администратору. В Windows 7
и более поздних версиях запуск командной строки администратора доступен из GUI.

По окончании экспериментов следует удалить этот неоптимальный, вредный маршрут:

Как использовать фильтры?

Очень важная функция Wireshark — использование фильтров. С помощью них можно легко сортировать данные и получать необходимые результаты без муторного листания гигантских списков с сетевыми пакетами.

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

  • ip.dst — фильтр по целевому IP-адресу.
  • ip.src — фильтр по IP-адресу того, кто отправил сетевой пакет.
  • ip.addr — IP-адрес того, кто отправил пакет или принял его.
  • ip.proto — протокол, использовавшийся при передаче сетевого пакета.

Более того, при фильтрации данных можно использовать операторы. Например:

ip.dst == IP-адрес — оператор == в этом случае обозначает, что целевой IP-адрес должен равняться указанному. Вместо равенства используются и другие операторы.

ip.src != *IP-адрес — это значит, что IP-адрес отправителя не должен соответствовать указанному.

Также есть:

— больше указанного значения. contains — содержит в себе указанное значение.

Чтобы работать с фильтрами нужно:

Открыть меню Expressions в правой части интерфейса Wireshark.

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

  • Выбрать тип фильтра в левой панели.
  • Указать оператор в правой панели.
  • Указать значения для сопоставления с фильтром в поле value.
  • Затем нажать на кнопку ОК.

Опять же можно все прописать вручную в строке под поиском

После этого нужно нажать на белую стрелку в квадрате, которая появится слева от кнопки Expressions.

Пропускаем все сетевые пакеты через наш новый фильтр

Теперь в списке пакетов будут отображаться только те, что соответствуют критериям фильтрации.

Post Views:
77

Ручное разбитие файлов рукопожатий с помощью Wireshark

Если вы работаете с файлом из слитых рукопожатий, то с ним не должно быть особых проблем. Открываем файл в Wireshark:

Можно использовать фильтр

wlan.fc.type_subtype == 0x08 || wlan.fc.type_subtype == 0x05 || eapol

Но он может оказаться и не нужным, поскольку и без того имеются только нужные пакеты.

Чтобы отфильтровать пакеты для определённой точки доступа, укажите её BSSID со следующим фильтром:

wlan.addr==BSSID

Например:

wlan.addr==28:28:5D:6C:16:24

Либо так:

(wlan.fc.type_subtype == 0x08 || wlan.fc.type_subtype == 0x05 || eapol) && wlan.addr==28:28:5D:6C:16:24

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

И в меню File выберите Export Specified Packets:

Введите имя файла и поставьте переключатель на Marked packets only:

Проверяем наш файл:

Всё отлично. Можно сделать ещё одну проверку с помощью coWPAtty, запустив команду вида:

cowpatty -r ФАЙЛ -s ИМЯ_СЕТИ -c

Например, в моём случае:

cowpatty -r ZyXEL_59.pcap -s ZyXEL_59 -c

Фраза «Collected all necessary data to mount crack against WPA2/PSK passphrase» означает, что собраны все необходимые данные для взлома пароля.

Для вычленения рукопожатия из захвата, выполненного в шумных условиях, необходимо приложить некоторые усилия. Начинам с фильтрации (замените 84:C9:B2:52:F6:37 на BSSID интересующей вас сети):

(wlan.fc.type_subtype == 0x08 || wlan.fc.type_subtype == 0x05 || eapol) && wlan.addr==84:C9:B2:52:F6:37

Хендшейк подходит для взлома пароля если:

  • обязательно включает в себя второй элемент (M2), а также третий (M3) (гарантирует, что было сделано подключение к сети) или вместо третьего элемента содержит первый элемент (M1) (рукопожатие подходит для взлома пароля, но нет гарантий, что было выполнено подключение и что вообще был введён верный пароль). Лучше, если удалось захватить все четыре элемента;
  • элементы рукопожатия должны следовать в нужном порядке;
  • между ними не должно быть слишком большого интервала времени (измеряется миллисекундами и микросекундами).

Смотрим следующий пример.

Первый набор фреймов EAPOL (выделен чёрным) – не соблюдено правило, что кроме второго должно быть третье или первое сообщение.

Второй набор (красный) – только одно сообщение.

Третий набор (жёлтый) – нет третьего или первого сообщения.

Четвёртый набор (оранжевый) – нет второго сообщения.

Пятый набор (зелёный) – подходит, поскольку имеется второе и первое сообщение. Время между сообщениями кажется приемлемым.

Выделяем и сохраняем нужные фреймы (я также выделил фрейм Beacon):

Наш файл проходит проверки:

Расшифровка сессий SSL/TLS

Один из способов расшифровки сессий SSL/TLS — использовать закрытый ключ с сервера, к которому подключен клиент.

Конечно, у вас не всегда есть доступ к приватному ключу. Но есть другой вариант простого просмотра трафика SSL/TLS на локальной системе. Если Firefox или Chrome загружаются с помощью специальной переменной среды, то симметричные ключи отдельных сеансов SSL/TLS записаны в файл, который Wireshark может прочитать. С помощью этих ключей Wireshark покажет полностью расшифрованную сессию!

1. Настройка переменной среды

Linux / Mac

export SSLKEYLOGFILE=~/sslkeylogfile.log

Windows

На вкладке System Properties | Advanced нажмите кнопку Environment Variables и добавьте имя переменной (SSLKEYLOGFILE), а в качестве значения — путь к файлу.

2. Настройка Wireshark

Из выпадающего меню выберите Edit | Preferences | Protocols | SSL | (Pre)-Master-Secret Log Filename — Browse, указав файл, который вы указали в переменную среды.

Начинайте захват трафика в локальной системе.

3. Перезапуск Firefox или Chrome

После перехода на сайт HTTPS лог-файл начнёт увеличиваться в размере, поскольку записывает симметричные ключи сессии.

Взгляните на ранее запущенную сессию Wireshark. Вы должны увидеть что-то похожее на скриншот внизу с расшифрованными сессиями. Расшифрованные пакеты — на вкладке в нижней панели.

Другой способ просмотра сеанса — через выпадающее меню Analysis | Follow | Stream | SSL. Если сеанс успешно расшифрован, вы увидите опцию для SSL.

Разумеется, будьте осторожны при записи этих ключей и пакетов. Если посторонний получит доступ к лог-файлу, то легко найдёт там ваши пароли и куки аутентификации.

Ещё один вариант выхода на базовый HTTP-трафика — использовать инструмент Burp Suite с загруженным сертификатом CA в браузере. Материал подготовлен каналом https://t.me/it_ha. В этом случае прокси расшифровывает соединение на стороне клиента, а затем устанавливает новый сеанс SSL/TLS на сервере. Есть много способов проведения такой MiTM-атаки на себя, это два самых простых.

2 Как включить мониторинг трафика в Wireshark

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

  • В центре окна вы увидите кнопку “Refresh interfaces” или “No interfaces found”. Нажмите на нее, чтобы загрузить интерфейсы. У вас может быть подключение через маршрутизатор, напрямую к кабелю, по сетям Wi Fi или через модем LTE.
  • Если же у вас беспроводное подключение Wi Fi, зайдите во вкладку “Wireless”.

Нажмите “WLAN Truffic”.

Если же подключение происходит через модем, обратите внимание на вкладку “Telephony”, нажмите строку “LTE”

  • Что бы вы ни выбрали, трафик предстанет перед вами примерно в таком виде. Сверху в строке “Filter” вы можете ввести фильтр, чтобы отсеять ненужную вам информацию и видеть сетевые протоколы только по определенному критерию.
  • Нажав мышкой на один из них, в нижнем окне вы увидите больше информации. Главным критерием может стать строка с хостом: сайт, который принял или отдал запрос. Такие данные указаны после слов “Host”, а также “Accept”.
  • Как говорилось ранее, работать с протоколами без малейшего понимания их работы практически невозможно. Вы не поймете, какой именно пакет когда и куда ушел. Тем не менее, если эта тема вам хоть каплю знакома, всё становится интуитивно понятно.

Ссылка на основную публикацию