В современном мире, где каждая секунда связана с обменом данными, понимание работы компьютерных сетей становится критически важным. Как «увидеть» невидимый поток информации, который постоянно циркулирует между устройствами? Подобно тому, как осциллограф позволяет визуализировать электрические сигналы, существуют инструменты, открывающие нам доступ к «пульсу» сетевого трафика. В этой статье пройдем через практическое исследование сетевого трафика.
- Что такое анализатор трафика (сниффер) и зачем он нужен?
- Подготовка рабочего стенда для анализа трафика
- Краткие теоретические сведения: модель 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.
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» возможности соответственно.
Просмотр и удаление возможностей:
Чтобы проверить добавленные возможности:
getcap /usr/bin/dumpcap
getcap /usr/sbin/tcpdump
Для удаления возможностей (возврата к исходному состоянию):
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
:
tcpdump -i <ваш_интерфейс> -n -nn
Замените <ваш_интерфейс>
на имя вашего сетевого интерфейса (например, eth0
, enp0s3
, wlan0
). Узнать имя интерфейса можно с помощью команды ip a
или ifconfig
.
-i <интерфейс>
: Указывает сетевой интерфейс для перехвата трафика.-n
: Не преобразовывать IP-адреса в доменные имена (избежать запросов к DNS).-nn
: Не преобразовывать номера портов в имена сервисов.
Вы увидите, как в окне терминала начнут появляться записи, соответствующие перехваченным сетевым пакетам.
Создание сетевой активности
Расположите окно терминала так, чтобы оно было видно. Запустите браузер (Mozilla Firefox) и перейдите на любой веб-сайт (например, http://roadit.ru
). Обратите внимание, что браузер генерирует собственный трафик даже до того, как вы введете адрес.
Фильтрация трафика
Остановите tcpdump
нажатием CTRL + C
. Запустите его повторно с фильтром, чтобы отображать только ARP и ICMP трафик:
tcpdump -i <ваш_интерфейс> -n -nn arp or icmp
Фильтр arp or icmp
гарантирует, что будут отображаться только пакеты, относящиеся к протоколам ARP или ICMP.
Генерация ARP и ICMP трафика
- Откройте еще одно окно терминала и определите свой IP-адрес и подсеть:
ip address show <ваш_интерфейс>
- Придумайте несколько IP-адресов в вашей подсети (например, изменив последнюю цифру вашего IP-адреса).
- Отправьте по два ICMP-запроса (ping) вымышленным получателям:
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-кэш):
ip neighbour show
Записи с пометкой FAILED
указывают на отсутствие информации о MAC-адресе для данного IP.
Просмотр содержимого пакетов в шестнадцатеричном виде
Остановите tcpdump
и запустите его с ключом -X
для вывода содержимого пакетов в шестнадцатеричном и ASCII-виде:
tcpdump -i <ваш_интерфейс> -n -nn -X arp or icmp
Повторите отправку ICMP-запросов. Теперь вы увидите не только строки с сообщениями, но и «сырое» содержимое пакетов. Байты с десятичными кодами от 32 до 127 будут отображаться в ASCII справа.

tcpdump
с шестнадцатеричным дампом пакетов, где видна структура заголовков и данных.Отображение заголовков канального уровня
Добавьте ключ -e
для отображения MAC-адресов отправителя и получателя Ethernet-кадров:
tcpdump -i <ваш_интерфейс> -n -nn -X -e arp or icmp
Эта информация полезна для понимания того, как пакеты передаются на канальном уровне.
Сохранение трафика и анализ в wireshark
Для удобного анализа больших объемов трафика и протоколов с комплексной структурой лучше сохранять его в файл и затем открывать в Wireshark.
Сохранение трафика в файл
Запустите tcpdump
с ключом -w
для сохранения трафика в файл:
tcpdump -i <ваш_интерфейс> -w /home/guest/traffic.pcap
/home/guest/traffic.pcap
— путь и имя файла для сохранения. Расширение.pcap
(или.pcapng
) является стандартом для файлов дампов трафика.- Ключи
-n
,-nn
,-X
,-e
не нужны при сохранении, так как они влияют только на отображение.
Повторите отправку ICMP-запросов. После этого остановите tcpdump
(CTRL + C
). Убедитесь, что файл traffic.pcap
создан:
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_sha
security.ssl3.rsa_aes_256_sha
security.ssl3.rsa_rc4_128_md5
security.ssl3.rsa_rc4_128_sha
Для всех остальных параметровsecurity.ssl3.*
установите значениеfalse
. Обязательно запишите первоначальные настройки, чтобы потом их вернуть!

about:config
в браузере Firefox,- Закройте браузер Firefox и убедитесь, что все его процессы завершены:
killall firefox
Создание файла логов SSL/TLS ключей
Создайте пустой файл, в который будут записываться ключи сессий:
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 из терминала с указанием переменной окружения:
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, перейдите в
- Удаление файлов:
rm -f /home/user/traffic.pcap
rm -f /home/user/ssl.log
Заключение
Вы получили первичные навыки работы со средствами визуальной диагностики сети – снифферами. Вы увидели на практике, как выглядит трафик протоколов ARP, IP, ICMP, DNS, HTTP и даже научились дешифровать HTTPS-трафик в учебных целях. Теперь вы сможете лучше соотносить протоколы с их уровнями в сетевой модели и глубже понимать строение пакетов, дейтаграмм и кадров, а также механизм инкапсуляции данных при их продвижении по стеку протоколов.
Исследование сетевого трафика – это мощный инструмент для диагностики, обучения и обеспечения безопасности. Продолжайте экспериментировать с фильтрами, изучайте другие протоколы и углубляйтесь в детали сетевых взаимодействий. Это откроет для вас новые горизонты в понимании цифрового мира.
Было ли это полезно?
2 / 0