Опубликован: 20.02.2006 | Доступ: свободный | Студентов: 2942 / 490 | Оценка: 4.22 / 3.75 | Длительность: 33:08:00
ISBN: 978-5-9556-0087-1
Лекция 6:

Сетевые анализаторы

Заголовки пакетов TCP/IP

В этом разделе описывается содержимое заголовков пакетов TCP/IP, чтобы вы могли разобраться в выводе Tcpdump. Структура пакетов TCP/IP определена в документе RFC 793 для TCP-части и в RFC 791 для IP-части. Полный текст этих спецификаций можно найти по адресу http://www.rfc-editor.org. Рис. 6.1 является графическим представлением заголовков TCP и IP. Заголовки обоих типов имеют длину не менее 20 байт и обычно представляются 32-битными секциями (4 байта) с адресами, опциями и другими настройками сеансов.

Заголовок TCP/IP

Рис. 6.1. Заголовок TCP/IP

Рассмотрим сначала IP-часть, так как это нижний уровень сетевой модели. Заголовок протокола IP содержит адреса получателя и отправителя пакета. Так как каждый адрес занимает 32 бита (4 октета по 8 бит каждый), то исходный и целевой IP-адреса вместе составляют 8 байт. В первой части заголовка помещаются различные переключатели и опции пакета. Первая строка содержит несколько бит, которые идентифицируют версию IP. Большинство сетей используют IP версии 4 (IPv4), но более новая 128-битная система IP, называемая IP версии 6 (IPv6), существует уже несколько лет и постепенно получает признание. Предполагается, что IPv6 разрешит проблемы адресного пространства IP, выделяя до 128 бит для адресной части, что должно удовлетворить любые мыслимые потребности. IPv6 решает также проблемы безопасности и верификации, имеющиеся в IPv4. Но в настоящее время вы в подавляющем большинстве случаев будете видеть пакеты IPv4. Затем следуют значения длины заголовка и типа сервиса (последний служит для дифференциации при определении приоритетов пакетов). Заключительный фрагмент этой строки представляет общую длину заголовка, которая обычно одинакова для всех пакетов (20 байт), но может меняться для новых протоколов, таких как IPv6.

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

Заголовок TCP отвечает за создание сеанса TCP и функции более высокого уровня. Обычно он имеет длину 20 байт и начинается с номеров исходного и целевого портов по 16 бит каждый. Именно поэтому номера портов не могут быть больше 65535 (216 равно 65536). (Интересно, что выбор всех этих чисел, вроде бы абсолютно произвольный, всегда на чем-то основан.)

Номера портов, как упоминалось ранее, определяют программу, которой необходимо направлять пакеты на удаленной машине, и идентифицируют сеанс на локальной машине. Следующая строка содержит порядковый номер. Он используется для сборки пакетов в правильном порядке на удаленном конце, даже если они приходят в другом порядке. Это один из аспектов отказоустойчивости сеансов TCP. Кроме того, имеется номер подтверждения, также длиной 32 бита, который позволяет проверить, что пакет идет с правильной машины. Следующая строка содержит 4-битную секцию, называемую смещением данных, которая определяет, сколько 32-битных строк или "слов" имеется в заголовке (обычно 4); за ней располагаются 6 бит, зарезервированных для будущих применений. Затем следует 6-битная секция, называемая флагами TCP. Вторая половина этой строки служит для согласования размера окна и говорит получателю, сколько бит готов принять отправитель. Флаги TCP весьма важны, здесь задаются различные управляющие биты, контролирующие обработку пакетов. Каждый тип коммуникаций TCP задается одним битом, единица соответствует включению, ноль - отключению. В табл. 6.1 перечислены шесть полей раздела флагов TCP и описано их применение. Примечание: Каждое "поле" имеет ширину один бит (просто - единица или ноль, включено или выключено).

Таблица 6.1. Поля флагов TCP
Флаг TCP Полное имя Описание
URG Указатель срочности Показывает приоритет TCP-пакетов
ACK Подтверждение Помечает этот пакет как подтверждение получения
PSH Выталкивание Выталкивает поставленные в очередь данные из буферов
RST Сброс Сбрасывает соединение TCP по завершении или после разрыва
SYN Синхронизация Синхронизирует соединение
FIN Завершение Завершает передачу

Обычно только один или два из этих флагов установлены (биты заданы как единица), но, как мы видели в "Сканеры портов" , ничто не мешает отправить пакет со всеми битами взведенными (сканирование XMAS) или выключенными (сканирование NULL), чтобы попытаться запутать удаленную систему.

Следом располагается контрольная сумма TCP и указатель срочности. Затем идет строка со всеми TCP-опциями пакета, такими как дополнительные контрольные суммы, метки времени и т.д. Эта строка дополняется до 32 бит нулями, если опции не заполняют ее целиком. Наконец, следует полезная нагрузка - данные пакета. Может показаться, что на отправку одного пакета уходит слишком много накладных административных расходов (примерно 48 байт для каждого пакета), но это на самом деле обеспечивает относительно устойчивое соединение в сети, которая не всегда обладает сквозной надежностью (как Интернет). В действительности, чтобы избежать дополнительных расходов TCP, некоторые протоколы, не требующие соединения, используют UDP - протокол без установления соединений с меньшими накладными расходами.

В стандартном сеансе Tcpdump с обычным уровнем подробности вывода вы увидите метку времени, за которой следует порядковый номер TCP. Затем выдаются IP-части, включая исходный и целевой адреса, разделенные знаком > (больше), означающим, что пакет идет отсюда туда. В конце располагается информационное поле, которое показывает, что делает пакет. Можно использовать опции -v или -vv, чтобы получить от Tcpdump более подробные данные о заголовке (см. следующий раздел).

Обычно вы будете запускать Tcpdump с некоторыми установленными опциями или фильтрами, чтобы уменьшить и сфокусировать вывод. Общий вид инструкции запуска Tcpdump таков:

Tcpdump опции выражения

Замените опции и выражения одной или несколькими допустимыми переменными. Опции Tcpdump перечислены в табл. 6.2.

Таблица 6.2. Опции Tcpdump
Опция Описание
-a Пытается преобразовать адреса в имена. Это создает дополнительную нагрузку на систему и может привести к потере пакетов
-c число Останавливает Tcpdump после обработки заданного числа пакетов
-C размер_файла Ограничивает размер выходных файлов заданным числом байт
-d Выдает процедуру сопоставления пакетов с образцом в удобочитаемом виде и затем останавливается
-dd Выдает процедуру сопоставления пакетов с образцом в виде фрагмента программы на языке Си
-ddd Выдает процедуру сопоставления пакетов с образцом в виде десятичных чисел
-e В каждой строке выдачи печатает заголовок канального уровня (в сетях Ethernet это MAC-адрес)
-E алгоритм:секрет Использует встроенную в Tcpdump возможность расшифровывать на лету пакеты, зашифрованные по протоколу IPsec ESP. Разумеется, чтобы использовать эту опцию, вы должны располагать разделяемым секретным ключом. В число возможных значений параметра "алгоритм" входят des-cbc, 3des-cdc, blowfish-cbc, r3c-cbc, приведенный 128-cbc. Кроме того, оно может быть пустым. По умолчанию используется des-cbc. Значением параметра "секрет" должен служить секретный ключ ESP в текстовом виде. Дополнительную информацию об IPsec можно найти в "Криптографические средства"
-F файл Использует файл (а не сеть) для ввода данных. Это удобно для анализа событий "постфактум".
-i интерфейс Читает из заданного интерфейса, когда на анализирующей машине имеется несколько сетевых интерфейсов. По умолчанию Tcpdump использует действующий интерфейс с наименьшим номером. В системах Linux можно использовать также параметр any для перехвата пакетов из всех сетевых интерфейсов
-n Не преобразовывает адреса в имена
-N Не печатает в именах хостов имя домена вышележащего уровня. Это полезно, если вам необходимо представить обезличенную версию вывода и вы не хотите раскрывать, чья это сеть
-p Не переводит интерфейс в режим прослушивания. Используется только при исследовании трафика, направленного в анализирующий компьютер
-q Печатает быстрый вывод. Печатается меньше протокольной информации, поэтому строки оказываются короче
-T тип Заставляет интерпретировать пакеты, выбранные заданным в выражении фильтром, в соответствии с указанным типом
-t Не печатает метку времени в каждой строке
-tt Печатает неформатированную метку времени в каждой строке
-ttt Печатает интервал времени между пакетами
-tttt Печатает в каждой строке дату, а затем метку времени в подразумеваемом формате
-v Использует чуть более подробный вывод, включающий время жизни, идентификатор, общую длину и поля опций каждого пакета
-vv Предоставляет более детальный вывод. Пакеты NFS и SMB полностью декодируются
-vvv Предоставляет еще более подробный вывод. Это может существенно замедлить работу анализатора
-w имя_файла Записывает пакеты в указанный файл вместо вывода их на экран. Таким образом результаты "вынюхивания" без участия человека можно сохранить и проанализировать их позже. Например, если в вашей сети происходят какие-то странные вещи, вы можете запустить Tcpdump на ночь, чтобы перехватить весь необычный трафик. Не забудьте написать хороший фильтр, иначе полученный наутро файл может оказаться слишком большим
-x Выводит каждый пакет (без заголовка канального уровня) в шестнадцатеричном виде.
-X Выводит содержимое пакетов и в шестнадцатеричном, и в текстовом видах
Роман Попов
Роман Попов

После прохождения курса Стандарты инфрмационной безопасности мне предложено получение Удостоверения о повышении квалификации от НИУ ВШЭ по программе Менеджмент информационной безопасности. Программа включает в себя ряд курсов которые я уже ранее проходил. Какой порядок действий в данном случае? Как прозводится перезачет результатов? И какие экщамены мне надо еще доздать чтобы получить удостоверение?

Александр Путятинский
Александр Путятинский

Добрый день по окончании данного курса выдается сертификат?