Анализ сетевого трафика с помощью фильтров отображения Wireshark

WiresharkWiresharkBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

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

Освоив эти фильтры, вы сможете быстро изолировать и изучать определенные типы трафика. Это упрощает ваш анализ и повышает вашу способность обнаруживать и обрабатывать инциденты безопасности.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL wireshark(("Wireshark")) -.-> wireshark/WiresharkGroup(["Wireshark"]) wireshark/WiresharkGroup -.-> wireshark/interface("Interface Overview") wireshark/WiresharkGroup -.-> wireshark/packet_capture("Packet Capture") wireshark/WiresharkGroup -.-> wireshark/display_filters("Display Filters") wireshark/WiresharkGroup -.-> wireshark/export_packets("Exporting Packets") wireshark/WiresharkGroup -.-> wireshark/packet_analysis("Packet Analysis") wireshark/WiresharkGroup -.-> wireshark/commandline_usage("Command Line Usage") subgraph Lab Skills wireshark/interface -.-> lab-415944{{"Анализ сетевого трафика с помощью фильтров отображения Wireshark"}} wireshark/packet_capture -.-> lab-415944{{"Анализ сетевого трафика с помощью фильтров отображения Wireshark"}} wireshark/display_filters -.-> lab-415944{{"Анализ сетевого трафика с помощью фильтров отображения Wireshark"}} wireshark/export_packets -.-> lab-415944{{"Анализ сетевого трафика с помощью фильтров отображения Wireshark"}} wireshark/packet_analysis -.-> lab-415944{{"Анализ сетевого трафика с помощью фильтров отображения Wireshark"}} wireshark/commandline_usage -.-> lab-415944{{"Анализ сетевого трафика с помощью фильтров отображения Wireshark"}} end

Запуск Wireshark и анализ сетевого трафика

В этом шаге мы начнем использовать Wireshark. Сначала вы узнаете, как его запустить. Затем вы либо захватите сетевой трафик, либо используете предоставленный образец файла для анализа. Понимание интерфейса Wireshark имеет решающее значение, поскольку оно помогает вам просматривать и анализировать данные пакетов.

Запуск Wireshark

Чтобы запустить Wireshark, вам нужно открыть окно терминала. Это можно сделать, щелкнув значок терминала на панели задач или нажав Ctrl+Alt+T. После открытия терминала вы будете использовать команду для запуска Wireshark. В терминале введите следующую команду и нажмите Enter:

wireshark

Эта команда сообщает вашей системе о запуске приложения Wireshark. Через несколько секунд Wireshark откроется. Вы должны увидеть окно, похожее на показанное ниже:

Wireshark Main Interface Example

Работа с файлами захвата сети

Для этой лабораторной работы у вас есть два варианта:

Вариант 1: Использование предоставленного образца файла

Образец файла захвата был подготовлен для вас по адресу /home/labex/project/sample.pcapng. Этот файл содержит разнообразный сетевой трафик, который вы можете проанализировать. Чтобы открыть этот файл:

  1. В Wireshark перейдите в File > Open
  2. Перейдите в /home/labex/project/sample.pcapng
  3. Нажмите "Open"
Wireshark Open File Screenshot

Файл загрузится в Wireshark, показывая различные пакеты, которые были захвачены ранее.

Вариант 2: Захват собственного трафика

Если вы предпочитаете захватывать свой собственный трафик:

  1. В главном окне Wireshark найдите список доступных сетевых интерфейсов.

  2. Найдите интерфейс eth1. В этой лабораторной среде eth1 является основным сетевым интерфейсом, который мы будем использовать для захвата пакетов.

  3. Дважды щелкните eth1. Это действие немедленно запускает процесс захвата пакетов.

  4. Сгенерируйте некоторый сетевой трафик, открыв новый терминал и запустив:

    curl www.google.com

    Note: Free users can not connect to the internet. Upgrade to a pro to capture your own traffic.

  5. Как только вы захватите достаточно пакетов (стремитесь как минимум к 20-30 пакетам), нажмите красную квадратную кнопку "Stop" на панели инструментов Wireshark.

Понимание интерфейса Wireshark

Интерфейс Wireshark разделен на три основные панели, каждая из которых имеет определенную цель:

  1. Список пакетов (Packet List) (верхняя панель): Эта панель показывает все пакеты, которые были захвачены в порядке их получения. Она дает вам краткий обзор захваченного трафика.
  2. Детали пакета (Packet Details) (средняя панель): Когда вы выбираете пакет в верхней панели, эта средняя панель показывает детали этого пакета в иерархическом формате. Она разбивает структуру пакета, показывая такую информацию, как IP-адреса источника и назначения, типы протоколов и многое другое.
  3. Байты пакета (Packet Bytes) (нижняя панель): Эта панель отображает необработанные байты выбранного пакета в шестнадцатеричном формате. Она полезна для углубленного анализа, особенно когда вам нужно посмотреть на точные данные, которые передаются.

Чтобы увидеть, как эти панели работают вместе, щелкните разные пакеты в верхней панели. Вы увидите, как соответствующие детали и необработанные байты обновляются в средней и нижней панелях.

Понимание и применение базовых фильтров отображения

В этом шаге мы рассмотрим фильтры отображения (display filters) в Wireshark. Фильтры отображения — это важные инструменты для анализа сетевого трафика. Они помогают вам сосредоточиться на определенных типах пакетов, вместо того чтобы просматривать все захваченные данные. К концу этого раздела вы узнаете, что такое фильтры отображения, почему они полезны и как применять основные из них для изоляции определенных типов сетевого трафика.

Что такое фильтры отображения

При анализе сетевого трафика просмотр каждого захваченного пакета может быть утомительным. Обычно вы хотите сосредоточиться на определенных типах пакетов. Именно здесь на помощь приходят фильтры отображения Wireshark. Они позволяют отображать только те пакеты, которые соответствуют определенным критериям. Это делает процесс анализа намного более эффективным, поскольку вы не тратите время на нерелевантные данные.

Фильтры отображения в Wireshark используют специальный синтаксис. Этот синтаксис позволяет фильтровать пакеты на основе различных атрибутов, таких как протоколы, IP-адреса, порты и даже содержимое пакетов. Понимание этого синтаксиса является ключом к эффективному использованию фильтров отображения.

Панель фильтров (Filter Toolbar)

Взгляните на верхнюю часть окна Wireshark. Вы заметите текстовое поле. Оно может быть помечено как "Apply a display filter..." или просто показывать "Expression...". Это место, где вы будете вводить свои фильтры отображения. После ввода фильтра и нажатия Enter Wireshark будет использовать этот фильтр для отображения только релевантных пакетов.

Wireshark Filter Toolbar Location

Базовые фильтры протоколов (Basic Protocol Filters)

Начнем с простого примера. Предположим, вы хотите просмотреть только HTTP-трафик. HTTP — это протокол, используемый для просмотра веб-страниц. Для этого вы введете фильтр в панель фильтров. Введите следующий фильтр и нажмите Enter:

http
Wireshark HTTP Filter Output

После применения этого фильтра Wireshark будет отображать только HTTP-пакеты. Все остальные пакеты будут временно скрыты. Вы заметите, что панель фильтров становится зеленой при применении допустимого фильтра. Это визуальная индикация того, что ваш фильтр работает правильно.

Теперь вывод должен показывать только пакеты, связанные с HTTP-трафиком. Обычно это включает веб-запросы (когда вы запрашиваете информацию с веб-сайта) и ответы (когда веб-сайт отправляет вам информацию). Если вы не видите HTTP-трафик в образце файла, вы можете попробовать другие протоколы, которые могут присутствовать, такие как TCP, UDP или DNS:

tcp

Или попробуйте сгенерировать больше HTTP-трафика, выполнив команду curl в терминале:

curl www.google.com

Фильтры IP-адресов (IP Address Filters)

Далее давайте отфильтруем трафик на основе IP-адресов. IP-адрес — это уникальный идентификатор устройства в сети. Сначала посмотрите на свой список пакетов. Вы увидите столбцы с надписями "Source" (Источник) и "Destination" (Назначение). В этих столбцах отображаются IP-адреса устройств, отправляющих и получающих пакеты.

После того, как вы определили IP-адрес, который часто встречается в вашем захвате (например, предположим, что вы видите 192.168.1.1), вы можете использовать его для создания фильтра. Введите следующий фильтр в панель фильтров, чтобы увидеть только пакеты от этого источника:

ip.src == 192.168.3.131
Wireshark IP Address Filter Example

Вы можете заменить 192.168.3.131 на IP-адрес, который вы действительно видите в своем захвате. После применения этого фильтра будут показаны только пакеты с этим IP-адресом источника.

Если вы хотите снова увидеть все пакеты, вы можете очистить текущий фильтр. Просто нажмите кнопку "Clear" (X) в правой части панели фильтров.

Фильтры портов (Port Filters)

Многие сетевые службы работают на определенных портах. Порт — это как дверь на устройстве, которая позволяет определенным типам сетевого трафика входить или выходить. Например, HTTP обычно использует порт 80. Чтобы отфильтровать пакеты по номеру порта, вы можете использовать следующий фильтр:

tcp.port == 80

Этот фильтр будет показывать как входящие, так и исходящие пакеты, использующие TCP-порт 80. Вы также можете попробовать другие распространенные порты, такие как 443 (HTTPS) или 53 (DNS), в зависимости от того, что доступно в вашем захвате.

Комбинирование фильтров (Combining Filters)

Вы можете сделать свои фильтры более мощными, комбинируя их с помощью логических операторов, таких как and (и) и or (или). Например, если вы хотите показывать только HTTP-трафик, использующий порт 80, вы можете использовать следующий фильтр:

http and tcp.port == 80
Example of combined filter in Wireshark

Попробуйте применить различные комбинации фильтров и понаблюдайте, как меняются отображаемые пакеты. Помните, что перед тем, как попробовать новый фильтр, вы можете либо очистить предыдущий, нажав кнопку "Clear", либо изменить существующий фильтр непосредственно в панели фильтров, чтобы построить на его основе.

Продвинутые методы фильтрации (Advanced Filtering Techniques)

В этом шаге мы рассмотрим, как создавать более сложные фильтры для детального анализа сетевого трафика. Как начинающий, вы можете задаться вопросом, зачем нам нужна продвинутая фильтрация. Что ж, в реальных сценариях файлы захвата сети могут быть чрезвычайно большими, заполненными всевозможным трафиком. Продвинутые методы фильтрации подобны мощному увеличительному стеклу для специалистов по безопасности. Они помогают нам быстро выделить подозрительный или важный трафик из моря данных в этих больших файлах захвата.

Сложные фильтры с несколькими условиями (Complex Filters with Multiple Conditions)

Wireshark дает вам возможность создавать сложные фильтры, объединяя несколько условий. Это очень полезно, когда вы хотите быть более точным в своем анализе трафика. Давайте начнем с создания фильтра для поиска HTTP GET-запросов.

http.request.method == "GET"

Этот фильтр предназначен для отображения только HTTP-пакетов, содержащих GET-запросы. Когда вы примените этот фильтр, вы увидите пакеты, которые являются запросами, отправленными на веб-серверы. Причина, по которой мы используем этот фильтр, заключается в том, что GET-запросы являются распространенным типом HTTP-запроса, используемого для получения данных с сервера. Изолируя эти запросы, мы можем сосредоточиться на действиях по извлечению данных в сети.

Если ваш образец файла не содержит HTTP GET-запросов, попробуйте этот альтернативный фильтр для поиска TCP SYN-пакетов, которые указывают на попытки подключения:

tcp.flags.syn == 1

Теперь давайте сделаем наш фильтр более конкретным. Мы добавим условие порта.

tcp.port == 80 and http.request.method == "GET"

Этот новый фильтр показывает только HTTP GET-запросы, которые происходят на стандартном HTTP-порту (80). Стандартный HTTP-порт широко используется для незашифрованного веб-трафика. Добавляя это условие порта, мы сужаем наш поиск только до тех GET-запросов, которые используют типичный канал связи HTTP.

Фильтрация на основе размера пакета (Filtering Based on Packet Size)

Сетевые атаки часто включают пакеты с необычными размерами. Злоумышленники могут использовать большие или маленькие пакеты, чтобы скрыть вредоносные данные или нарушить нормальное функционирование сети. Чтобы фильтровать на основе размера пакета, мы используем определенный синтаксис.

tcp.len >= 100 and tcp.len <= 500

Этот фильтр отображает TCP-пакеты с длиной полезной нагрузки (payload length) от 100 до 500 байт. Вы можете настроить эти значения в соответствии со своими потребностями. Например, если вы подозреваете, что атака включает более крупные пакеты, вы можете увеличить верхний предел. Фильтруя на основе размера пакета, мы можем выявить аномальные модели трафика, которые могут указывать на атаку.

Фильтрация на основе определенного содержимого (Filtering Based on Specific Content)

Вы также можете фильтровать трафик на основе определенного содержимого внутри пакетов. Это очень полезно, когда вы ищете трафик, связанный с определенным веб-сайтом или службой. Например, давайте найдем HTTP-трафик, связанный с определенным веб-сайтом.

http.host contains "google"
Wireshark HTTP Host Filter

Этот фильтр показывает только HTTP-трафик, где заголовок host (host header) содержит "google". Вы можете заменить "google" любым доменом, который вам интересно проанализировать. Заголовок host в HTTP-запросе сообщает серверу, к какому веб-сайту пытается получить доступ клиент. Фильтруя на основе заголовка host, мы можем сосредоточиться на трафике, связанном с определенным доменом.

Если ваш образец файла не содержит HTTP-трафик с заголовками host, попробуйте этот более общий фильтр содержимого:

frame contains "http"

Использование оператора "contains" для поиска текста (Using the "contains" Operator for Text Searching)

Оператор contains — это удобный инструмент для поиска определенных текстовых строк в пакетах. Он позволяет нам искать определенные ключевые слова в данных пакета.

frame contains "password"

Этот фильтр показывает пакеты, содержащие слово "password" где-либо в данных пакета. Это может быть очень полезно для выявления возможных проблем с безопасностью. Например, если пароли отправляются в открытом виде (что является большим риском для безопасности), этот фильтр может помочь нам обнаружить эти пакеты.

Или попробуйте этот фильтр:

frame contains "login"
Wireshark Password Filter Example

Отрицание фильтров (Negating Filters)

Иногда вам может потребоваться увидеть весь трафик, за исключением определенных типов. Именно здесь на помощь приходит оператор not.

not arp

Этот фильтр скрывает все ARP-пакеты. ARP (Address Resolution Protocol) используется для сопоставления IP-адресов с MAC-адресами в локальной сети. Иногда ARP-трафик может быть очень распространенным и может загромождать ваш анализ. Используя оператор not, мы можем исключить этот тип трафика и сосредоточиться на других, более релевантных пакетах.

Сохранение и применение закладок фильтров (Saving and Applying Filter Bookmarks)

Если вы часто используете определенные фильтры, вам не нужно вводить их каждый раз. Вы можете сохранить их в виде закладок. Вот как это сделать:

  1. Введите фильтр в панель фильтров. Это место, где вы вводите выражения фильтров, которые мы изучали.
  2. Нажмите кнопку "+" в правой части панели фильтров. Эта кнопка используется для сохранения текущего фильтра в качестве закладки.
  3. Дайте своему фильтру имя и нажмите "OK". Название фильтра облегчает его идентификацию в дальнейшем.

После того, как вы сохранили свой фильтр, вы можете применить его, щелкнув его имя в раскрывающемся меню фильтров. Это экономит ваше время и усилия, особенно когда вы проводите повторный анализ.

Экспорт отфильтрованных пакетов (Exporting Filtered Packets)

После того, как вы отфильтровали свой трафик, чтобы показывать только интересующие вас пакеты, вы можете сохранить только эти пакеты в новый файл. Это полезно для обмена конкретными результатами с коллегами или для дальнейшего анализа. Вот как это сделать:

  1. Примените желаемый фильтр. Убедитесь, что вы настроили фильтр так, чтобы показывать только те пакеты, которые вы хотите сохранить.
  2. Нажмите File > Export Specified Packets (Файл > Экспортировать указанные пакеты). Этот параметр позволяет экспортировать определенный набор пакетов.
  3. Убедитесь, что в разделе Packet Range (Диапазон пакетов) выбрано "Displayed" (Отображаемые). Это гарантирует, что будут экспортированы только те пакеты, которые в данный момент видны (т. е. те, которые соответствуют вашему фильтру).
  4. Выберите имя файла и местоположение. Здесь вы решаете, где сохранить новый файл захвата и как его назвать.
  5. Нажмите "Save" (Сохранить). Это создает новый файл захвата, содержащий только пакеты, соответствующие вашему фильтру.

В этом шаге мы сосредоточимся на использовании фильтров Wireshark для анализа безопасности. Анализ безопасности имеет решающее значение в мире кибербезопасности, поскольку он помогает нам выявлять потенциально вредоносные действия в сетевом трафике. К концу этого раздела вы сможете идентифицировать различные типы угроз безопасности с помощью определенных фильтров Wireshark.

Выявление действий по сканированию портов (Identifying Port Scanning Activities)

Сканирование портов (port scanning) — это распространенный метод, используемый злоумышленниками для сбора информации о целевой системе. Злоумышленники используют его для поиска открытых портов в сети, которые затем можно использовать. Чтобы обнаружить потенциальное сканирование портов, мы ищем большое количество попыток подключения от одного источника к нескольким портам.

Давайте используем конкретный фильтр для выявления таких действий. Попробуйте этот фильтр в Wireshark:

tcp.flags.syn == 1 and tcp.flags.ack == 0

Этот фильтр показывает SYN-пакеты без флага ACK. В TCP-соединении SYN-пакет является первым, отправленным для инициирования соединения, а ACK-пакет используется для подтверждения соединения. Когда мы видим много SYN-пакетов без ACK от одного источника к разным портам назначения, это является сильным признаком сканирования портов.

Обнаружение подозрительного DNS-трафика (Detecting Suspicious DNS Traffic)

DNS-туннелирование (DNS tunneling) и другие атаки на основе DNS становятся все более распространенными. Эти атаки используют протокол DNS для сокрытия вредоносных действий, таких как эксфильтрация данных (data exfiltration) или связь команд и управления (command and control communication). Чтобы обнаружить такие атаки, нам нужно искать необычный DNS-трафик.

Используйте этот фильтр для изучения DNS-запросов:

dns

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

Выявление попыток перебора паролей (Identifying Password Brute Force Attempts)

Атаки перебором паролей (password brute force attacks) — это распространенный способ для злоумышленников получить несанкционированный доступ к таким службам, как SSH или FTP. В атаке перебором злоумышленник пытается использовать несколько комбинаций паролей, пока не найдет правильный.

Чтобы обнаружить потенциальные попытки перебора паролей, мы можем отфильтровать неудачные попытки входа в систему. Используйте этот фильтр:

ftp contains "530" or ssh contains "Failed"

Этот фильтр показывает FTP- и SSH-пакеты, содержащие общие сообщения об ошибках. Если вы видите несколько сбоев от одного и того же источника, это может указывать на попытку перебора.

Анализ ответов об ошибках HTTP (Analyzing HTTP Error Responses)

Атаки на веб-приложения часто генерируют ответы об ошибках HTTP. Злоумышленники могут попытаться использовать уязвимости в веб-приложениях, и эти попытки могут привести к ответам об ошибках от сервера.

Отфильтруйте эти ответы об ошибках с помощью:

http.response.code >= 400

Этот фильтр показывает пакеты HTTP-ответов с кодами состояния 400 или выше. Все эти коды состояния представляют ответы об ошибках. Изучая эти пакеты, мы можем выявить попытки использования веб-уязвимостей.

Поиск учетных данных в открытом виде (Finding Clear-Text Credentials)

Передача учетных данных в открытом виде (clear text) является серьезным риском для безопасности. Если злоумышленник перехватит эти учетные данные, он может получить несанкционированный доступ к системе.

Чтобы обнаружить учетные данные в открытом виде, используйте этот фильтр:

http contains "user" or http contains "pass" or http contains "login"
Wireshark Clear-Text Cred Filter

Этот фильтр помогает нам найти HTTP-трафик, который может содержать информацию для входа в систему. Внимательно изучите пакеты, соответствующие этому фильтру, чтобы выявить потенциальные риски для безопасности.

Практический сценарий: анализ образца трафика и генерация нового трафика (Practice Scenario: Analyzing Sample Traffic and Generating New Traffic)

Теперь, когда вы изучили различные фильтры, ориентированные на безопасность, пришло время применить свои знания на практике. Вы можете либо проанализировать предоставленный образец файла, либо сгенерировать и проанализировать новый трафик.

Анализ образца файла (Analyzing the Sample File)

  1. Если вы используете предоставленный образец файла (/home/labex/project/sample.pcapng), попробуйте применить некоторые из фильтров безопасности, которые мы обсуждали, чтобы выявить какие-либо интересные закономерности:
tcp.flags.syn == 1 and tcp.flags.ack == 0
  1. Ищите закономерности, которые могут указывать на сканирование, подозрительные соединения или другие проблемы безопасности.

Генерация и анализ нового трафика (Generating and Analyzing New Traffic)

  1. В качестве альтернативы откройте новое окно терминала. В этом окне мы сгенерируем некоторый HTTP-трафик с несколькими запросами. Выполните следующие команды:
for i in {1..5}; do
  curl -I www.google.com
  sleep 1
done

Эти команды отправляют пять HTTP HEAD-запросов на www.google.com с интервалом в одну секунду между каждым запросом.

  1. Далее перейдите в Wireshark и примените этот фильтр, чтобы найти все HTTP-запросы:
http.request

Этот фильтр покажет все HTTP-запросы в захваченном трафике.

  1. Просмотрите эти пакеты, чтобы выявить закономерности нормального HTTP-трафика. Обратите внимание на заголовки, частоту запросов и другие детали.

  2. Наконец, попробуйте создать фильтр, который может отличать обычный просмотр HTTP от автоматизированных инструментов сканирования. Например:

http.request and !(http.user_agent contains "Mozilla")
Wireshark HTTP User Agent Filter

Этот фильтр показывает HTTP-запросы, у которых нет user agent браузера. Поскольку большая часть обычного веб-просмотра выполняется с использованием браузеров с Mozilla в user agent, запросы без него могут указывать на автоматизированные инструменты, а не на обычный просмотр.

Практикуя эти методы фильтрации, ориентированные на безопасность, вы разовьете навыки, необходимые для быстрого выявления подозрительного трафика в реальных захватах сети.

Итог (Summary)

В этой лабораторной работе вы научились использовать фильтры отображения (display filters) Wireshark для анализа сетевого трафика и выявления потенциальных угроз безопасности. Вы начали с работы либо с предоставленным образцом файла захвата (capture file), либо с захвата живого сетевого трафика и ознакомления с интерфейсом Wireshark. Затем вы освоили базовые фильтры отображения для изоляции определенных типов трафика в соответствии с протоколами, IP-адресами и портами. Вы также улучшили свои навыки с помощью сложных методов фильтрации, объединяя несколько условий и выполняя поиск определенного содержимого. Наконец, вы применили эти навыки в сценариях анализа безопасности для обнаружения подозрительных действий, таких как сканирование портов (port scanning), раскрытие учетных данных (credential exposure) и потенциальные атаки.

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