Руководство и шпаргалка по Wireshark https://habr.com/ru/post/436226/
Практические приёмы работы в Wireshark https://habr.com/ru/company/ruvds/blog/416537/
Анализ SSL/TLS трафика в Wireshark https://habr.com/ru/company/billing/blog/261301/
Как легко расшифровать TLS-трафик от браузера в Wireshark https://habr.com/ru/post/253521/
Wireshark — приручение акулы https://habr.com/ru/post/204274/
Устанока/Запуск
sudo apt-get install -y wireshark
...
$ wireshark --version
Wireshark 2.6.10 (Git v2.6.10 packaged as 2.6.10-1~ubuntu16.04.0)
...
sudo wireshark
Запуск только по root-ом
Фильтры
- Source - кто спрашивает
- Destonation - кто отвечает
Операторы сравнения
Оператор | Описание |
contains | Содержит |
==/eq | Равно |
!=/ne | Не равно |
\<\/lt | Меньше чем |
<=/le | Меньше или равно |
>/gt | Больше чем |
>=/ge | Больше или равно |
Логические операторы
Оператор | Описание |
and/&& | Логическое И. Данные выводяться если они соответствуют обоим частям фильтра |
or/|| | Логическое ИЛИ. Достаточно чтобы одно условие было истинным |
not/! | Логическое НЕ. Отрицание условия выборки |
Справочник фильтров
Фильтр по диапазону портов
tcp.port>=8000 && tcp.port<=8180
Показать HTTP или DNS трафик
http or dns
Показать любой трафик, кроме ARP, ICMP и DNS:
!(arp or icmp or dns)
Показать пакеты только отправленные или полученные на интерфейсе wlan0:
frame.interface_name == "wlan0"
Трафик канального уровня
Показать arp трафик
arp
Показать фреймы ARP протокола, отправленные с устройства, имеющего MAC-адрес 78:b2:13:be:08:48
arp.src.hw_mac == 78:b2:13:be:08:48
Показать фреймы ARP протокола, отправленные с устройства, имеющего IP адрес 192.168.50.90
arp.src.proto_ipv4 == 192.168.50.90
Трафик сетевого уровня
Показать ip трафик
ip
Показать источник (тот кто получил) трафика ip 192.168.1.67
ip.src == 192.168.1.67
Показать адресат (тот кто отправил) трафик ip =
ip.dst == 192.168.1.67
Показать источник или приемник
ip.addr == 192.168.1.67
Трафик транспортного
TCP
Показать tcp или udp
tcp or udp
Трафик на 4000 порт
tcp.port == 4000
Трафик, источником которого является порт 4000
tcp.srcport == 4000
Трафик, который отправляется службе на порту 4000
tcp.dstport == 4000
Трафик SYN-флудом
tcp.flags.syn == 1
Следовать потоку TCP с номером X
tcp.stream eq X
Фильтровать по номеру потока:
tcp.seq == x
Показать повторные отправки пакетов
tcp.analysis.retransmission
UDP
Трафик на 53 порт
udp.port == 53
Трафик, источником которого является порт 53
udp.srcport == 53
Трафик, который отправляется службе на порту 53
udp.dstport == 53
ICMP
Трафик icmp
icmp
Показать все пинг запросы
icmp.type == 8
Показать все пинг ответы
icmp.type == 0
Показать все ошибки недоступности/запрета хостов и портов
icmp.type==3
Пример использования значения CODE, следующий фильтр покажет сообщения о недоступности порта:
icmp.type==3 && icmp.code==3
Трафик прикладного уровня
HTTP
Чтобы увидеть HTTP трафик
http
Чтобы увидеть трафик нового протокола HTTP/2
http2
Данные переданные методом POST
$ curl -X POST ya.ru
...
http.request.method == "POST"
Данные переданные методом GET
http.request.method == "GET"
Трафик на определенный хост
http.host eq ya.ru
Трафик с http куками
http.cookie
Запросы, в которых сервер установил кукиз в браузер пользователя
http.set_cookie
Поиск любых переданных изображений
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"
http.request.uri contains "zip"
ФИльтр по файлам
http.file_data
Трафик с задержкой более 1 сек.
http.time>1
Статусы 404
http.response.code == 404
Что-то сложное…
http.request && !(http.request.uri contains ".ico" or http.request.uri contains ".css" or http.request.uri contains ".js" or http.request.uri contains ".gif" or http.request.uri contains ".jpg")
DNS
dns
Запросы более 1 сек.
dns.time > 1
Этот фильтр показывает, какие dns запросы не могут быть правильно разрешены:
dns.flags.rcode != 0
DNS запросы
dns.flags.response == 0
DNS ответы
dns.flags.response == 1
Показать запросы и ответы на них, в котором ищется IP для ya.ru
dns.qry.name == "ya.ru"
Показать DNS запросы и ответы касаемые записи A
dns.qry.type == 1
Показать DNS запросы и ответы касаемые записи AAAA
dns.qry.type == 28
Показать ответы, в которых для записи A в качестве IP отправлен 216.58.196.3:
dns.a == 216.58.196.3
Показать ответы, в которых для записи AAAA в качестве IP отправлен 2a01:4f8:172:1d86::1:
dns.aaaa == 2a01:4f8:172:1d86::1
Показать записи с CNAME apollo.archlinux.org:
dns.cname == "apollo.archlinux.org"
Показать ответы длиной более 30:
dns.resp.len > 30
Показать запросы с длиной более 25:
dns.qry.name.len >25
Показать ответы DNS серверов на которых доступна рекурсия:
dns.flags.recavail == 1
Показать ответы DNS серверов на которых не доступна рекурсия:
dns.flags.recavail == 0
Желательна ли рекурсия (если запрошенный DNS сервер не имеет информацию об имени хоста, должен ли он опрашивать другие DNS сервера в поисках этой информации):
dns.flags.recdesired == 1
Если в запросе стоит 1, значит рекурсия нужна, если 0 — значит она не желательна.
Принимать ли неаутентифицированные данные (0 означает не принимать, 1 означает принимать):
dns.flags.checkdisable == 0
Чтобы увидеть, как назначаются IP адреса по протоколу DHCP:
1 udp.dstport==67 Или так:
1 bootp.option.dhcp Чтобы показать DHCP запросы:
1 bootp.option.dhcp == 3 Чтобы показать DHCP Discover:
1 bootp.option.dhcp == 1 SMB фильтр. Этот фильтр в колонке Info показывает всё дерево (шару) соединений, открытых директорий и открытых файлов в трассировке.
1 smb2.cmd==3 or smb2.cmd==5
WIFI
Фильтры для Wi-Fi фреймов Показать элементы четырёхэтапных рукопожатий (то есть фреймы протокола EAPOL):
1 eapol Показать фреймы Beacon (маяки):
1 wlan.fc.type_subtype == 0x08 Показать фреймы Probe Response:
1 wlan.fc.type_subtype == 0x05 Показать всё сразу: EAPOL, маяки, Probe Response:
1 wlan.fc.type_subtype == 0x08 || wlan.fc.type_subtype == 0x05 || eapol Показать беспроводные фреймы для определённого устройства с MAC-адресом BSSID:
1 wlan.addr==BSSID Показать EAPOL, маяки, Probe Response для определённого устройства с MAC-адресом 28:28:5D:6C:16:24:
1 (wlan.fc.type_subtype == 0x08 || wlan.fc.type_subtype == 0x05 || eapol) && wlan.addr==28:28:5D:6C:16:24 Показ всех PMKID:
1 eapol && wlan.rsn.ie.pmkid Показать PMKID, маяки, Probe Response:
1 (wlan.fc.type_subtype == 0x08 || wlan.fc.type_subtype == 0x05 || (eapol && wlan.rsn.ie.pmkid)) Показать PMKID, маяки, Probe Response для точки доступа с MAC-адресом 40:3D:EC:C2:72:B8:
1 (wlan.fc.type_subtype == 0x08 || wlan.fc.type_subtype == 0x05 || (eapol && wlan.rsn.ie.pmkid)) && wlan.addr==40:3D:EC:C2:72:B8 Показать только первое сообщение рукопожатия:
1 wlan_rsna_eapol.keydes.msgnr == 1 Показать только второе сообщение рукопожатия (можно использовать для сообщения рукопожатия с любым номером):
1 wlan_rsna_eapol.keydes.msgnr == 2 Показать фреймы для точек доступа со скоростью (Data Rate) 1 Мb/s:
1 wlan_radio.data_rate == 1 Показать фреймы для точек доступа со скоростью более 10 Мb/s:
1 wlan_radio.data_rate > 10 Показывать точки доступа на определённой частоте:
1 radiotap.channel.freq == 2412 Показывать точки доступа с определённым уровнем сигнала:
1 wlan_radio.signal_dbm > -50 Фильтры, связанные с наличием у устройства антены:
1 radiotap.present.antenna == 1 и
1 radiotap.antenna == 1 Если вы знаете другие интересные фильтры Wireshark, то поделитесь ими в комментариях.