tcpdump

Průvodce pro začátečníky TCPDUMP

Průvodce pro začátečníky TCPDUMP
Tcpdump je bezplatný a open-source analyzátor paketů bezdrátové datové sítě, který pracuje na rozhraní příkazového řádku. Je to nejčastěji používaný nástroj CLI k analýze síťového provozu. Tcpdump umožňuje uživatelům vidět, číst nebo zachytit síťový provoz přenášený přes síť připojenou k počítači. Je to užitečné při správě systému, monitorování síťového provozu (pro problémy nebo jinak).

Původně to napsali v roce 1988 čtyři pracovníci Network Research Group v Lawrence Berkeley Laboratory v Kalifornii. To bylo organizováno o jedenáct let později Micheal Richardson a Bill Fenner v roce 1999, kteří vytvořili web tcpdump. Tcpdump funguje na všech operačních systémech podobných Unixu. Verze Tcpdump pro Windows se nazývá WinDump a používá WinPcap, alternativu systému Windows pro libpcap.

Pomocí snap nainstalujte tcpdump:

$ sudo snap install tcpdump

Použijte správce balíčků k instalaci tcpdump:

$ sudo apt-get install tcpdump (Debian / Ubuntu)
$ sudo dnf install tcpdump (CentOS / RHEL 6 a 7)
$ sudo yum install tcpdump (Fedora / CentOS / RHEL 8)

Podívejme se na různá použití a výstupy při prozkoumávání tcpdump!

UDP

Tcpdump může také ukládat pakety UDP. K odeslání paketu UDP použijeme nástroj netcat (nc) a poté jej vypsáme.

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

Ve výše uvedeném příkazu pošleme UDP paket skládající se z řetězce „Tcpdumper“ k portu UDP 1337 přes localhost. Tcpdump zachytí paket odesílaný přes port UDP 1337 a zobrazí jej.

Tento balíček nyní vypsáme pomocí tcpdump.

$ sudo tcpdump -i lo udp port 1337 -vvv -X

Tento příkaz zachytí a zobrazí zachycená data z paketů v ASCII i hexadecimální podobě.

tcpdump: naslouchání na lo, linkový typ EN10MB (Ethernet), délka snímku 262144 bajtů
04:39:39.072802 IP (tos 0x0, ttl 64, id 32650, offset 0, příznaky [DF], proto UDP (17), délka 37)
localhost.54574> localhost.1337: [bad udp cksum 0xfe24 -> 0xeac6!] UDP, délka 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

Jak vidíme, paket byl odeslán na port 1337 a jeho délka byla 9 jako řetězec tcpdumper je 9 bajtů. Vidíme také, že paket byl zobrazen v hexadecimálním formátu.

DHCP

Tcpdump může také provádět šetření na paketech DHCP přes síť. DHCP používá UDP port č. 67 nebo 68, takže definujeme a omezíme tcpdump pouze pro pakety DHCP. Předpokládejme, že používáme síťové rozhraní wifi.
Zde použitý příkaz bude:

$ sudo tcpdump -i wlan0 port 67 nebo port 68 -e -n -vvv
tcpdump: poslech na wlan0, link typu EN10MB (Ethernet), délka snímku 262144 bajtů
03:52:04.004356 00: 11: 22: 33: 44: 55> 00: 11: 22: 33: 44: 66, ethertype IPv4 (0x0800), délka 342: (tos 0x0, ttl 64, id 39781, offset 0, příznaky [DF ], proto UDP (17), délka 328)
192.168.10.21.68> 192.168.10.1.67: [udp sum ok] BOOTP / DHCP, požadavek od 00: 11: 22: 33: 44: 55, délka 300, xid 0xfeab2d67, příznaky [žádný] (0x0000)
IP adresa klienta.168.10.16
Klient-ethernetová adresa 00: 11: 22: 33: 44: 55
Rozšíření Vendor-rfc1048
Magic Cookie 0x63825363
Zpráva DHCP (53), délka 1: Vydání
ID serveru (54), délka 4: 192.168.10.1
Název hostitele (12), délka 6: „papoušek“
KONEC (255), délka 0
PAD (0), délka 0, nastane 42

DNS

DNS, známý také jako systém doménových jmen, potvrzuje, že vám poskytne to, co hledáte, a to tak, že doménové jméno porovná s adresou domény. Chcete-li zkontrolovat komunikaci na úrovni DNS vašeho zařízení přes internet, můžete použít tcpdump následujícím způsobem. DNS používá pro komunikaci port UDP 53.

$ sudo tcpdump -i wlan0 port udp 53
tcpdump: poslech na wlan0, link typu EN10MB (Ethernet), délka snímku 262144 bajtů
04:23:48.516616 IP (tos 0x0, ttl 64, id 31445, offset 0, příznaky [DF], proto UDP (17), délka 72)
192.168.10.16.45899> jeden.jeden.jeden.jeden.doména: [udp součet ok] 20852+ A? mozilla.cloudflare-dns.com. (44)
04:23:48.551556 IP (tos 0x0, ttl 60, id 56385, offset 0, příznaky [DF], proto UDP (17), délka 104)
jeden.jeden.jeden.jeden.doména> 192.168.10.16.45899: [udp suma ok] 20852 q: A? mozilla.cloudflare-dns.com. 2/0/0 mozilla.cloudflare-dns.com. [24s] A 104.16.249.249, mozilla.cloudflare-dns.com. [24s] A 104.16.248.249 (76)
04:23:48.648477 IP (tos 0x0, ttl 64, id 31446, offset 0, příznaky [DF], proto UDP (17), délka 66)
192.168.10.16.34043> jeden.jeden.jeden.jeden.doména: [udp součet ok] 40757+ PTR? 1.1.1.1.in-addr.arpa. (38)
04:23:48.688731 IP (tos 0x0, ttl 60, id 56387, offset 0, příznaky [DF], proto UDP (17), délka 95)
jeden.jeden.jeden.jeden.doména> 192.168.10.16.34043: [udp suma ok] 40757 q: PTR? 1.1.1.1.in-addr.arpa. 1/0/0 1.1.1.1.in-addr.arpa. [26m53s] PTR jedna.jeden.jeden.jeden. (67)

ARP

Address Resolution Protocol se používá pro zjištění adresy vrstvy linkové vrstvy, například MAC adresy. Je spojena s danou adresou internetové vrstvy, obvykle s adresou IPv4.

K zachycení a čtení dat přenášených v arp paketech používáme tcpdump. Příkaz je stejně jednoduchý jako:

$ sudo tcpdump -i wlan0 arp -vvv
tcpdump: poslech na wlan0, link typu EN10MB (Ethernet), délka snímku 262144 bajtů
03:44:12.023668 ARP, Ethernet (pouze 6), IPv4 (jen 4), požádat, kdo má 192.168.10.1 řekni 192.168.10.2, délka 28
03:44:17.140259 ARP, Ethernet (pouze 6), IPv4 (jen 4), požádat, kdo má 192.168.10.21 řekni 192.168.10.1, délka 28
03:44:17.140276 ARP, Ethernet (pouze 6), IPv4 (jen 4), odpověď 192.168.10.21 je v 00: 11: 22: 33: 44: 55 (oui Unknown), délka 28
03:44:42.026393 ARP, Ethernet (pouze 6), IPv4 (jen 4), požádat, kdo má 192.168.10.1 řekni 192.168.10.2, délka 28

ICMP

ICMP, známý také jako Internet Control Message Protocol, je podpůrný protokol v sadě internetových protokolů. ICMP se používá jako informační protokol.

Chcete-li zobrazit všechny pakety ICMP na rozhraní, můžeme použít tento příkaz:

$ sudo tcpdump icmp -vvv
tcpdump: poslech na wlan0, link typu EN10MB (Ethernet), délka snímku 262144 bajtů
04:26:42.123902 IP (tos 0x0, ttl 64, id 14831, offset 0, flags [DF], proto ICMP (1), délka 84)
192.168.10.16> 192.168.10.1: ICMP echo request, id 47363, seq 1, length 64
04:26:42.128429 IP (tos 0x0, ttl 64, id 32915, offset 0, příznaky [žádné], proto ICMP (1), délka 84)
192.168.10.1> 192.168.10.16: ICMP echo response, id 47363, seq 1, length 64
04:26:43.125599 IP (tos 0x0, ttl 64, id 14888, offset 0, příznaky [DF], proto ICMP (1), délka 84)
192.168.10.16> 192.168.10.1: ICMP echo request, id 47363, seq 2, length 64
04:26:43.128055 IP (tos 0x0, ttl 64, id 32916, offset 0, příznaky [žádné], proto ICMP (1), délka 84)
192.168.10.1> 192.168.10.16: ICMP echo response, id 47363, seq 2, délka 64

NTP

NTP je síťový protokol navržený speciálně pro synchronizaci času v síti strojů. Chcete-li zachytit provoz na NTP:

$ sudo tcpdump dst port 123
04:31:05.547856 IP (tos 0x0, ttl 64, id 34474, offset 0, flags [DF], proto UDP (17), délka 76)
192.168.10.16.ntp> time-b-wwv.nist.vláda.ntp: [udp součet ok] NTPv4, klient, délka 48
Indikátor skoku: hodiny nesynchronizované (192), vrstva 0 (nespecifikováno), dotazování 3 (8 s), přesnost -6
Root Delay: 1.000000, kořenová disperze: 1.000000, referenční ID: (unspec)
Referenční časové razítko: 0.000000000
Časové razítko původce: 0.000000000
Časové razítko pro příjem: 0.000000000
Časové razítko přenosu: 3825358265.547764155 (2021-03-21T23: 31: 05Z)
Původce - Časové razítko přijetí: 0.000000000
Původce - Časové razítko přenosu: 3825358265.547764155 (2021-03-21T23: 31: 05Z)
04:31:05.841696 IP (tos 0x0, ttl 56, id 234, offset 0, příznaky [žádné], proto UDP (17), délka 76)
time-b-wwv.nist.vláda.ntp> 192.168.10.16.ntp: [udp součet ok] NTPv3, server, délka 48
Indikátor skoku: (0), vrstva 1 (primární reference), hlasování 13 (8192s), přesnost -29
Root Delay: 0.000244, Kořenová disperze: 0.000488, referenční ID: NIST
Referenční časové razítko: 3825358208.000000000 (2021-03-21T23: 30: 08Z)
Časové razítko původce: 3825358265.547764155 (2021-03-21T23: 31: 05Z)
Časové razítko pro příjem: 3825358275.028660181 (2021-03-21T23: 31: 15Z)
Časové razítko přenosu: 3825358275.028661296 (2021-03-21T23: 31: 15Z)
Původce - Časové razítko přijetí: +9.480896026
Původce - Časové razítko přenosu: +9.480897141

SMTP

Protokol SMTP nebo Simple Mail Transfer Protocol se používá hlavně pro e-maily. Tcpdump to může použít k získání užitečných e-mailových informací. Například pro extrahování příjemců / odesílatelů e-mailů:

$ sudo tcpdump -n -l port 25 | grep -i 'POŠTA Z \ | RCPT DO'

IPv6

IPv6 je „příští generací“ IP a poskytuje širokou škálu IP adres. IPv6 pomáhá dosáhnout dlouhodobého zdraví internetu.

Chcete-li zachytit provoz IPv6, použijte filtr ip6 určující protokoly TCP a UDP pomocí protokolů 6 a proto-17.

$ sudo tcpdump -n -i libovolný ip6 -vvv
tcpdump: typ datového odkazu LINUX_SLL2
tcpdump: poslech na libovolném, linkovém typu LINUX_SLL2 (Linux vaření v2), délka snímku 262144 bajtů
04:34:31.847359 lo In IP6 (flowlabel 0xc7cb6, hlim 64, next-header UDP (17) payload length: 40) :: 1.49395> :: 1.49395: [chybný udp cksum 0x003b -> 0x3587!] UDP, délka 32
04:34:31.859082 lo In IP6 (flowlabel 0xc7cb6, hlim 64, next-header UDP (17) payload length: 32) :: 1.49395> :: 1.49395: [bad udp cksum 0x0033 -> 0xeaef!] UDP, délka 24
04:34:31.860361 lo In IP6 (flowlabel 0xc7cb6, hlim 64, next-header UDP (17) payload length: 40) :: 1.49395> :: 1.49395: [špatný udp cksum 0x003b -> 0x7267!] UDP, délka 32
04:34:31.871100 lo In IP6 (flowlabel 0xc7cb6, hlim 64, next-header UDP (17) payload length: 944) :: 1.49395> :: 1.49395: [bad udp cksum 0x03c3 -> 0xf890!] UDP, délka 936
4 zachycené pakety
12 paketů přijatých filtrem
0 paketů vynechaných jádrem

'-C 4' poskytuje počet paketů až pro 4 pakety. Můžeme určit počet paketů na n a zachytit n paketů.

HTTP

Hypertext Transfer Protocol se používá k přenosu dat z webového serveru do prohlížeče za účelem prohlížení webových stránek. HTTP používá komunikaci formou TCP. Konkrétně se používá TCP port 80.

Chcete-li vytisknout všechny pakety HTTP IPv4 na a z portu 80:

tcpdump: poslech na wlan0, link typu EN10MB (Ethernet), délka snímku 262144 bajtů
03:36:00.602104 IP (tos 0x0, ttl 64, id 722, offset 0, příznaky [DF], proto TCP (6), délka 60)
192.168.10.21.33586> 192.168.10.1.http: Flags [S], cksum 0xa22b (correct), seq 2736960993, win 64240, options [mss 1460, sackOK, TS val 389882294 ecr 0, nop, wscale 10], délka 0
03:36:00.604830 IP (tos 0x0, ttl 64, id 0, offset 0, příznaky [DF], proto TCP (6), délka 60)
192.168.10.1.http> 192.168.10.21.33586: Vlajky [S.], cksum 0x2dcc (správné), seq 4089727666, ack 2736960994, win 14480, opce [mss 1460, sackOK, TS val 30996070 ecr 389882294, nop, wscale 3], délka 0
03:36:00.604893 IP (tos 0x0, ttl 64, id 723, offset 0, flags [DF], proto TCP (6), délka 52)
192.168.10.21.33586> 192.168.10.1.http: Vlajky [.], cksum 0x94e2 (správný), seq 1, ack 1, win 63, opce [nop, nop, TS val 389882297 ecr 30996070], délka 0
03:36:00.605054 IP (tos 0x0, ttl 64, id 724, offset 0, příznaky [DF], proto TCP (6), délka 481)

HTTP požadavky ..

192.168.10.21.33586> 192.168.10.1.http: Vlajky [P.], cksum 0x9e5d (správné), seq 1: 430, ack 1, win 63, možnosti [nop, nop, TS val 389882297 ecr 30996070], délka 429: HTTP, délka: 429
GET / HTTP / 1.1
Hostitel: 192.168.10.1
Uživatelský agent: Mozilla / 5.0 (Windows NT 10.0; rv: 78.0) Gecko / 20100101 Firefox / 78.0
Přijmout: text / html, application / xhtml + xml, application / xml; q = 0.9, obrázek / web, * / *; q = 0.8
Přijmout jazyk: en-US, en; q = 0.5
Accept-Encoding: gzip, deflate
DNT: 1
Připojení: keep-alive
Cookie: _TESTCOOKIESUPPORT = 1; SID = c7ccfa31cfe06065717d24fb544a5cd588760f0cdc5ae2739e746f84c469b5fd
Upgrade-nezabezpečené požadavky: 1

A odpovědi jsou také zachyceny

192.168.10.1.http> 192.168.10.21.33586: Vlajky [P.], cksum 0x84f8 (správný), seq 1: 523, ack 430, win 1944, možnosti [nop, nop, TS val 30996179 ecr 389882297], délka 522: HTTP, délka: 522
HTTP / 1.1 200 v pořádku
Server: ZTE webový server 1.0 ZTE corp 2015.
Rozsahy přijetí: bajty
Připojení: zavřít
Možnosti X-Frame: SAMEORIGIN
Cache-Control: no-cache, no-store
Délka obsahu: 138098
Soubor cookie: _TESTCOOKIESUPPORT = 1; CESTA = /; Pouze Http
Typ obsahu: text / html; charset = utf-8
Možnosti typu obsahu X: nosniff
Zásady zabezpečení obsahu: rámcové předky „vlastní“ „nebezpečné-vložené“ „nebezpečné“, img-src „vlastní“ údaje :;
Ochrana X-XSS: 1; mode = blok
Set-Cookie: SID =; vyprší = čt, 1. ledna 1970 00:00:00 GMT; cesta = /; Pouze Http

TCP

Chcete-li zachytit pakety pouze TCP, tento příkaz udělá vše dobré:

$ sudo tcpdump -i wlan0 tcp
tcpdump: poslech na wlan0, link typu EN10MB (Ethernet), délka snímku 262144 bajtů
04:35:48.892037 IP (tos 0x0, ttl 60, id 23987, offset 0, příznaky [žádné], proto TCP (6), délka 104)
tl-in-f189.1e100.síť.https> 192.168.10.16.50272: Příznaky [str.], cksum 0xc924 (správný), seq 1377740065: 1377740117, ack 1546363399, win 300, opce [nop, nop, TS val 13149401 ecr 3051434098], délka 52
04:35:48.892080 IP (tos 0x0, ttl 64, id 20577, offset 0, příznaky [DF], proto TCP (6), délka 52)
192.168.10.16.50272> tl-in-f189.1e100.síť.https: Vlajky [.], cksum 0xf898 (správné), seq 1, ack 52, win 63, opce [nop, nop, TS val 3051461952 ecr 13149401], délka 0
04:35:50.199754 IP (tos 0x0, ttl 64, id 20578, offset 0, příznaky [DF], proto TCP (6), délka 88)
192.168.10.16.50272> tl-in-f189.1e100.síť.https: Vlajky [P.], cksum 0x2531 (správný), seq 1:37, ack 52, win 63, opce [nop, nop, TS val 3051463260 ecr 13149401], délka 36
04:35:50.199809 IP (tos 0x0, ttl 64, id 7014, offset 0, příznaky [DF], proto TCP (6), délka 88)
192.168.10.16.50434> hkg12s18-in-f14.1e100.síť.https: Vlajky [P.], cksum 0xb21e (správné), seq 328391782: 328391818, ack 3599854191, win 63, opce [nop, nop, TS val 3656137742 ecr 2564108387], délka 36
4 zachycené pakety
4 pakety přijaté filtrem
0 paketů vynechaných jádrem

Normálně zachycování paketů TCP vede k velkému provozu; můžete podrobně určit své požadavky přidáním filtrů k zachycení, například:

Přístav
Určuje port, který má být monitorován

$ sudo tcpdump -i wlan0 tcp port 2222

Zdrojová IP
Chcete-li zobrazit pakety ze zadaného zdroje

$ sudo tcpdump -i wlan0 tcp src 192.168.10.2

Cílová IP
Zobrazení paketů do zadaného cíle

$ sudo tcpdump -i wlan0 tcp dst 192.168.10.2

Ukládání zachycování paketů do souborů

Chcete-li uložit zachycení paketu pro pozdější provedení analýzy, můžeme použít volbu -w tcpdump, která vyžaduje parametr názvu souboru. Tyto soubory jsou uloženy ve formátu souboru pcap (zachycení paketu), který lze použít k uložení nebo odeslání zachycení paketu.

Například:

$ sudo tcpdump -w / zajat.pcap

Můžeme přidat filtry, pokud chceme zachytit pakety TCP, UDP nebo ICMP atd.

Čtení zachycení paketů ze souborů

Uložený soubor bohužel nemůžete přečíst pomocí běžných příkazů „číst soubor“, jako je kočka atd. Výstup je téměř nesmyslný a je těžké zjistit, co je v souboru. '-r' se používá ke čtení paketů uložených v souboru .soubor pcap, dříve uložený pomocí '-w' nebo jiného softwaru pro ukládání pcaps:

$ sudo tcpdump -r / výstupy.pcap

Toto vytiskne data shromážděná ze zachycených paketů na obrazovce terminálu v čitelném formátu.

Tcpdump cheatsheet

Tcpdump lze použít s dalšími příkazy Linuxu, jako jsou grep, sed atd., získat užitečné informace. Zde je několik užitečných kombinací a klíčových slov sloučených při použití s ​​tcpdump, abyste získali cenné informace.

Extrahujte agenty uživatelů HTTP:

$ sudo tcpdump -n | grep "User-Agent:"

Adresy URL požadované přes HTTP lze sledovat pomocí tcpdump, například:

$ sudo tcpdump -v -n | egrep -i "POST / | GET / | Host:"

Můžete také Extrahujte hesla HTTP v požadavcích POST

$ sudo tcpdump -nn -l | egrep -i "POST / | pwd = | passwd = | heslo = | hostitel:"

Soubory cookie na serveru nebo na straně klienta lze extrahovat pomocí:

$ sudo tcpdump -n | egrep -i 'Set-Cookie | Host: | Cookie:'

Zachyťte požadavky a odpovědi DNS pomocí:

$ sudo tcpdump -i wlp58s0 -s0 port 53

Tisk všech hesel prostého textu:

$ sudo tcpdump port http nebo port ftp nebo port smtp nebo port imap nebo port pop3 nebo port telnet -l -A | egrep -i -B5 'pass = | pwd = | log = | login = | user = | user | username = | pw = | passw = | passwd = | heslo = | pass: | uživatel: | uživatelské jméno: | heslo: | přihlášení: | předat '

Běžné filtry Tcpdump

  • -A Zobrazuje pakety ve formátu ASCII.
  • -C Počet paketů k zachycení.
  • -počet Tisknout počet paketů pouze při čtení zachyceného souboru.
  • -E Tisk MAC adres a záhlaví na úrovni odkazů.
  • -h nebo -pomoc Vytiskne informace o verzi a použití.
  • -verze Zobrazit pouze informace o verzi.
  • -i Určete síťové rozhraní, na kterém se má zachytit.
  • -K Zabraňte pokusům o ověření kontrolních součtů jakéhokoli paketu. Přidává rychlost.
  • -m Určete modul, který chcete použít.
  • -n Nepřevádějte adresy (tj.E., adresy hostitelů, čísla portů atd.) na jména.
  • -číslo Na začátek každého řádku vytiskněte číslo volitelného paketu.
  • -p Zakázat přechodu rozhraní do promiskuitního režimu.
  • -Q Vyberte směr paketů, které mají být zachyceny. Odeslat nebo přijmout.
  • -q Tichý / rychlý výstup. Tiskne méně informací. Výstupy jsou kratší.
  • -r Slouží ke čtení paketů z pcap .
  • -t Netiskněte časové razítko na každém řádku výpisu.
  • -proti Vytiskne více informací o výstupu.
  • -w Napište surové pakety do souboru.
  • -X Vytiskne výstup ASCII.
  • -X Vytiskne ASCII s hex.
  • -seznam rozhraní Zobrazuje všechna dostupná síťová rozhraní, kde lze pakety zachytit pomocí tcpdump.

Zastavení

Tcpdump je velmi široce používaný nástroj používaný při výzkumu a aplikacích zabezpečení / sítí. Jedinou nevýhodou tcpdump je „Žádné GUI“, ale je příliš dobré na to, abychom se drželi mimo nejlepší grafy. Jak píše Daniel Miessler: „Analyzátory protokolů, jako je Wireshark, jsou skvělé, ale pokud chcete skutečně zvládnout paketové fu, musíte se nejprve stát jedním s tcpdump.“

Emulace kliknutí myší vznášením pomocí myši Clickless Mouse ve Windows 10
Používání myši nebo klávesnice ve špatném držení těla nadměrného používání může mít za následek mnoho zdravotních problémů, včetně napětí, syndromu ka...
Přidejte gesta myši do Windows 10 pomocí těchto bezplatných nástrojů
V posledních letech se počítače a operační systémy značně vyvinuly. Bývaly doby, kdy uživatelé museli procházet správci souborů pomocí příkazů. Stejně...
Ovládejte a spravujte pohyb myši mezi více monitory ve Windows 10
Správce myší se dvěma displeji umožňuje ovládat a konfigurovat pohyb myši mezi více monitory zpomalením jeho pohybů poblíž hranice. Windows 10/8 vám u...