В этом лабораторном занятии (LabEx) вы узнаете, как использовать фильтры захвата в Wireshark для выборочного захвата сетевого трафика в соответствии с определенными критериями. Фильтры захвата - это мощные инструменты, которые позволяют вам сосредоточиться на релевантных данных и отфильтровать нежелательный трафик, делая ваш анализ более эффективным.
Вы изучите различные выражения фильтров захвата и примените их в реальных сценариях. Эта практика повысит ваши навыки в решении сетевых проблем и анализе безопасности.
Skills Graph
%%%%{init: {'theme':'neutral'}}%%%%
flowchart RL
wireshark(("Wireshark")) -.-> wireshark/WiresharkGroup(["Wireshark"])
wireshark/WiresharkGroup -.-> wireshark/packet_capture("Packet Capture")
wireshark/WiresharkGroup -.-> wireshark/display_filters("Display Filters")
wireshark/WiresharkGroup -.-> wireshark/capture_filters("Capture Filters")
wireshark/WiresharkGroup -.-> wireshark/packet_analysis("Packet Analysis")
wireshark/WiresharkGroup -.-> wireshark/commandline_usage("Command Line Usage")
subgraph Lab Skills
wireshark/packet_capture -.-> lab-415940{{"Применение фильтров захвата Wireshark для анализа сетевого трафика"}}
wireshark/display_filters -.-> lab-415940{{"Применение фильтров захвата Wireshark для анализа сетевого трафика"}}
wireshark/capture_filters -.-> lab-415940{{"Применение фильтров захвата Wireshark для анализа сетевого трафика"}}
wireshark/packet_analysis -.-> lab-415940{{"Применение фильтров захвата Wireshark для анализа сетевого трафика"}}
wireshark/commandline_usage -.-> lab-415940{{"Применение фильтров захвата Wireshark для анализа сетевого трафика"}}
end
Понимание синтаксиса фильтров захвата
В мире сетевого анализа обработка большого объема данных может быть трудоемкой задачей. Именно здесь на помощь приходят фильтры захвата в Wireshark. Фильтры захвата позволяют собирать только те пакеты, которые соответствуют вашим критериям. Это значительно уменьшает объем данных, которые вам нужно анализировать. Важно отметить, что фильтры захвата отличаются от фильтров отображения. Фильтры отображения используются для фильтрации уже захваченных пакетов, в то время как фильтры захвата работают на этапе захвата пакетов.
Что такое фильтры захвата
Фильтры захвата используют синтаксис Berkeley Packet Filter (BPF). BPF - это специальный язык, разработанный для фильтрации сетевых пакетов до их обработки приложениями, такими как Wireshark. Применяя эти фильтры, вы можете достичь нескольких важных целей:
Уменьшить объем захваченных данных: Вместо захвата всего сетевого трафика вы можете сосредоточиться на релевантных частях, что экономит место на хранении и вычислительные ресурсы.
Сосредоточиться на определенных типах трафика: Вы можете отслеживать конкретные типы сетевой активности, такие как HTTP - запросы или SSH - соединения.
Улучшить производительность при захвате пакетов: С меньшим объемом данных процесс захвата пакетов становится быстрее и более эффективным.
Упростить последующий анализ: Когда у вас есть более маленький и релевантный набор данных, его проще анализировать и делать выводы.
Базовый синтаксис фильтров захвата
Фильтры захвата в Wireshark используют специальный синтаксис на основе языка фильтров libpcap. Рассмотрим некоторые общие элементы:
host: Этот элемент фильтрует трафик на основе IP - адреса или имени хоста. Например, если вы используете фильтр host 192.168.0.2, Wireshark захватит весь трафик, направленный к указанному IP - адресу или исходящий от него.
net: Он фильтрует трафик на основе сетевого адреса и маски подсети. Например, фильтр net 10.0.0.0/24 захватит трафик из сети 10.0.0.0/24.
port: Этот элемент фильтрует трафик на основе номера порта. Например, port 80 используется для захвата HTTP - трафика, так как HTTP обычно использует порт 80.
protocol: Он фильтрует трафик на основе протокола. Например, tcp захватит весь TCP - трафик, а udp - весь UDP - трафик.
Вы можете комбинировать эти элементы с помощью логических операторов:
and или &&: При использовании этого оператора оба условия должны быть истинными, чтобы пакет был захвачен.
or или ||: С этим оператором любое из условий может быть истинным, чтобы пакет был захвачен.
not или !: Этот оператор инвертирует условие. Таким образом, если вы используете not tcp, он захватит весь не - TCP - трафик.
Практика с простым фильтром
Теперь давайте применим наши знания на практике. Следуйте этим шагам, чтобы открыть Wireshark и применить базовый фильтр захвата:
Сначала вам нужно открыть терминал. Вы можете сделать это, нажав на иконку терминала в панели задач рабочего стола или нажав Ctrl+Alt+T.
После открытия терминала введите следующую команду, чтобы запустить Wireshark:
wireshark
Когда Wireshark откроется, вы увидите главный экран запуска. Этот экран показывает все доступные сетевые интерфейсы на вашей системе.
Найдите поле ввода "Capture Filter:" в верхней части окна Wireshark. Именно здесь вы будете вводить ваш фильтр захвата.
Введите tcp в поле фильтра. Таким образом, вы сообщаете Wireshark захватывать только TCP - пакеты.
Из списка интерфейсов выберите интерфейс, помеченный как any. Выбор any означает, что Wireshark будет захватывать пакеты на всех сетевых интерфейсах.
Нажмите синюю иконку акулы Start. Это запустит процесс захвата пакетов с примененным фильтром.
Дайте Wireshark работать около 10 - 15 секунд. В это время он захватит несколько TCP - пакетов. Вы должны увидеть, как пакеты появляются в главном окне.
Чтобы остановить захват, нажмите красный квадрат Stop в панели инструментов.
Теперь вы хотите сохранить захваченные пакеты для последующего анализа. Нажмите File > Save As в меню.
В диалоговом окне сохранения файла перейдите в каталог /home/labex/project.
Введите step1.pcapng в качестве имени файла и нажмите Save.
Теперь вы успешно применили базовый фильтр захвата для сбора только TCP - пакетов и сохранили результаты для последующего анализа.
Применение фильтров захвата для конкретного трафика
На этом этапе мы сосредоточимся на захвате конкретного сетевого трафика. В частности, вы узнаете, как применить более конкретный фильтр захвата для захвата HTTP - трафика на порту 80. HTTP - трафик на порту 80 очень распространен в интернете, так как он используется для незашифрованной веб - связи. После настройки фильтра вы используете скрипт для генерации тестового трафика. Это поможет вам увидеть, как фильтр работает в реальной ситуации.
Создание нового захвата с конкретным фильтром
Сначала настроим новый захват с фильтром для порта 80. Прежде чем начать новый захват, убедимся, что нет открытых предыдущих захватов.
Если предыдущий захват все еще открыт, закройте его, нажав File > Close или нажав кнопку Close this capture file (X) в правом верхнем углу списка пакетов. Этот шаг важен, так как наличие нескольких открытых захватов может привести к путанице и повлиять на точность нового захвата.
После закрытия предыдущего захвата вы должны увидеть приветственный экран Wireshark с перечнем доступных интерфейсов. Именно здесь вы начнете настраивать новый захват.
На этот раз используем более детальный метод настройки фильтра захвата. Нажмите кнопку Capture Options (или перейдите в меню Capture > Options). Диалог Capture Options дает больше контроля над тем, как Wireshark захватывает пакеты, в том числе настройку фильтра захвата.
В диалоге Capture Options вы увидите список интерфейсов и поле ввода Capture Filter внизу. Интерфейсы представляют сетевые подключения, доступные на вашей системе, а поле Capture Filter - это место, где вы укажете условия для пакетов, которые хотите захватить.
Нажмите на поле Capture Filter и введите фильтр: port 80. Этот фильтр захватит весь трафик (как TCP, так и UDP), который использует порт 80. Порт 80 обычно используется для HTTP - связи, поэтому, используя этот фильтр, мы сообщаем Wireshark захватывать только пакеты, связанные с HTTP - трафиком на этом порту.
В качестве альтернативы вы можете нажать на кнопку Capture Filter: и выбрать из сохраненных закладок фильтров. Это может быть полезно, если у вас есть набор фильтров, которые вы часто используете.
В диалоге выбора фильтра вы можете выбрать из предопределенных фильтров или создать новый. Пока просто введите port 80 непосредственно в поле фильтра. Это гарантирует, что мы захватываем именно тот конкретный трафик, который нас интересует.
Убедитесь, что выбран интерфейс any, и нажмите кнопку Start, чтобы начать захват пакетов, соответствующих фильтру. Выбор any означает, что Wireshark будет захватывать пакеты со всех доступных сетевых интерфейсов.
Генерация тестового трафика
Теперь, когда Wireshark захватывает трафик на порту 80, давайте сгенерируем некоторый тестовый трафик, чтобы увидеть, как работает фильтр. Это поможет вам убедиться, что фильтр работает как ожидается.
Откройте новое окно терминала, нажав на иконку терминала в панели задач или нажав Ctrl+Alt+T. В терминале вы будете запускать команды для генерации тестового трафика.
В новом терминале перейдите в проектную директорию:
cd /home/labex/project
Эта команда изменяет текущую рабочую директорию на проектную директорию, где находится скрипт для генерации трафика.
Запустите предварительно созданный скрипт для генерации имитированного HTTP - трафика:
./simulate_traffic.sh
Этот скрипт предназначен для создания простого сервера, слушающего порт 80, и отправки некоторого количества данных на него, имитируя реальный HTTP - трафик.
Вы должны увидеть вывод, похожий на следующий:
Netcat server listening on port 80...
Sending data to port 80...
Please check the Wireshark output for the data sent to port 80.
Этот вывод показывает, что скрипт работает правильно и данные отправляются на порт 80.
Этот скрипт создает простой сервер, слушающий порт 80, и отправляет короткое сообщение "Hello, Wireshark!" на него. Это сообщение будет захвачено Wireshark, если фильтр работает правильно.
Анализ захваченного трафика
Вернитесь в окно Wireshark. Вы должны увидеть пакеты, сгенерированные скриптом. Эти пакеты являются результатом тестового трафика, который мы только что сгенерировали.
Эти пакеты должны показывать связь на порту 80, соответствующую нашему фильтру захвата. Это подтверждает, что фильтр работает как ожидается.
В списке пакетов вы должны увидеть как минимум 3 пакета:
TCP SYN - пакет для установления соединения: Это первый шаг в трехэтапном рукопожатии TCP, когда клиент запрашивает установку соединения с сервером.
TCP SYN - ACK - пакет для подтверждения соединения: Сервер отвечает на запрос SYN клиента, указывая, что он готов установить соединение.
TCP - пакет, содержащий данные "Hello, Wireshark!": Это фактический пакет данных, содержащий сообщение, отправленное скриптом.
Нажмите на один из пакетов, чтобы увидеть его детали в центральной панели. Вы можете развернуть разделы, нажав на стрелки. Это позволяет просматривать разные части пакета, такие как заголовки и данные.
Теперь остановите захват, нажав красный квадрат Stop в панели инструментов. Остановка захвата важна, чтобы вы могли начать анализ захваченных пакетов без добавления новых пакетов.
Сохраните захваченные пакеты, нажав File > Save As в меню. Сохранение пакетов позволяет вам вернуться к ним позже для дальнейшего анализа.
В диалоговом окне сохранения файла перейдите в директорию /home/labex/project. Именно в этой директории мы хотим сохранить захваченные пакеты.
Введите step2.pcapng в качестве имени файла и нажмите Save. Формат файла .pcapng - это распространенный формат для хранения сетевых пакетов.
Вы успешно применили конкретный фильтр захвата для сбора только трафика на порту 80 и наблюдали за реальным трафиком, соответствующим этому фильтру.
Анализ захваченного трафика с помощью фильтров отображения (Display Filters)
В этом шаге мы научимся использовать фильтры отображения (display filters) для анализа уже захваченного трафика. Прежде чем мы начнем, важно понять разницу между фильтрами захвата (capture filters) и фильтрами отображения (display filters). Фильтры захвата (capture filters) используются для определения того, какой трафик будет собираться в первую очередь. Фильтры отображения (display filters), с другой стороны, позволяют вам сосредоточиться на конкретных частях пакетов, которые уже были захвачены. Они подобны увеличительному стеклу для ваших захваченных данных, помогая вам сосредоточиться на интересующих вас деталях.
Понимание разницы между фильтрами захвата (Capture Filters) и фильтрами отображения (Display Filters)
Давайте подробнее рассмотрим разницу между фильтрами захвата (capture filters) и фильтрами отображения (display filters).
Фильтры захвата (Capture filters) применяются до записи пакетов. Они используют синтаксис Berkeley Packet Filter (BPF). Представьте себе фильтры захвата (capture filters) как привратника у входа. Они решают, каким пакетам разрешено войти и быть захваченными.
Фильтры отображения (Display filters) применяются к пакетам, которые уже были захвачены. Они используют собственный синтаксис Wireshark. Фильтры отображения (display filters) подобны прожектору, который выделяет определенные пакеты среди уже захваченных.
Фильтры отображения (display filters) более мощные и гибкие, чем фильтры захвата (capture filters). Они позволяют выполнять более сложные поиски и анализ захваченных данных.
Фильтры отображения (display filters) не уменьшают объем захваченных данных. Они только контролируют то, что отображается в интерфейсе. Таким образом, исходные захваченные данные остаются нетронутыми, и вы можете изменять фильтр отображения (display filter) сколько угодно раз, чтобы просматривать различные аспекты данных.
Открытие захваченного файла
Теперь давайте откроем файл, содержащий пакеты, которые вы захватили ранее.
Если у вас все еще открыт Wireshark с предыдущего шага, вы можете перейти непосредственно к следующему шагу. В противном случае откройте Wireshark, а затем откройте файл, который вы сохранили на шаге 2.
Чтобы открыть ранее сохраненный файл в Wireshark:
Нажмите File > Open в строке меню. Это распространенный способ доступа к файлам во многих программных приложениях.
Перейдите в каталог /home/labex/project. Здесь хранится захваченный файл.
Выберите файл step2.pcapng и нажмите Open. Формат файла .pcapng обычно используется для хранения данных сетевых пакетов.
После открытия файла вы должны увидеть пакеты, которые вы захватили на шаге 2, отображаемые в Wireshark. Это данные, которые мы будем анализировать с помощью фильтров отображения (display filters).
Применение фильтров отображения (Display Filters)
Далее мы применим фильтры отображения (display filters) к захваченным пакетам.
Найдите панель инструментов фильтра отображения (display filter) в верхней части окна Wireshark. Она отличается от фильтра захвата (capture filter), который вы использовали ранее. Она имеет светло-зеленый фон, когда активна. Панель инструментов фильтра отображения (display filter) - это место, где вы будете вводить выражения фильтра для отображения определенных пакетов.
В поле фильтра отображения (display filter) введите tcp и нажмите Enter или нажмите кнопку со стрелкой вправо. Вводя tcp, мы говорим Wireshark показывать только пакеты, использующие протокол TCP. Это покажет только TCP-пакеты на дисплее, отфильтровывая любые другие пакеты протоколов, если они существуют.
Обратите внимание, как пакеты немедленно фильтруются на дисплее, не требуя нового захвата. Это одно из преимуществ использования фильтров отображения (display filters). Вы можете быстро анализировать различные аспекты захваченных данных без необходимости повторного захвата трафика.
Теперь давайте попробуем более конкретный фильтр отображения (display filter). Очистите текущий фильтр, нажав кнопку X в правой части панели фильтров. Это удалит предыдущий фильтр и снова покажет все захваченные пакеты.
Введите следующий фильтр для отображения пакетов, содержащих слово "Wireshark":
frame contains "Wireshark"
Этот фильтр ищет слово "Wireshark" в данных фрейма (frame data) пакетов.
Нажмите Enter или нажмите стрелку вправо, чтобы применить фильтр.
Теперь вы должны увидеть только пакеты, содержащие текст "Wireshark" - скорее всего, только один или два пакета, содержащие наше сообщение "Hello, Wireshark!". Это показывает, как фильтры отображения (display filters) можно использовать для поиска конкретной информации в захваченных пакетах.
Если вы щелкните один из этих пакетов в списке пакетов, вы можете увидеть его детали в средней панели. Найдите раздел "Data", который должен показывать текст "Hello, Wireshark!". Это позволяет вам более подробно изучить содержимое пакетов.
Создание отчета
Теперь, когда вы проанализировали трафик с помощью фильтров отображения (display filters), давайте создадим простой отчет, документирующий то, что вы нашли.
Подсчитайте количество пакетов, соответствующих фильтру frame contains "Wireshark". Число должно отображаться в строке состояния в нижней части окна Wireshark, показывая что-то вроде "Displayed: X of Y packets". Это число представляет количество пакетов, содержащих слово "Wireshark".
Откройте окно терминала, щелкнув значок терминала на панели задач или нажав Ctrl+Alt+T. Терминал - это мощный инструмент, который позволяет запускать команды на вашем компьютере.
В терминале создайте файл отчета с информацией о количестве пакетов:
echo "Number of packets matching the filter expression: 1" > /home/labex/project/report.txt
Примечание: Замените 1 в приведенной выше команде фактическим количеством пакетов, которые вы наблюдали, соответствующих фильтру. Это число может варьироваться в зависимости от того, как был запущен скрипт.
Теперь вы успешно применили фильтры отображения (display filters) для анализа захваченного сетевого трафика и задокументировали свои результаты в файле отчета.
Резюме
В этом лабораторном занятии вы научились использовать фильтры захвата Wireshark для выборочного захвата и анализа сетевого трафика в соответствии с определенными критериями. Вы отработали ключевые навыки, такие как понимание базового синтаксиса фильтров захвата на основе языка Berkeley Packet Filter, применение их при активном захвате трафика и различение между фильтрами захвата и фильтрами отображения.
Эти навыки являются важными для сетевых администраторов, аналитиков безопасности и ИТ - специалистов, которые сталкиваются с сетевыми проблемами или инцидентами безопасности. Освоение фильтров захвата позволяет более эффективно анализировать сеть, сосредотачиваясь на соответствующем трафике. По мере развития навыков анализа сети вы сможете использовать эти знания для создания сложных фильтров для избирательного захвата трафика в сложных средах.