Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слева Предыдущая версия | |||
linux:wireshark [2022/11/21 13:15] 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 ====== | ||
Анализ сетевого трафика.\\ | Анализ сетевого трафика.\\ | ||
Обычно пакеты, | Обычно пакеты, | ||
Строка 63: | Строка 183: | ||
==== Примеры ==== | ==== Примеры ==== | ||
<code bash># tshark -f "! port 22" -Y "! arp || icmp"</ | <code bash># tshark -f "! port 22" -Y "! arp || icmp"</ | ||
+ | |||