tcpdump

Ръководство за помощна програма за анализ на мрежовия трафик TCPDUMP

Ръководство за помощна програма за анализ на мрежовия трафик TCPDUMP

Tcpdump е помощна програма за команден ред за нюхане на мрежови пакети. Най-често се използва за отстраняване на проблеми в мрежи и тестване на проблеми със сигурността. Въпреки липсата на графичен потребителски интерфейс, това е най-популярната, мощна и гъвкава помощна програма за команден ред.

Той е роден на Linux, така че повечето дистрибуции на Linux го инсталират като част от стандартната операционна система. Tcpdump е libpcap свързана програма, която е библиотека за улавяне на мрежови дейтаграми.

Тази статия ще демистифицира tcpdump, като показва как да улавя, чете и анализира заловения мрежов трафик в тази помощна програма. По-късно ще използваме нашето разбиране за проверка на пакетите данни с усъвършенстваните TCP филтри за флагове.

Инсталиране на Tcpdump

Инсталацията на Tcpdump по подразбиране във вашата дистрибуция зависи от опциите, избрани по време на инсталационния процес. В случай на персонализирана инсталация е възможно пакетът да не е наличен. Можете да проверите инсталацията на tcpdump, като използвате dpkg команда с „”Опция.

ubuntu $ ubuntu: ~ $ dpkg -s tcpdump

Или използвайте командата „sudo apt-get install tcpdump“, за да инсталирате tcpdump в Ubuntu Linux.

Заснемане на пакети в Tcpdump:

За да започнем процеса на улавяне, първо трябва да намерим нашия работещ интерфейс, използвайки „ifconfig”Команда. Или можем да изброим всички налични интерфейси, използвайки tcpdump команда с „”Опция.

ubuntu $ ubuntu: ~ $ tcpdump -D

За да започнете процеса на улавяне, можете да използвате синтаксиса;

tcpdump [-опции] [израз]

Например в командата по-долу използваме „-iОпция за улавяне на трафик наenp0s3”Интерфейс, с“-° С”Флаг за ограничаване на заловените пакети и запис“-w”То към a test_capture.pcap файл.

ubuntu $ ubuntu: ~ $ sudo tcpdump -i enp0s3 -c 20 -w / tmp / test_capture.pcap

По същия начин можете да използвате различни комбинации от филтри, за да изолирате трафика според вашите изисквания. Един такъв пример включва улавяне на мрежови данни, напускащи и пристигащи на хоста с помощта на домакин команда за конкретна пристанище. Освен това използвах „”Флаг, за да се предотврати tcpdump от улавяне на DNS справки. Този флаг е много полезен за насищане на трафика при отстраняване на неизправности в мрежата.

ubuntu $ ubuntu: ~ $ sudo tcpdump -i enp0s3 -c 20 хост 10.0.2.15 и dst порт 80 -w / tmp / test_capture1.pcap
tcpdump: слушане на enp0s3, тип връзка EN10MB (Ethernet), размер на улавяне 262144 байта
Уловени 20 пакета
21 пакета, получени от филтъра
0 пакета, изпуснати от ядрото

Ние използваме „иКоманда за улавяне само на пакети, съдържащи хост 10.0.2.15 и пристанище порт 80. По същия начин могат да се приложат различни други филтри за улесняване на задачите за отстраняване на неизправности.

Ако не искате да използвате „-° СФлаг, за да ограничите трафика за улавяне, можете да използвате сигнал за прекъсване, т.е.д., Ctrl + C, за спиране на процеса на изолация.

Четене на Tcpdump файлове

Четенето на уловени файлове в tcpdump може да бъде много поразително. По подразбиране tcp присвоява имена на IP адреси и портове. Ще използваме „-r”Флаг за четене на нашия вече заловен файл test_capture.pcap запазени в / tmp папка. Ще насочим изхода към awk команда само да изведе IP адреса и портовете на източника и да го прехвърли към командата глава за да се покажат само първите 5 записа.

ubuntu $ ubuntu: ~ $ sudo tcpdump -r / tmp / test_capture1.pcap | awk -F “” 'print $ 3' | глава -5
четене от файл / tmp / test_capture.pcap, тип връзка EN10MB (Ethernet)
IP ubuntu.53298
IP ubuntu.53298
IP ubuntu.53298
IP ubuntu.53298
IP ubuntu.53298

Препоръчва се обаче да се използват IP адреси и портове в цифри за разрешаване на мрежови проблеми. Ще деактивираме разделителната способност на IP име с „”Имена на флагове и пристанища с“-пп„.

ubuntu $ ubuntu: ~ $ sudo tcpdump -i enp0s3 -n
tcpdump: потиснат подробен изход, използвайте -v или -vv за пълно декодиране на протокола
слушане на enp0s3, тип връзка EN10MB (Ethernet), размер на заснемане 262144 байта
20:08:22.146354 IP 10.0.2.15.54080> 172.67.39.148.443: Знамена [Стр.], sq 1276027591: 1276027630, ack 544039114, win 63900, дължина 39
20:08:22.146745 IP 10.0.2.15.43456> 54.204.39.132.443: Знамена [Стр.], sq 3381018839: 3381018885, ack 543136109, win 65535, дължина 46
20:08:22.147506 IP 172.67.39.148.443> 10.0.2.15.54080: Знамена [.], ака 39, печалба 65535, дължина 0
20:08:22.147510 IP 54.204.39.132.443> 10.0.2.15.43456: Знамена [.], ака 46, победа 65535, дължина 0
20:08:22.202346 IP 216.58.209.142.443> 10.0.2.15.41050: Знамена [P.], sq 502925703: 502925826, ack 1203118935, win 65535, дължина 123
20:08:22.202868 IP 10.0.2.15.41050> 216.58.209.142.443: Знамена [Стр.], последователност 1:40, ака 123, победа 65535, дължина 39

Разбиране на заснетите резултати

Tcpdump улавя много протоколи, включително UDP, TCP, ICMP и др. Не е лесно да се обхванат всички тук. Важно е обаче да разберете как се показва информацията и какви параметри тя включва.

Tcpdump показва всеки пакет в ред, с клеймо за време и информация по отношение на протокола. Като цяло форматът на протокола TCP е както следва:

. > .: , , , , ,

Нека да обясним едно от полетата на заловения пакет по поле:

20:08:22.146354 IP 10.0.2.15.54080> 172.67.39.148.443: Знамена [Стр.], sq 1276027591: 1276027630, ack 544039114, win 63900, дължина 39
  • 20:08:22.146354: Клеймо за време на заловения пакет
  • IP: Протокол от мрежов слой.
  • 10.0.2.15.54080: Това поле съдържа IP адреса на източника и порта на източника.
  • 172.67.39.148.443: Това поле представлява IP адреса на дестинацията и номера на порта.
  • Знамена [P.] /: Флаговете представляват състоянието на връзката. В този случай [P.] показва пакета за потвърждение на PUSH. Полето за флаг включва и някои други стойности като:
    1. S: SYN
    2. P: PUSH
    3. [.]: ACK
    4. F: FIN
    5. [С.]: SYN_ACK
    6. R: RST
  • seq 1276027591: 1276027630: Поредният номер в първия: последният формат означава броя на данните в пакета. С изключение на първия пакет, където номерата са абсолютни, следващите пакети имат относителни числа. В този случай номерата тук означават, че пакетът съдържа байтове с данни от 1276027591 до 1276027630.
  • ack 544039114: Номето за потвърждение показва следващия очакван пореден номер на данните.
  • win 63900: Размерът на прозореца изобразява броя на наличните байтове в получения буфер.
  • дължина 39: Дължина на данните за полезния товар, в байтове.

Разширени филтри

Сега можем да използваме някои разширени опции за филтриране на заглавия, за да показваме и анализираме само пакети данни. Във всеки TCP пакет, TCP флаговете започват от 14-ти байт, така че PSH и ACK са представени от 4-ти и 5-ти бит.

Можем да използваме тази информация, като включим тези битове 00011000 или 24 за показване на пакети данни само с PSH и ACK флагове. Предаваме този номер на tcpdump с филтъра „tcp [13] = 24“, Имайте предвид, че индексът на масива в TCP започва от нула.

Ние ще филтрираме този пакет от нашия улавяне на текст.pcap файл и използвайте -A опция за показване на всички подробности за пакета вместо вас.

По същия начин можете да филтрирате някои други пакети с флаг, използвайки „Tcp [13] = 8“ и „tcp [13] = 2“ само за PSH и SYN флагове и т.н.

ubuntu $ ubuntu: ~ $ sudo tcpdump -A 'tcp [13] = 24' -r / tmp / test_capture.pcap
четене от файл / tmp / test_capture.pcap, тип връзка EN10MB (Ethernet)
19:26:17.827902 IP ubuntu.53298> 32.121.122.34.пр.н.е.googleusercontent.com.http: Знамена [P.], sq 4286571276: 4286571363, ack 252096002, win 64240, дължина 87: HTTP: GET / HTTP / 1.1
Д…:?@.@.х.
... "zy .2.P… P… GET / HTTP / 1.1
Хост: проверка на свързаността.ubuntu.com
Приемете: * / *
Връзка: близо

Заключение

В тази статия ви запознахме с някои от най-важните теми на tcpdump. Tcpdump, в комбинация със силата на CLI, може да бъде от голяма помощ при отстраняване на неизправности в мрежата, автоматизация и управление на сигурността. След като бъдат проучени и комбинирани, неговите филтри и опции на командния ред могат да допринесат много за ежедневните ви задачи за отстраняване на неизправности и автоматизация и цялостното разбиране на мрежата.

Как да покажете OSD наслагване в приложения на цял екран за Linux и игри
Играта на цял екран или използване на приложения в режим на цял екран без разсейване може да ви откъсне от съответната системна информация, видима в п...
Топ 5 карти за залавяне на игри
Всички сме виждали и обичаме поточни игри в YouTube. PewDiePie, Jakesepticye и Markiplier са само някои от най-добрите геймъри, които са спечелили мил...
Как да разработите игра на Linux
Преди десетилетие не много потребители на Linux биха прогнозирали, че любимата им операционна система един ден ще бъде популярна игрална платформа за ...