Що таке tcpdump?

Що таке tcpdump

Якщо у вас є операційна система, схожа на Unix або Linux (Linux, Mac OS), ви можете використовувати tcpdump для вивчення мережевого трафіку. Програма tcpdump – це утиліта командного рядка, яку можна встановити безкоштовно. Він зазвичай не інтегрується в операційні системи, тому вам потрібно встановити його з реєстру tcpdump GitHub або з офіційного веб-сайту tcpdump.

Елементи tcpdump

Утиліта захоплення пакетів, що використовується tcpdump, надається libpcab, що є бібліотекою процедур C / C ++. Основна програма tcpdump – це інтерфейс для процесу захоплення пакетів. Після запуску він запустить процес libcap для збору пакетів, а потім відображення їх вмісту на екрані. Якщо не буде визначено обмеження на кількість захоплених пакетів при запуску програми, вона продовжуватиме працювати вічно. Потім обробка закінчується сигналом переривання (Control-C).

Програма запускається в командному рядку і включає ряд варіантів, які позначені прапорами. Ці прапори змінюють поведінку програми, щоб змусити її вибирати пакети, які відповідають заданому шаблону, обмежувати його час роботи або змусити її читати збережені пакети з файлу, а не з мережевого інтерфейсу.

Формат Tcpdump

Команда tcpdump може бути видана сама або з параметрами, параметрами та / або регулярними виразами. Жоден із цих елементів не є обов’язковим, і порядок не важливий.

tcpdump <-option_identifier>

Параметри Tcpdump

За командою tcpdump слідують параметри, які також відомі як прапори. Кожен із них позначається дефісом, за яким йде буква. Нижче наведено список кожного з цих прапорів.

-А        друкувати пакети в ASCII без заголовків рівня посилань

-б         показати номер AS у форматі ASDOT

       buffer_size в одиницях KiB (1024 байт

-c         рахувати – межа пакетів для захоплення

       розмір файлу – після заповнення цього обмеження розміру файлу процес створить новий файл; Розмір – 1 мільйон байт

-г        Скиньте зібраний код відповідності пакетів в ASCII

-дд      Дамп код відповідності пакетів як С фрагмент програми

-ддд    Дамп код відповідності пакетів у вигляді десяткових чисел, яким передує підрахунок

-D        Список усіх доступних інтерфейсів

-е         Роздрукуйте заголовок рівня посилання на кожному рядку дамп

        spi @ ipaddr algo: секрет – для дешифрування пакетів IPsec ESP:

             спі – індекс параметрів безпеки

              ipдоп – адреса призначення на пакеті

              algo є алгоритмом, дефолтом до якого des-cbc і поле необов’язкове.

              Можливі значення:

  • des-cbc
  • 3des-cbc
  • метелик-куб
  • rc3-cbc
  • лиття128-куб

секрет – це текст ASCII для секретного ключа ESP. Якщо передує 0x, то це шестигранне значення

-f          Друкуйте “іноземні” IPv4 адреси чисельно, а не символічно

        файл – використання файл як вхід для вираження фільтра

       обертати_секунди – період, який слід обертати зберегти файл опції -w, додасть позначку часу до імені

-год         Роздрукуйте рядки версії tcpdump та libpcap, надрукуйте повідомлення про використання та вийдіть

-Н        Виявити заголовки сітки 802.11s

-i          інтерфейс – інтерфейс, на якому можна слухати, за замовчуванням найменше ім’я за алфавітом

         монітор-режим | негайний режим – видаляє буферизацію

-j          tstamp_type – встановіть тип часової позначки для зйомки на tstamp_type

-J         tstamp_precision – встановити точність штампів часу (мікро або нано) за замовчуванням – мікро. Якщо tstamp_precision є нульовим, перелічіть типи часових позначок та вихід

       Не перевіряйте контрольні суми

         Лінія буферизації Stdout. E.g. tcpdump -l | tee dat або                                                                                                   tcpdump -l > дат & хвіст -f dat

-L         Перерахуйте відомі типи посилань даних для інтерфейсу, у вказаному режимі та вийдіть

      модуль – завантажувати визначення файлів модуля SMI з файлу модуль.

      секрет – спільне таємне значення для перевірки за допомогою параметра TCP-MD5

       Не перетворюйте адреси (тобто адреси хостів, номери портів тощо) в імена

-N        Не друкуйте кваліфікацію доменних імен хостів

-#         Надрукуйте додатковий номер пакета на початку рядка

       Не запускайте оптимізатор коду відповідності пакетів

-p         Не перемикайте інтерфейс у розбещений режим

-Q        напрямок – направлення / отримання направлення. Може бути в, з, або in out

-q         Роздрукуйте менше інформації про протокол

-r          файл – читати пакети з файл. Вкажіть для стандартного введення

-S         Вивести абсолютні порядкові номери TCP

        хапати – снарф хапати байт з кожного пакету, а не 262144 байт за замовчуванням

        тип – інтерпретувати пакети як зазначені тип. Варіанти:

  • aodv                   Спеціальний протокол дистанційного вектора на вимогу
  • короп                    Загальний протокол надмірності адрес
  • cnfp                    Протокол Cisco NetFlow
  • лмп                     Протокол управління посиланнями
  • пгм                    Прагматична загальна багатосторонність
  • pgm_zmtp1       ZMTP / 1.0 всередині PGM / EPGM)
  • респ                   Протокол повторної серіалізації
  • радіус                РАДІУС
  • RPC                     Віддалений виклик процедури
  • rtp                      Протокол додатків у реальному часі
  • rtcp                    Протокол управління програмами в реальному часі
  • snmp                 Простий протокол управління мережею
  • tftp                     Тривіальний протокол передачі файлів
  • чан                      Візуальний інструмент для аудіо
  • wb                      розподілена Біла дошка
  • zmtp1                 Протокол транспортування повідомлень ZeroMQ 1.0
  • vxlan                  Віртуальна локальна мережа eXtensible

-т          Не друкуйте часову позначку на кожному дампському рядку

-тт        Друкуйте часову позначку як зміщену з 1 січня 1970 року на кожному дампському рядку

-ттт       Роздрукуйте дельту (роздільна здатність мікросекунди) між поточним та попереднім рядком

-tttt      Роздрукуйте часову позначку: дату, годину, хвилину, секунду на кожному дамп-рядку

-ttttt     Роздрукуйте дельту (роздільна здатність мікросекунди) між поточним та першим рядком

-у         Друкуйте незашифровані ручки NFS

-U        Буферний пакет

-v         Трохи більш багатослівний вихід

-vv       Більш багатослівний вихід

-vvv     Більшість багатослівних висновків

-V        файл – читайте список імен файлів від файл. Стандартний вхід використовується, якщо файл є

       файл – записувати вихід у файл

-W       ліміт – максимальну кількість файлів, які повинен створити і варіанти

        Роздрукуйте дані кожного пакету за мінусом його заголовка рівня посилання в шістнадцятковій формі

-хх       Роздрукуйте дані кожного пакету, в тому числі його заголовок рівня посилання, у шістнадцятковій формі

        Роздрукуйте дані кожного пакету за мінусом його заголовка рівня посилань у шістнадцятковій формі та ASCII

-XX       Роздрукуйте дані кожного пакету, в тому числі його заголовок рівня посилання, у шістнадцятковій та ASCII.

-у         даталінтип – Встановіть тип посилання для передачі даних для зйомки пакетів                          даталінтип

-z         postrotate-командувати – обробляти збережені файли, як правило, стискаються, наприклад, -z gzip

-Z         користувач – змінити ідентифікатор користувача на користувач і ідентифікатор групи до первинної групи користувач

Параметри Tcpdump

Параметри для tcpdump також відомі як примітиви. Вони визначають, чи повинен захоплення пакетів отримувати дані лише з вказаних хостів. Ці параметри можна також виразити як умови, використовуючи булеві оператори і, або, і ні.  Вам не потрібно ставити знак рівності (=) між назвою параметра та його значенням, і вам не потрібно розміщувати параметри з розділовими знаками. У кожному випадку вам просто потрібен пробіл.

Найчастіше з цих параметрів використовується хост, який дозволяє обмежити захоплення передачами лише з одного джерела. У кожному випадку ім’я пристрою як значення параметра може бути замінено його адресою. Якщо параметр має a дст Версія, що зміна обмежує вихід лише на пакети, які мають цей атрибут за призначенням. Параметри, що включають src шукайте пакети, які мають задане значення в даних, пов’язаних з їх походженням.

Ось параметри параметрів:

господар ім’я хоста – також хост dst або src хост.

Також може бути попередньо с ip, арп, або рапп

ефір            привид – значення від / etc / ефірів або числа. Також ефір src і ефір dest.

шлюз       господар – отримати пакети, які пройшли через шлюз господар

сітка                network_num – IP-код джерела або призначення включає network_num                                               Також чиста сітка і src net

порт               номер | найменування – також порт порту і src-порт.                                                                                   Можна з tcp або удп обмежити протокол

ip proto          протокол – захоплення IP-пакетів названого протоколу. Ім’я повинно бути в / etc / протоколах

ефір прото    протокол – захоплення пакету ефірного протоколу. Параметри для протокол є числом або:

  • ip
  • ip6
  • арп
  • рапп
  • atalk
  • atalkarp
  • декне
  • decdts
  • decdns
  • Ленбридж
  • лат
  • мопдл
  • moprc
  • цуценя
  • сказ
  • спрайт
  • стп
  • пластика
  • vprod
  • xns

Трансляція     Захоплює пакети трансляції Ethernet. Також написано як ефір мовлення

ip трансляція Захоплює ip широкомовні пакети

багатоадресна передача       Захоплює багатоадресні пакети Ethernet. Також пишеться як ефірна багатоадресна передача

ip багатоадресна передача   Захоплює IP багатоадресні пакети

decnet хост   ім’я хоста – якщо джерело або адреса DECNET є ім’я хоста

decnet src     ім’я хоста – захоплення, якщо джерело DECNET є ім’я хоста

decnet dst     ім’я хоста – захоплення, якщо місце призначення DECNET ім’я хоста

хазяїн Влан      привид – якщо перша, друга, третя або четверта IEEE 802.11 адреса                                             привид

wlan addr1    привид – захоплення, якщо є перша IEEE 802.11 адреса привид

wlan addr2    привид – захоплення, якщо друга адреса IEEE 802.11 привид

wlan addr3    привид – захоплення, якщо є третя адреса IEEE 802.11 привид

wlan addr4    привид – якщо четверта адреса IEEE 802.11 привид. Використовується лише для WDS

тип                тип – зйомка, якщо тип кадру IEEE 802.11 тип, що є числом або:

  • дані
  • мгт
  • ctl

підтип           підтип – захоплення, якщо кадр IEEE 802.11 підтип, що є числом або:

  • assocreq
  • асокресп
  • пересвідчення
  • переоцінка
  • probereq
  • проберерес
  • маяк
  • атим
  • катастрофа
  • авт
  • глухий
  • дані

реж                    реж – зйомка, якщо напрямок кадру IEEE 802.11 реж, що є числом або:

  • киває
  • малечі
  • відс
  • дстодс

Вираз Tcpdump

Сегмент виразів команди tcpdump дає вам можливість додати трохи програмування до вибору пакету. Однак, на відміну від звичайної програми, цей набір інструкцій повинен бути записаний в один рядок. Якщо ви часто користуєтеся Unix або Linux, ви звикли до регулярних виразів сценаріїв оболонок і не повинні мати проблем з розумінням формату цих фільтрів.  

Пакети, які відповідають тесту, закладеному виразом, будуть захоплені. Отже, результат кожного виразу повинен бути “істинним”.

Є кілька умов експресії, які зазвичай не зустрічаються в сценарії оболонок, і вони перелічені нижче:

лін

Це повертає довжину пакету. Приклад використання: len! = 5.

proto [expr: розмір]

У цьому об’єкті:

прото – назва шару протоколу. Це може бути:

  • ефір
  • fddi
  • ip
  • арп
  • рапп
  • tcp
  • удп
  • icmp

експр – зміщення байтів. Це потрібно включити, але це може бути вказано як 0, щоб прийняти значення з початку об’єкта.

розмір є необов’язковим і відображає кількість байтів у варіанті. Значення за замовчуванням дорівнює 1, але воно також може бути 2, 3 або 4.

Приклади використання:

ефір [0] & 1! = 0 вірно для всіх багатоадресних трафіків.

ip [0] & 0xf! = 5 справедливо для всіх IP-пакетів з опціями.

ip [6: 2] & 0x1fff = 0 справедливо для нефрагментованих дейтаграм і нуля фрагмента фрагментованих дейтаграм.

Приклади Tcpdump

У всіх цих випадках результати команди відображатимуться на екрані, за винятком випадків, коли включена опція, що стосується файлу, або якщо команда не запускається з переадресації виводу на стенд або передається у файл.

Відображення пакетів, які подорожують з комп’ютера або до нього, ідентифіковані як lab1:

tcpdump лабораторія хоста1

Показати всі IP-пакети, що перебувають між лабораторією1 та будь-яким вузлом, окрім прийому:

tcpdump ip хост lab1, а не прийом

Показувати весь ftp-трафік через Інтернет-шлюз:

tcpdump “шлюз styx і (порт ftp або ftp-дані)”

Відобразить пакети SYN та FIN кожної розмови TCP, що включає не локальний хост:

tcpdump ‘tcp [tcpflags] & (tcp-syn | tcp-fin)! = 0, а не src та dst net localnet ‘

Відображення IP-трансляції або пакетів багатоадресної передачі, які не були надіслані через Ethernet широкомовні або багатоадресні повідомлення:

tcpdump ‘ефір [0] & 1 = 0 і ip [16] >= 224 ‘

Формат виводу Tcpdump

Формат запису, який використовується для запису пакетів у файли, став стандартом, який прийняли багато новіших сніферів пакетів та аналізаторів трафіку.

Стандарт не є простим і адаптується до кожного протоколу. Однак ті програми, які прийняли формат, також враховують ці варіанти. Формат називається pcap, Яка назва процесу захоплення пакетів, який використовується tcpdump. Файли у такому форматі зазвичай мають .pcap розширення.

Tcpdump для Windows

Існує адаптація tcpdump, яка працює на Windows. Це називається WinDump і це спирається на WinPcap для захоплення пакетів так само, як tcpdump використовує функцію pcap libpcap. Насправді WinPcap належить Riverbed Technology. Ця ж компанія є основним фундатором Wireshark, який, мабуть, є найвідомішим та широко використовуваним пакетним снайфером у світі. Існує бездротова версія WinPcap, яка називається AirPcap. Ви можете безкоштовно завантажити веб-сайт WinDump, WinPcap та AirPcap з веб-сайту WinPcap.

Використання пакетиків

Утиліта командного рядка tcpdump корисна тим, хто знайомий з Unix і Linux операційні системи та насолоджуйтесь написанням скриптів оболонок. Тим, хто не настільки досвідчений у складанні команд із регулярними виразами в командному рядку, буде важко використовувати цю програму.

У вас є інші варіанти, оскільки є багато доступних нюхачів пакетів, наприклад, Wireshark, про який було сказано вище. Докладніше про альтернативи tcpdump можна дізнатися в цьому огляді сніферів пакетів.

У вас є улюблений нюхальник пакетів? Ви прихильник tcpdump чи віддаєте перевагу більш зручним альтернативам? Залиште повідомлення в Коментарі розділ нижче та поділіться своїм досвідом.

Зображення: захоплення пакета tcpdump за допомогою скриншотів Linux через Flickr. Ліцензовано за CC BY 2.0

Kim Martin
Kim Martin Administrator
Sorry! The Author has not filled his profile.
follow me