Примеры tcpdump в Linux

Содержание

Утилита tcpdump, примеры опции фильтры

Примеры tcpdump в Linux

Довольно часто в системном администрировании возникают ситуации, для которых необходимо видеть подробную «картину» того, что происходит с передачей данных по сети. Проследить за трафиком и выявить проблемы в таких случаях позволяют утилиты-анализаторы пакетов. Одной из таких (и самой распространённой) является tcpdump – стандартный анализатор пакетов для Linux-систем.

Кроме tcpdump существуют и другие инструменты для анализа сетевого трафика, например такие как Wireshark и Tshark, которые являются усовершенствованными версиями tcpdump, но стандартным и до сих пор эффективным остаётся утилита tcpdump.

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

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

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

Кстати, аппаратные интерфейсы, если они работают в режиме «promiscuous mode», т. е. в так называемом «беспорядочном» режиме, позволяют системному ядру «видеть» все пакеты, т. е. даже и те, что адресуются для других компьютеров и устройств.

Принцип работы tcpdump

Как уже отмечалось, tcpdump является стандартной утилитой для анализа сетевого трафика в дистрибутивах Linux. Автором утилиты является Ван Якобсон.

За всё время своего применения tcpdump проявил себя как весьма эффективный и надёжный инструмент.

Поэтому в настоящее время многие аналоги в качестве основного формата файлов для чтения/записи результатов трассировки трафика используют формат tcpdump – libcap.

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

В противном случае легко вручную задать использование нужного интерфейса. Утилита умеет работать в режиме, который очень полезен при неработоспособной или слишком медленной службе DNS, т. е.

когда есть риск потери пакетов до того как их сможет проанализировать tcpdump.

tcpdump опции

Для задания нужного сетевого интерфейса следует использовать опцию -i. Если необходимо знать адреса устройств (компьютеров, оборудования), то нужно задавать опцию -n. Это также очень полезно при проблемах с DNS. Опция -r позволяет читать информацию о пакетах из файла.

Когда необходимы более подробные сведения о пакетах — поможет опция -v. Также существует опция -w для фиксирования информации в файле. Следует отметить, что в случае использования опции -w в файл записывается информация только о заголовках пакетов.

Опция -s со значением 1056 (хотя это значение зависит от размера MTU-пакета) позволяет (совместно с -w) писать в файл дополнительную информацию.

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

Формат команды tcpdump следующий:

tcpdump [-опции] [фильтры]

В официальной документации (команда man tcpdump) можно найти несколько примеров использования этой утилиты для разных случаев с применением довольно разнообразных и сложных фильтров.

Важно заметить также, что tcpdump (да и вообще все анализаторы пакетов) при своей работе могут генерировать огромные массивы информации и сильно загружать работу сети, вплоть до отказов в её работе.

Поэтому при анализе трафика следует применять рациональный подход — в зависимости от ситуации и условий задачи (или проблемы) использовать фильтры, тем более, что это является очень эффективной частью функционала tcpdump.

Наиболее часто используемые ключи при запуске tcpdump приведены таблице

ключописание
-aПреобразовывает сетевые и широковещательные адреса в доменные имена.
-eОтображает данные канального уровня (MAC-адрес, протокол, длина пакета). Помимо IP-адресов будут отображаться MAC-адреса компьютеров.
-F файлИспользовать фильтр, находящийся в файле. Если вы используете этот параметр, фильтр из командной строки будет игнорироваться.
-iУказывает на то, какой сетевой интерфейс будет использоваться для захвата пакетов. По умолчанию — eth0, для выбора всех интерфейсов — any. Если отсутствует локальная сеть, то можно воспользоваться интерфейсом обратной связи lo.
-lИспользовать стандартный потоковый вывод tcpdump (stdout), например для записи в файл:shell# tcpdump -l | tee out.log //отобразит работу tcpdump и сохранит результат в файле out.log
-NНе добавляет доменное расширение к именам узлов. Например tcpdump отобразит ‘net’ вместо ‘net.library.org’
-nОтображает IP-адрес вместо имени хоста.
-nnОтображает номер порта вместо используемого им протокола.
-pНе переводит интерфейс в режим приема всех пакетов (promiscuous mode).
-qВыводит минимум информации. Обычно это имя протокола, откуда и куда шел пакет, порты и количество переданных данных.
-rЭтот параметр позволяет tcpdump прочесть трафик из файла, если он был предварительно сохранен параметром -w.
-SПозволяет не обрабатывать абсолютные порядковые номера (initial sequence number — ISN) в относительные.
-s числоКоличество байтов пакета, которые будет обрабатывать tcpdump. При установке большого числа отображаемых байтов информация может не уместиться на экране и её будет трудно изучать. В зависимости от того, какие цели вы преследуете, и следует выбирать значение этого параметра. По умолчанию tcpdump захватывает первые 68 байт (для SunOS минимум 96 байт), однако если вы хотите увидеть содержимое всего пакета, используйте значение в 1514 байт (максимально допустимый размер кадра в сети Ethernet).
-tНе отображает метку времени в каждой строке.
-T типИнтерпретация пакетов заданного типа. Поддерживаются типы aodv, cnfp, rpc, rtp, rtcp, snmp, tftp, vat, wb.
-ttОтображает неформатированную метку времени в каждой строке.
-ttttПоказывает время вместе с датой.
-vВывод подробной информации (TTL; ID; общая длина заголовка, а также его параметры; производит проверку контрольных сумм IP и ICMP-заголовков)
-vvВывод ещё более полной информации, в основном касается NFS и SMB.
-vvvВывод максимально подробной информации.
-w файлСохраняет данные tcpdump в двоичном формате. Преимущества использования данного способа по сравнению с обычным перенаправлением в файл является высокая скорость записи и возможность чтения подобных данных другими программами, например snort, но этот файл нельзя прочитать человеку. Возможен вывод двоичных данных на консоль, для этого необходимо использовать -w —
-xДелает распечатку пакета в шестнадцатеричной системе, полезно для более детального анализа пакета. Количество отображаемых данных зависит от параметра -s
-xxТо же, что и предыдущий параметр -x, но включает в себя заголовок канального уровня
-XВыводит пакет в ASCII- и hex-формате. Полезно в случае анализа инцидента связанного со взломом, так как позволяет просмотреть какая текстовая информация передавалась во время соединения.
-XXТо же, что и предыдущий параметр -X, но включает заголовок канального уровня.
-с числоtcpdump завершит работу после получения указанного числа пакетов.
-UСобранные пакеты будут сразу складываться в файл, а иначе копиться в памяти до тех пор, пока она не закончится

Фильтры tcpdump

Фильтры разделяются на следующие классификации

Тип:

host— адрес узла сети

port – порт на котором нужно ловить пакеты

portrange – диапазон портов

net – сеть

пример

tcpdump net 192.168.0.0/24

захват всего трафика в котором в качестве источника или получателя стоят ip адреса из сети 192.168.0.0/24

tcpdump  port 80

Будет захватываться весь трафик на 80-м порту.

Направление трафика по отношению к объекту мониторинга

src – отправитель

dst — получатель

например команда

src host 172.31.25.200

Захват трафика у которого отправитель ip адрес 172.31.25.200

Протокол

ether – базовая сетевая технология Ethernet, как правило указывает на то что в фильтре используется аппаратный MAC адрес

ip – протокол IPv4

ip6 – протокол IPv6

arp – протокол ARP

tcp – протокол TCP

udp – протокол UDP

Если протокол не указан, то будет захвачен трафик по все протоколам

Например команда

udp port 5060

захват трафика по протоколу udp порт 5060

Составные фильтры

Для того что бы более гибко фильтровать трафик можно использовать логические операции

«И» – and (&&)

«ИЛИ» – or (||)

«НЕ» – not (!) – инверсия значения

При этом приоритет этих операций следующий:

наивысшим приоритетом обладает операция инверсии

потом логическое «И»

наименьшим приоритетом обладает операция «ИЛИ».

Приоритет операций можно менять с помощью круглых скобок.

(net 172.16.0.0/24 or host 172.31.0.5) and tcp port 80  

захват трафика протокола TCP и использующего порт 80 принадлежащего сети 172.16.0.0/24 или хосту 172.31.0.5, как любому хосту по отдельности так и вместе

(net 172.16.0.0/24 || host 172.31.0.5) && not tcp port 80  

захват любого трафика кроме трафика протокола TCP и использующего порт 80 принадлежащего сети 172.16.0.0/24 или хосту 172.31.0.5 как любому хосту по отдельности так и вместе

tcpdump linux примеры

Запись вывода в файл

$ sudo tcpdump -w sshtrace.tcpdump tcp port 22

Файл sshtrace.tcpdump при этом будет по-умолчанию создан в домашнем каталоге текущего пользователя. Для вывода информации из файла  myrouter.tcpdump следует использовать опцию -r:

$ tcpdump -r sshtrace.tcpdump

Снять весь трафик с интерфейса eth1

$ tcpdump –i eth1

Снять трафик с диапазона портов на интерфейсе eth1

$ tcpdump -i eth1 portrange 100-200

весь трафик, идущий к 172.16.0.1, который не является ICMP.

tcpdump dst 172.16.0.1 and not icmp

Ловим весь входящий трафик, исключая трафик генерируемый нашей SSH-сессией.

$ tcpdump -i eth0 -n -nn -ttt 'dst host 172.16.0.10 and not ( src host 172.16.0.11 and dst port 22 )'

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

Источник: //ITProffi.ru/utilita-tcpdump-primery-optsii-filtry/

Как пользоваться tcpdump

Примеры tcpdump в Linux

Утилита tcpdump – это очень мощный и популярный инструмент для перехвата и анализа сетевых пакетов. Она позволяет просматривать все входящие и исходящие из определенного интерфейса пакеты и работает в командной строке. Конечно, вы могли бы пользоваться Wirshark для анализа сетевых пакетов, это графическая утилита, но иногда бывают ситуации когда нужно работать только в терминале.

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

Установка tcpdump

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

sudo apt install tcpdump

В Fedora/Red Hat/CentOS:

sudo yum install tcpdump

Когда установка завершится, вы можете переходить к работе.

Команда 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 мы будем рассматривать уже на примерах.

Перед тем как перейти к использованию tcpdump нужно посмотреть какие сетевые интерфейсы вы можете использовать. Для этого запустите команду с опцией -D:

sudo tcpdump -D

Начнем рассматривать примеры tcpdump с захвата трафика на интерфейсе eth0, у меня это основной интерфейс, который подключен к интернету. Для работы программе необходимы права суперпользователя, поэтому не забудьте указать sudo:

sudo tcpdump -i eth0

Чтобы остановить работу команды нажмите Ctrl+C. В выводе вы сразу же увидите все перехваченные пакеты. Формат записи для каждого пакета будет выглядеть следующим образом:

13:03:41.795599 IP udp032919uds.hawaiiantel.net.6881 > 192.168.1.2.52055: Flags [.], seq 640160396:640161844, ack 436677393, win 2050, options [nop,nop,TS val 3805626438 ecr 4677385], length 1448

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

Сначала идет временная метка, затем протокол, далее зеленым отмечен ip адрес отправителя, а синим адрес адресата, в данном случае, нашего компьютера.

Дальше идут дополнительные параметры tcp и в конце размер пакета в байтах. Подробность вывода информации можно контролировать с помощью опций -v, Например:

sudo tcpdump -v -i eth0

Здесь уже появляется информация о протоколе IP:

IP (tos 0x0, ttl 64, id 50309, offset 0, flags [DF], proto TCP (6), length 64)

Мы можем узнать информацию о времени жизни пакета ttl, версию протокола TCP и длину поля заголовка. Опция -vv будет выводить проверку контрольных сумм пакета и содержимое в некоторых случаях.

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

  • host – имя хоста;
  • ip – ip адрес;
  • proto – протокол;
  • net – адрес сети или подсети;
  • port – адрес порта;
  • src – параметр, касающийся отправителя;
  • dst – параметр, касающейся получателя;
  • Доступны такие протоколы: ether, fddi, tr, wlan, ip, ip6, arp, rarp, decnet, tcp и udp.

Вы можете все это комбинировать между собой, чтобы получить желаемый результат. Рассмотрим более детально на примерах. Отсеем только пакеты, адресованные нашему компьютеру:

sudo tcpdump -i eth0 ip dst 192.168.1.2

Также мы можем отобрать пакеты, отправляемые на определенный узел:

sudo tcpdump -i eth0 dst host google-public-dns-a.google.com

Как видите, это DNS пакеты и здесь вместо флагов TCP содержится полезная информация, запрос ip адреса хоста. Также вы можете выбрать ответные пакеты от определенного хоста:

sudo tcpdump -i eth0 src host google-public-dns-a.google.com

Здесь нет полного содержимого пакета, если вы хотите его получить нужно использовать опцию -v или -vv:

sudo tcpdump -vv -i eth0 host dst google-public-dns-a.google.com

С помощью оператора and вы можете объединить несколько фильтров в один:

sudo tcpdump -i eth0 dst host google-public-dns-a.google.com and src host google-public-dns-a.google.com

Из операций объедения доступны and и or, также можно применять скобки для обозначения приоритета. Вам необязательно указывать host, во многих случаях достаточно src или dst, утилита сама поймет что имелось в виду. Точно такую же конструкцию можно использовать для портов. Например, мы можем отсеять все запросы или ответы к DNS (на порт 53):

sudo tcpdump -vv -i eth0 port 53

Точно такое же можно провернуть для http (порт 80):

sudo tcpdump -vv -i eth0 port 80

Естественно, тут тоже можно применять dst и src для более конкретных результатов. Вы можете фильтровать не один порт, а целый диапазон портов:

sudo tcpdump portrange 21-23

Если указать один из протоколов, вы отфильтруете только пакеты этого протокола, например tcp, udp или arp:

sudo tcpdump -vv arp

Точно также можно выбрать все udp пакеты:

sudo tcpdump -vv udp

Также доступен фильтр по обозначению сети:

sudo tcpdump net 129.168.1.1/24

Кроме того, вы можете фильтровать пакеты по их размеру, например, меньше 32 байт:

sudo tcpdump less 32

Или больше 128:

tcpdump greater 128

Иногда бывает необходимо сохранить захваченный трафик в файл, для этого используется опция -w:

sudo tcpdump -i eth0 -w file.pcap

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

sudo tcpdump -r file.pcap

Остался еще один момент, на который стоит обратить внимание. Это формат отображения содержимого пакетов. Вы можете вывести содержимое пакета в формате ASCII используйте опцию -A:

sudo tcpdump -A -i eth0

Также вы можете отобразить содержимое в формате HEX и ASCII для этого используйте -XX:

sudo tcpdump -XX -i eth0

Выводы

Источник: //losst.ru/kak-polzovatsya-tcpdump

Примеры Tcpdump в Linux. Осваиваем инструмент хакеров

Примеры tcpdump в Linux

В этой статье мы покажем практические примеры tcpdump в Linux, чтобы повысить ваш опыт для устранения неполадок и тестирования безопасности в сети. Здесь представлены команды и советы не только для использования tcpdump, но и для освоения вашей сети.

Знание tcpdump – это важный навык, который пригодится любому системному администратору, сетевому инженеру или специалисту по безопасности.

Первые основы Tcpdump

Разбивка командной строки Tcpdump

Следующая команда использует общие параметры, часто встречающиеся при использовании инструмента tcpdump.

-i: интерфейс, на котором будет происходить захват трафика. Здесь часто указывается карта Ethernet или беспроводной адаптер, но также может быть vlan. Опцию не требуется указывать, если в компьютере только один сетевой адаптер.

-nn: одиночный (n) не разрешает имена хостов. Двойной (nn) не разрешит имена хостов или порты. Это удобно не только для просмотра номеров IP/портов, но и для захвата большого объема данных, поскольку разрешение имен замедляет захват трафика.

-s0: длина привязки, это размер пакета для захвата. -s0 установит неограниченный размер – используйте это, если вы хотите захватить весь трафик.

-v: использование (-v) или (-vv) увеличивает количество деталей, отображаемых в выходных данных, часто показывая больше информации, специфичной для протокола.

порт 80: это общий фильтр портов для захвата трафика только через порт 80, который обычно является протоколом HTTP.

Захват по протоколу

Фильтр по UDP трафику. Другой способ указать это – использовать номер порта 17, которым является протокол UDP. Эти две команды будут давать одинаковый результат.

Захват хостов на основе IP-адреса

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

В качестве альтернативы перехватывать только пакеты, идущие в одну сторону, используя src или dst.

Режим линейной буферизации

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

Практические примеры tcpdump в Linux

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

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

При устранении неполадок на сети вы, как правило, просто хотите получить быстрый результат. Фильтрация по порту и выбор вывода ascii в сочетании с grep, cut или awk часто дают такой результат. Вы всегда можете углубиться в пакет, если требуется.

Например, при получении HTTP-запросов и ответов вы можете отфильтровать все пакеты, кроме данных, удалив SYN / ACK / FIN, однако, если вы используете grep, лишнее все равно будет отфильтровано. Будьте проще.

Это можно увидеть в следующих примерах tcpdump linux, где цель состоит в том, чтобы получить результат самым простым (и, следовательно, самым быстрым) способом.

Извлечение имени пользователя HTTP

Извлечение имени пользователя HTTP из заголовка запроса HTTP.

Извлечение HTTP-паролей в POST-запросах.

Получим несколько паролей из данных POST. Будет включать Host: и запрос местоположения, чтобы мы знали, для чего используется пароль.

Захват всех ICMP-пакетов

Посмотреть все пакеты ICMP на интерфейсе.

Захват электронной почты SMTP / POP3

Можно извлечь тело письма и другие данные, в этом примере мы только анализируем получателей электронной почты.

Захват трафика IPv6

Захват трафика IPv6 с помощью фильтра ip6. В этих примерах мы указали протоколы TCP и UDP, используя proto 6 и proto 17.

Tcpdump – мощный инструмент

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

Сочетание tcpdump с Wireshark – мощная комбинация, особенно когда вы хотите углубиться в сеансы прикладного уровня.

Спасибо за прочтение. Удачного анализа пакетов!

Друзья, если вам понравилась статья вы можете пожертвовать любую сумму на развитие сайта Netcloud. 

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

Источник: //netclo.ru/primery-tcpdump-v-linux-osvaivaem-instrument-khak/

tcpdump в примерах (или шпаргалка по tcpdump)

Примеры tcpdump в Linux

Доброго времени, читатели моего блога! Устал от поисков параметров и примеров команды tcpdump, поэтому решил создать свою шпаргалку, чтобы было… Ибо без tcpdump не один админ – неадмин

Введение

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

единиц передачи сетевого трафика. В зависимости от конфигурации сети, tcpdump может прослушивать не только пакеты, предназначенные данному MAC-адресу, но и широковещательные пакеты.

Прослушивание перехват сетевых пакетов основан на “беспорядочном” (promiscuous) режиме работы сетевого адаптера.

В зависимости от используемого сетевого оборудования для соединения компьютеров в сети Ethernet существуют следующие возможности прослушивания трафика:

  • В сети на основе концентраторов весь трафик с концентратора хаба доступен любому сетевому хосту.
  • В сетях на основе коммутаторов (свичей) сетевому хосту доступен только ее трафик, а также весь широковещательный трафик данного сегмента.
  • Некоторые управляемые коммутаторы имеют функцию копирования трафика данного порта на порт мониторинга (“зеркалирование”,мониторинг порта).
  • При использовании специальных средств (ответвителей), включаемых в разрыв сетевого подключения и передающих трафик подключения на отдельный порт возможно прослушивание соответствующего порта.
  • “Трюк” с концентратором — порт коммутатора, трафик которого необходимо прослушать, включают через концентратор, подключив к концентратору также узел-монитор (при этом в большинстве случаев уменьшается производительность сетевого подключения).

Итак, утилита tcpdump входит в большинство дистрибутивов Unix и позволяет перехватывать и отображать/сохранять в файл сетевой трафик. Утилита использует библиотеку libpcap. Для Windows тоже существует порт. Для работы утилиты ее необходимо установить. Например, в Debian она устанавливается с помощью команды:

debian:~# apt-get install tcpdump

Для работы утилиты необходимы права суперпользователя (т.к. изменяются настройки сетевого интерфейса – переводится в “безпорядочный” режим). В общем случае формат команды tcpdump имеет следующий вид:

debian:~# tcpdump  

Опции утилиты tcpdump

-i интерфейс

Задает интерфейс, с которого необходимо анализировать трафик (без указания интерфейса – анализ “первого попавшегося”).

-n

Отключает преобразование IP в доменные имена. Если указано -nn, то запрещается преобразование номеров портов в название протокола.

-e

Включает вывод данных канального уровня (например, MAC-адреса).

-v

Вывод дополнительной информации (TTL, опции IP).

-s размер

Указание размера захватываемых пакетов. (по-умолчанию – пакеты больше 68 байт)

-w имя_файла

Задать имя файла, в который сохранять собранную информацию.

-r имя_файла

Чтение дампа из заданного файла.

-p

Захватывать только трафик, предназначенный данному узлу. (по-умолчанию – захват всех пакетов, например в том числе широковещательных).

-q

Переводит tcpdump в “бесшумный режим”, в котором пакет анализируется на транспортном уровне (протоколы TCP, UDP, ICMP), а не на сетевом (протокол IP).

-t

Отключает вывод меток времени.

Фильтрующие выражения tcpdump

В команде tcpdump возможно задать фильтрующее правило. Фильтрующее выражение состоит из параметра отбора пакетов и значения задаваемого параметра. Например, команда

debian:~# tcpdump -i eth0 host 10.0.0.1

имеет опцию -i eth0, задающую прослушиваемый интерфейс eth0 и фильтрующее выражение, заставляющее tcpdump отображать все пакеты, у которых в поле отправителя и в поле получателя стоит адрес 10.0.0.1. При этом, host – это параметр отбора, а 10.0.0.1 – это значение параметра.

Фильтрующие выражения можно комбинировать между собой с помощью дополнительных операторов and, or и not. C помощью этих операторов можно строить довольно сложные логические конструкции, группируя параметры в скобки. Например, команда:

debian:~# tcpdump -i eth0 dst 10.0.0.5 and port 53

ограничит отображение только пакетами отправленные на хост 10.0.0.5 по протоколу DNS (порт 53).

Наиболее часто используемые фильтрующие параметры команды tcpdump:

dst хост

Источник: //www.k-max.name/linux/tcpdump-v-primerax/

Анализатор пакетов: 15 примеров команды tcpdump

Примеры tcpdump в Linux
Команда tcpdump также называется анализатором пакетов.

Команда tcpdump будет работать на большинстве разновидностей операционной системы UNIX.

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

Мы также можем использовать программное обеспечение с открытым исходным кодом, как Wireshark для чтения файлов tcpdump PCAP.

На этом уроке мы рассмотрим некоторые практические примеры того, как использовать команду tcpdump.

1. Захват пакетов от конкретного интерфейса локальных сетей с использованием tcpdump -i

При выполнении команды tcpdump без какого-либо варианта, он будет захватывать все пакеты, проходящие через все интерфейсы. Опция -i команды tcpdump, позволяет фильтровать по определенному интерфейсу Ethernet.

$ tcpdump -i eth1 12:59:41.967250 ARP, Request who-has free.msk.ispsystem.net tell gw.msk.ispsystem.net, length 4612:59:41.967257 ARP, Request who-has reserve.scoffserver.ru tell gw.msk.ispsystem.net, length 4612:59:41.969692 IP andreyex.ru.44141 > wdc-ns1.ispsystem.net.domain: 14799+ PTR? 184.48.146.82.in-addr.arpa. (44) …

В этом примере, tcpdump захватил все пакеты потока в интерфейсе eth1 и отображает в стандартном выводе.

Примечание:

Утилита Editcap используется для выбора или удаления определенных пакетов из файла дампа и перевод их в заданном формате.

2. Захват только N-ое число пакетов с помощью tcpdump -c

При выполнении команды tcpdump дает пакеты, пока вы не отмените команду tcpdump. Используя опцию -c вы можете указать количество пакетов для захвата.

$ tcpdump -c 2 -i eth0listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes13:01:35.165898 ARP, Request who-has 213.159.211.80 tell gw.msk.ispsystem.net, length 4613:01:35.170637 IP andreyex.ru.35123 > wdc-ns1.ispsystem.net.domain: 7254+ PTR? 80.211.159.213.in-addr.arpa. (45)2 packets captured 7 packets received by filter0 packets dropped by kernel

Команда tcpdump захватили только 2 пакета от интерфейса eth0.

Примечание:

Mergecap и TShark : Mergecap представляет собой инструмент объединения свалки пакетов, который будет объединять в себе несколько пакетов в один файл дампа. Tshark является мощным инструментом для захвата сетевых пакетов, которые могут быть использованы для анализа сетевого трафика. Он поставляется с анализатором распределения сети Wireshark.

3. Выод на дисплей перехваченных пакетов в ASCII, используя tcpdump -a

Следующий синтаксис tcpdump печатает пакет в ASCII.

$ tcpdump -A -i eth013:03:06.516709 IP 213.132.93.178.25321 > andreyex.ru.vlsi-lm: Flags [.], ack 3120779210, win 254, length 0 E..($.@.u..B..]…..b…%.=…O.P……. 13:03:06.517120 IP andreyex.ru.35313 > wdc-ns1.ispsystem.net.domain: 13562+ PTR? 178.93.132.213.in-addr.arpa. (45) E..I9.@.@……..x…..5.5[F4…………178.93.132.213.in-addr.arpa….. 13:03:06.517523 IP wdc-ns1.ispsystem.net.domain > andreyex.ru.35313: 13562 NXDomain 0/1/0 (103) D…ns1.?.n2.x…….

Примечание:

Команда ifconfig используется для настройки сетевых интерфейсов

4. Вывод на дисплей перехваченных пакетов в HEX и ASCII с использованием tcpdump -xx

Некоторые пользователи могли бы анализировать пакеты в шестнадцатеричных значениях. tcpdump предоставляет возможность печатать пакеты в обоих форматах ASCII и HEX.

$tcpdump -XX -i eth013:04:55.671670 ARP, Request who-has ns-24.ru tell gw.msk.ispsystem.net, length 46 0x0000: ffff ffff ffff 288a 1cea fff0 0806 0001 ……(……… 0x0010: 0800 0604 0001 288a 1cea fff0 5057 c401 ……(…..PW.. 0x0020: 0000 0000 0000 5057 c50a 0000 0000 0000 ……PW…….. 0x0030: 0000 0000 0000 0000 4af9 3265 ……..J.2e 13:04:55.673089 ARP, Request who-has free.msk.ispsystem.net tell gw.msk.ispsystem.net, length 46 0x0000: ffff ffff ffff 288a 1cea fff0 0806 0001 ……(……… 0x0010: 0800 0604 0001 288a 1cea fff0 5292 3001 ……(…..R.0. 0x0020: 0000 0000 0000 5292 31af 0000 0000 0000 ……R.1……. 0x0030: 0000 0000 0000 0000 ee11 d278

5. Захват пакетов и запись в файл с помощью tcpdump -w

tcpdump позволяет сохранить пакеты в файл, а затем вы можете использовать файл пакетов для дальнейшего анализа.

$ tcpdump -w 08232010.pcap -i eth0tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes C6239 packets captured 7052 packets received by filter 811 packets dropped by kernel

Опция -w записывает пакеты в указанный файл. Расширение файла должно быть .pcap, который может быть прочитан любым протоколом сетевого
анализатора.

6. Чтение пакетов из сохраненного файла с помощью tcpdump -r

Вы можете прочитать захваченный файл PCAP и просматривать пакеты для анализа, как показано ниже.

$tcpdump -tttt -r 08232010.pcapreading from file 08232010.pcap, link-type EN10MB (Ethernet) 2017-04-07 13:06:28.035332 IP 213.132.93.178.25557 > andreyex.ru.vlsi-lm: Flags [.], ack 2280823022, win 252, length 0 2017-04-07 13:06:28.036239 IP 213.132.93.178.25558 > andreyex.ru.vlsi-lm: Flags [.], ack 1395913898, win 252, length 0 2017-04-07 13:06:28.037210 IP 213.132.93.178.25557 > andreyex.ru.vlsi-lm: Flags [.], ack 427, win 257, length 0 2017-04-07 13:06:28.038258 IP 213.132.93.178.25558 > andreyex.ru.vlsi-lm: Flags [.], ack 149, win 252, length 0 2017-04-07 13:06:28.053807 IP 213.132.93.178.25558 > andreyex.ru.vlsi-lm: Flags [P.], seq 0:1056, ack 149, win 252, length 1056 2017-04-07 13:06:28.053850 IP andreyex.ru.vlsi-lm > 213.132.93.178.25558: Flags [.], ack 1056, win 352, length 0

7. Захват пакетов с IP-адреса с помощью tcpdump -n

Во всех приведенных выше примерах, он печатает пакеты с адресом DNS, но не адрес IP. Следующий пример захватывает пакеты и отображает IP-адрес участвующей машины.

$ tcpdump -n -i eth0listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes 13:09:44.819573 IP 213.132.93.178.25691 > 213.159.209.228.vlsi-lm: Flags [.], ack 1414291154, win 257, length 0 13:09:44.820282 IP 213.132.93.178.25691 > 213.159.209.228.vlsi-lm: Flags [.], ack 427, win 255, length 0 13:09:44.824067 IP 213.132.93.178.25690 > 213.159.209.228.vlsi-lm: Flags [.], ack 1150807970, win 253, length 0

8. Захват пакетов с надлежащей временной меткой с использованием считываемой tcpdump -tttt

$ tcpdump -n -tttt -i eth0listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes 2017-04-07 13:10:23.336752 ARP, Request who-has 213.159.210.195 tell 213.159.210.1, length 46 2017-04-07 13:10:23.338998 ARP, Request who-has 212.109.196.195 tell 212.109.196.

1, length 46 2017-04-07 13:10:23.339009 ARP, Request who-has 80.87.202.158 tell 80.87.202.1, length 46 2017-04-07 13:10:23.339011 ARP, Request who-has 188.120.248.196 tell 188.120.248.1, length 46 2017-04-07 13:10:23.339013 ARP, Request who-has 212.109.197.156 tell 212.109.196.

1, length 46

9. Пакеты прочитанные больше, чем n байт

Вы можете получить больше пакетов, чем n числа байтов, используя фильтр «greater» через команду tcpdump

$ tcpdump -w g_1024.pcap greater 1024

10. Получение пакетов только определенного типа протокола

Вы можете получить пакеты в зависимости от типа протокола. Вы можете указать один из этих протоколов – fddi, tr, wlan, ip, ip6, arp, rarp, decnet, tcp и udp. Следующий пример захватывает только пакеты arp, протекающие через интерфейс eth0.

$ tcpdump -i eth0 arptcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes 13:11:31.451191 ARP, Request who-has ark-hoster.ru tell gw.msk.ispsystem.net, length 46 13:11:31.456275 ARP, Request who-has aitkblack.fvds.ru tell gw.msk.ispsystem.net, length 46 13:11:31.463781 ARP, Request who-has e-sro.su tell gw.msk.ispsystem.net, length 46 13:11:31.464276 ARP, Request who-has yaroslav.fvds.ru tell gw.msk.ispsystem.net, length 46

11. Чтение пакетов меньше, чем n байтов

Вы можете получить только пакеты меньше, чем n байтов, используя фильтр «less» с помощью команды tcpdump

$ tcpdump -w l_1024.pcap less 1024

12. Прием пакетов потоков на определенный порт, используя порт tcpdump

Если вы хотите знать все пакеты, полученные по определенному порту на компьютере, вы можете использовать команду tcpdump, как показано ниже.

$ tcpdump -i eth0 port 22listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes C 0 packets captured 0 packets received by filter 0 packets dropped by kernel

В данном случае порт 22 отключен.

13. Захват пакетов для конкретного адресата ip-адреса и порта

Эти пакеты будут иметь номера источника и назначения ip-адреса и порт. Используя tcpdump мы можем применить фильтры на источнике или назначения IP и номер порта. Следующая команда перехватывает поток пакетов в eth0,  с конкретного IP-адреса назначения и номера порта 22.

$ tcpdump -w xpackets.pcap -i eth0 dst 10.181.140.216 and port 22

14. Захват пакетов TCP между двумя узлами

Если два различных процесса из двух разных машин общается по протоколу TCP, мы можем захватить эти пакеты с помощью tcpdump, как показано ниже.

Источник: //andreyex.ru/operacionnaya-sistema-linux/analizator-paketov-15-primerov-komandy-tcpdump/

Поделиться:
Нет комментариев

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

    Ваш e-mail не будет опубликован. Все поля обязательны для заполнения.