Сетевая безопасность/Анализ сетевого трафика

Материал из SecSem Wiki
Перейти к навигации Перейти к поиску

Теоретические сведения

TTL

  • Хоп - переход пакета между двумя маршрутизаторами.
  • TTL - максимальное количество хопов, которое может пройти пакет до своего исчезновения.

При получении пакета маршрутизатор уменьшает его TTL на 1. Если TTL становится равным 0, пакет уничтожается, а его отправителю посылается пакет ICMP Time Exceeded.

RTT

  • RTT (round-trip time) - время, затраченное на отправку пакета + время, которое требуется для подтверждения, что пакет был получен.

Инструменты для анализа сетевого трафика

Утилита Ping

Ping - утилита для проверки целостности и качества соединений в сетях на основе TCP/IP. В работе использует протокол ICMP.

ICMP (Internet Control Message Protocol) - протокол сетевого уровня, в основном используемый для передачи сообщений об ошибках.

Утилита Ping отправляет интересующему узлу пакеты ICMP Echo-Request и фиксирует поступление ответов ICMP Echo-Reply.

Пример работы

Пример работы утилиты Ping

В примере выше отправлены 8 пакетов (желаемое количество пакетов задается флагом -t) на домен google.com. Утилита определила соответствующий домену IP адрес и отправила на него заданное количество пакетов.

В результате утилита вывела следующую информацию по каждому отправленному пакету:

  • номер пакета,
  • TTL пакета на момент его получения,
  • RTT пакета.

Также вывод содержит информацию о том, сколько пакетов ICMP Echo-Reply в итоге было получено, процент потерянной информации, минимальное, максимальное и среднее значение RTT и величину среднеквадратического отклонения для RTT.

Traceroute

Traceroute (Tracert в Windows) - утилита, используемая для определения маршрутов следования данных в сетях TCP/IP. В работе может использовать различные протоколы (TCP, UDP, ICMP).

Принцип работы

  1. На целевой хост отправляется серия пакетов (обычно, 3) с TTL = 1.
  2. Первый маршрутизатор, который встретится на пути каждого отправленного пакета, уменьшит TTL на 1. TTL станет равным 0.
  3. Маршрутизатор отправит источнику сообщение о том, что пакет не может быть передан далее (сообщая источнику свой IP адрес).
  4. На целевой хост отправляется серия пакетов с TTL = 2...

Пример работы

Пример работы Traceroute

При вызове Traceroute для домена также будет показан IP адрес, TTL и вес пакетов. Для каждого из маршрутизаторов, встретившихся на пути пакетов, указывается

  • Доменное имя, если его удалось получить
  • IP адрес (или адреса, если разные пакеты серии пришли на разные маршрутизаторы)
  • Время доставки для каждого из пакетов

Также вместо информации по одному или нескольким пакетам может быть показан символ "*". Это означает, чтобы тем или иным причинам отправитель не получил от этого маршрутизатора ICMP Time Exceeded.

Часть возможных причин указана на странице справки traceroute:

Справка traceroute

Netcat

Netcat (nc, ncat) - утилита, позволяющая устанавливать TCP и UDP соединения, принимать и передавать данные. Основные режимы: подключения и прослушивания.

Режим подключения позволяет подключиться к любому порту, открытому на прослушивание (при условии, что порт разрешает подключения такого типа).

Пример работы nc

На примере с помощью nc осуществляется подключение к google.com: при вводе nc google.com 80 утилита подключается к серверной стороне по протоколу HTTP (80 - стандартный порт для этого протокола). Далее клиент отправляет на сервер простейший HTTP-запрос "GET /", в ответ получает соответствующую веб-страницу, которая отображается в терминале в необработанном виде.

Режим прослушивания позволяет открыть на прослушивание сокет на хосте с запущенной утилитой (поставив ему в соответствие порт, к которому смогут обращаться другие приложения). С помощью этого режима можно сделать подобие чата между двумя хостами (например, для передачи данных между двумя виртуальными машинами). Ссылка на демонстрацию приведена в конце статьи.

Netstat

Netstat (Network Statistics) - утилита, позволяющая получить информацию о состоянии TCP-соединений (входящих и исходящих), таблицах маршрутизации, сетевых интерфейсах, сетевой статистике по протоколам.

Для различных ОС реализации данной утилиты отличаются, одни и те же параметры могут отвечать за разные функции. Сводная таблица по ключам есть на английской странице Википедии по Netstat (ссылка приведена в конце статьи).

Ниже - примеры, которые будут работать на большинстве UNIX-систем.

Примеры работы

Снимок экрана 2021-04-04 в 19.44.29.png

  • -l - выводит информацию о состоянии всех открытых веб-сокетов (в состоянии LISTEN). По каждому сокету отображается информация о соответствующем ему порте. netstat -lt выведет информацию только о TCP-портах, netstat -lu - только о UDP-портах, netstat -lx - о UNIX-сокетах. Флаги t, u, x можно комбинировать между собой и добавлять ко всем флагам идущим ниже, получая соответствующую фильтрацию.
  • -p - добавить в вывод PID и имя процесса, работающего на конкретном порту
  • -n - отображать адреса и номера портов в числовом формате

netstat -i

  • -i - информация о сетевых интерфейсах
  • -ie - расширенная информация, аналог ifconfig

Tcpdump

Tcpdump - утилита, позволяющая перехватывать и анализировать сетевой трафик хоста, на котором запущена данная утилита. Также возможен анализ трафика, записанного в файл (*.pcap)

tcpdump

В данном примере используются следующие флаги:

  • -i - перехватывать только пакеты с определенного сетевого интерфейса
  • -с - только заданное количество пакетов
  • -n - отображение в числовом формате
  • -tttt - timestamp-ы в формате дата + время
  • Если требуется собирать трафик, идущий на конкретный порт, его можно задать с помощью настройки port.

Также Tcpdump позволяет задавать множество других настроек: IP-адреса хостов, отправляющих и получающих трафик, конкретные протоколы, параметры пакетов и т.п.

Wireshark

Wireshark - программа для анализа сетевого трафика. По функциональности она аналогична Tcpdump, но имеет графический интерфейс и более широкий спектр возможностей. Также Wireshark поддерживает расширения, написанные на языке Lua.

Примеры работы

Wireshark также позволяет анализировать как получаемый в режиме реального времени, так и записанный в файл трафик.

Трафик можно собирать с использованием фильтров, можно выбрать уже готовый вариант или задать свой. На этом же окне Wireshark показывает, на каких интерфейсах есть сетевая активность.

Пример записи трафика в Wireshark

Wireshark способен определить большинство существующих сетевых протоколов и предоставляет информацию для каждого пакета по всем доступным протоколам с учетом инкапсуляции.

Трафик Wireshark

Также можно просматривать данные не по отдельным пакетам, а целыми стримами (красным обозначаются запросы клиента, синим - ответы сервера). Можно также искать в потоке определенное содержимое, исключать конкретные потоки из общего отображаемого трафика и сохранять содержимое потоков в виде текстовых файлов, в бинарном виде и в других форматах.

Wireshark - отдельный поток

Ссылки