Как можно посмотреть содержимое icmp-пакетов (см. варианты)?

Формат пакета ICMP

Октет (байт) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
Тип Код Контрольная сумма
Данные (формат зависит от значений полей «Код» и «Тип»)
Типы пакетов ICMP
Тип Статус Код Сообщение Данные (длина, бит)
Эхо-ответ
Идентификатор (16) Номер последовательности (16)
Данные (переменная)
1, 2 не используется Зарезервировано
3 Адресат недоступен
Не используется (32)
Заголовок IP, Начало исходной дейтаграммы (64)
Сеть недостижима
1 Узел недостижим
2 Протокол недостижим
3 Порт недостижим
4 Необходима фрагментация, но установлен флаг её запрета (DF)
5 Неверный маршрут от источника
6 Сеть назначения неизвестна
7 Узел назначения неизвестен
8 Узел источник изолирован
9 Сеть административно запрещена
10 Узел административно запрещён
11 Сеть недоступна для ToS
12 Узел недоступен для ToS
13 Коммуникации административно запрещены
14 Нарушение порядка предпочтения узлов
15 Активно отсечение порядка предпочтения
4 устарел Сдерживание источника (отключение источника при переполнении очереди)
5 Перенаправление
Адрес маршрутизатора (32)
Заголовок IP, Начало исходной дейтаграммы (64)
Перенаправление пакетов в сеть
1 Перенаправление пакетов к узлу
2 Перенаправление для каждого типа обслуживания (ToS)
3 Перенаправление пакета к узлу для каждого типа обслуживания
6 устарел Альтернативный адрес узла
7 не используется Зарезервировано
8 Эхо-запрос
Идентификатор (16) Номер последовательности (16)
Данные (переменная)
9 Объявление маршрутизатора
Количество адресов (8) Размер элемента (8) Срок действия (16)
Адрес (32)
Предпочтительность (32)
Адрес (32)
Предпочтительность (32)
10 Запрос маршрутизатора
Не используется (32)
11 Время жизни дейтаграммы истекло
Не используется (32)
Заголовок IP, Начало исходной дейтаграммы (64)
Время жизни пакета (TTL) истекло при транспортировке
1 Время жизни пакета истекло при сборке фрагментов
12 Неверный параметр (проблема с параметрами дейтаграммы: ошибка в IP-заголовке или отсутствует необходимая опция)
Указатель говорит об ошибке
Указатель (8) Не используется (24)
Заголовок IP, Начало исходной дейтаграммы (64)
1 Отсутствует требуемая опция
Не используется (32)
Заголовок IP, Начало исходной дейтаграммы (64)
2 Некорректная длина
13 Запрос метки времени
Идентификатор (16) Номер последовательности (16)
Начальное время (32)
Время приёма (32)
Время отправки (32)
14 Ответ с меткой времени
15 устарел Информационный запрос
Идентификатор (16) Номер последовательности (16)
16 устарел Информационный ответ
17 устарел Запрос адресной маски
Идентификатор (16) Номер последовательности (16)
Маска (32)
18 устарел Отклик на запрос адресной маски
19 зарезервирован Зарезервировано (для обеспечения безопасности)
20—29 зарезервирован Зарезервировано (для экспериментов на устойчивость к ошибкам)
30 устарел Трассировка маршрута
Идентификатор (16) Не используется (16)
Количество хопов исходящего пакета (16) Количество хопов возвращающегося пакета (16)
Скорость линии связи (32)
MTU линии связи (32)
Исходящий пакет успешно отправлен
1 Путь для исходящего пакета не найден, пакет уничтожен
31 устарел Ошибка преобразования датаграммы
Указатель (32)
Заголовок IP и транспортного протокола исходной дейтаграммы
Неизвестная или неуказанная ошибка
1 Невозможно конвертировать опцию
2 Неизвестная обязательная опция
3 Неподдерживаемая обязательная опция
4 Неподдерживаемый транспортный протокол
5 Превышена полная длина
6 Превышена длина заголовка IP
7 Номер транспортного протокола больше 255
8 Номер порта вне допустимого диапазона
9 Превышена длина заголовка транспортного протокола
10 Переход через границу 32 бит и установлен бит ACK
11 Неизвестная обязательная опция транспортного протокола
32 устарел Перенаправление для мобильного узла
33 устарел IPv6 Where-Are-You (где вы находитесь)
34 устарел IPv6 I-Am-Here (я здесь)
35 устарел Запрос перенаправления для мобильного узла
36 устарел Отклик на запрос перенаправления для мобильного узла
37 устарел Запрос доменного имени
38 устарел Ответ на запрос доменного имени
39 устарел Обнаружение алгоритма безопасности SKIP (SKIP algorithm discovery ICMP message)
40 Photuris  
Зарезервировано
1 Неизвестный индекс параметров безопасности
2 Параметры безопасности верны, но произошла ошибка аутентификации
3 Параметры безопасности верны, но произошёл сбой при расшифровке
4 Требуется проверка подлинности
5 Требуется авторизация
41 экспериментальный
42—252 Зарезервировано
253-254 экспериментальный Зарезервировано для экспериментов по RFC 3692
255 зарезервирован Зарезервировано

Коды ICMP

Расшифровка кодов ICMP сообщений:

  • echo reply (0) — echo reply (echo-ответ, пинг)
  • destination unreachable (3) — destination unreachable/destination port unreachable (адресат недосягаем). Код 3/4 уведомляет о необходимости фрагментации сообщения, отправитель получает его, меняет свой MSS на еще более меньший.
  • source quench (4) — source quench (подавление источника, просьба посылать пакеты медленнее)
  • redirect (5) — redirect (редирект)
  • echo request (8) — echo request (echo-запрос, пинг)
  • router adver-tisement (9) — router advertisement (объявление маршрутизатора)
  • router solicitation(10) — router solicitation (ходатайство маршрутизатора)
  • time-to-live exceeded (11) — time-to-live exceeded (истечение срока жизни пакета)
  • IP header bad (12) — IP header bad (неправильный IP заголовок пакета)
  • timestamp request (13) — timestamp request (запрос значения счетчика времени)
  • timestamp reply (14) — timestamp reply (ответ на запрос значения счетчика времени)
  • information request (15) — information request (запрос информации)
  • information reply (16) — information reply (ответ на запрос информации)
  • address mask request (17) — address mask request (запрос маски сети)
  • address mask reply (18) — address mask reply (ответ на запрос маски сети)

Ответ на некоторые ICMP-сообщения может привести к разглашению некоторой информации о хосте, в то время как другие — привести к модификации таблицы маршрутизации, поэтому их необходимо запретить.

Обычно выход во внешний мир разрешают ICMP-сообщениям 3, 8, 12, в то время как на вход принимают только 0, 3, 4, 11, 12.

структура Datagram

Пакет ICMP инкапсулируются в пакеты IPv4. Пакет состоит из секций заголовков и данных.

заголовок

Заголовка ICMP начинается после и идентифицируется номером протокола IP «1». Все пакеты ICMP имеют заголовок 8 байт и переменного размера раздела данных. Первые 4 байта заголовка имеют фиксированный формат, а последние 4 байта в зависимости от типа / кода этого пакета ICMP.

Формат заголовка ICMP
Смещения Октет 1 2 3
Октет Немного 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
4 32
Тип
Тип ICMP см .
Код
ICMP подтип см .
Контрольная сумма
Остальной заголовка
Четыре байта поля, содержимое зависит от типа ICMP и кода.

Данные

Сообщения об ошибках ICMP содержат раздел данных, который включает в себя копию всего заголовка IPv4, а также по крайней мере первые восемь байт данных из пакета IPv4, который вызвал сообщение об ошибке. Максимальная длина сообщения об ошибках ICMP составляет 576 байт. Эти данные используются хостом, чтобы сообщение к соответствующему процессу. Если протокол более высокого уровня использует номера портов, то предполагается, что в первые восемь байт данных исходной дейтаграммы.

Переменного размер секции пакетных данных ICMP был использован . В « Ping смерти », большие или фрагментированные пинг пакеты используются для отказа в обслуживании . Данные ICMP также могут быть использованы для создания скрытых каналов для связи. Эти каналы известны как ICMP туннели .

Программная реализация

Программа состоит из двух основных частей: части захвата пакетов (обращение к библиотеке, libpcap (Unix) или pcap (Windows)) и части отображения захваченных пакетов (которая на уровне исходного кода является модульной и для поддержки нового протокола достаточно добавить новый модуль).

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

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

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

Причины ошибок в файле WinDump-3.9.5.exe

Проблемы WinDump-3.9.5.exe могут быть отнесены к поврежденным или отсутствующим файлам, содержащим ошибки записям реестра, связанным с WinDump-3.9.5.exe, или к вирусам / вредоносному ПО.

Более конкретно, данные ошибки WinDump-3.9.5.exe могут быть вызваны следующими причинами:

  • Поврежденные ключи реестра Windows, связанные с WinDump-3.9.5.exe / SANS Institute Incident Handling, Hacker Tools, and Penetration Testing.
  • Вирус или вредоносное ПО, которые повредили файл WinDump-3.9.5.exe или связанные с SANS Institute Incident Handling, Hacker Tools, and Penetration Testing программные файлы.
  • Другая программа злонамеренно или по ошибке удалила файлы, связанные с WinDump-3.9.5.exe.
  • Другая программа находится в конфликте с SANS Institute Incident Handling, Hacker Tools, and Penetration Testing и его общими файлами ссылок.
  • Поврежденная загрузка или неполная установка программного обеспечения SANS Institute Incident Handling, Hacker Tools, and Penetration Testing.

Advanced

Now that we’ve seen what we can do with the basics through some examples, let’s look at some more advanced stuff.

More options

Here are some additional ways to tweak how you call .

  • : Show the packet’s contents in both hex and ASCII.
  • : Same as , but also shows the ethernet header.
  • : Show the list of available interfaces
  • : Line-readable output (for viewing as you save, or sending to other commands)
  • : Be less verbose (more quiet) with your output.
  • : Give human-readable timestamp output.
  • : Give maximally human-readable timestamp output.
  • : Listen on the eth0 interface.
  • : Verbose output (more v’s gives more output).
  • : Only get x number of packets and then stop.
  • : Define the snaplength (size) of the capture in bytes. Use to get everything, unless you are intentionally capturing less.
  • : Print absolute sequence numbers.
  • : Get the ethernet header as well.
  • : Show less protocol information.
  • : Decrypt IPSEC traffic by providing an encryption key.

MTU и модель OSI

Протоколы транспортного уровня (протоколы TCP или UDP), пользующиеся сетевым уровнем для отправки пакетов, считают, что максимальный размер поля данных IP-пакета равен 65535, и поэтому могут передать ему сообщение такой длины для транспортировки. В функции уровня IP входит разбиение слишком длинного для конкретного типа составляющей сети сообщения на более короткие пакеты с созданием соответствующих служебных полей, нужных для последующей сборки фрагментов в исходное сообщение.

В большинстве типов локальных и глобальных сетей определяется такое понятие как максимальный размер поля данных кадра или пакета, в которые должен инкапсулировать свой пакет протокол IP. Эту величину обычно называют максимальной единицей транспортировки — Maximum Transfer Unit, MTU. Сети Ethernet имеют значение MTU, равное 1500 байт, сети FDDI — 4096 байт, а сети Х.25 чаще всего работают с MTU в 128 байт.

MTU является характеристикой канального уровня модели OSI. Если IP хочет отослать датаграмму, которая больше чем MTU канального уровня, осуществляется фрагментация (fragmentation), при этом датаграмма разбивается на меньшие части (фрагменты). Каждый фрагмент должен быть меньше чем MTU.

Верхний уровень всегда знает о нижнем. Когда IP уровень получает IP датаграмму, которую необходимо отправить, он определяет, на какой локальный интерфейс отправляется датаграмма (или маршрутизируется), и запрашивает интерфейс, чтобы тот сообщил размер своего MTU. IP сравнивает MTU с размером датаграммы и, если необходимо, осуществляет фрагментацию. Фрагментация может быть осуществлена как на отправляющем хосте, так и на промежуточном маршрутизаторе.

Теоретически, максимальный размер IP-дейтаграммы составляет 65 535 байтов, что обусловлено 16-разрядным полем полной длины в IP-заголовке.

Вам пользователь @Smithson сообщил правильный ответ, ведь IP работает не только над Ethernet, в каждой сети свой размер.

Процедура аппараты соединения

В начале каждой строки отчета указано время, когда был передан пакет, потом указывается IP адрес отправителя, за ним следует ip-адрес получателя. После каждого ip-адреса, чрез точку, указывается порт обмена данными (зарегистрированная информация:439; представление фактов, понятий или инструкций в форме, приемлемой для общения, интерпретации, или обработки человеком или с помощью автоматических средств), в данном случае он будет осуществляться: у покупателя через временный порт – 1026, а у сервера через 80 порт. Далее заслуживает буква S, это означает, что в пакете установлен флаг SYN, как вы помните, этот флаг используется при введенье каждого tcp-соединения. Далее следует начальный порядковый номер пакета (упаковка для чего-либо, обычно из бумаги или пластика: Бумажный пакет Полиэтиленовый пакет Пакет-саше — герметичный пакет) (ISN – initial sequence number ), за ним – последний порядковый номер пакета, в скобках указана полезная нагрузка – 0 байт, и это верно, так как во время установления соединения никаких данных передаваться не должно, однако если каким-никаким данным имеет место быть, то они будут добавлены к остальным уже после установки слияния.

Следует всегда обращать на это внимание, так как зачастую этот метод используется для отвода фаерволлов. win 5840 – это размер окна (буфера), в котором хранятся данные для отправки

Отправитель вдобавок сообщает, что несмотря на большой размер буфера, максимальное число байт данных*, какое можно передать в его сети – 1460 (mss 1460), это стандартное значение для сетей Ethernet.

Потом, во второй строке, хост-сервер отсылает пакет с установленным SYN-флагом и подтверждение на получение пакета от хоста 192.168.0.1, заслуживает флаг ack и увеличен ISN клиента на 1(3292064291). Он также говорит размер своего окна и mss.

Знак . в третьей строке означает отсутствие флага SYN, FIN, RESET или PUSH (обычно его называют заполнителем). Хост подкрепляет получение пакета флагом ack, а следующая за ним цифра 1 показывает, что он увеличил ISN на 1. Такая несложная форма (использование единицы) позволяет не заполнять отчет постоянно изменяющимся ISN. Если же вы желаете, чтобы tcpdump не использовал эту форму, запустите tcpdump с ключом -S.

Вся проделанная процедура слияния называется ‘полным tcp-соединением с подтверждением данных’. Если вы запутались во всех этих записях в низу в таблице 1 показана расшифровка каждого поля.

* – Я не зря в скобках указал, что 1460 б – максимальное значение именно для данных, а не всего пакета. Если быть более буквальным, то это значение должно быть 1500. Просто 20 байт идет на tcp-заголовок и еще 20 на ip-заголовок.

Настилу Расшифровка

07:18:54.437096 метка времени
192.168.0.4 хост-отправитель

192.168.0.1 хост-получатель

80 порт размена данными

S флаг

3292064290 начальный порядковый номер

3292064290 конечный последовательный номер

(0) полезная нагрузка пакета

win 5840 размер окна

mss 1460 наибольшее число байтов, которые

можно передавать в данной сети.

Использование Tcpdump для анализа трафика

tcpdump — очень мощный и широкоиспользуемый инструмент для снифинга и анализа, кторый используется для перехвата TCP/IP пакетов, получаемых или отправляемых по сети. Утилита доступна практически во всех операционных системах Линукс. Tcpdump так же дает возможность сохранять перехваченные пакеты в файл, для их дальнейшего анализа в будующем. А если сохранить файлы в формате pcap, то их можно будет анализировать с помощью такого инструмента как Wireshark.

Установка tcpdump

sudo yum install tcpdump

Debian-like:

sudo apt-get install tcpdump

Tcpdump имеет формат записи:

tcpdump options expressions

При использовании tcpdump, требует права root.

Разберем опции tcpdump:

  • -i — указывает на каком интерфейсе выполнять перехват пакетов (по-умолчанию используется первый интерфейс);
  • -D — вывести список всех досиупных в системе интерфейсов;
  • -c — указывает количество пакетов для перехвата;
  • -n — указывает не выполнять преобразование ip-адреса в доменное имя;
  • -nn — указывает не преобразовывать номер порта в имя демона;
  • -A — выводит содержание пакета в формате ASCII;
  • -X — выводит содержимое пакета в формате HEX и ASCII;
  • -w — запись перехваченных пакетов в файл;
  • -r — чтение из файла;
  • -q — выводить мало данных;
  • -s — указывать сколько байт пакета необходимо захватить (по-умолчанию s0 или захват польностью);
  • -e — добавить в вывод содержание ethernet заговолков (2-й уровень OSI);
  • -v — более информативный вывод (например добавляется TTL и TOS);
  • -vv — еще более информативный вывод;
  • -ee -vvv — добавить в вывод теги Vlan.

Приведен список наиболее часто используемых опций, полный перечень смотрите в официальной документации и в man

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

  • host — указвание адреса или имени хоста;
  • net — указвание сети;
  • src — указание источника пакета;
  • dst — указание назначения пакета;
  • port — указание порта демона;
  • tcp,udp,icmp — указание протокола (tcp,udp,icmp и т.д.)
  • less длина — указывает перехватывать пакеты, длина которых меньше указанной;
  • greater длина — указывает перехватывать пакеты,длина которых больше указанной;
  • ether — указание MAC-адреса;
  • broadcast — указание что пакет должен быть Broadcast;

И конечно же все эти вырадения можно сочитать между собой с помощью логческих выражений:

  • and или && — логическое и;
  • or или || — логическое или;
  • not или ! — отрицание.

Рассмотрим примеры использования tcpdump

Перехват пакетов с источником 192.168.10.1 идущих к сети 192.168.20.0/24 на порт 22

sudo tcpdump src host 192.168.0.1 and dst net 192.168.20.0/24 \

 and dst port 22

Перехват icmp пакетов с выводм MAC-адресов без преобразования ip-адресов и номеров портов:

sudo tcpdump -evnn icmp

tcpdump: listening on enp3s0, link-type EN10MB (Ethernet), capture size 262144 bytes
13:07:40.660870 50:46:5d:73:08:28 > 00:25:90:a2:29:b4, ethertype IPv4 (0x0800),
length 98: (tos 0x0, ttl 64, id 13131, offset 0, flags , proto ICMP (1),
length 84)

172.20.9.40 > 172.20.1.1: ICMP echo request, id 29815, seq 1, length 64
13:07:40.661081 00:25:90:a2:29:b4 > 50:46:5d:73:08:28, ethertype IPv4 (0x0800),
length 98: (tos 0x0, ttl 64, id 58057, offset 0, flags ,
proto ICMP (1), length 84)

Перехват пакетов идущих к адресу назначения yandex.ru на порт 80 или 443 :

sudo tcpdump «host yandex.ru and (tcp dst port 80 \

 or tcp dst port 443")

Перехват трафика с отображением номеров Vlan (их можно потом искать с помощью grep):

sudo tcpdump -ee -vvv -i eth0

tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
10:03:26.973635 00:25:90:a2:29:b4 (oui Unknown) > 50:46:5d:73:08:28 (oui Unknown),
ethertype 802.1Q (0x8100), length 122: vlan 7, p 0, ethertype IPv4, (tos 0x10,
ttl 64, id 3187, offset 0, flags , proto TCP (6), length 104)

172.20.1.1 > 172.20.9.40.38552: Flags , cksum 0x62ac (incorrect -> 0x8f59),
seq 1666480162:1666480214, ack 2683254910, win 354, options , length 52

10:03:26.973657 00:25:90:a2:29:b4 (oui Unknown) > 50:46:5d:73:08:28 (oui Unknown),
ethertype 802.1Q (0x8100), length 122: vlan 7, p 0, ethertype IPv4, 
(tos 0x10, ttl 64, id 3188, offset 0, flags , proto TCP (6), length 104)

Как видно можно видеть в строке с указанием стандарта 802.1Q и номер vlan в нашем случае 7

Практическое использование

Можно узнать IP-адрес по доменному имени. Перед первой отправкой пакета делается запрос к DNS-серверу, если указан хост.
Можно узнать, работает ли сервер. Например, системный администратор может узнать, завис ли только веб-сервер или проблемы с хостом.
Можно узнать, есть ли связь с сервером. Например, проблемы с настройкой DNS-серверов на машине можно узнать, задав в ping сначала доменное имя, а потом IP-адрес.
Также можно узнать качество канала, посмотрев, сколько ответов не пришло

Это часто используется игроками в сетевые игры, потому что качество связи для них очень важно. Хотя не всегда это является показателем качества связи, в некоторых сетях протокол ICMP может иметь низкий приоритет либо блокироваться полностью.

Приложение

Исходные тексты программ

  • Скачать icmp_redir.c

  • Скачать send_arp.c

Полная версия этой статьи в PDF формате: arp_icmp.pdf

Special Thanks:

  1. Господам Медведовскому И.Д., Семьянову П.В., Леонову Д.Г. ака dl за издание книги «Атака на Интернет», выдержки из которой использовались в качестве многих дополнений.
  2. А.Робачевскому за прекрасную книгу «Операционная система UNIX»
  3. XR за просмотр первоначального варианта статьи и выдачу пожеланий.
  4. KMINT21 за дополнение по защите FreeBSD.

Использованная литература:

  1. Медведовский И.Д., Семьянов П.В., Леонов Д.Г. — «Атака на Интернет»,
  2. изд. второе, изд. ДМК, 1999 г.
  3. Робачевский А. — «Операционная система UNIX», изд BHV, 1997 г.
  4. Роберт Л. Зиглер — «Брандмауэры в Linux», 2000 г.

Сообщение Destination Unreacheable (адресат недостижим)

Это сообщение применяется для передачи хосту указания на то, что получатель отправленного им пакета IP не был найден. Такая проблема может быть вызвана многими причинами, о которых можно узнать по дополнительному коду в сообщении Destination Unreachable. Для этого сообщения определено шесть дополнительных кодов, описание которых приведено ниже.

  • Код Network unreachable (сеть недостижима). Этот код указывает, что от маршрутизаторов в сети поступили сообщения о том, что они не могут найти путь для передачи пакета от отправителя к получателю. Иными словами, не исключено, что сеть, в которой находится получатель, действительно существует, но маршрутизаторы не имеют информации о том, где она находится или как получить к ней доступ, поэтому они уничтожают пакет и передают отправителю такое сообщение.
  • Код Host unreachable (хост недостижим). Этот код указывает, что искомая сеть исправна и работоспособна и маршрутизатор вполне может получить к ней доступ, но хост получателя по какой-то причине не отвечает. Если же хост получателя не может обработать полученный пакет, он передает сообщение с кодом Protocol Unreachable или Port Unreachable.
  • Код Protocol unreachable (протокол недоступен). Этот код указывает, что хост получателя исправен и работоспособен, но протокол, который используется отправителем, на хосте получателя не поддерживается.
  • Код Port unreachable (порт недоступен). Согласно этому коду, требуемый протокол функционирует, но порт, который применяется для этого протокола, является недоступным. Дополнительная информация о портах приведена ниже в этой главе.
  • Код Unable to Fragment (фрагментация не может быть выполнена). С помощью этого передается информация о том, что в одном из маршрутизаторов по пути следования пакета возникла необходимость фрагментировать этот пакет, чтобы он соответствовал максимальной единице передачи данных в сети для протокола канального уровня, применяемого в текущем наборе протоколов, но такая операция не могла быть выполнена, поскольку в пакете установлен бит запрета фрагментации (Do not Fragment — DF).
  • Код Source Route Failed (маршрут, заданный отправителем, неприменим).

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

Сообщение Source Quench

Сообщение Source Quench протокола ICMP является типичным примером уведомления о заторе. Когда буфер устройства начинает заполняться, этим устройством может быть отправлено сообщение Source Quench ICMP на предыдущее устройство, находящееся на расстоянии одного транзитного перехода, с требованием замедлить передачу. Такой механизм напоминает схему уведомления о заторе, которая рассматривалась в главе 1. Единственным недостатком такого механизма является то, что устройства обычно начинают отправлять сообщения Source Quench только после того, как в них начинается уничтожение пакетов, полученных от предыдущего устройства. Сообщения Source Quench могут вырабатываться любыми устройствами вдоль пути следования пакета, независимо от того, являются ли эти устройства маршрутизаторами или оконечными устройствами (хостами). Кроме того, на сообщение Source Quench может также ответить любое устройство вдоль пути следования (маршрутизатор или хост), но и в этом случае перечень возможных ответов зависит от конкретной реализации протокола ICMP.

Пример отчета tcpdump

Ниже представлен пример отчета сетевого трафика в tcpdump: клиент делает запрос страницы из браузера, приобретает необходимые данные, а затем закрывает соединение. Этот простейший отчет не выделяется неизвестно чем особенным. На загруженном сервере подобные записи наверняка просто игнорируются, однако наша мишень – научиться читать эти отчеты, для того, чтобы в дальнейшем перейти к более сложным записям. В этом случае мы рассматриваем стандартное TCP – соединение.

Для более понятного восприятия, я разделил данный отчет на 3 этапа, сам Tcpdump конечно же ничего подобного не делает. Ниже я подробно обрисую каждую процедуру.

1 этап

  • 07:18:54.437096 192.168.0.4.1026 > 192.168.0.1.80: S 3292064290:3292064290(0) win 5840
  • 07:18:54.445895 192.168.0.1.80 > 192.168.0.4.1026: S 3900383410:3900383410(0) ack 3292064291 win 5792
  • 07:18:54.449874 192.168.0.4.1026 > 192.168.0.1.80: . ack 1 win 5840

2 шаг

  • 07:18:54.449921 192.168.0.4.1026 > 192.168.0.1.80: P 1:566(565) ack 1 win 5840
  • 07:18:54.450152 192.168.0.1.80 > 192.168.0.4.1026: . ack 566 win 6780
  • 07:18:54.505579 192.168.0.1.80 > 192.168.0.4.1026: P 1:321(320) ack 566 win 6780
  • 07:18:54.506535 192.168.0.4.1026 > 192.168.0.1.80: . ack 321 win 6432

3 шаг

  • 07:18:54.565873 192.168.0.4.1026 > 192.168.0.1.80: F 566:566(0) ack 322 win 6432
  • 07:18:54.565954 192.168.0.1.80 > 192.168.0.4.1026: . ack 567 win 6780
  • 07:18:54.56708 192.168.0.1.80 > 192.168.0.4.1026: F 321:321(0) ack 566 win 6780
  • 07:18:54.567954 192.168.0.4.1026 > 192.168.0.1.80: . ack 322 win 6432

Аппарат программного обеспечения

Как было выше упомянуто, для анализа пакетов мы будем использовать програмку tcpdump. Для ее установки потребуется библиотека libpcap, последнюю версию которой вы можете закачать с сайта www.tcpdump.org. впрочем, как и саму tcpdump. Настоятельно рекомендую перед установкой прочитать README и INSTALL, в них содержаться полезные сведения о том, с какими параметрами ее следует устанавливать, и какой-никакие дополнительные библиотеки нужны для правильной работы программы. В частности, для libpcap необходимы flex и bison. Когда у вас система основанная на RPM, то скорее всего пакеты есть на диске с дистрибутивом, либо уже находятся в системе. Лично я ставил libpcap из исходников с такими параметрами:

Как видите, я отключил поддержку IP 6 версии, мы будем рассматривать пакеты только 4 версии. Когда ставил tcpdump, я также выключил поддержку smb-принтера и криптоанализа.

У меня tcpdump водворился в директории /usr/local/sbin. Возможно, вам придется добавить эту директорию в переменную PATH, когда она там не числится. Для тех, кто не знает, это можно сделать вот так:

Вот и все, tcpdump поставлен и можно приступить к работе с самой программой.

5) Intercept packet from a specific port

You can decide to intercept packets to a specified port number with parameter.

# tcpdump -i eth0 -c 5 -nn port 22
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
09:27:27.773270 IP 96.126.114.47.22 > 169.255.7.5.44284: Flags , seq 1435459900:1435460016, ack 4135948192, win 419, options , length 116
09:27:27.773357 IP 96.126.114.47.22 > 169.255.7.5.44284: Flags , seq 116:232, ack 1, win 419, options , length 116
09:27:28.032620 IP 169.255.7.5.44284 > 96.126.114.47.22: Flags , ack 0, win 722, options , length 0
09:27:28.032655 IP 96.126.114.47.22 > 169.255.7.5.44284: Flags , seq 232:648, ack 1, win 419, options , length 416
09:27:28.032668 IP 169.255.7.5.44284 > 96.126.114.47.22: Flags , ack 116, win 722, options , length 0
5 packets captured
6 packets received by filter
0 packets dropped by kernel

Команда tcpdump

Перед тем как перейти к примерам работы с утилитой, давайте рассмотрим ее синтаксис и основные опции. Команда имеет такой синтаксис:

$ tcpdump опции -i интерфейс фильтры

При вызове обязательно нужно передать интерфейс, который будете отслеживать. Если интерфейс не указать, то будет использован первый в списке. Опции настраивают отображение и основные возможности утилиты, а фильтры позволяют отсеять ненужные пакеты. А теперь рассмотрим основные опции:

  • -A — выводить все пакеты в формате ASCII;
  • -c — закрыть программу после перехвата n-ого количества пакетов;
  • -C — при записи пакетов в файл, проверять размер файла, и если он больше заданного — создать новый файл;
  • -D — вывести список доступных сетевых интерфейсов;
  • -e — выводить информацию уровня соединения для каждого пакета, это может быть полезно, например, для отображения MAC адреса;
  • -f — выводить доменное имя для ip адресов;
  • -F — читать пакеты из файла, а не интерфейса;
  • -G — создавать новый файл лога через указанный промежуток времени;
  • -H — обнаруживать заголовки 802.11s;
  • -i — имя интерфейса для перехвата пакетов. Вы можете захватывать пакеты со всех интерфейсов, для этого укажите any;
  • -I — переключить интерфейс в режим монитора для захвата всех проходящих пакетов;
  • -j — установить формат Timestamp для записи пакетов;
  • -J — посмотреть доступные Timestamp;
  • -K — не проверять контрольные суммы пакетов;
  • -l — добавить поддержку прокрутки к выводу;
  • -L — вывести поддерживаемые протоколы подключения для интерфейса;
  • -n — не отображать доменные имена;
  • -r — прочитать пакеты из файла, созданного с помощью -w;
  • -v, -vv, -vvv — более подробный вывод;
  • -q — выводить минимум информации;
  • -w — записать вывод в файл;
  • -Z — пользователь, от имени которого будут создаваться файлы.

Это не все опции, но их вам будет вполне достаточно для решения большинства задач. Чаще мы будем применять фильтры. С помощью фильтров вы можете отсеивать только те типы пакетов, которые хотите видеть. Вы можете фильтровать по ip адресу, протоколу, сети, интерфейсу и многим другим параметрам. Но фильтры tcpdump мы будем рассматривать уже на примерах.

Ссылка на основную публикацию