Руководство по tcpdump

Дата: 15.09.2020. Автор: Игорь Б. Категории: Статьи по информационной безопасности
Руководство по tcpdump

В этой статье подробно рассказывается о tcpdump. Это мощный инструмент командной строки для анализа сетевых пакетов. Tcpdump помогает устранять неполадки в сети, а также анализировать работу некоторых инструментов безопасности.

Введение

Tcpdump был первоначально разработан в 1988 году Van Jacobson, Sally Floyd, Vern Paxson и Steven McCanne. Они работали в исследовательской группе Lawrence Berkeley Laboratory Network.

Инструмент дает своим пользователям возможность отображать TCP / IP и другие пакеты, принимаемые и передаваемые по сети. Он работает на большинстве операционных систем на базе Linux. Инструмент использует библиотеку libpcap для захвата пакетов. Она является библиотекой на основе C/C++. Tcpdump также имеет версию для Windows. Она называется Windump. Этот инструмент использует winpcap для своей библиотеки.

Доступные функции

Человек может использовать следующий параметр для печати строк tcpdump и libpcap. Кроме того, он способен распечатать сообщение об использовании инструмента, в котором указаны все доступные параметры.

tcpdump -h
tcpdump --help
Руководство по tcpdump

Список интерфейсов

Интерфейс — это точка соприкосновения компьютера и сети. Человек может использовать следующий параметр для печати списка сетевых интерфейсов, доступных в системе. Он также способен обнаруживать интерфейсы, на которых tcpdump может захватывать пакеты. Каждому сетевому интерфейсу присваивается номер. Это число можно использовать с параметром «- i» для захвата пакетов на конкретном интерфейсе.

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

tcpdump –list-interface
tcpdump -D
Руководство по tcpdump

Захват по умолчанию

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

tcpdump
Руководство по tcpdump

Захват трафика конкретного интерфейса

Пользователь будет захватывать трафик с помощью сети Еthernet, которая известна как «eth0». Этот тип интерфейса обычно соединяется с сетевым кабелем категории 5.

Для выбора этого интерфейса нужно использовать параметр «-i».

tcpdump -i eth0
Руководство по tcpdump

Количество пакетов

Tcpdump обладает некоторыми удивительными функциями, которые пользователь может использовать, чтобы сделать свой анализ трафика более эффективным. Он способен получить доступ к некоторым из этих функций, используя различные параметры. Человек использует параметр «-c», который поможет ему захватить точное количество данных, которые нужны, и отобразить их. Так будет уточняться объем данных, которые захватил пользователь.

tcpdump -i eth0 -c10
Руководство по tcpdump

Verbose mode

Verbose mode предоставляет человеку информацию о сканировании трафика. Например, время жизни (TTL), идентификацию данных, общую длину и доступные опции для IP-пакетов. Он позволяет также проводить дополнительные проверки целостности пакетов, такие как проверка заголовков IP и ICMP.

Чтобы получить дополнительную информацию с помощью сканирования, нужно использовать параметр «-v».

TCPDump предоставляет нам множество параметров, которые cвязаны с этим режимом, например -v, -vv, — vvv, где каждый из них имеет свою уникальную функцию.

  • параметр v — это традиционный режим;
  • параметр -vv – это уже чуть больше, чем простой традиционный режим, дополнительные поля печатаются из ответных пакетов NFS (Network File System), а SMB-пакеты полностью декодируются;
  • параметр -vvv способен обеспечить функционал tenet.
tcpdump -i eth0 -c 5 -v
Руководство по tcpdump

Печать каждого пакета в формате ASCII

ASCII — это аббревиатура стандарта американского кода для обмена информацией. Это стандарт кодирования символов для связи по сети. Коды ASCII представляют собой текст на компьютерах и других устройствах. Большинство современных методов кодирования символов были основаны на кодах ASCII. Чтобы напечатать каждый пакет в коде ASCII, нужно использовать параметр «-a».

tcpdump -i eth0 -c 5 -A
Руководство по tcpdump

Не стоит преобразовывать адрес

С помощью параметра tcpdump «-nn» человек может видеть фактический фоновый адрес без каких-либо фильтров. Эта функция помогает лучше понимать чистый трафик данных.

tcpdump -i eth0 -c 5
tcpdump -i eth0 -c 5 -nn
Руководство по tcpdump

Фильтр портов

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

tcpdump -i eth0 -c 5 -v port 80
Руководство по tcpdump

Фильтр хостов

Этот фильтр помогает человеку проанализировать трафик данных конкретного хоста. Он также позволяет придерживаться определенного хоста, благодаря которому анализ становится еще лучше. Кроме того, можно применить несколько параметров, таких как «-v, -c, -а, -n», чтобы получить дополнительную информацию о хосте.

tcpdump host 104.28.6.89 -c10 -A -n
Руководство по tcpdump

Заголовок каждого пакета

Заголовок содержит все инструкции для отдельных пакетов о переносимых ими данных. Эти инструкции могут быть длиной пакета, рекламой, синхронизацией, кодом ASCII, шестнадцатеричными значениями. Человек способен использовать параметр «-х», чтобы увидеть эту информацию, хранящуюся в пакетах данных.

tcpdump -i eth0 -c 3 -X
Руководство по tcpdump

Порядковый номер TCP

Все байты в TCP-соединениях имеют порядковый номер, который является случайно выбранным начальным порядковым номером (ISN). SYN-пакеты имеют один порядковый номер, поэтому данные будут начинаться с ISN+1. Порядковый номер — это номер байта данных в пакете TCP, который передается дальше. Параметр «-s» используется для просмотра этих сегментов данных захваченных пакетов.

tcpdump -i eth0 -nnXS
Руководство по tcpdump

Фильтр пакетов

Еще одна функция, предоставляемая tcpdump, — это фильтрация пакетов. Это помогает видеть результаты пакетной обработки конкретного пакета данных в сканировании. Если человек хочет применить этот фильтр в его сканировании, нужно просто добавить нужный пакет.

tcpdump -i eth0 icmp -c 10
Руководство по tcpdump

Пакеты данных

Для определения направления потока данных в трафике человек может использовать следующий параметр:

tcpdump -i eth0 icmp -c 5 -Q in
Руководство по tcpdump

Для просмотра всех запросов, которые человек отправляет на сервер, можно использовать следующий параметр (- Q out):

tcpdump -i eth0 icmp -c 5 -Q out
Руководство по tcpdump

Функция «Live number count»

Человек также может включить функцию подсчета живых номеров, чтобы увидеть, сколько пакетов было отсканировано или захвачено во время сканирования трафика данных. Параметр «-number» используется для подсчета количества пакетов, захваченных при сканировании в живом режиме. Пользователь сравнивает количество пакетов с количеством активных номеров, чтобы оценить точность анализа.

Чтение и запись файла

С помощью tcpdump человек может читать и записывать файл расширения pcap. Write (- w) позволяет записывать необработанные пакеты данных, которые пользователь отправляет в качестве выходных данных в стандартный файл расширения pcap. Где опция read (- r) помогает прочитать этот файл. Чтобы записать выходные данные в файл .pcap, следует сделать следующее:

tcpdump -i eth0 icmp -c 10 -w file.pcap

Чтобы прочитать этот файл, пользователю нужно ввести:

tcpdump -r file.pcap
Руководство по tcpdump

Длина снимка

Длина моментального снимка / snaplen считается байтами данных из каждого пакета. По умолчанию этот параметр установлен на 262144 байта. С помощью tcpdump пользователь способен настроить этот предел в соответствии с его требованиями, чтобы лучше проанализировать результат. Параметр «-s» помогает сделать это.

tcpdump -i eth0 icmp -s10 -c2
tcpdump -i eth0 icmp -s25 -c2
tcpdump -i eth0 icmp -s40 -c2
tcpdump -i eth0 icmp -s45 -c2
Руководство по tcpdump

Dump mode

Dump mode имеет несколько параметров, таких как -d, -dd, -ddd. Где -D параметр сбрасывает скомпилированный соответствующий код в читаемый вывод, -DD параметр сбрасывает код в виде фрагмента программы на языке C, параметр -DDD сбрасывает дампы кода в виде десятичного числа с подсчетом. Чтобы увидеть эти результаты в сканировании, нужно ввести следующее:

tcpdump -i eth0 -c 5 -d
tcpdump -i eth0 -c 5 -dd
tcpdump -i eth0 -c 5 -ddd
Руководство по tcpdump

Заголовок канального уровня

Tcpdump предоставляет возможность продемонстрировать заголовки каждого пакета данных на уровне каналов. Человек использует параметр «-e», чтобы получить эту информацию в результате имеющегося трафика данных. Как правило, используя этот параметр, человек получает MAC-адрес для таких протоколов, как Ethernet и IEEE 802.11.

tcpdump -i eth0 -c5
tcpdump -i eth0 -c5 -e
Руководство по tcpdump

Анализ синтаксиса и печать

Как все знают, разговор конкретного синтаксиса с абстрактным синтаксисом называется синтаксическим анализом. Разговор абстрактного синтаксиса с конкретным синтаксисом называется распаковкой или печатью. Теперь для разбора пакета данных пользователь может использовать параметр «-x», а для вывода абстрактного синтаксиса – параметр «-xx». В дополнение к печати заголовков каждого пакета данных, человек также может распечатать пакет в шестнадцатеричном формате вместе с его snaplen.

tcpdump -i eth0 -c 2 -x
tcpdump -i eth0 -c 2 -xx
Руководство по tcpdump

Если пользователь хочет, чтобы эта информация предоставлялась ему с помощью параметра «-x» вместе с ее ASCII-кодом, то нужно использовать как раз его, а если он желает получить результаты параметра «-xx» вместе с их ASCII-кодами, то его нужно применить. Чтобы использовать эти параметры в анализе данных, человеку следует ввести следующие команды:

tcpdump -i eth0 -c 2 -X
tcpdump -i eth0 -c 2 -XX
Руководство по tcpdump

Сканирование пользователя

Если пользователь запускает tcpdump как root, то перед открытием любого сохраненного файла для анализа он заметит, что файл изменяет ID пользователя на пользователя, а идентификаторы групп — на основную группу своих пользователей.

Tcpdump включает в себя параметр -Z, с помощью которого человек может справиться с этой проблемой, но ему нужно указать имя пользователя следующим образом:

tcpdump -i eth0 -c 2 -Z root
tcpdump -i eth0 -c 2 -Z kali
Руководство по tcpdump

Есть еще один способ сделать это с помощью параметра «–relinquish-privileges=».

Руководство по tcpdump

Точность временных меток

Метка времени — это время, зарегистрированное в файле, журнале или уведомлении, которые могут записывать, когда данные добавляются, удаляются, изменяются или передаются. В tcpdump есть множество параметров, которые связаны со значениями временных меток. Среди них: -t, -tt, -ttt, -tttt, -ttttt, где каждый параметр имеет свою уникальную функцию и значение.

  • параметр -t отключает печать метки времени на каждой строке дампа;
  • параметр -tt ставит метку времени за несколько секунд;
  • параметр -ttt способен включить печать разрешения за микросекунды или наносекунды в зависимости от точности временной метки между текущей и предыдущей строкой на строке дампа. Здесь микросекунда — это разрешение по умолчанию;
  • параметр -tttt дает возможность печатать метку времени в виде часов, минут, секунд и долей секунды;
  • параметр -ttttt очень похож на -ttt; он может установить временной промежуток между текущей и первой строкой на каждой линии дампа.

Чтобы применить эти функции в сканировании, нужно выполнить следующие команды:

tcpdump -i eth0 -c 2
tcpdump -i eth0 -c 2 -t
tcpdump -i eth0 -c 2 -tt
tcpdump -i eth0 -c 2 -ttt
tcpdump -i eth0 -c 2 -tttt
tcpdump -i eth0 -c 2 -ttttt
Руководство по tcpdump

Форсирование пакетов

В tcpdump пользователь может принудительно сканировать трафик данных, чтобы просмотреть какой-то конкретный протокол. При использовании функции «force packet» человек способен интерпретировать указанный тип. С помощью параметра «-t» пользователь может увидеть в пакетах данных только нужные ему результаты протокола.

Основной синтаксис всех пакетов force останется таким же, как и другие параметры «-t», за которыми следует нужный протокол. Ниже приведены некоторые протоколы форсирования пакетов:

RADIUS

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

tcpdump -i eth0 -c5 -T radius
Руководство по tcpdump

AODV

Протокол Adhoc On-demand Distance Vector — это протокол маршрутизации для мобильных и других беспроводных сетей. Этот протокол маршрутизации используется для получения низкой скорости передачи данных в беспроводных сетях. Чтобы увидеть эти результаты в сканировании, следует сделать следующее:

tcpdump -i eth0 -c5 -T aodv
Руководство по tcpdump

RPC 

Remote procedure call – это протокол, который одна программа может использовать для запроса обслуживания для другой программы, расположенной на ином компьютере в сети, без необходимости разбираться в деталях соединения. Вызов процедуры также известен как вызов функции. Для получения этого протокола в сканировании следует использовать следующую команду:

tcpdump -i eth0 -c5 -T rpc
Руководство по tcpdump

CNFP 

Протокол Cisco NetFlow — это сетевой протокол, разработанный компанией Сisco для сбора и мониторинга сетевого трафика, потока данных, генерируемых маршрутизаторами и коммутаторами с поддержкой NetFlow. Он экспортирует статистику трафика по мере ее записи, которая затем коллекционируется и сохраняется с помощью его сборщика. Чтобы получить этот протокол, следует выполнить следующее:

tcpdump -i eth0 -c5 -T rpc
Руководство по tcpdump

LMP

Протокол Link Management предназначен для облегчения настройки и управления оптическими сетевыми устройствами. Чтобы понять работу LMP в сети, нужно применить этот протокол в сканировании.

tcpdump -i eth0 -c5 -T lmp
Руководство по tcpdump

PGM 

Pragmatic general multicast – это надежный транспортный протокол многоадресной сети. Он может обеспечить постоянную последовательность пакетов для нескольких получателей одновременно. Что еще больше делает его пригодным для передачи файлов нескольким приемникам. Чтобы понять его работу в трафике данных, следует выполнить:

tcpdump -i eth0 -c5 -T pgm
Руководство по tcpdump

RTP

Протокол Real-time application может кодировать мультимедийные потоки данных, такие как аудио или видео. Он делит их на пакеты и передает по IP-сети. Чтобы проанализировать этот протокол в трафике, нужно ввести данную команду:

tcpdump -i eth0 -c5 -T rtp
Руководство по tcpdump

RTCP 

Протокол Real-time application control обладает всеми возможностями RTP наряду с дополнительными функциями. С помощью них человек может контролировать его работу в сетевой среде. Чтобы понять работу этого протокола в трафике данных, следует применить следующие команды:

tcpdump -i eth0 -c5 -T rtcp
Руководство по tcpdump

SNMP 

Протокол Simple Network Management – это стандартный протокол Интернета для сбора и организации информации об управляемых устройствах в IP-сетях с целью изменения этой информации для корректировки поведения устройств. Чтобы увидеть его работу в трафике, нужно ввести эту команду:

tcpdump -i eth0 -c5 -T snmp
Руководство по tcpdump

TFTP

Протокол Trivial File Transfer — это простой протокол передачи файлов lockstep, который позволяет своим клиентам получить файл с удаленного хоста. Он используется на ранних стадиях загрузки узла из локальной сети. Чтобы понять его трафик, необходимо выполнить эту команду:

tcpdump -i eth0 -c5 -T tftp
Руководство по tcpdump

VAT

Visual Audio Tool был разработан Van Jacobson и Steven McCanne. Это электронный носитель, обрабатывающий как звуковые, так и видео файлы. Чтобы понять его пакеты данных в трафике, нужно ввести эти команды:

tcpdump -i eth0 -c5 -T vat
Руководство по tcpdump

WB

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

tcpdump -i eth0 -c5 -T wb
Руководство по tcpdump

VXLAN

Virtual Xtensible Local Area Network – это технология в сфере сетевой виртуализации, с помощью которой человек пытается решить проблемы масштабируемости, связанные с большой областью облачных вычислений. Этот предлагаемый протокол инкапсуляции третьего уровня облегчит сетевым инженерам масштабирование облачных вычислений. Чтобы понять, что представляет его трафик, надо выполнить следующие команды:

tcpdump -i eth0 -c5 -T vxlan
Руководство по tcpdump

Это всего лишь некоторые из протоколов, которые используются в параметре forced packets для получения фиксированного желаемого трафика данных после сканирования.

Promiscuous Mode

В сети Promiscuous Mode используется в качестве контроллера интерфейса, который заставит tcpdump передавать трафик, что он отправляется сразу на компьютер.

Чтобы настроить этот режим, следует выполнить данные команды:

ifconfig eth0 promisc
ifconfig eth0
Руководство по tcpdump

После включения Promiscuous Mode в сети надо захватить некоторые пакеты, применив эти команды:

tcpdump -i eth0 -c 10
Руководство по tcpdump

Отключение Promiscuous Mode

В предыдущей главе читатели узнали о Promiscuous Mode, который означает, что сетевая интерфейсная карта будет передавать все полученные данные в ОС для обработки. По сравнению с традиционной операцией, когда в ОС будут передаваться только данные, связанные с MAC-адресом сетевой карты. Как правило, Promiscuous Mode используется для снифинга трафика. Но если человек хочет переключиться в режим многоадресной рассылки, нужно использовать параметр «-no-promiscuous-mode», который поможет ему добиться желаемого.

tcpdump -i eth0 -c 5 --no-promiscuous-mode
Руководство по tcpdump

Сведения о версии

Стоит начать с одной из самых простых команд, чтобы читатели могли понять и связать все практические действия. Человек может использовать данный параметр для печати строк tcpdump, libpcap и OpenSSL.

tcpdump --version
Руководство по tcpdump

Quick Mode

Если скорость сети очень медленная, выполнение любой операции займет больше времени, чем обычно. Человек, который разработал tcpdump, подумал об этой проблеме и предоставил пользователям способ ускорить процесс с помощью параметра «-q». Там образом, будет печататься меньше информации о протоколах и пакетах данных, чтобы сэкономить время.

tcpdump -i eth0 -c 5
tcpdump -i eth0 -c 5 -q
Руководство по tcpdump

Запросы HTTP

Как известно, HTTP-запросы — это информационное сообщение от клиента к серверу по протоколу передачи гипертекста (HTTP). Существуют различные методы для доставки этой информации. Эти способы чувствительны к регистру и всегда упоминаются в верхней его части. С помощью tcpdump пользователь может захватить эти запросы для анализа трафика, отправленного по указанному протоколу.

Метод, который мы можем исследовать с помощью tcpdump, состоит в следующем:

GET — это запрос, который используется для получения информации с сервера по заданному URL-адресу.

tcpdump -s 0 -A -vv 'tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420'
Руководство по tcpdump

POST — это запрос, который используется для отправки данных на сервер. Например, информация о клиентах, загрузке файлов и использовании HTML-форм. Трафик по этому протоколу можно проанализировать с помощью следующей команды:

tcpdump -s 0 -A -vv 'tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504f5354'
Руководство по tcpdump

Request-URL – это единый идентификатор ресурса, который идентифицирует ресурс, к которому нужно применить запросы. Наиболее распространенная форма используется для идентификации ресурса на сервере. Если клиент хочет получить данные непосредственно с сервера, откуда они были взяты, то он создаст соединение с портом 80 хоста и отправит запрос. Эти запросы можно перехватить с помощью следующих команд:

tcpdump -v -n -l | egrep -i "POST /|GET /|Host:"
Руководство по tcpdump

Агент пользователя

С помощью TCPDump человек также может увидеть, какой трафик генерируется из какого приложения. Он способен найти пользовательские агенты в трафике данных с помощью следующей команды:

tcpdump -nn -A -s150 -l | grep "User-Agent:"
Руководство по tcpdump

Диапазон портов

Некоторые фильтры портов помогают анализировать трафик на конкретном порту. Но в tcpdump пользователь устанавливает диапазон портов, через которые он может отслеживать назначение TCP/UDP или других сетевых протоколов.

tcpdump -i eth0 portrange 21-80
Руководство по tcpdump

Назначение

Чтобы проверить поток данных в сетевом трафике к определенному месту назначения, следует использовать следующую команду:

tcpdump -i eth0 dst google.com
Руководство по tcpdump

Источник

Чтобы проверить трафик данных, поступающий из определенного источника, можно ввести следующую команду:

tcpdump -i eth0 src google.com
Руководство по tcpdump

Сеть

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

tcpdump net 192.168.0.1 -c5
Руководство по tcpdump

Пакеты TCP

TCP-пакет — это формат, состоящий из таких полей, как исходный порт и поле порта назначения. С помощью этих полей пользователь может идентифицировать конечные точки соединений, а также захватить эти TCP-пакеты в различных форматах флагов, то есть SYN, RST и ACK.

SYN-флаг известен как тот, который синхронизирует порядковые номера для инициирования TCP-соединения. Пользователь может захватить этот конкретный пакет из трафика с помощью tcpdump.

tcpdump 'tcp[tcpflags] == tcp-syn'
Руководство по tcpdump

RST-флаг известен как флаг сброса. Этот флаг передается от получателя к отправителю, если пакет отправляется определенному хосту, который его там ждет. Первый флаг используется, чтобы восстановить соединение конечных точек TCP. Пользователь может захватить этот флаг из трафика данных с помощью tcpdump.

tcpdump 'tcp[tcpflags] == tcp-rst'
Руководство по tcpdump

ACK-флаг известен как флаг подтверждения. Этот флаг используется для подтверждения того, что пакет данных успешно получен. Пользователь может захватить эти флаги с помощью tcpdump для изучения трафика данных.

tcpdump 'tcp[tcpflags] == tcp-ack' -c5
Руководство по tcpdump

Tcpdump и Wireshark

Единственное различие между Wireshark и TCPDump заключается в том, что Wireshark — это графический интерфейс пользователя, а tcpdump — инструмент командной строки. Но с помощью нескольких источников пользователь использует команду tcpdump и просматривает результаты своего трафика данных в Wireshark, что, по мнению автора, является лучшим способом анализа трафика. Это можно сделать с помощью следующей команды:

ssh [email protected] 'tcpdump -c20 -nn -w - not port 22' | wireshark -k -i –
Руководство по tcpdump

После выполнения этой команды человек немедленно откроет Wireshark и получит подробную информацию о сканировании. Нужно нажать на кнопку «OK», чтобы двигаться дальше.

Руководство по tcpdump

После этого инструмент спросит, из какого сетевого интерфейса пользователь хочет захватить пакеты данных. В данном случае это будет eth0, поэтому человек выбирает именно этот сетевой интерфейс.

Руководство по tcpdump

После окончания всех формальностей появится экран захвата данных в реальном времени.

Руководство по tcpdump

Выполнив все эти шаги, пользователь может запустить команду tcpdump и записать ее результаты в Wireshark.

Важно! Информация исключительно в учебных целях. Пожалуйста, соблюдайте законодательство и не применяйте данную информацию в незаконных целях.

Игорь Б

Об авторе Игорь Б

Представитель редакции CISOCLUB. Добавляю статьи на сайт.
Читать все записи автора Игорь Б

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *