Инструменты пользователя

Инструменты сайта


linux:wireshark

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
linux:wireshark [2021/04/20 09:40]
admin создано
linux:wireshark [2024/07/20 03:43] (текущий)
admin
Строка 1: Строка 1:
-====== Wireshark ======+====== Tcpdump ====== 
 +==== Общее ==== 
 +Выводит заголовки пакетов походящих через сетевой интерфейс, которые совпадают с указанным выражением\\ 
 +Может сохранять резы в файл (-w) или читать из файла (-r), можно задать нужное кол-во (-c)\\ 
 +В конце работы пишет статистику полученных ("received by filter") и отброшенных ядром (по разным причинам, "dropped by kernel")\\
  
 +<details>
 +<summary>:!: Некоторые ключи </summary>
 +  * **-C file_size** - При записи в файл, определяет мах размер, при достижении файл ротируется, указывается в миллионах байт (1,000,000) 
 +  * **-F file** - Файл для ввода фильтрующего выражения, выражение в командной строке игнорируется
 +  * **-i interface** - Интерфейс для сбора, по умолчанию первый в списке, кроме loop
 +  * **-n (-nn)** - Выкл резолв IP DNS (порт и протокол)
 +  * **-p** - Не переводить интерфейс в смешанный режим ("promiscuous")
 +  * **-t (-tt, -ttt, -tttt)** - Не выводить stamp в каждой строке (выводить не форматированный, выводить разницу в микросекундах, выводить stamp вместе с датой по умолчанию)
 +  * **-v (-vv, -vvv)** - Более подробный вывод
 +  * **-w (-r)** - Писать в файл (читать из файла)
 +  * **-x (-X)** - Писать каждый пакет (без заголовков уровня соединения) в шестнадцаричном виде (помиио шестнадцаричного выводить их ASCII-значения)
 +  * **-D** - Интерфейсы, доступные для захвата
 +  * **-X (-A)** - Содержимое пакета, шестнадцаричная (ASCII) форма
 +
 +</details>
 +
 +
 +
 +==== Фильтрующие выражения ====
 +Без него выводятся все пакеты идущие через интерфейс, выражение состоит из одного или более примитивов\\
 +
 +<details>
 +<summary>:!: Примитивы и классификаторы</summary>
 +Примитив состоит из ID (имя или номер) следующего за одним или более классификаторами\\
 +Три вида классификаторов:\\
 +  * **type** - К какому виду относить ID. Возможные значения: host, net, port. Если не указан то подразумевается host. (Прим: 'host foo', 'net 128.3', 'port 20')\\
 +  * **dir** - Направление передачи, 'к' и/или 'от' ID. Возм значения: src, dst, src or dst and src and dst. (Прим: 'src foo', 'dst net 128.3', 'src or dst port 22'). По умолчению 'src or dst'\\
 +  * **proto** - Ограничивает совпадение конкретным протоколом. Возм значения: ether, fddi, tr, ip, ip6, arp, rarp, decnet, tcp, udp. (Прим: 'ether src foo', 'arp net 128.3', 'tcp port 21'). По умолчанию все перечисленные типы протоколов\\
 +
 +Еще есть несколько спец примитивов - ключевых слов **gateway**, **broadcast**, **less**, **greater** и арифметич выражения\\
 +
 +Примитивы могут объединяться операторами **and**, **or** и **not**. Прим:\\
 +<code>
 +host foo and not port ftp and not port ftp-data
 +</code>
 +
 +Некоторые примитивы (не все):\\
 +  * **dst (src) host <host>** - назначение/источник пакета\\
 +  * **host <host>** - источник или назначение\\
 +  * **net <net> mask <netmask>** - истина если IP адрес входит в сеть с указанной сетевой маской\\
 +  * **net <net/len>** - истина если IP входит в сеть с указанной сетевой маской, с заданным кол-вом бит\\
 +  * **dst (src) port <port>** - порт в назначении/источнике (tcp src port port)\\
 +  * **port** - так же, или назначение или источник (tcp (udp) port port)\\
 +  * **portrange** - диапазон портов (tcpdump portrange 6000-6500)\\ 
 +  * **less length** - истина если пакет имеет длинну меньше или равную указанной (эквивалент len <= lenth)\\
 +  * **greater length** - больше или равно\\
 +  * **ip proto <protocol>** - фильтрация по протоколу, из числа: icmp,icmp6,igmp,igrp,pim,ah,esp,vrrp,udp,tcp. Идентификаторы tcp,udp и icmp - ключевые слова, надо экранировать слешем (\)\\
 +</details>
 +
 +
 +<details>
 +<summary>:!: Примеры</summary>
 +<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
 +</code>
 +</details>
 +
 +
 +
 +<details>
 +<summary>:!: Формат пакета</summary>
 +В общем виде информация о пакете выглядит следующим образом:\\
 +<code>
 +[Timestamp] [Protocol] [Src IP].[Src Port] > [Dst IP].[Dst Port]: [Flags], [Seq], [Ack], [Win Size], [Options], [Data Length]
 +</code>
 +
 +  * **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** - порядковый номер данных, содержащихся в пакете. Для первого захваченного пакета это абсолютное число, последующие используют относительное число. Прим: 196:568 означает что пакет содержит байты с 196 по 568 этого потока
 +  * **Ack** - номер подтверждения, например Ack 1 у отправляющей стороны, для принимающей стороны будет следующий ожидаемый байт (568 из примера выше) 
 +  * **Win size** - размер окна, кол-во байт, доступных в приемном буфере
 +  * **Options** - далее такие параметры TCP как например **MSS** (Maximum Segment Size, максимальный размер сегмента) или масштаб окна, **nop** - заполнение, например для того чтобы добить заголовок до 4 байт, **TS val** - временная метка TCP, **ecr** - означает эхо-ответ
 +  * **Data Length** - длинна в байтах полезной нагрузки. Разница между первым и последним байтами порядкового номера
 +</details>
 +
 +
 +<details>
 +<summary>:!: </summary>
 +
 +<code bash>
 +</code>
 +</details>
 +
 +
 +
 +
 +
 +
 +====== 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 "tcp.anallysis.retransmission"</code> <code bash># tshark -Y "tcp.anallysis.retransmission"</code>
 <code bash># tshark -Y "not arp or icmp"</code> <code bash># tshark -Y "not arp or icmp"</code>
 +
  
 ==== Статистика ==== ==== Статистика ====
Строка 46: Строка 170:
 Отчет по протоколам **SMB, DNS, IP** Отчет по протоколам **SMB, DNS, IP**
 <code bash># tshark -z smb,srt -z dns,tree -z http,tree -z hosts</code> <code bash># tshark -z smb,srt -z dns,tree -z http,tree -z hosts</code>
 +
 **Список IP соединений** **Список IP соединений**
 <code bash># tshark -r cap.pcap -z conv,ip</code> <code bash># tshark -r cap.pcap -z conv,ip</code>
 +
 Указывает что из файла нужно извлечь инфо о порте-источнике всех пакетов Указывает что из файла нужно извлечь инфо о порте-источнике всех пакетов
 <code bash># tshark -z "proto,colinfo,tcp.srcport,tcp.srcport" -r cap.pcap</code> <code bash># tshark -z "proto,colinfo,tcp.srcport,tcp.srcport" -r cap.pcap</code>
 +
 Извлечет из файла инфо обо всех пакетах изображений и выведет поля **content_type** и **content_length** Извлечет из файла инфо обо всех пакетах изображений и выведет поля **content_type** и **content_length**
 <code bash># tshark -R "http.response and http.content_type contains image" -z "proto,colinfo,http.content_length,http.content_length" -z "proto,colinfo,http.content_type,http.content_type" \ -r cap.pcap</code> <code bash># tshark -R "http.response and http.content_type contains image" -z "proto,colinfo,http.content_length,http.content_length" -z "proto,colinfo,http.content_type,http.content_type" \ -r cap.pcap</code>
 +
  
 ==== Примеры ==== ==== Примеры ====
 <code bash># tshark -f "! port 22" -Y "! arp || icmp"</code> <code bash># tshark -f "! port 22" -Y "! arp || icmp"</code>
 +
  
linux/wireshark.1618911649.txt.gz · Последнее изменение: 2021/04/20 09:40 — admin