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

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

В этой статье подробно рассказывается о 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 может захватывать пакеты. Каждому сетевому интерфейсу присваивается номер. Это число можно использовать с параметром «- i» для захвата пакетов на конкретном интерфейсе.

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

tcpdump –list-interface
tcpdump -D

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

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

tcpdump

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

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

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

tcpdump -i eth0

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

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

tcpdump -i eth0 -c10

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

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

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

tcpdump -i eth0 -c 5 -A

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

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

tcpdump -i eth0 -c 5
tcpdump -i eth0 -c 5 -nn

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

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

tcpdump -i eth0 -c 5 -v port 80

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

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

tcpdump host 104.28.6.89 -c10 -A -n

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

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

tcpdump -i eth0 -c 3 -X

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

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

tcpdump -i eth0 -nnXS

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

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

tcpdump -i eth0 icmp -c 10

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

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

tcpdump -i eth0 icmp -c 5 -Q in

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

tcpdump -i eth0 icmp -c 5 -Q out

Функция «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

Длина снимка

Длина моментального снимка / 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

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

tcpdump -i eth0 -c5
tcpdump -i eth0 -c5 -e

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

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

tcpdump -i eth0 -c 2 -x
tcpdump -i eth0 -c 2 -xx

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

tcpdump -i eth0 -c 2 -X
tcpdump -i eth0 -c 2 -XX

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

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

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

tcpdump -i eth0 -c 2 -Z root
tcpdump -i eth0 -c 2 -Z kali

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

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

Метка времени — это время, зарегистрированное в файле, журнале или уведомлении, которые могут записывать, когда данные добавляются, удаляются, изменяются или передаются. В 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 пользователь может принудительно сканировать трафик данных, чтобы просмотреть какой-то конкретный протокол. При использовании функции «force packet» человек способен интерпретировать указанный тип. С помощью параметра «-t» пользователь может увидеть в пакетах данных только нужные ему результаты протокола.

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

RADIUS

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

tcpdump -i eth0 -c5 -T radius

AODV

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

tcpdump -i eth0 -c5 -T aodv

RPC 

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

tcpdump -i eth0 -c5 -T rpc

CNFP 

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

tcpdump -i eth0 -c5 -T rpc

LMP

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

tcpdump -i eth0 -c5 -T lmp

PGM 

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

tcpdump -i eth0 -c5 -T pgm

RTP

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

tcpdump -i eth0 -c5 -T rtp

RTCP 

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

tcpdump -i eth0 -c5 -T rtcp

SNMP 

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

tcpdump -i eth0 -c5 -T snmp

TFTP

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

tcpdump -i eth0 -c5 -T tftp

VAT

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

tcpdump -i eth0 -c5 -T vat

WB

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

tcpdump -i eth0 -c5 -T wb

VXLAN

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

tcpdump -i eth0 -c5 -T vxlan

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

Promiscuous Mode

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

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

ifconfig eth0 promisc
ifconfig eth0

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

tcpdump -i eth0 -c 10

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

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

tcpdump -i eth0 -c 5 --no-promiscuous-mode

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

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

tcpdump --version

Quick Mode

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

tcpdump -i eth0 -c 5
tcpdump -i eth0 -c 5 -q

Запросы HTTP

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

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

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

tcpdump -s 0 -A -vv 'tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420'

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

tcpdump -s 0 -A -vv 'tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504f5354'

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

tcpdump -v -n -l | egrep -i "POST /|GET /|Host:"

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

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

tcpdump -nn -A -s150 -l | grep "User-Agent:"

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

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

tcpdump -i eth0 portrange 21-80

Назначение

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

tcpdump -i eth0 dst google.com

Источник

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

tcpdump -i eth0 src google.com

Сеть

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

tcpdump net 192.168.0.1 -c5

Пакеты TCP

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

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

tcpdump 'tcp[tcpflags] == tcp-syn'

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

tcpdump 'tcp[tcpflags] == tcp-rst'

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

tcpdump 'tcp[tcpflags] == tcp-ack' -c5

Tcpdump и Wireshark

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

ssh root@remotesystem 'tcpdump -c20 -nn -w - not port 22' | wireshark -k -i –

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

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

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

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

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Поделиться ссылкой

Игорь Б

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

Автор на портале cisoclub.ru. Добавляйте ваш материал на сайт в разделе "Разместить публикацию".
Читать все записи автора Игорь Б

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

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

пять + семнадцать =