В современном мире, где каждая секунда связана с обменом данными, понимание работы компьютерных сетей становится критически важным. Как «увидеть» невидимый поток информации, который постоянно циркулирует между устройствами? Cуществуют инструменты, открывающие нам доступ к «пульсу» сетевого трафика подобно тому, как осциллограф позволяет визуализировать электрические сигналы,. В этой статье пройдем через практическое исследование сетевого трафика.
- Что такое анализатор трафика (сниффер) и зачем он нужен?
- Подготовка рабочего стенда для анализа трафика
- Краткие теоретические сведения: модель TCP/IP
- Практическое исследование трафика с tcpdump
- Сохранение трафика и анализ в wireshark
- Анализ трафика в реальном времени с wireshark
- Возвращение системы в исходное состояние
- Заключение
Что такое анализатор трафика (сниффер) и зачем он нужен?
Для исследования сетевого трафика используется специальный инструментарий, известный как анализатор трафика или сниффер. Это программное или аппаратное средство, которое перехватывает и анализирует данные, проходящие через сетевой интерфейс. Представьте себе сниффер как мощный микроскоп, позволяющий рассмотреть мельчайшие детали сетевых взаимодействий.
Зачем это нужно?
- Изучение сетевых протоколов: Сниффер позволяет наглядно увидеть, как функционируют протоколы, такие как IP, TCP, UDP, ICMP, HTTP и HTTPS, и закрепить теоретические знания о стеке TCP/IP.
- Диагностика сетевых проблем: Выявление причин низкой скорости сети, проблем с доступом к ресурсам, некорректной работы приложений.
- Безопасность: Обнаружение вредоносной активности, несанкционированного доступа, анализ атак и утечек данных.
- Разработка и отладка приложений: Проверка правильности обмена данными между клиентскими и серверными частями приложений.
В этой статье мы сосредоточимся на практическом применении снифферов для понимания «сырого» шестнадцатеричного вида трафика и того, какие байты за что отвечают.
Подготовка рабочего стенда для анализа трафика
Для безопасного и эффективного исследования трафика рекомендуется проводить работу от учетной записи с минимальными правами. Это предотвратит случайное повреждение системных файлов или настроек.
Необходимое ПО:
- Операционная система: Любая ОС с графической средой (например, Ubuntu, Fedora, Debian, Mint или даже Windows с WSL2).
- Браузер: Mozilla Firefox (или любой другой современный браузер, поддерживающий логирование SSL/TLS ключей).
- Снифферы:
- tcpdump: Консольный анализатор трафика, отлично подходит для сохранения трафика в файл и базовой фильтрации.
- Wireshark Network Analyzer (или tshark): Мощный графический анализатор трафика с широкими возможностями по декодированию протоколов и визуализации данных.
tshark— это консольная версия Wireshark.
Установка и Настройка (Общие Рекомендации):
- Установка ОС и ПО: Установите выбранную операционную систему с графической средой. Затем установите браузер и выбранные снифферы. Процесс установки зависит от вашего дистрибутива, но обычно это сводится к использованию менеджера пакетов (например,
sudo apt install wireshark tcpdump firefoxдля Debian/Ubuntu илиsudo dnf install wireshark tcpdump firefoxдля Fedora).

- Создание пользователя с ограниченными правами: Если вы не используете уже существующего пользователя с минимальными правами, создайте его (например,
guest). Убедитесь, что от этого пользователя можно просматривать сайты в интернете через браузер. - Настройка прав для снифферов: Для анализа трафика снифферам требуется доступ к сетевым интерфейсам. В образовательных целях или для повседневного использования запускать снифферы от имени суперпользователя (root) не рекомендуется. Вместо этого лучше использовать механизм возможностей (capabilities) в Linux.
dumpcap (входит в состав Wireshark) и tcpdump являются программами, которые непосредственно взаимодействуют с сетевыми интерфейсами. Мы можем дать им необходимые привилегии без предоставления полных прав root.
Bash
sudo setcap 'CAP_NET_RAW+eip CAP_NET_ADMIN+eip' /usr/bin/dumpcap
sudo setcap 'CAP_NET_RAW+eip CAP_NET_ADMIN+eip' /usr/sbin/tcpdump💡Примечание: Пути к исполняемым файлам (
/usr/bin/dumpcap,/usr/sbin/tcpdump) могут немного отличаться в разных дистрибутивах. Используйтеwhich dumpcapиwhich tcpdumpдля проверки.
Эти команды добавляют программы dumpcap и tcpdump возможности CAP_NET_RAW (использование сырых сокетов) и CAP_NET_ADMIN (операции, связанные с сетью и сетевыми интерфейсами). Флаги e, i, p определяют «Effective», «Inheritable» и «Permitted» возможности соответственно.
Просмотр и удаление возможностей:
Чтобы проверить добавленные возможности:
Bash
getcap /usr/bin/dumpcap
getcap /usr/sbin/tcpdumpДля удаления возможностей (возврата к исходному состоянию):
Bash
sudo setcap -r /usr/bin/dumpcap
sudo setcap -r /usr/sbin/tcpdump
setcap для предоставления привилегий снифферам и getcap для их проверки.Краткие теоретические сведения: модель TCP/IP
Перед тем как приступить к практике, важно освежить в памяти основные концепции стека протоколов TCP/IP.
Стек TCP/IP — это набор протоколов, который определяет, как компьютеры взаимодействуют в сети. Он часто сравнивается с многоуровневой моделью, где каждый уровень выполняет свою специфическую функцию.

Напомним основные уровни и их назначение:
- Прикладной уровень (Application Layer): Самый верхний уровень, взаимодействует непосредственно с пользовательскими приложениями (HTTP, HTTPS, FTP, SMTP, DNS и т.д.).
- Транспортный уровень (Transport Layer): Обеспечивает сквозную связь между процессами на разных хостах. Основные протоколы: TCP (Transmission Control Protocol) — надежная, ориентированная на соединение передача данных; UDP (User Datagram Protocol) — быстрая, безгарантийная передача данных.
- Сетевой уровень (Internet Layer): Отвечает за логическую адресацию и маршрутизацию пакетов в сети. Основной протокол: IP (Internet Protocol).
- Канальный уровень (Link Layer): Отвечает за передачу кадров данных между непосредственно подключенными устройствами. Здесь работают такие протоколы, как Ethernet и ARP (Address Resolution Protocol).
- Физический уровень (Physical Layer): Отвечает за физическую передачу битов по кабелю или беспроводной среде.
Инкапсуляция данных: При перемещении данных вниз по стеку протоколов, каждый уровень добавляет свой заголовок к данным, оборачивая их. Этот процесс называется инкапсуляцией.

Практическое исследование трафика с tcpdump
Начнем наше исследование с консольного инструмента tcpdump.
Запуск tcpdump и базовый перехват
Войдите в систему под созданным пользователем user. Откройте терминал и запустите tcpdump:
Bash
tcpdump -i <ваш_интерфейс> -n -nnЗамените <ваш_интерфейс> на имя вашего сетевого интерфейса (например, eth0, enp0s3, wlan0). Узнать имя интерфейса можно с помощью команды ip a или ifconfig.
-i <интерфейс>: Указывает сетевой интерфейс для перехвата трафика.-n: Не преобразовывать IP-адреса в доменные имена (избежать запросов к DNS).-nn: Не преобразовывать номера портов в имена сервисов.
Вы увидите, как в окне терминала начнут появляться записи, соответствующие перехваченным сетевым пакетам.
Создание сетевой активности
Расположите окно терминала так, чтобы оно было видно. Запустите браузер (Mozilla Firefox) и перейдите на любой веб-сайт (например, http://yandex.ru). Обратите внимание, что браузер генерирует собственный трафик даже до того, как вы введете адрес.
Фильтрация трафика
Остановите tcpdump нажатием CTRL + C. Запустите его повторно с фильтром, чтобы отображать только ARP и ICMP трафик:
Bash
tcpdump -i <ваш_интерфейс> -n -nn arp or icmpФильтр arp or icmp гарантирует, что будут отображаться только пакеты, относящиеся к протоколам ARP или ICMP.
Генерация ARP и ICMP трафика
- Откройте еще одно окно терминала и определите свой IP-адрес и подсеть:
Bash
ip address show <ваш_интерфейс>- Придумайте несколько IP-адресов в вашей подсети (например, изменив последнюю цифру вашего IP-адреса).
- Отправьте по два ICMP-запроса (ping) вымышленным получателям:
Bash
ping -c 2 192.168.1.8 # Замените на ваш IPВ окне tcpdump вы увидите:
- ARP-запросы (
ARP, Request who-has ...): Если MAC-адрес целевого IP-адреса неизвестен, ваш компьютер отправит широковещательный ARP-запрос, чтобы узнать его. - ARP-ответы (
ARP, Reply ... is-at ...): Отвечающий хост пришлет свой MAC-адрес. - ICMP-запросы (
ICMP echo request): Запросы ping. - ICMP-ответы (
ICMP echo reply): Ответы на ping.

tcpdump, показывающий ARP-запросы и ответы, а также ICMP-трафик.- Просмотрите свою ARP-таблицу (ARP-кэш):
Bash
ip neighbour showЗаписи с пометкой FAILED указывают на отсутствие информации о MAC-адресе для данного IP.
Просмотр содержимого пакетов в шестнадцатеричном виде
Остановите tcpdump и запустите его с ключом -X для вывода содержимого пакетов в шестнадцатеричном и ASCII-виде:
Bash
tcpdump -i <ваш_интерфейс> -n -nn -X arp or icmpПовторите отправку ICMP-запросов. Теперь вы увидите не только строки с сообщениями, но и «сырое» содержимое пакетов. Байты с десятичными кодами от 32 до 127 будут отображаться в ASCII справа.

tcpdump с шестнадцатеричным дампом пакетов, где видна структура заголовков и данных.Отображение заголовков канального уровня
Добавьте ключ -e для отображения MAC-адресов отправителя и получателя Ethernet-кадров:
Bash
tcpdump -i <ваш_интерфейс> -n -nn -X -e arp or icmpЭта информация полезна для понимания того, как пакеты передаются на канальном уровне.
Сохранение трафика и анализ в wireshark
Для удобного анализа больших объемов трафика и протоколов с комплексной структурой лучше сохранять его в файл и затем открывать в Wireshark.
Сохранение трафика в файл
Запустите tcpdump с ключом -w для сохранения трафика в файл:
Bash
tcpdump -i <ваш_интерфейс> -w /home/guest/traffic.pcap/home/guest/traffic.pcap— путь и имя файла для сохранения. Расширение.pcap(или.pcapng) является стандартом для файлов дампов трафика.- Ключи
-n,-nn,-X,-eне нужны при сохранении, так как они влияют только на отображение.
Повторите отправку ICMP-запросов. После этого остановите tcpdump (CTRL + C). Убедитесь, что файл traffic.pcap создан:
Bash
ls -l /home/user/traffic.pcapОткрытие файла в Wireshark
- Запустите Wireshark Network Analyzer. Если появится запрос на запуск с административными привилегиями, выберите «выполнить без привилегий» (это должно быть возможно, если вы правильно настроили возможности).

- В меню Wireshark выберите
File -> Open...или нажмитеCTRL + O. Откройте созданный файл/home/guest/traffic.pcap.

- Вы увидите три основные области в Wireshark:
- Список пакетов: Верхняя панель, отображает перехваченные кадры с краткой информацией (номер, время, источник, получатель, протокол, длина, информация).
- Панель деталей пакета: Средняя панель, показывает разобранные значения заголовков и данных пакета в иерархическом виде. Здесь можно разворачивать «ветки» протоколов, чтобы увидеть их внутреннюю структуру.
- Панель шестнадцатеричного дампа: Нижняя панель, отображает непосредственное двоичное содержимое выбранного кадра в шестнадцатеричном и ASCII-виде.
💡Полезная функция Wireshark: Если вы выделите определенные байты в панели шестнадцатеричного дампа, Wireshark автоматически выделит соответствующее поле в панели деталей пакета, и наоборот. Это позволяет легко понять, какие байты за что отвечают, даже без глубоких знаний RFC.
Ответы на вопросы с помощью Wireshark
Используя открытый в Wireshark файл traffic.pcap, попробуйте ответить на следующие вопросы:
- Что идет первым в Ethernet-кадре: MAC-адрес отправителя или MAC-адрес получателя?
💡Подсказка: разверните раздел «Ethernet II» в панели деталей пакета. - С каким смещением от начала Ethernet-кадра в нем содержится IP-адрес получателя ICMP-сообщения типа echo request?
💡Подсказка: выберите ICMP-пакет типа echo request, затем выделите IP-адрес получателя в панели деталей пакета и посмотрите на соответствующее смещение в шестнадцатеричном дампе.
Анализ трафика в реальном времени с wireshark
Wireshark также позволяет перехватывать трафик в реальном времени.
Запуск перехвата в Wireshark
- В Wireshark выберите
Захват -> Опции.... - Найдите ваш сетевой интерфейс (например,
eth0,enp0s3) и поставьте напротив него галочку. - Нажмите кнопку
Старт

Генерация HTTP и HTTPS трафика
- Запустите Mozilla Firefox.
- Перейдите на сайт, работающий по HTTP (например,
http://samag.ru— если он еще активен и использует HTTP, или найдите любой другой тестовый HTTP-сайт). Совершите несколько переходов по ссылкам внутри сайта. - Перейдите на сайт, работающий по HTTPS (например,
https://www.yandex.ru). - Введите в поиске какое-нибудь слово (например, «Wireshark tutorial»).
Остановка перехвата и анализ
Остановите перехват трафика в Wireshark (Capture -> Stop). Изучите перехваченный трафик:
- HTTP GET-запросы: Найдите в трафике HTTP GET-запросы к серверу
http://samag.ru(например, строкуGET / HTTP/1.1). - Параметр User-agent: Определите значение параметра
User-agent, переданного серверу в HTTP-запросе. Этот параметр содержит информацию о браузере и ОС клиента. - Фрагменты HTML-страниц: Найдите в ответах сервера фрагменты HTML-страниц.
- Обращения к HTTPS-сайту: Найдите обращения к серверу
www.yandex.ru.
Расшифровка HTTPS-трафика
⚠️Важный момент: Попытайтесь найти слово, которое вы вводили в поисковую систему Яндекс. Скорее всего, вы его не найдете. Почему? Потому что HTTPS (HTTP Secure) использует шифрование трафика между клиентом и веб-сервером. Это означает, что данные передаются в зашифрованном виде и напрямую нечитаемы.
Дешифрование HTTPS-трафика, особенно с использованием современных протоколов TLS (Transport Layer Security, пришедший на смену SSL), может быть сложной задачей. Однако, для изучения собственного трафика существует относительно простой метод с использованием переменной окружения SSLKEYLOGFILE.
Как это работает: Некоторые браузеры (включая Firefox) могут записывать ключи сессий TLS в специальный файл. Wireshark затем может использовать этот файл для дешифрования трафика.
⚠️Важный нюанс: Perfect Forward Secrecy (PFS)
Многие современные сайты используют Perfect Forward Secrecy (PFS), что делает дешифрование трафика с использованиемSSLKEYLOGFILEболее сложным или невозможным. PFS использует эфемерные (недолговечные) сеансовые ключи (например, через алгоритм ECDHE), которые генерируются для каждой сессии. Даже если секретный ключ сервера будет скомпрометирован в будущем, прошлый трафик, защищенный PFS, не может быть расшифрован.
Чтобы обойти это в учебных целях, мы можем заставить браузер использовать алгоритмы обмена ключами, которые не поддерживают PFS (например, RSA), и при которых сеансовый ключ вырабатывается на стороне клиента. В реальной практике это значительно снижает безопасность соединения и не рекомендуется!
Настройка Firefox для дешифрования HTTPS (в учебных целях!)
- Откройте новую вкладку в Firefox и введите
about:config. - На предупреждение ответьте согласием («Я принимаю на себя риск!»).
- В строке поиска введите
ssl3. - Измените состояние следующих параметров на
true:security.ssl3.rsa_aes_128_shasecurity.ssl3.rsa_aes_256_shasecurity.ssl3.rsa_rc4_128_md5security.ssl3.rsa_rc4_128_shaДля всех остальных параметровsecurity.ssl3.*установите значениеfalse. Обязательно запишите первоначальные настройки, чтобы потом их вернуть!

about:config в браузере Firefox,- Закройте браузер Firefox и убедитесь, что все его процессы завершены:
Bash
killall firefoxСоздание файла логов SSL/TLS ключей
Создайте пустой файл, в который будут записываться ключи сессий:
Bash
touch /home/user/ssl.logНастройка Wireshark для использования SSLKEYLOGFILE
- В Wireshark перейдите в
Редактирование -> Параметры...или нажмитеShift + Ctrl + P. - В окне настроек выберите раздел
Protocolsи найдитеTLS(ранее называлсяSSL). - В поле
(Pre)-Master-Secret log filenameукажите путь к файлу/home/user/ssl.logили выберите его с помощью кнопкиОткрыть....

- Нажмите
Ok.
Запуск браузера с SSLKEYLOGFILE и перехват трафика
- Запустите перехват трафика в Wireshark на вашем сетевом интерфейсе (
Захват -> Опции... -> Старт). - Запустите Firefox из терминала с указанием переменной окружения:
Bash
SSLKEYLOGFILE=/home/guest/ssl.log firefox &💡Символ
&позволяет запустить браузер в фоновом режиме и продолжить работу в терминале.
- Зайдите на сайт
https://www.yandex.ruи произведите поиск каких-нибудь слов (например, на латинице, чтобы упростить поиск в трафике).
Изучение расшифрованного HTTPS-трафика
Остановите перехват трафика в Wireshark (Захват -> Стоп).
- Найдите обращения к DNS-серверу и ответы от него.
- Обратите внимание, что теперь для HTTPS-трафика в панели деталей пакета могут появиться дополнительные вкладки, такие как
Decrypted SSL dataилиDecrypted SSL record. - Исследование расшифрованного HTTPS-трафика не сложнее анализа обычного HTTP. Попытайтесь найти переданные поисковой системе запросы.
📜 Совет: Если вы ищете кириллицу, помните, что она кодируется в UTF-8, а затем в URL-кодировку (например,
%D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D1%82для «привет»). Пробел кодируется как%20.
Возвращение системы в исходное состояние
После завершения работы важно вернуть все настройки, сделанные в учебных целях, в исходное состояние, особенно те, которые касаются безопасности.
- Настройки Firefox:
- Запустите Firefox, зайдите на
about:configи введитеssl3. - Верните все параметры
security.ssl3.*, которые вы изменяли, в их первоначальное состояние (скорее всего, большинство из них должны бытьfalse, чтобы браузер использовал более безопасные и современные алгоритмы TLS). - Закройте все окна браузера.
- Запустите Firefox, зайдите на
- Настройки Wireshark:
- Откройте Wireshark, перейдите в
Редактировать -> Параметры... -> Protocols -> TLS. - Удалите имя файла из поля
(Pre)-Master-Secret log filename.
- Откройте Wireshark, перейдите в
- Удаление файлов:
Bash
rm -f /home/user/traffic.pcap
rm -f /home/user/ssl.logЗаключение
Вы получили первичные навыки работы со средствами визуальной диагностики сети – снифферами. Вы увидели на практике, как выглядит трафик протоколов ARP, IP, ICMP, DNS, HTTP и даже научились дешифровать HTTPS-трафик в учебных целях. Теперь вы сможете лучше соотносить протоколы с их уровнями в сетевой модели и глубже понимать строение пакетов, дейтаграмм и кадров, а также механизм инкапсуляции данных при их продвижении по стеку протоколов.
Исследование сетевого трафика – это мощный инструмент для диагностики, обучения и обеспечения безопасности. Продолжайте экспериментировать с фильтрами, изучайте другие протоколы и углубляйтесь в детали сетевых взаимодействий. Это откроет для вас новые горизонты в понимании цифрового мира.