Введение
В этом практическом занятии (лабораторной работе) вы научитесь фильтровать и анализировать HTTP-трафик с использованием Tshark, командной строковой утилиты Wireshark. Вы будете практиковать захват веб-трафика на порту 80 и выделение HTTP-запросов с помощью специальных фильтрационных методов.
В упражнениях вас будут руководить по извлечению HTTP-методов (GET/POST) и форматированию вывода в формате JSON для структурированного анализа. Эти навыки являются важными для решения проблем в сети и инспекции трафика.
Захват HTTP с использованием -f "tcp port 80"
На этом этапе вы научитесь захватывать HTTP-трафик с использованием фильтра отображения Wireshark -f "tcp port 80". HTTP (Hypertext Transfer Protocol, Протокол передачи гипертекста) является основой для передачи данных в Всемирной паутине и обычно использует порт 80 для незашифрованного веб-трафика. Этот фильтр позволяет выделить HTTP-трафик среди других сетевых протоколов, упрощая анализ веб-коммуникаций.
Прежде чем приступить, разберемся с некоторыми основами:
- Сетевые порты можно представить как двери, через которые определенные типы сетевого трафика входят и выходят.
- Порт 80 является стандартным портом, назначенным для HTTP-трафика.
- Wireshark может фильтровать трафик на основе номеров этих портов.
Сначала откроем Wireshark в среде виртуальной машины LabEx. Следуйте этим шагам внимательно:
- Откройте терминал на рабочем столе Xfce (вы можете найти его в меню Приложения > Система > Терминал).
- Перейдите в каталог по умолчанию, где мы будем хранить наши файлы с захваченным трафиком:
cd ~/project
- Запустите Wireshark с фильтром отображения для HTTP-трафика:
sudo wireshark -k -f "tcp port 80"
Разберем параметры этой команды:
-k: Это сообщает Wireshark немедленно начать захватывать пакеты.-f "tcp port 80": Это наш фильтр захвата, который информирует Wireshark записывать только TCP-трафик, направленный на порт 80 или исходящий с него.
Теперь нам нужно создать некоторый HTTP-трафик для анализа. Откройте другое окно терминала (вы можете щелкнуть правой кнопкой мыши по рабочему столу и выбрать "Открыть терминал") и сгенерируйте тестовый трафик с помощью следующей команды:
curl http://example.com
В окне Wireshark вы увидите захваченные пакеты, которые показывают:
- HTTP-запрос вашего компьютера к example.com (обычно начинающийся с "GET / HTTP/1.1").
- Ответ веб-сервера (обычно содержащий "HTTP/1.1 200 OK").
Каждый пакет содержит важные детали, такие как:
- IP-адреса источника и назначения.
- Протокол (HTTP).
- Размер пакета.
- Информация о времени.
Для начинающих: Wireshark можно сравнить с микроскопом для сетевого трафика. Фильтр tcp port 80 работает как специальная линза, которая показывает только веб-трафик, игнорируя другие типы сетевой коммуникации. Такой фокусированный взгляд помогает понять, как веб-браузеры и серверы общаются между собой, не перегружаясь информацией о другой сетевой активности.
Фильтрация запросов с использованием -Y "http.request"
На этом этапе вы научитесь фильтровать HTTP-запросы с использованием фильтра отображения Wireshark -Y "http.request". Этот фильтр позволяет сосредоточиться именно на пакетах HTTP-запросов, исключая ответы и другой сетевой трафик. Понимание HTTP-запросов является фундаментом для анализа веб-трафика, так как они представляют собой исходные сообщения, отправляемые клиентами на серверы.
Построив на предыдущем этапе, где мы захватили HTTP-трафик, давайте теперь отфильтруем только HTTP-запросы:
- Сначала убедитесь, что вы находитесь в каталоге по умолчанию, где будем работать с нашими файлами с захваченным трафиком:
cd ~/project
- Запустите Wireshark с фильтром отображения для HTTP-запросов:
sudo wireshark -k -Y "http.request"
Опция -Y применяет фильтр отображения (отличающийся от фильтра захвата -f, использованного на первом этапе). В то время как фильтры захвата ограничивают то, что записывается, фильтры отображения помогают анализировать уже захваченные данные. Этот конкретный фильтр будет показывать только пакеты, содержащие HTTP-запросы.
- Чтобы сгенерировать тестовый трафик для анализа, откройте другой терминал и запустите эти распространенные команды HTTP-клиента:
curl http://example.com
wget http://example.com
Для начинающих: Фильтр отображения http.request специально ищет пакеты HTTP-запросов. Это полезно, когда вы хотите анализировать только запросы, отправляемые от клиентов к серверам, игнорируя ответы серверов. Синтаксис фильтра является частью мощного языка фильтров отображения Wireshark, который позволяет точно выбирать, какие пакеты просматривать на основе критериев, специфичных для протокола.
В окне Wireshark теперь вы должны увидеть только пакеты HTTP-запросов от команд curl и wget. Каждый пакет будет отображать важную информацию о протоколе HTTP, включая:
- HTTP-метод (GET, POST и т.д.), который указывает тип запроса.
- Запрашиваемый URI, показывающий конкретный ресурс, к которому осуществляется доступ.
- Версию HTTP (например, HTTP/1.1), показывающую версию протокола.
- Информацию о хосте, идентифицирующую целевой сервер.
Извлечение метода с использованием -e http.request.method
На этом этапе мы сосредоточимся на извлечении HTTP-методов запросов из сетевого трафика с помощью командной строки Wireshark - tshark. HTTP-методы - это глаголы, которые указывают на желаемое действие, которое должно быть выполнено над ресурсом, например, GET для получения данных или POST для отправки данных.
Прежде чем начать, разберемся, с чем мы будем работать:
- HTTP-методы являются основными компонентами веб-коммуникаций.
- Tshark позволяет нам напрямую изучать эти методы из захваченных сетевых пакетов.
- Флаг
-eпозволяет нам извлекать определенные поля из данных пакета.
Пройдемся по процессу шаг за шагом:
- Сначала нам нужно перейти в правильный рабочий каталог, где хранятся наши файлы с захваченным трафиком:
cd ~/project
- Теперь мы запустим команду tshark для извлечения HTTP-методов из активного трафика:
sudo tshark -Y "http.request" -T fields -e http.request.method
Разберем эту команду:
sudo: Дает нам необходимые разрешения для захвата сетевого трафика.tshark: Командная строковая версия Wireshark.-Y "http.request": Применяет фильтр отображения, чтобы показать только HTTP-запросы.-T fields: Указывает, что мы хотим получить вывод в виде полей (а не полные пакеты).-e http.request.method: Сообщает tshark извлечь только поле HTTP-метода.
- Чтобы увидеть это в действии, мы сгенерируем некоторый тестовый трафик из другого окна терминала:
curl -X GET http://example.com
curl -X POST http://example.com
curl -X DELETE http://example.com
Каждая из этих команд curl отправляет другой HTTP-метод на example.com, который tshark захватит и отобразит. Флаг -X в curl позволяет нам указать, какой HTTP-метод использовать.
После выполнения этих команд вы должны увидеть вывод, похожий на следующий:
GET
POST
DELETE
Этот вывод показывает, какие именно HTTP-методы были использованы в захваченном трафике, что упрощает анализ шаблонов веб-запросов. Названия методов появляются в порядке, в котором они были захвачены tshark.
Отображение в формате JSON с использованием -T json
На этом этапе мы узнаем, как с помощью утилиты Tshark из Wireshark отформатировать захваченные данные HTTP-трафика в формате JSON. JSON (JavaScript Object Notation) - это легковесный формат данных, который легко читается человеком и парсится машинами. Это делает его идеальным для программного анализа сетевого трафика.
Прежде чем начать, разберемся, почему вывод в формате JSON ценен:
- Структурированная организация данных.
- Простая интеграция с другими инструментами и скриптами.
- Стандартизированный формат обмена данными.
- Сначала убедитесь, что вы находитесь в каталоге по умолчанию, где будем запускать наши команды:
cd ~/project
- Теперь запустим Tshark для захвата HTTP-запросов и вывода их в формате JSON. Эта команда объединяет фильтрацию и форматирование в JSON:
sudo tshark -Y "http.request" -T json -e http.request.method -e http.host -e http.request.uri
Разберем, что делает каждая часть этой команды:
-Y "http.request": Этот фильтр сообщает Tshark показывать только пакеты HTTP-запросов.-T json: Указывает, что мы хотим получить вывод в формате JSON.-eполя: Они извлекают определенные части информации из каждого HTTP-запроса:http.request.method: Используемый HTTP-метод (GET, POST и т.д.).http.host: Домен веб-сайта, к которому осуществляется доступ.http.request.uri: Конкретный путь или ресурс, на который делается запрос.
- Чтобы сгенерировать тестовый трафик для захвата, откройте второе окно терминала и запустите эти команды curl:
curl http://example.com
curl http://example.org/sample
Когда вы запустите команду Tshark во время генерации этого тестового трафика, вы увидите вывод в таком формате:
[
{
"_index": "packets-1",
"_source": {
"layers": {
"http.request.method": ["GET"],
"http.host": ["example.com"],
"http.request.uri": ["/"]
}
}
},
{
"_index": "packets-2",
"_source": {
"layers": {
"http.request.method": ["GET"],
"http.host": ["example.org"],
"http.request.uri": ["/sample"]
}
}
}
]
Обратите внимание, как каждый HTTP-запрос становится отдельным JSON-объектом с четко помеченными полями. Эта структура позволяет легко определить:
- Какой веб-сайт был посещен.
- Какой тип запроса был сделан.
- Какую конкретную страницу или ресурс был запрошен.
Формат JSON особенно полезен, когда вы хотите сохранить эти данные для последующего анализа или передать их в другие инструменты, которые могут автоматически обрабатывать данные в формате JSON.
Резюме
В этом практическом занятии вы научились фильтровать и анализировать HTTP-трафик с помощью командной строки Tshark из Wireshark. В рамках упражнений вы узнали, как захватывать HTTP-трафик с использованием -f "tcp port 80" и генерировать тестовый трафик с помощью curl для практического анализа.
Вы также отработали навыки фильтрации HTTP-запросов с помощью -Y "http.request" и извлечения определенных данных, таких как HTTP-методы, с использованием -e http.request.method. В рамках практического занятия показано, как форматировать вывод в формате JSON с помощью -T json, что дает вам ключевые методы для эффективного анализа сетевого трафика.


