Изображение


Содержание

1. Что такое Wireshark
2. Основы работы с фильтрами
3. Синтаксис фильтров Wireshark
4. Фильтры по протоколам
5. Фильтры по IP адресам и портам
6. Фильтры по TCP соединениям
7. Фильтры по HTTP трафику
8. Фильтры по содержимому пакетов
9. Продвинутые фильтры
10. Комбинация фильтров
11. Практические примеры использования
12. Советы по работе с Wireshark
13. Часто задаваемые вопросы
14. Заключение

Что такое Wireshark


Wireshark - это мощный инструмент для анализа сетевого трафика, который позволяет захватывать и детально анализировать сетевые пакеты. Программа поддерживает более 3000 протоколов и является стандартом де-факто для network forensics и troubleshooting.

Возможности Wireshark


- Packet Capture - захват пакетов в реальном времени
- Protocol Analysis - глубокий анализ протоколов
- Traffic Filtering - фильтрация трафика по различным критериям
- Statistical Analysis - статистика сетевого трафика
- Export Functions - экспорт данных в различные форматы
- Graphical Interface - удобный GUI для анализа
- Command Line Tools - tshark для автоматизации

Типы фильтров в Wireshark


#### Capture Filters (фильтры захвата)
- Применяются на этапе захвата пакетов
- Определяют, какие пакеты захватывать
- Используют синтаксис libpcap/tcpdump
- Экономят ресурсы системы

#### Display Filters (фильтры отображения)
- Применяются к уже захваченному трафику
- Позволяют фильтровать отображаемые пакеты
- Более гибкий синтаксис
- Не влияют на производительность захвата

Когда использовать Wireshark


- Network Troubleshooting - диагностика сетевых проблем
- Security Analysis - анализ подозрительного трафика
- Protocol Development - отладка сетевых протоколов
- Performance Analysis - анализ производительности сети
- Forensic Analysis - анализ инцидентов безопасности
- Learning - изучение сетевых технологий



Основы работы с фильтрами


Интерфейс фильтров


#### Filter Toolbar
- Filter Bar - поле для ввода фильтров отображения
- Filter Expression Buttons - быстрые фильтры по протоколам
- Filter Bookmarks - сохраненные фильтры
- Coloring Rules - цветовая подсветка пакетов

#### Capture Options
- Interface Selection - выбор сетевого интерфейса
- Capture Filter - фильтр захвата пакетов
- Options - дополнительные настройки захвата

Сохранение и загрузка фильтров


#### Filter Buttons
- Save Filter - сохранить текущий фильтр
- Manage Filter Buttons - управление сохраненными фильтрами
- Filter Button Preferences - настройки кнопок фильтров

#### Filter Macros
- $variable - использование переменных в фильтрах
- ${variable} - расширенный синтаксис переменных



Синтаксис фильтров Wireshark


Основные операторы


ОператорОписаниеПример
`==`Равно`ip.addr == 192.168.1.1`
`!=`Не равно`ip.addr != 192.168.1.1`
`<`Меньше`tcp.port < 1024`
`<=`Меньше или равно`tcp.port <= 1024`
`>`Больше`tcp.port > 1024`
`>=`Больше или равно`tcp.port >= 1024`
`&&`И (логическое)`ip.src == 1.2.3.4 && tcp.port == 80`
`||`ИЛИ (логическое)`tcp.port == 80 || tcp.port == 443`
`!`НЕ (отрицание)`!tcp.port == 80`
`()`Группировка`(tcp.port == 80 || tcp.port == 443) && ip.src == 1.2.3.4`

Функции и операторы


#### Строковые операторы
- `contains` - содержит подстроку
- `matches` - регулярное выражение
- `starts_with` - начинается с
- `ends_with` - заканчивается на

#### Арифметические операторы
- `+`, `-`, `*`, `/` - арифметические операции
- `&`, `\|`, `^` - побитовые операции
- `` - сдвиги

#### Специальные операторы
- `in {1 2 3}` - значение в множестве
- `slice[start:end]` - срез массива/строки
- `upper()`, `lower()` - преобразование регистра



Фильтры по протоколам


Основные сетевые протоколы


#### Ethernet
1. `eth` - все Ethernet пакеты
2. `eth.addr == aa:bb:cc:dd:ee:ff` - пакеты с конкретным MAC
3. `eth.src == aa:bb:cc:dd:ee:ff` - пакеты от конкретного MAC
4. `eth.dst == aa:bb:cc:dd:ee:ff` - пакеты к конкретному MAC
5. `eth.type == 0x0800` - IPv4 пакеты
6. `eth.type == 0x0806` - ARP пакеты
7. `eth.type == 0x86dd` - IPv6 пакеты

#### ARP
8. `arp` - все ARP пакеты
9. `arp.opcode == 1` - ARP request
10. `arp.opcode == 2` - ARP reply
11. `arp.src.hw_mac == aa:bb:cc:dd:ee:ff` - ARP от конкретного MAC
12. `arp.dst.hw_mac == aa:bb:cc:dd:ee:ff` - ARP к конкретному MAC

#### IPv4/IPv6
13. `ip` - все IPv4 пакеты
14. `ipv6` - все IPv6 пакеты
15. `ip.version == 4` - IPv4 пакеты
16. `ip.version == 6` - IPv6 пакеты
17. `ip.ttl <> 200` - пакеты с высоким TTL

Транспортные протоколы


#### TCP
19. `tcp` - все TCP пакеты
20. `tcp.port == 80` - HTTP трафик
21. `tcp.port == 443` - HTTPS трафик
22. `tcp.port == 22` - SSH трафик
23. `tcp.port == 23` - Telnet трафик
24. `tcp.port == 25` - SMTP трафик
25. `tcp.port == 53` - DNS трафик
26. `tcp.port == 110` - POP3 трафик
27. `tcp.port == 143` - IMAP трафик
28. `tcp.port == 3389` - RDP трафик
29. `tcp.port == 5900` - VNC трафик

#### UDP
30. `udp` - все UDP пакеты
31. `udp.port == 53` - DNS запросы
32. `udp.port == 67` - DHCP server
33. `udp.port == 68` - DHCP client
34. `udp.port == 69` - TFTP
35. `udp.port == 123` - NTP
36. `udp.port == 161` - SNMP
37. `udp.port == 500` - IKE (VPN)
38. `udp.port == 1194` - OpenVPN

#### ICMP
39. `icmp` - все ICMP пакеты
40. `icmp.type == 0` - Echo Reply (ping ответ)
41. `icmp.type == 8` - Echo Request (ping запрос)
42. `icmp.type == 3` - Destination Unreachable
43. `icmp.type == 11` - Time Exceeded
44. `icmp.code == 0` - Network unreachable



Фильтры по IP адресам и портам


IP адрес фильтры


#### Источник и получатель
45. `ip.src == 192.168.1.1` - пакеты от конкретного IP
46. `ip.dst == 192.168.1.1` - пакеты к конкретному IP
47. `ip.addr == 192.168.1.1` - пакеты с участием IP
48. `ip.src != 192.168.1.1` - пакеты не от этого IP
49. `ip.dst != 192.168.1.1` - пакеты не к этому IP

#### Диапазоны IP
50. `ip.src >= 192.168.1.0 && ip.src = 1024 && tcp.port 1000` - пакеты с высоким sequence number

#### Window size
83. `tcp.window_size == 0` - zero window пакеты
84. `tcp.window_size <> 60000` - большое окно

#### TCP handshake
86. `tcp.flags.syn == 1 && tcp.flags.ack == 0` - SYN пакеты
87. `tcp.flags.syn == 1 && tcp.flags.ack == 1` - SYN-ACK пакеты
88. `tcp.flags.ack == 1 && !tcp.flags.syn && !tcp.flags.fin` - ACK пакеты

TCP retransmissions


#### Retransmitted packets
89. `tcp.analysis.retransmission` - повторно переданные пакеты
90. `tcp.analysis.fast_retransmission` - fast retransmissions
91. `tcp.analysis.duplicate_ack` - duplicate acknowledgments

#### Lost packets
92. `tcp.analysis.lost_segment` - потерянные сегменты
93. `tcp.analysis.ack_lost_segment` - ACK на потерянные сегменты



Фильтры по HTTP трафику


HTTP методы


#### Request methods
94. `http.request.method == "GET"` - GET запросы
95. `http.request.method == "POST"` - POST запросы
96. `http.request.method == "PUT"` - PUT запросы
97. `http.request.method == "DELETE"` - DELETE запросы
98. `http.request.method == "HEAD"` - HEAD запросы
99. `http.request.method == "OPTIONS"` - OPTIONS запросы

#### Response codes
100. `http.response.code == 200` - успешные ответы
101. `http.response.code >= 400` - ошибки клиента/сервера
102. `http.response.code == 404` - Not Found
103. `http.response.code == 500` - Internal Server Error

HTTP headers


#### Request headers
104. `http contains "User-Agent"` - запросы с User-Agent
105. `http.user_agent contains "Mozilla"` - Firefox/Chrome
106. `http.referer contains "google.com"` - реферер Google
107. `http.host == "example.com"` - запросы к домену

#### Response headers
108. `http.server contains "Apache"` - Apache сервер
109. `http.server contains "nginx"` - Nginx сервер
110. `http.content_type == "text/html"` - HTML контент
111. `http.content_length > 1000` - большие ответы

HTTP cookies и сессии


#### Cookies
112. `http contains "Cookie"` - запросы с куками
113. `http.cookie contains "session_id"` - сессионные куки
114. `http.set_cookie contains "PHPSESSID"` - установка сессии

#### Authentication
115. `http.authorization` - HTTP аутентификация
116. `http.authbasic` - Basic аутентификация
117. `http.authdigest` - Digest аутентификация

HTTPS/SSL


#### SSL/TLS
118. `ssl` - все SSL/TLS трафик
119. `ssl.handshake` - handshake пакеты
120. `ssl.record.version == 0x0303` - TLS 1.2
121. `ssl.record.version == 0x0304` - TLS 1.3

#### Certificates
122. `ssl.handshake.certificate` - сертификаты
123. `ssl.handshake.extensions_server_name == "example.com"` - SNI



Фильтры по содержимому пакетов


Строковые фильтры


#### Contains оператор
124. `frame contains "password"` - пакеты содержащие "password"
125. `tcp contains "login"` - TCP пакеты с "login"
126. `udp contains "admin"` - UDP пакеты с "admin"
127. `http contains "sql"` - HTTP с "sql"

#### Matches оператор (регулярные выражения)
128. `frame matches "[Pp]assword"` - case-insensitive password
129. `http.request.uri matches "/admin/.*"` - URI начинающиеся с /admin/
130. `tcp.payload matches "user|login"` - user или login

Байтовые фильтры


#### Hex значения
131. `frame[0:4] == 45:00:00:3c` - первые 4 байта
132. `tcp.payload[0:2] == ff:fe` - BOM в UTF-16
133. `udp.payload[10:4] == de:ad:be:ef` - magic bytes

Размер пакетов


#### Packet length
134. `frame.len > 1500` - пакеты больше MTU
135. `frame.len <> 1000` - TCP payload > 1KB
138. `udp.length > 512` - UDP пакеты > 512 байт
139. `http.content_length > 10000` - HTTP контент > 10KB

Время и последовательность


#### Time-based
140. `frame.time >= "2024-01-01 00:00:00"` - пакеты после даты
141. `frame.time 1.0` - задержки > 1 секунды

#### Sequence-based
143. `frame.number > 1000` - пакеты после номера 1000
144. `frame.number % 100 == 0` - каждый 100-й пакет
145. `tcp.stream == 1` - пакеты из TCP потока 1



Продвинутые фильтры


Expert Info фильтры


#### Errors and warnings
146. `expert.message` - все сообщения эксперта
147. `expert.severity == 0` - ошибки (Error)
148. `expert.severity == 1` - предупреждения (Warning)
149. `expert.severity == 2` - заметки (Note)

#### Protocol-specific
150. `expert.protocol == "tcp"` - TCP ошибки
151. `expert.protocol == "http"` - HTTP ошибки
152. `expert.group == "checksum"` - checksum ошибки

Statistics фильтры


#### Conversations
153. `ip.addr==192.168.1.1 && ip.addr==192.168.1.2` - разговор между IP
154. `tcp.stream` - группировка по TCP потокам
155. `udp.stream` - группировка по UDP потокам

#### Endpoints
156. `eth.addr` - Ethernet endpoints
157. `ip.addr` - IP endpoints
158. `tcp.port` - TCP port endpoints
159. `udp.port` - UDP port endpoints

IO Graph фильтры


#### Throughput
160. `tcp.port==80` - HTTP throughput
161. `tcp.port==443` - HTTPS throughput
162. `udp.port==53` - DNS traffic

#### Error rates
163. `tcp.analysis.retransmission` - retransmission rate
164. `tcp.analysis.duplicate_ack` - duplicate ACK rate
165. `icmp` - ICMP traffic

Custom columns и fields


#### Protocol fields
166. `tcp.window_size` - TCP window size
167. `tcp.analysis.acks_frame` - ACK analysis
168. `http.request_in` - HTTP request timing
169. `http.response_in` - HTTP response timing

#### Custom expressions
170. `tcp.time_delta > 0.1` - TCP timing analysis
171. `frame.len / tcp.len > 2` - overhead analysis
172. `tcp.flags.push && tcp.len > 0` - push flag analysis



Комбинация фильтров


Логические комбинации


#### AND комбинации
173. `ip.src == 192.168.1.1 && tcp.port == 80` - IP и порт
174. `http && tcp.port == 8080` - HTTP на нестандартном порту
175. `ssl && tcp.port != 443` - SSL не на 443 порту

#### OR комбинации
176. `tcp.port == 80 || tcp.port == 443` - HTTP или HTTPS
177. `udp.port == 53 || tcp.port == 53` - DNS по UDP или TCP
178. `icmp.type == 8 || icmp.type == 0` - ping request/reply

#### NOT комбинации
179. `!tcp.port == 80` - не HTTP трафик
180. `!dns` - не DNS запросы
181. `!(ip.src == 192.168.1.1)` - не от конкретного IP

Комплексные фильтры


#### Network troubleshooting
182. `tcp.analysis.retransmission && tcp.stream == 1` - ретрансмиссии в потоке
183. `tcp.analysis.lost_segment` - потерянные сегменты
184. `tcp.analysis.duplicate_ack` - duplicate ACKs

#### Security analysis
185. `tcp.flags.syn == 1 && tcp.flags.ack == 0 && ip.src != 192.168.1.0/24` - внешние SYN сканы
186. `tcp.flags.rst == 1 && tcp.flags.ack == 1` - RST ответы на закрытые порты
187. `icmp.type == 3 && icmp.code == 3` - port unreachable

#### Performance analysis
188. `tcp.time_delta > 1.0` - медленные соединения
189. `frame.len > 1460` - oversized packets
190. `tcp.window_size == 0` - zero window condition



Практические примеры использования


Анализ веб-трафика


#### HTTP анализ
http
.request.method == "POST" && http contains "password"

Найти POST запросы с паролями в открытом виде.

#### HTTPS анализ
tcp
.port == 443 && ssl.handshake.extensions_server_name contains "bank"

Найти HTTPS соединения к банковским сайтам.

#### Cookie анализ
http
contains "session" && http.cookie contains "PHPSESSID"

Найти HTTP трафик с PHP сессиями.

Анализ сетевых проблем


#### Retransmissions
tcp
.analysis.retransmission && tcp.stream == 5

Найти ретрансмиссии в конкретном TCP потоке.

#### Packet loss
tcp
.analysis.lost_segment

Найти потерянные TCP сегменты.

#### High latency
tcp
.time_delta > 0.5

Найти медленные TCP соединения.

Безопасность и forensics


#### Port scanning
tcp
.flags.syn == 1 && tcp.flags.ack == 0 && ip.src != 192.168.1.0/24

Найти SYN сканы из внешней сети.

#### Malware traffic
udp
.port == 53 && dns.qry.name contains ".onion"

Найти DNS запросы к Tor hidden services.

#### Data exfiltration
tcp
.len > 10000 && !http

Найти большие TCP передачи не по HTTP.

Мониторинг приложений


#### Database queries
tcp
.port == 3306 && mysql.query contains "SELECT"

Найти MySQL SELECT запросы.

#### API calls
tcp
.port == 443 && http.request.uri contains "/api/"

Найти HTTPS API вызовы.

#### Error responses
http
.response.code >= 500

Найти HTTP ошибки сервера.



Советы по работе с Wireshark


Захват трафика


#### Выбор интерфейса
- Используйте promiscuous mode для захвата всего трафика
- Выбирайте правильный интерфейс (WiFi, Ethernet)
- Для wireless включайте monitor mode

#### Capture filters
- `host 192.168.1.1` - трафик конкретного хоста
- `net 192.168.1.0/24` - трафик подсети
- `port 80` - трафик конкретного порта
- `tcp portrange 20-25` - диапазон портов

Анализ трафика


#### Follow streams
- Правый клик → Follow → TCP Stream
- Полный просмотр TCP соединений
- Экспорт в текстовый файл

#### Expert Info
- Analyze → Expert Info
- Просмотр ошибок и предупреждений
- Группировка по протоколам

Производительность


#### Large captures
- Используйте ring buffers для больших захватов
- Фильтруйте на этапе захвата, а не отображения
- Сохраняйте только необходимые пакеты

#### Memory usage
- Закрывайте неиспользуемые окна
- Используйте display filters для больших файлов
- Рассмотрите command-line tshark для автоматизации

Безопасность


#### Sensitive data
- Не захватывайте трафик с конфиденциальной информацией
- Используйте фильтры для исключения чувствительных данных
- Удаляйте захваченные файлы после анализа

#### Legal considerations
- Получайте разрешение на захват трафика
- Соблюдайте privacy laws
- Не анализируйте чужой трафик без разрешения



Часто задаваемые вопросы


Основы Wireshark

Что такое Wireshark?
Бесплатный анализатор сетевых протоколов для захвата и анализа пакетов.

Чем отличается capture filter от display filter?
Capture filter применяется при захвате (экономит ресурсы), display filter - при просмотре захваченных пакетов.

Как захватывать трафик в Wireshark?
Выберите интерфейс → Start capture. Для wireless нужен monitor mode.

Можно ли анализировать HTTPS в Wireshark?
Да, но для расшифровки нужен приватный ключ сервера или SSLKEYLOGFILE.

Фильтры

Как создать сложный фильтр?
Используйте логические операторы && (AND), || (OR), ! (NOT) и группировку ().

Почему фильтр не работает?
Проверьте синтаксис. Display filters чувствительны к регистру. Используйте автодополнение.

Как сохранить фильтр?
Filter → Filter Button → Save. Или используйте Filter Bookmarks.

Можно ли использовать регулярные выражения?
Да, с оператором matches: `frame matches "regex"`

Производительность

Wireshark тормозит с большим файлом
Используйте display filters для уменьшения количества отображаемых пакетов.

Как анализировать гигабайтные файлы?
Используйте command-line tshark или splitcap для разделения файлов.

Захват тормозит систему
Используйте capture filters для захвата только нужного трафика.

Безопасность

Безопасно ли использовать Wireshark?
Да, но будьте осторожны с захватом чувствительного трафика.

Могут ли меня засечь при анализе сети?
При passive анализе - нет. Активное сканирование может быть обнаружено.

Как защитить захваченные данные?
Храните в зашифрованных контейнерах, удаляйте после использования.



Заключение


Wireshark фильтры - мощный инструмент для глубокого анализа сетевого трафика. Эта шпаргалка содержит более 190 готовых фильтров для различных сценариев использования.

Ключевые принципы эффективного использования:


1. Начинайте с широких фильтров - постепенно сужайте область
2. Комбинируйте фильтры - используйте логические операторы
3. Сохраняйте полезные фильтры - создавайте bookmark'и
4. Изучайте протоколы - понимание структуры помогает в анализе
5. Используйте статистики - IO Graphs, Conversations, Endpoints

Рекомендации по изучению:


- Практика - анализируйте свой собственный трафик
- Документация - читайте Wireshark Wiki и RFC
- Сообщество - участвуйте в форумах и Ask Wireshark
- Курсы - проходите официальные Wireshark University курсы
- Эксперименты - тестируйте фильтры в лабораторных условиях

Лучшие практики:


- Всегда получайте разрешение на анализ чужого трафика
- Используйте capture filters для снижения нагрузки
- Регулярно обновляйте Wireshark до последней версии
- Изучайте новые протоколы и их особенности
- Делитесь полезными фильтрами с сообществом

Wireshark - это не просто инструмент, а целый фреймворк для понимания сетевых технологий. Мастерство приходит с практикой и глубоким пониманием протоколов.

---

**⚠️ Дисклеймер:** Статья носит информационно-образовательный характер и не содержит инструкций для совершения противоправных действий.