Введение
Представьте, что вам нужно в режиме реального времени сосчитать все красные машины, проезжающие по оживленному шоссе. Это утомительно и чревато ошибками. А теперь представьте, что вы записали видео этого шоссе, принесли запись домой и можете ставить её на паузу, перематывать назад или вперед, чтобы идеально точно подсчитать автомобили.
В мире кибербезопасности и цифровой криминалистики специалисты редко анализируют сетевой трафик «на лету», пока он проносится мимо. Вместо этого они «записывают видео». Они захватывают необработанный трафик и сохраняют его в стандартном формате, известном как файл захвата пакетов (PCAP). Такой подход обеспечивает постоянную и неизменную запись сетевых событий, позволяя проводить глубокий и спокойный анализ спустя долгое время после инцидента.
Такой подход к ведению записей критически важен, поскольку многие события безопасности мимолетны. Подозрительное соединение может длиться всего несколько секунд. Запрос от вредоносного ПО может произойти один раз и больше не повториться. Если вы не сохранили трафик в момент его возникновения, вы можете упустить шанс восстановить картину произошедшего позже. Таким образом, файлы PCAP играют для сетевой активности ту же роль, что и образы дисков или архивы логов в других видах криминалистических расследований.
В этой лабораторной работе вы освоите искусство управления файлами PCAP с помощью tcpdump. Вы научитесь незаметно записывать «живой» сетевой трафик в файл, считывать его обратно в терминал для автономного анализа, применять точные фильтры для исследования старых данных и аккуратно извлекать небольшие фрагменты доказательств для передачи коллегам.
Запись трафика в файл PCAP
Первый шаг в автономном анализе — это запись данных. Вместо того чтобы позволять tcpdump засорять экран быстро бегущим текстом, вы можете дать ему команду тихо записывать всё напрямую в файл. Это достигается с помощью флага -w (write — запись).
Обратите внимание на разницу в целях между выводом на экран и захватом в PCAP. При выводе в терминал tcpdump суммирует пакеты для удобства чтения человеком. При записи в файл PCAP он сохраняет данные пакетов в формате, который позже могут обработать другие инструменты анализа. Именно поэтому запись в файл — лучший выбор, если вы предполагаете, что вам может понадобиться вернуться к изучению этих данных.
Когда вы используете флаг -w с указанием имени файла, tcpdump полностью прекращает вывод данных на экран. Он перехватывает необработанные данные пакетов прямо с сетевого интерфейса и надежно упаковывает их в стандартный формат PCAP.
Сначала убедитесь, что вы находитесь в своей основной рабочей директории, где безопасно сохранять файлы:
cd ~/project
Теперь пришло время для захвата. Чтобы программа не записывала данные бесконечно и не заполнила диск, мы используем флаг -c (count — количество), чтобы она остановилась ровно после 50 пакетов. Мы также добавим флаг -i any, который указывает программе «закинуть широкую сеть» и захватывать трафик, проходящий через все доступные сетевые интерфейсы одновременно.
Выполните следующую команду, чтобы захватить 50 пакетов и сохранить их в файл capture.pcap:
sudo tcpdump -i any -c 50 -w capture.pcap
Поскольку ваш браузерный терминал постоянно генерирует небольшое количество фонового сетевого трафика для поддержания соединения, захват завершится очень быстро. Вы увидите краткий отчет:
tcpdump: listening on any, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144 bytes
50 packets captured
52 packets received by filter
0 packets dropped by kernel
Обратите внимание на ключевое отличие: никакие детали пакетов не были выведены на экран. Все конфиденциальные данные были тихо помещены в файл.
Вы можете убедиться, что ваша запись создана, и проверить её размер с помощью стандартной команды Linux:
ls -lh capture.pcap
Наличие файла capture.pcap в списке и его размер подтверждают, что необработанный сетевой трафик был успешно сохранен и готов к анализу.
Чтение трафика из файла PCAP
Теперь, когда вы надежно сохранили доказательства, вам нужно их изучить. Этот процесс обычно называют автономным анализом (offline analysis).
У автономного анализа есть важное практическое преимущество: он отделяет сбор данных от их интерпретации. Во время инцидента защитники часто еще не знают, какие именно пакеты важны. Их первоочередная задача — сохранить как можно больше релевантных данных. Только потом, когда ситуация стабилизируется, они начинают более медленный процесс поиска ответов на конкретные вопросы в сохраненных данных.
Чтобы открыть и прочитать файл PCAP, вы переключаетесь с режима записи на режим чтения с помощью флага -r (read), за которым следует имя файла. Прелесть этой команды в том, что tcpdump обработает сохраненный файл точно так же, как если бы пакеты проходили через «живую» сеть прямо сейчас.
Выполните следующую команду, чтобы вывести пакеты из созданного вами файла capture.pcap на экран:
tcpdump -r capture.pcap
Примечание: Захват «живого» трафика требует глубокого доступа к системе, поэтому мы используем sudo. Однако для чтения обычного файла, владельцем которого вы являетесь, это не требуется. Вы можете безопасно запускать команду чтения без специальных прав администратора.
Внезапно 50 пакетов, которые вы тихо захватили ранее, появятся на экране вашего терминала, выглядя точно так же, как при «живом» захвате:
reading from file capture.pcap, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144
10:25:31.123456 IP 10.0.2.100.22 > 10.0.2.2.54321: Flags [P.], seq 1:100, ack 1, win 500, length 99
10:25:31.123500 IP 10.0.2.2.54321 > 10.0.2.100.22: Flags [.], ack 100, win 500, length 0
...
Чтение из статического файла — огромное облегчение для аналитика. Поскольку данные «заморожены» во времени, вы можете запускать команду -r снова и снова, тратя столько времени, сколько нужно, не изменяя при этом исходные доказательства.
Чтобы упростить анализ, можно комбинировать флаг -r с другими параметрами отображения. Например, использование флага -n приказывает tcpdump не преобразовывать IP-адреса в имена компьютеров. Это избавляет инструмент от лишних фоновых запросов, что ускоряет вывод и делает его более чистым и технически точным:
tcpdump -n -r capture.pcap
Применение фильтров к существующим PCAP
Запись большого объема трафика часто приводит к созданию огромных файлов, заполненных нерелевантным «шумом». При проведении расследования вам почти никогда не нужно читать каждый пакет построчно.
Именно поэтому хороший сбор доказательств обычно бывает широким, а хороший анализ — узконаправленным. Во время сбора данных вы стараетесь упустить как можно меньше. Во время анализа вы агрессивно сужаете область поиска, чтобы сосредоточиться на пакетах, которые отвечают на ваш текущий вопрос. Использование фильтров на сохраненном файле PCAP позволяет делать и то, и другое, не повторяя исходный захват.
Настоящая магия tcpdump заключается в том, что все мощные фильтры Berkeley Packet Filters (BPF), которые вы используете в «живых» сетях, работают точно так же с сохраненными файлами. tcpdump быстро просканирует весь файл PCAP в фоновом режиме, но выведет только те пакеты, которые соответствуют выбранному вами фильтру.
Давайте проверим это, отфильтровав файл capture.pcap так, чтобы он отображал только TCP-трафик, игнорируя всё остальное. Выполните следующую команду:
tcpdump -n -r capture.pcap tcp
Вывод будет заметно короче, отображая только пакеты, идентифицированные как протокол TCP.
Вы можете быть настолько точными, насколько это необходимо. Например, если вы подозреваете проблему со службой SSH (которая активно работает в фоновом режиме вашего терминала на порту 22), вы можете применить фильтр по порту.
Выполните эту команду:
tcpdump -n -r capture.pcap port 22
На экране будут отображаться только те пакеты, где источник или получатель соответствуют порту 22:
reading from file capture.pcap, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144
10:25:31.123456 IP 10.0.2.100.22 > 10.0.2.2.54321: Flags [P.], seq 1:100, ack 1, win 500, length 99
...
Эта способность применять фильтры постфактум, пожалуй, является самым важным навыком в цифровой криминалистике. В реальной кризисной ситуации защитники «закидывают широкую сеть» и используют -w для записи всего, что происходит в сети. Когда пыль оседает, они используют -r и сложные BPF-фильтры, чтобы спокойно просеять гору доказательств и найти тот самый момент, когда злоумышленник взломал систему.
Извлечение конкретного трафика в новый PCAP
Иногда вы обнаруживаете, что файл захвата слишком велик для простой передачи на другой компьютер, или вам нужно выделить несколько крайне подозрительных пакетов, чтобы отправить их специализированной команде безопасности.
Эта практика распространена в реальных расследованиях, так как доказательства часто должны перемещаться между отделами. Аналитик первой линии может захватить огромный файл, а затем извлечь только подозрительный трафик для аналитиков вредоносного ПО, специалистов по реагированию на инциденты или разработчиков. Небольшие сфокусированные файлы PCAP легче передавать, быстрее проверять, и они с меньшей вероятностью раскроют посторонние фоновые данные, которые другим командам не нужны.
Блестяще комбинируя функции чтения (-r), фильтрации и записи (-w) в одной команде, вы можете «вырезать» только нужные пакеты и навсегда сохранить их в виде нового, узкоспециализированного файла PCAP.
Давайте выступим в роли криминалистов и извлечем только TCP-пакеты из нашего исходного файла capture.pcap. Мы направим эти конкретные пакеты в новый файл с именем tcp_only.pcap.
Выполните следующую команду:
tcpdump -r capture.pcap tcp -w tcp_only.pcap
Когда вы выполните это, терминал снова останется абсолютно безмолвным. tcpdump считывает исходный файл, тихо применяет фильтр tcp и безопасно записывает одобренные пакеты напрямую в новый файл tcp_only.pcap, не выводя ничего на экран.
Вы можете убедиться, что ваш новый, узкоспециализированный файл доказательств был успешно создан, просмотрев список файлов:
ls -lh capture.pcap tcp_only.pcap
Вы увидите оба файла рядом. В зависимости от того, какой фоновый трафик происходил во время вашего первоначального захвата, tcp_only.pcap, скорее всего, будет немного меньше, чем основной файл capture.pcap, так как он успешно отфильтровал весь нерелевантный шум, не относящийся к TCP.
Чтобы гарантировать, что ваш новый файл содержит только нужные данные, вы можете просто прочитать его:
tcpdump -n -r tcp_only.pcap
Этот простой метод извлечения невероятно ценен для организации хаотичных данных и безопасного обмена только теми фрагментами, которые необходимы для расследования.
Резюме
Поздравляем! Вы успешно освоили основы управления файлами PCAP.
В этой лабораторной работе вы научились относиться к сетевому трафику как к записанным доказательствам. Вы практиковались в безопасном захвате «живых» сетевых событий в файл с помощью флага -w. Вы перешли к мышлению аналитика, работающего в автономном режиме, считывая сохраненные пакеты обратно в терминал с помощью флага -r. Вы продемонстрировали, как ретроспективно применять BPF-фильтры к существующим файлам захвата, чтобы быстро отсеивать лишнее, и, наконец, научились извлекать узкоспециализированные данные в новый файл PCAP для точечного расследования.
Эти методы управления файлами являются абсолютным стандартом операционных процедур в цифровой криминалистике, реагировании на инциденты и расширенном устранении неполадок в сети. Теперь вы обладаете базовыми навыками для правильного захвата и анализа невидимых потоков данных, на которых держится современный мир.

