tcpdump

Ръководство за начинаещи TCPDUMP

Ръководство за начинаещи TCPDUMP
Tcpdump е безплатен анализатор на пакети за безжична мрежа за данни с отворен код, който работи на интерфейса на командния ред. Това е най-често използваният CLI инструмент за анализ на мрежовия трафик. Tcpdump позволява на потребителите да виждат, четат или улавят мрежов трафик, предаван през мрежа, свързана към компютъра. Полезен е при системна администрация, наблюдение на мрежовия трафик (за проблеми или по друг начин).

Първоначално тя е написана през 1988 г. от четирима работници на Мрежовата изследователска група в лабораторията „Лорънс Бъркли“ в Калифорния. Той е организиран единадесет години по-късно от Майкъл Ричардсън и Бил Фенър през 1999 г., които създават сайта на tcpdump. Tcpdump работи на всички Unix-подобни операционни системи. Версията на Tcpdump за Windows се нарича WinDump и използва WinPcap, алтернативата на windows за libpcap.

Използвайте щракването, за да инсталирате tcpdump:

$ sudo snap инсталирайте tcpdump

Използвайте вашия мениджър на пакети, за да инсталирате tcpdump:

$ sudo apt-get install tcpdump (Debian / Ubuntu)
$ sudo dnf инсталиране на tcpdump (CentOS / RHEL 6 и 7)
$ sudo yum инсталиране на tcpdump (Fedora / CentOS / RHEL 8)

Нека да видим различни употреби и резултати, докато изследваме tcpdump!

UDP

Tcpdump може да изхвърля и UDP пакети. Ще използваме инструмент netcat (nc), за да изпратим UDP пакет и след това да го изхвърлим.

$ echo -n "tcpdumper" | nc -w 1 -u localhost 1337

В дадената по-горе команда изпращаме UDP пакет, състоящ се от низа „Tcpdumper“ към UDP порта 1337 чрез localhost. Tcpdump улавя пакета, изпратен през UDP порт 1337, и ще го покаже.

Сега ще изхвърлим този пакет с помощта на tcpdump.

$ sudo tcpdump -i lo udp порт 1337 -vvv -X

Тази команда ще улови и покаже заснетите данни от пакетите в ASCII, както и шестнадесетична форма.

tcpdump: слушане на lo, тип връзка EN10MB (Ethernet), дължина на моментна снимка 262144 байта
04:39:39.072802 IP (tos 0x0, ttl 64, id 32650, отместване 0, флагове [DF], прото UDP (17), дължина 37)
localhost.54574> localhost.1337: [лош udp cksum 0xfe24 -> 0xeac6!] UDP, дължина 9
0x0000: 4500 0025 7f8a 4000 4011 bd3b 7f00 0001 E ...% ... @.@…;…
0x0010: 7f00 0001 d52e 0539 0011 fe24 7463 7064… 9… $ tcpd
0x0020: 756d 7065 72 umper

Както виждаме, пакетът е изпратен до порт 1337 и дължината е 9 като низ tcpdumper е 9 байта. Също така можем да видим, че пакетът е показан в шестнадесетичен формат.

DHCP

Tcpdump може също да извършва разследвания на DHCP пакети по мрежата. DHCP използва UDP порт № 67 или 68, така че ще определим и ограничим tcpdump само за DHCP пакети. Да приемем, че използваме wifi мрежов интерфейс.
Командата, използвана тук, ще бъде:

$ sudo tcpdump -i wlan0 порт 67 или порт 68 -e -n -vvv
tcpdump: слушане на wlan0, тип връзка EN10MB (Ethernet), дължина на моментна снимка 262144 байта
03:52:04.004356 00: 11: 22: 33: 44: 55: 00: 11: 22: 33: 44: 66, етертип IPv4 (0x0800), дължина 342: (tos 0x0, ttl 64, id 39781, отместване 0, флагове [DF ], прото UDP (17), дължина 328)
192.168.10.21.68> 192.168.10.1.67: [udp sum ok] BOOTP / DHCP, Заявка от 00: 11: 22: 33: 44: 55, дължина 300, xid 0xfeab2d67, Знамена [няма] (0x0000)
Клиент-IP 192.168.10.16
Клиент-Ethernet-адрес 00: 11: 22: 33: 44: 55
Vendor-rfc1048 Разширения
Вълшебна бисквитка 0x63825363
DHCP-съобщение (53), дължина 1: Освобождаване
Идентификатор на сървъра (54), дължина 4: 192.168.10.1
Име на хост (12), дължина 6: "папагал"
END (255), дължина 0
PAD (0), дължина 0, възниква 42

DNS

DNS, известна още като Domain Name System, потвърждава, че ви предоставя това, което търсите, като съпоставя името на домейна с адреса на домейна. За да проверите комуникацията на DNS на вашето устройство през интернет, можете да използвате tcpdump по следния начин. DNS използва UDP порт 53 за комуникация.

$ sudo tcpdump -i wlan0 udp порт 53
tcpdump: слушане на wlan0, тип връзка EN10MB (Ethernet), дължина на моментна снимка 262144 байта
04:23:48.516616 IP (tos 0x0, ttl 64, id 31445, отместване 0, флагове [DF], прото UDP (17), дължина 72)
192.168.10.16.45899> един.един.един.един.домейн: [udp sum ok] 20852+ A? моцила.cloudflare-dns.com. (44)
04:23:48.551556 IP (tos 0x0, ttl 60, id 56385, отместване 0, флагове [DF], прото UDP (17), дължина 104)
един.един.един.един.домейн> 192.168.10.16.45899: [udp sum ok] 20852 q: A? моцила.cloudflare-dns.com. 2/0/0 мозила.cloudflare-dns.com. [24s] A 104.16.249.249, мозила.cloudflare-dns.com. [24s] A 104.16.248.249 (76)
04:23:48.648477 IP (tos 0x0, ttl 64, id 31446, отместване 0, флагове [DF], прото UDP (17), дължина 66)
192.168.10.16.34043> един.един.един.един.домейн: [udp sum ok] 40757+ PTR? 1.1.1.1.в-адрес.арпа. (38)
04:23:48.688731 IP (tos 0x0, ttl 60, id 56387, отместване 0, флагове [DF], прото UDP (17), дължина 95)
един.един.един.един.домейн> 192.168.10.16.34043: [udp sum ok] 40757 q: PTR? 1.1.1.1.в-адрес.арпа. 1/0/0 1.1.1.1.в-адрес.арпа. [26m53s] PTR един.един.един.един. (67)

ARP

Протоколът за разрешаване на адреси се използва за откриване на адреса на връзката, например MAC адрес. Той е свързан с даден адрес на интернет слой, обикновено IPv4 адрес.

Използваме tcpdump за улавяне и четене на данните, пренасяни в arp пакетите. Командата е толкова проста, колкото:

$ sudo tcpdump -i wlan0 arp -vvv
tcpdump: слушане на wlan0, тип връзка EN10MB (Ethernet), дължина на моментна снимка 262144 байта
03:44:12.023668 ARP, Ethernet (len 6), IPv4 (len 4), Заявка кой има 192.168.10.1 кажи 192.168.10.2, дължина 28
03:44:17.140259 ARP, Ethernet (len 6), IPv4 (len 4), Заявка кой има 192.168.10.21 кажи 192.168.10.1, дължина 28
03:44:17.140276 ARP, Ethernet (len 6), IPv4 (len 4), отговор 192.168.10.21 е-at 00: 11: 22: 33: 44: 55 (oui Unknown), дължина 28
03:44:42.026393 ARP, Ethernet (len 6), IPv4 (len 4), Заявка кой има 192.168.10.1 кажи 192.168.10.2, дължина 28

ICMP

ICMP, известен също като Internet Control Message Protocol, е поддържащ протокол в пакета за интернет протоколи. ICMP се използва като информационен протокол.

За да видим всички ICMP пакети на интерфейс, можем да използваме тази команда:

$ sudo tcpdump icmp -vvv
tcpdump: слушане на wlan0, тип връзка EN10MB (Ethernet), дължина на моментна снимка 262144 байта
04:26:42.123902 IP (tos 0x0, ttl 64, id 14831, отместване 0, флагове [DF], прото ICMP (1), дължина 84)
192.168.10.16> 192.168.10.1: ICMP ехо заявка, id 47363, sq 1, дължина 64
04:26:42.128429 IP (tos 0x0, ttl 64, id 32915, отместване 0, флагове [няма], прото ICMP (1), дължина 84)
192.168.10.1> 192.168.10.16: ICMP ехо отговор, id 47363, sq 1, дължина 64
04:26:43.125599 IP (tos 0x0, ttl 64, id 14888, отместване 0, флагове [DF], прото ICMP (1), дължина 84)
192.168.10.16> 192.168.10.1: ICMP ехо заявка, id 47363, sq 2, дължина 64
04:26:43.128055 IP (tos 0x0, ttl 64, id 32916, отместване 0, флагове [няма], прото ICMP (1), дължина 84)
192.168.10.1> 192.168.10.16: ICMP ехо отговор, id 47363, sq 2, дължина 64

NTP

NTP е мрежов протокол, създаден специално за синхронизиране на времето в мрежа от машини. За да уловите трафика по ntp:

$ sudo tcpdump dst порт 123
04:31:05.547856 IP (tos 0x0, ttl 64, id 34474, отместване 0, флагове [DF], прото UDP (17), дължина 76)
192.168.10.16.ntp> time-b-wwv.нист.gov.ntp: [udp sum ok] NTPv4, клиент, дължина 48
Индикатор за скок: часовник несинхронизиран (192), слой 0 (неуточнен), анкета 3 (8 секунди), прецизност -6
Забавяне на корен: 1.000000, коренна дисперсия: 1.000000, Идентификационен номер: (без спецификация)
Клеймо за справка: 0.000000000
Клеймо на оригинатора: 0.000000000
Получаване на клеймо за време: 0.000000000
Клеймо за време на предаване: 3825358265.547764155 (2021-03-21T23: 31: 05Z)
Оригинатор - Получаване на клеймо за време: 0.000000000
Оригинатор - Клеймо за време на предаване: 3825358265.547764155 (2021-03-21T23: 31: 05Z)
04:31:05.841696 IP (tos 0x0, ttl 56, id 234, отместване 0, флагове [няма], прото UDP (17), дължина 76)
време-b-wwv.нист.gov.ntp> 192.168.10.16.ntp: [udp sum ok] NTPv3, сървър, дължина 48
Индикатор за скок: (0), Stratum 1 (първична референция), анкета 13 (8192s), точност -29
Root Delay: 0.000244, коренна дисперсия: 0.000488, Идентификационен номер: NIST
Референтен клеймо: 3825358208.000000000 (2021-03-21T23: 30: 08Z)
Клеймо на оригинатора: 3825358265.547764155 (2021-03-21T23: 31: 05Z)
Получаване на клеймо за време: 3825358275.028660181 (2021-03-21T23: 31: 15Z)
Клеймо за време на предаване: 3825358275.028661296 (2021-03-21T23: 31: 15Z)
Инициатор - Получаване на клеймо за време: +9.480896026
Оригинатор - Клеймо за време на предаване: +9.480897141

SMTP

SMTP или Simple Mail Transfer Protocol се използва главно за имейли. Tcpdump може да използва това, за да извлече полезна информация за имейл. Например, за да извлечете получатели / податели на имейли:

$ sudo tcpdump -n -l порт 25 | grep -i 'ПОЩА ОТ \ | RCPT ДО'

IPv6

IPv6 е „следващото поколение“ на IP, предоставяйки широк спектър от IP адреси. IPv6 помага за постигане на дългосрочно здраве на Интернет.

За да уловите IPv6 трафик, използвайте ip6 филтъра, указващ протоколите TCP и UDP, използвайки proto 6 и proto-17.

$ sudo tcpdump -n -i всеки ip6 -vvv
tcpdump: тип връзка за данни LINUX_SLL2
tcpdump: прослушване на какъвто и да е, LINUX_SLL2 тип Linux (Linux приготвен v2), дължина на моментна снимка 262144 байта
04:34:31.847359 lo В IP6 (flowlabel 0xc7cb6, hlim 64, UDP (17) next-header дължина на полезния товар: 40) :: 1.49395> :: 1.49395: [лош udp cksum 0x003b -> 0x3587!] UDP, дължина 32
04:34:31.859082 lo В IP6 (flowlabel 0xc7cb6, hlim 64, UDP (17) next-header дължина на полезния товар: 32) :: 1.49395> :: 1.49395: [лош udp cksum 0x0033 -> 0xeaef!] UDP, дължина 24
04:34:31.860361 lo В IP6 (Flowlabel 0xc7cb6, hlim 64, UDP (17) next-header дължина на полезния товар: 40) :: 1.49395> :: 1.49395: [лош udp cksum 0x003b -> 0x7267!] UDP, дължина 32
04:34:31.871100 lo В IP6 (flowlabel 0xc7cb6, hlim 64, UDP (17) next-header дължина на полезния товар: 944) :: 1.49395> :: 1.49395: [лош udp cksum 0x03c3 -> 0xf890!] UDP, дължина 936
Уловени 4 пакета
12 пакета, получени чрез филтър
0 пакета, изпуснати от ядрото

'-C 4' осигурява брой пакети само до 4 пакета. Можем да посочим броя на пакетите до n и да уловим n пакета.

HTTP

Протоколът за прехвърляне на хипертекст се използва за прехвърляне на данни от уеб сървър в браузър за преглед на уеб страници. HTTP използва комуникация с TCP форма. По-точно се използва TCP порт 80.

За да отпечатате всички IPv4 HTTP пакети към и от порт 80:

tcpdump: слушане на wlan0, тип връзка EN10MB (Ethernet), дължина на моментна снимка 262144 байта
03:36:00.602104 IP (tos 0x0, ttl 64, id 722, отместване 0, флагове [DF], прото TCP (6), дължина 60)
192.168.10.21.33586> 192.168.10.1.http: Flags [S], cksum 0xa22b (правилно), sq 2736960993, win 64240, опции [mss 1460, sackOK, TS val 389882294 ecr 0, nop, wscale 10], дължина 0
03:36:00.604830 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), дължина 60)
192.168.10.1.http> 192.168.10.21.33586: Знамена [S.], cksum 0x2dcc (правилно), sq 4089727666, ack 2736960994, win 14480, опции [mss 1460, sackOK, TS val 30996070 ecr 389882294, nop, wscale 3], дължина 0
03:36:00.604893 IP (tos 0x0, ttl 64, id 723, отместване 0, флагове [DF], прото TCP (6), дължина 52)
192.168.10.21.33586> 192.168.10.1.http: Знамена [.], cksum 0x94e2 (правилно), sq 1, ack 1, win 63, опции [nop, nop, TS val 389882297 ecr 30996070], дължина 0
03:36:00.605054 IP (tos 0x0, ttl 64, id 724, отместване 0, флагове [DF], прото TCP (6), дължина 481)

HTTP заявки ..

192.168.10.21.33586> 192.168.10.1.http: Знамена [P.], cksum 0x9e5d (правилно), sq 1: 430, ack 1, win 63, опции [nop, nop, TS val 389882297 ecr 30996070], дължина 429: HTTP, дължина: 429
GET / HTTP / 1.1
Водещ: 192.168.10.1
Потребителски агент: Mozilla / 5.0 (Windows NT 10.0; rv: 78.0) Gecko / 20100101 Firefox / 78.0
Приемам: text / html, application / xhtml + xml, application / xml; q = 0.9, image / webp, * / *; q = 0.8
Accept-Language: en-US, en; q = 0.5
Приемане-кодиране: gzip, дефлация
DNT: 1
Връзка: поддържайте жив
„Бисквитка“: _TESTCOOKIESUPPORT = 1; SID = c7ccfa31cfe06065717d24fb544a5cd588760f0cdc5ae2739e746f84c469b5fd
Заявки за надграждане-несигурни: 1

И отговорите също се улавят

192.168.10.1.http> 192.168.10.21.33586: Знамена [P.], cksum 0x84f8 (правилно), sq 1: 523, ack 430, win 1944, опции [nop, nop, TS val 30996179 ecr 389882297], дължина 522: HTTP, дължина: 522
HTTP / 1.1 200 ОК
Сървър: уеб сървър на ZTE 1.0 ZTE corp 2015.
Диапазони за приемане: байтове
Връзка: близо
Опции за X-Frame: SAMEORIGIN
Контрол на кеша: no-cache, no-store
Дължина на съдържанието: 138098
Set-Cookie: _TESTCOOKIESUPPORT = 1; ПЪТ = /; HttpOnly
Тип съдържание: text / html; charset = utf-8
X-Content-Type-Options: nosniff
Политика за сигурност на съдържанието: фрейм-предци 'self' 'unsafe-inline' 'unsafe-eval'; img-src 'self' данни :;
X-XSS-Защита: 1; режим = блок
Set-Cookie: SID =; изтича = четвъртък, 01-януари-1970 00:00:00 GMT; път = /; HttpOnly

TCP

За да улови пакети само с TCP, тази команда ще направи всичко добро:

$ sudo tcpdump -i wlan0 tcp
tcpdump: слушане на wlan0, тип връзка EN10MB (Ethernet), дължина на моментна снимка 262144 байта
04:35:48.892037 IP (tos 0x0, ttl 60, id 23987, отместване 0, флагове [няма], прото TCP (6), дължина 104)
tl-in-f189.1е100.нето.https> 192.168.10.16.50272: Знамена [P.], cksum 0xc924 (правилно), sq 1377740065: 1377740117, ack 1546363399, win 300, опции [nop, nop, TS val 13149401 ecr 3051434098], дължина 52
04:35:48.892080 IP (tos 0x0, ttl 64, id 20577, отместване 0, флагове [DF], прото TCP (6), дължина 52)
192.168.10.16.50272> tl-in-f189.1е100.нето.https: Знамена [.], cksum 0xf898 (правилно), sq 1, ack 52, win 63, опции [nop, nop, TS val 3051461952 ecr 13149401], дължина 0
04:35:50.199754 IP (tos 0x0, ttl 64, id 20578, отместване 0, флагове [DF], прото TCP (6), дължина 88)
192.168.10.16.50272> tl-in-f189.1е100.нето.https: Знамена [P.], cksum 0x2531 (правилно), sq 1:37, ack 52, win 63, опции [nop, nop, TS val 3051463260 ecr 13149401], дължина 36
04:35:50.199809 IP (tos 0x0, ttl 64, id 7014, отместване 0, флагове [DF], прото TCP (6), дължина 88)
192.168.10.16.50434> hkg12s18-in-f14.1е100.нето.https: Знамена [P.], cksum 0xb21e (правилно), sq 328391782: 328391818, ack 3599854191, win 63, опции [nop, nop, TS val 3656137742 ecr 2564108387], дължина 36
Уловени 4 пакета
4 пакета, получени чрез филтър
0 пакета, изпуснати от ядрото

Обикновено улавянето на TCP пакети води до много трафик; можете да посочите подробно вашите изисквания, като добавите филтри към улавянето, като например:

Порт
Указва порта за наблюдение

$ sudo tcpdump -i wlan0 tcp порт 2222

Източник IP
За да видите пакети от определен източник

$ sudo tcpdump -i wlan0 tcp src 192.168.10.2

IP адрес на дестинация
За да видите пакети до определена дестинация

$ sudo tcpdump -i wlan0 tcp dst 192.168.10.2

Запазване на заснемане на пакети във файлове

За да запазим улавянето на пакети за извършване на анализ по-късно, можем да използваме опцията -w на tcpdump, която изисква параметър на име на файл. Тези файлове се записват във файлов формат pcap (улавяне на пакети), който може да се използва за запазване или изпращане на пакетни улавяния.

Например:

$ sudo tcpdump -w / заловен.pcap

Можем да добавяме филтри дали искаме да уловим TCP, UDP или ICMP пакети и т.н.

Четене на заснемане на пакети от файлове

За съжаление не можете да прочетете записания файл чрез обичайни команди за четене на файлове като cat и т.н. Резултатът е всичко, освен глупости и е трудно да се каже какво има във файла. '-r' се използва за четене на пакетите, записани в .pcap файл, съхраняван по-рано от '-w' или друг софтуер, съхраняващ pcaps:

$ sudo tcpdump -r / изходи.pcap

Това отпечатва данните, събрани от заловени пакети на терминалния екран, в четлив формат.

Tcpdump измамна таблица

Tcpdump може да се използва с други команди на Linux като grep, sed и т.н., за извличане на полезна информация. Ето някои полезни комбинации и ключови думи, обединени в употреба с tcpdump, за да получите ценна информация.

Извличане на HTTP потребителски агенти:

$ sudo tcpdump -n | grep "Потребителски агент:"

Заявените URL адреси чрез HTTP могат да бъдат наблюдавани с помощта на tcpdump като:

$ sudo tcpdump -v -n | egrep -i "POST / | GET / | Хост:"

Можете също Извличане на HTTP пароли в POST заявки

$ sudo tcpdump -nn -l | egrep -i "POST / | pwd = | passwd = | парола = | Хост:"

Сървърните или клиентските бисквитки могат да бъдат извлечени с помощта на:

$ sudo tcpdump -n | egrep -i 'Set-Cookie | Хост: | Cookie:'

Заснемете DNS заявки и отговори, като използвате:

$ sudo tcpdump -i wlp58s0 -s0 порт 53

Отпечатайте всички пароли с обикновен текст:

$ sudo tcpdump порт http или порт ftp или порт smtp или порт imap или порт pop3 или порт telnet -l -A | egrep -i -B5 'pass = | pwd = | log = | login = | user = | user | username = | pw = | passw = | passwd = | password = | pass: | user: | потребителско име: | парола: | вход: | преминете '

Общи филтри за Tcpdump

  • -A Показва пакети във формат ASCII.
  • -° С Брой пакети за улавяне.
  • -броя Отпечатайте броя на пакетите само при четене на заснет файл.
  • Отпечатайте MAC адреси и заглавки на ниво връзка.
  • -h или -помощ Отпечатва информация за версията и използването.
  • -версия Показвайте само информацията за версията.
  • -i Посочете мрежовия интерфейс, който да заснемете.
  • Предотвратяване на опити за проверка на контролни суми на всеки пакет. Добавя скорост.
  • Посочете модул, който да използвате.
  • Не конвертирайте адреси (т.е.д., адреси на хоста, номера на портове и т.н.) към имена.
  • -номер Отпечатайте незадължителен номер на пакет в началото на всеки ред.
  • -стр Забранете интерфейса да премине в безразборен режим.
  • -Въпрос: Изберете посока за пакетите, които ще бъдат заловени. Изпращане или получаване.
  • -q Тих / бърз изход. Отпечатва по-малко информация. Изходите са по-кратки.
  • -r Използва се за четене на пакети от pcap .
  • -T Не отпечатвайте клеймо за време на всеки ред за изхвърляне.
  • -v Отпечатва повече информация относно изхода.
  • -w Напишете суровите пакети в файл.
  • Отпечатва ASCII изход.
  • Отпечатва ASCII с шестнадесетичен.
  • -списък-интерфейси Показва всички налични мрежови интерфейси, където пакетите могат да бъдат уловени от tcpdump.

Спиране

Tcpdump е много широко използван инструмент, използван в изследванията и приложенията на Сигурност / Мрежа. Единственият недостатък на tcpdump е „Без графичен интерфейс“, но е твърде добър, за да не бъде включен в първите класации. Както пише Даниел Мислер, „Протоколните анализатори като Wireshark са страхотни, но ако искате наистина да овладеете пакетното fu, първо трябва да станете едно с tcpdump.”

Контролирайте и управлявайте движението на мишката между множество монитори в Windows 10
Двоен дисплей на мишката ви позволява да контролирате и конфигурирате движението на мишката между множество монитори, като забавя движенията му близо ...
WinMouse ви позволява да персонализирате и подобрите движението на показалеца на мишката на компютър с Windows
Ако искате да подобрите функциите по подразбиране на показалеца на мишката, използвайте безплатна програма WinMouse. Той добавя още функции, за да ви ...
Бутонът на левия бутон на мишката не работи в Windows 10
Ако използвате специална мишка с вашия лаптоп или настолен компютър, но бутонът на левия бутон на мишката не работи на Windows 10/8/7 по някаква причи...