• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Руководство по tcpdump

lima8v4v

RAID-массив
Пользователь
Регистрация
28.07.2020
Сообщения
92
Реакции
284
052127c57858416b9821327e08bd72de.jpg


В этой статье подробно рассказывается о 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

1-59.png


Список интерфейсов
Интерфейс — это точка соприкосновения компьютера и сети. Человек может использовать следующий параметр для печати списка сетевых интерфейсов, доступных в системе. Он также способен обнаруживать интерфейсы, на которых tcpdump может захватывать пакеты. Каждому сетевому интерфейсу присваивается номер. Это число можно использовать с параметром «- i» для захвата пакетов на конкретном интерфейсе.
Может возникнуть ситуация, когда машина, с которой работает пользователь, не способна перечислить сетевые интерфейсы, на которых она функционирует. Это проблема совместимости, препятствующая выполнению некоторых конкретных команд (ifconfig-a).
Код:
tcpdump –list-interface
tcpdump -D

2-54.png


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

3-49.png


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

4-49.png


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

5-49.png


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

6-51.png


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

7-48.png


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

8-46.png


Фильтр портов
Фильтр портов помогает анализировать трафик данных конкретного порта. Таким образом, пользователь отслеживает порты назначения TCP / UDP или другие сетевые протоколы на основе этих портов.
Код:
tcpdump -i eth0 -c 5 -v port 80

9-42.png


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

11-43.png


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

12-41.png


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

13-41.png


Фильтр пакетов
Еще одна функция, предоставляемая tcpdump, — это фильтрация пакетов. Это помогает видеть результаты пакетной обработки конкретного пакета данных в сканировании. Если человек хочет применить этот фильтр в его сканировании, нужно просто добавить нужный пакет.
Код:
tcpdump -i eth0 icmp -c 10

14-37.png


Пакеты данных
Для определения направления потока данных в трафике человек может использовать следующий параметр:
Код:
tcpdump -i eth0 icmp -c 5 -Q in

15-35.png


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

16-26.png


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

18-23.png


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


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

20-20.png


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

1-60.png


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

2-55.png


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

3-50.png


Сканирование пользователя
Если пользователь запускает tcpdump как root, то перед открытием любого сохраненного файла для анализа он заметит, что файл изменяет ID пользователя на пользователя, а идентификаторы групп – на основную группу своих пользователей.
Tcpdump включает в себя параметр -Z, с помощью которого человек может справиться с этой проблемой, но ему нужно указать имя пользователя следующим образом:
Код:
tcpdump -i eth0 -c 2 -Z root
tcpdump -i eth0 -c 2 -Z kali

4-50.png


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

5-50.png


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

6-52.png


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

RADIUS
Он подходит для удаленного доступа, включает в себя службы проверки подлинности пользователей. Это сетевой протокол, который имеет свой уникальный номер порта 1812 и обеспечивает централизованную аутентификацию наряду с авторизацией и управлением учетными записями для своих пользователей. Они подключаются и используют сетевые службы. Пользователь может использовать этот протокол для сканирования.
Код:
tcpdump -i eth0 -c5 -T radius

7-49.png


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

8-47.png


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

9-43.png


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

10-42.png


LMP
Протокол Link Management предназначен для облегчения настройки и управления оптическими сетевыми устройствами. Чтобы понять работу LMP в сети, нужно применить этот протокол в сканировании.
Код:
tcpdump -i eth0 -c5 -T lmp

11-44.png


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

12-42.png


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

13-42.png


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

14-38.png


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

15-36.png


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

16-27.png


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

17-26.png


WB
Эта программа позволяет своим пользователям рисовать и печатать сообщения на холсте. Все должно быть синхронизировано для других пользователей, которые находятся в той же сети. Новые пользователи также должны получить все, что уже было оставлено на доске, когда они подключаются. Чтобы понять ее пакеты данных, следует выполнить следующую команду:
Код:
tcpdump -i eth0 -c5 -T wb

18-24.png


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

19-22.png


Это всего лишь некоторые из протоколов, которые используются в параметре forced packets для получения фиксированного желаемого трафика данных после сканирования.
Promiscuous Mode
В сети Promiscuous Mode используется в качестве контроллера интерфейса, который заставит tcpdump передавать трафик, что он отправляется сразу на компьютер.
Чтобы настроить этот режим, следует выполнить данные команды:
Код:
ifconfig eth0 promisc
ifconfig eth0

20-22.png


После включения Promiscuous Mode в сети надо захватить некоторые пакеты, применив эти команды:
Код:
tcpdump -i eth0 -c 10

21-18.png


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

22-20.png


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

1-61.png


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

2-56.png


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

GET — это запрос, который используется для получения информации с сервера по заданному URL-адресу.
Код:
tcpdump -s 0 -A -vv 'tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420'

4-51.png


POST — это запрос, который используется для отправки данных на сервер. Например, информация о клиентах, загрузке файлов и использовании HTML-форм. Трафик по этому протоколу можно проанализировать с помощью следующей команды:
Код:
tcpdump -s 0 -A -vv 'tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504f5354'

5-51.png


Request-URL – это единый идентификатор ресурса, который идентифицирует ресурс, к которому нужно применить запросы. Наиболее распространенная форма используется для идентификации ресурса на сервере. Если клиент хочет получить данные непосредственно с сервера, откуда они были взяты, то он создаст соединение с портом 80 хоста и отправит запрос. Эти запросы можно перехватить с помощью следующих команд:
Код:
tcpdump -v -n -l | egrep -i "POST /|GET /|Host:"

6-53.png


Агент пользователя
С помощью TCPDump человек также может увидеть, какой трафик генерируется из какого приложения. Он способен найти пользовательские агенты в трафике данных с помощью следующей команды:
Код:
tcpdump -nn -A -s150 -l | grep "User-Agent:"

7-50.png


Диапазон портов
Некоторые фильтры портов помогают анализировать трафик на конкретном порту. Но в tcpdump пользователь устанавливает диапазон портов, через которые он может отслеживать назначение TCP/UDP или других сетевых протоколов.
Код:
tcpdump -i eth0 portrange 21-80

8-48.png


Назначение
Чтобы проверить поток данных в сетевом трафике к определенному месту назначения, следует использовать следующую команду:
Код:
tcpdump -i eth0 dst google.com

9-44.png


Источник
Чтобы проверить трафик данных, поступающий из определенного источника, можно ввести следующую команду:
Код:
tcpdump -i eth0 src google.com

10-43.png


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

11-45.png


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

SYN-флаг известен как тот, который синхронизирует порядковые номера для инициирования TCP-соединения. Пользователь может захватить этот конкретный пакет из трафика с помощью tcpdump.
Код:
tcpdump 'tcp[tcpflags] == tcp-syn'

12-44.png


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

13-43.png


ACK-флаг известен как флаг подтверждения. Этот флаг используется для подтверждения того, что пакет данных успешно получен. Пользователь может захватить эти флаги с помощью tcpdump для изучения трафика данных.
Код:
tcpdump 'tcp[tcpflags] == tcp-ack' -c5

14-39.png


Tcpdump и Wireshark
Единственное различие между Wireshark и TCPDump заключается в том, что Wireshark — это графический интерфейс пользователя, а tcpdump – инструмент командной строки. Но с помощью нескольких источников пользователь использует команду tcpdump и просматривает результаты своего трафика данных в Wireshark, что, по мнению автора, является лучшим способом анализа трафика. Это можно сделать с помощью следующей команды:
Код:
ssh root@remotesystem 'tcpdump -c20 -nn -w - not port 22' | wireshark -k -i –

15-37.png


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

16-28.png


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

17-27.png


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

18-26.png


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


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх