
Содержание
1. Что такое Wireshark2. Основы работы с фильтрами
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 - это не просто инструмент, а целый фреймворк для понимания сетевых технологий. Мастерство приходит с практикой и глубоким пониманием протоколов.
---
**⚠️ Дисклеймер:** Статья носит информационно-образовательный характер и не содержит инструкций для совершения противоправных действий.