Показаны различия между двумя версиями страницы.
Следующая версия | Предыдущая версия | ||
linux:wireshark [2021/04/20 09:40] admin создано |
linux:wireshark [2024/07/20 03:43] (текущий) admin |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ====== | + | ====== |
+ | ==== Общее ==== | ||
+ | Выводит заголовки пакетов походящих через сетевой интерфейс, | ||
+ | Может сохранять резы в файл (-w) или читать из файла (-r), можно задать нужное кол-во (-c)\\ | ||
+ | В конце работы пишет статистику полученных (" | ||
+ | < | ||
+ | < | ||
+ | * **-C file_size** - При записи в файл, определяет мах размер, | ||
+ | * **-F file** - Файл для ввода фильтрующего выражения, | ||
+ | * **-i interface** - Интерфейс для сбора, по умолчанию первый в списке, | ||
+ | * **-n (-nn)** - Выкл резолв IP DNS (порт и протокол) | ||
+ | * **-p** - Не переводить интерфейс в смешанный режим (" | ||
+ | * **-t (-tt, -ttt, -tttt)** - Не выводить stamp в каждой строке (выводить не форматированный, | ||
+ | * **-v (-vv, -vvv)** - Более подробный вывод | ||
+ | * **-w (-r)** - Писать в файл (читать из файла) | ||
+ | * **-x (-X)** - Писать каждый пакет (без заголовков уровня соединения) в шестнадцаричном виде (помиио шестнадцаричного выводить их ASCII-значения) | ||
+ | * **-D** - Интерфейсы, | ||
+ | * **-X (-A)** - Содержимое пакета, | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | ==== Фильтрующие выражения ==== | ||
+ | Без него выводятся все пакеты идущие через интерфейс, | ||
+ | |||
+ | < | ||
+ | < | ||
+ | Примитив состоит из ID (имя или номер) следующего за одним или более классификаторами\\ | ||
+ | Три вида классификаторов: | ||
+ | * **type** - К какому виду относить ID. Возможные значения: | ||
+ | * **dir** - Направление передачи, | ||
+ | * **proto** - Ограничивает совпадение конкретным протоколом. Возм значения: | ||
+ | |||
+ | Еще есть несколько спец примитивов - ключевых слов **gateway**, | ||
+ | |||
+ | Примитивы могут объединяться операторами **and**, **or** и **not**. Прим:\\ | ||
+ | < | ||
+ | host foo and not port ftp and not port ftp-data | ||
+ | </ | ||
+ | |||
+ | Некоторые примитивы (не все):\\ | ||
+ | * **dst (src) host < | ||
+ | * **host < | ||
+ | * **net <net> mask < | ||
+ | * **net < | ||
+ | * **dst (src) port < | ||
+ | * **port** - так же, или назначение или источник (tcp (udp) port port)\\ | ||
+ | * **portrange** - диапазон портов (tcpdump portrange 6000-6500)\\ | ||
+ | * **less length** - истина если пакет имеет длинну меньше или равную указанной (эквивалент len <= lenth)\\ | ||
+ | * **greater length** - больше или равно\\ | ||
+ | * **ip proto < | ||
+ | </ | ||
+ | |||
+ | |||
+ | < | ||
+ | < | ||
+ | <code bash> | ||
+ | # Ловим весь входящий трафик из локальной сети на сервер | ||
+ | tcpdump -i eth0 -n -nn -ttt dst host 192.168.2.254 | ||
+ | |||
+ | |||
+ | # Ловим весь входящий трафик исключая генерируемый нашей ssh сессией | ||
+ | tcpdump -i eth0 -n -nn -ttt 'dst host 192.168.2.254 and not (src host 192.168.2.100 and dst port 22)' | ||
+ | |||
+ | |||
+ | # Информация об DNS-общении между сервером и каким-нибудь узлом сети | ||
+ | tcpdump -i eth0 -n -nn -ttt 'host 192.168.2.13 and port 53' | ||
+ | |||
+ | |||
+ | # Отлавливаем исключительно icmp пакеты | ||
+ | tcpdump -i eth0 -n -nn -ttt 'ip proto \icmp' | ||
+ | |||
+ | # Конкретные протоколы | ||
+ | tcpdump -i eth0 icmp | ||
+ | tcpdump -i eth0 udp | ||
+ | |||
+ | tcpdump -i eth0 tcp and port 443 | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | < | ||
+ | < | ||
+ | В общем виде информация о пакете выглядит следующим образом: | ||
+ | < | ||
+ | [Timestamp] [Protocol] [Src IP].[Src Port] > [Dst IP].[Dst Port]: [Flags], [Seq], [Ack], [Win Size], [Options], [Data Length] | ||
+ | </ | ||
+ | |||
+ | * **Timestamp** - | ||
+ | * **Protocol** - протокол сетевого уровня | ||
+ | * **Src(Dst) IP. Src(Dst) Port** - IP адрес и порт источника (назначения) | ||
+ | * **Flags** - TCP флаги | ||
+ | * **[.]** - ACK (Acknowledgment) (подтверждение) | ||
+ | * **[S]** - SYN (Start Connection) | ||
+ | * **[P]** - PSH (Push Data) | ||
+ | * **[F]** - FIN (Finish Connection) | ||
+ | * **[R]** - RST (Reset Connection) | ||
+ | * **[S.]** - SYN-ACK (SynAck Packet) | ||
+ | * **Seq** - порядковый номер данных, | ||
+ | * **Ack** - номер подтверждения, | ||
+ | * **Win size** - размер окна, кол-во байт, доступных в приемном буфере | ||
+ | * **Options** - далее такие параметры TCP как например **MSS** (Maximum Segment Size, максимальный размер сегмента) или масштаб окна, **nop** - заполнение, | ||
+ | * **Data Length** - длинна в байтах полезной нагрузки. Разница между первым и последним байтами порядкового номера | ||
+ | </ | ||
+ | |||
+ | |||
+ | < | ||
+ | < | ||
+ | |||
+ | <code bash> | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ====== Wireshark ====== | ||
Анализ сетевого трафика.\\ | Анализ сетевого трафика.\\ | ||
Обычно пакеты, | Обычно пакеты, | ||
Строка 7: | Строка 127: | ||
===Linux wifi:=== | ===Linux wifi:=== | ||
**# ifconfig wlan0 down && iwconfig wlan0 mode monitor && ifconfig wlan0 up** | **# ifconfig wlan0 down && iwconfig wlan0 mode monitor && ifconfig wlan0 up** | ||
+ | |||
Строка 14: | Строка 135: | ||
Запуск **tshark** без аргументов, | Запуск **tshark** без аргументов, | ||
- | ==== Аргументы ==== | ||
* **-D** - список доступных интерфейсов | * **-D** - список доступных интерфейсов | ||
* **-i** - нужный интерфейс (можно номер) | * **-i** - нужный интерфейс (можно номер) | ||
Строка 29: | Строка 149: | ||
* **-w** - файл для сохранения | * **-w** - файл для сохранения | ||
* **-r** - просмотр указанного файла | * **-r** - просмотр указанного файла | ||
+ | |||
+ | |||
==== Фильтры захвата ==== | ==== Фильтры захвата ==== | ||
Строка 35: | Строка 157: | ||
* **[src|dst] net** - подсеть | * **[src|dst] net** - подсеть | ||
* **[src|dst] port** - порт | * **[src|dst] port** - порт | ||
+ | |||
==== Просмотр ==== | ==== Просмотр ==== | ||
Строка 41: | Строка 164: | ||
<code bash># tshark -Y " | <code bash># tshark -Y " | ||
<code bash># tshark -Y "not arp or icmp"</ | <code bash># tshark -Y "not arp or icmp"</ | ||
+ | |||
==== Статистика ==== | ==== Статистика ==== | ||
Строка 46: | Строка 170: | ||
Отчет по протоколам **SMB, DNS, IP** | Отчет по протоколам **SMB, DNS, IP** | ||
<code bash># tshark -z smb,srt -z dns,tree -z http,tree -z hosts</ | <code bash># tshark -z smb,srt -z dns,tree -z http,tree -z hosts</ | ||
+ | |||
**Список IP соединений** | **Список IP соединений** | ||
<code bash># tshark -r cap.pcap -z conv, | <code bash># tshark -r cap.pcap -z conv, | ||
+ | |||
Указывает что из файла нужно извлечь инфо о порте-источнике всех пакетов | Указывает что из файла нужно извлечь инфо о порте-источнике всех пакетов | ||
<code bash># tshark -z " | <code bash># tshark -z " | ||
+ | |||
Извлечет из файла инфо обо всех пакетах изображений и выведет поля **content_type** и **content_length** | Извлечет из файла инфо обо всех пакетах изображений и выведет поля **content_type** и **content_length** | ||
<code bash># tshark -R " | <code bash># tshark -R " | ||
+ | |||
==== Примеры ==== | ==== Примеры ==== | ||
<code bash># tshark -f "! port 22" -Y "! arp || icmp"</ | <code bash># tshark -f "! port 22" -Y "! arp || icmp"</ | ||
+ | |||