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.pcaptcpdump: слушане на 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 -ntcpdump: потиснат подробен изход, използвайте -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. Полето за флаг включва и някои други стойности като: - S: SYN
- P: PUSH
- [.]: ACK
- F: FIN
- [С.]: SYN_ACK
- 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, може да бъде от голяма помощ при отстраняване на неизправности в мрежата, автоматизация и управление на сигурността. След като бъдат проучени и комбинирани, неговите филтри и опции на командния ред могат да допринесат много за ежедневните ви задачи за отстраняване на неизправности и автоматизация и цялостното разбиране на мрежата.