V této příručce vám ukážu, jak analyzovat síťové pakety v systému Linux. Budu používat nástroje Tcpdump a Wireshark. Tento tutoriál používá Ubuntu jako OS, ale je použitelný i pro jiné distribuce Linuxu.
Proč potřebujete Tcpdump?
Zřejmá otázka, která vás může napadnout, je, proč se starat o Tcpdump, když s Wiresharkem můžete dělat téměř vše. Zde je odpověď na toto:Někdy je pohodlnější použít Tcpdump pro zachycování paketů ve srovnání s Wireshark. Pokud je například cílový stroj, na kterém zachycujete pakety, vzdálený počítač bez nainstalovaného Wireshark nebo je to jen vzdálený bezhlavý stroj, v obou případech je Tcpdump velmi užitečný. Chcete-li se podívat na různé možnosti, které lze použít s Tcpdump, vyhledejte manuálové stránky.
Co je Tcpdump?
Tcpdump je alternativou příkazového řádku k Wiresharku. Slouží ke stejnému účelu jako Wireshark, který zachycuje a analyzuje provoz. Tcpdump je samostatná aplikace a neměla by být považována za rozhraní příkazového řádku Wireshark. Protože je založen na rozhraní příkazového řádku, není tak snadné jej ovládat jako Wireshark. Nové uživatele to může zpočátku znepokojovat, když jej začnou používat, a mohou najít mnoho těžko zapamatovatelných příkazů a syntaxe.
Přehled tohoto kurzu
Přejděme nyní k hlavnímu účelu této příručky. V této příručce uvidíme, jak můžeme komunikovat s Tcpdump s Wireshark. Zde poukazujeme na práci, kterou v této příručce provedeme:
- Připojení ke vzdálenému počítači (hostitel 2) pomocí SSH.
- Zachycení provozu pomocí Tcpdump a uložení Capture.
- Odeslání souboru Capture do místního počítače (hostitel 1), na kterém je nainstalován Wireshark.
- Použití Wireshark k analýze zachycené relace Tcpdump.
Předletová kontrola
Pro tento výukový program používáme dva počítače Ubuntu 20.04. Musíte je nakonfigurovat sami. Naše konfigurace IP je následující:
Hostitel 1 (místní stroj):192.168.186.150
Hostitel 2 (vzdálený počítač):192.168.186.201
Kroky uvedené v této příručce by měly fungovat na jakémkoli systému Linux, pokud jsou splněny následující požadavky:
- Hostitel na místě (hostitel 1) s nainstalovaným Wiresharkem a nakonfigurovaným SSH.
- Přístup SSH od místního hostitele (hostitel 1) ke vzdálenému hostiteli (hostitel 2).
- Tcpdump a SSH nakonfigurované na vzdáleném hostiteli (hostitel 2).
- Uživatelský účet ‚sudo‘ na hostiteli 2 pro spouštění Tcpdump a také na hostiteli 1 (závisí na tom, jak je nakonfigurován Wireshark).
Začněme…
Chcete-li pokračovat dále, připojte se ze svého místního počítače (Hostitel 1) ke vzdálenému počítači (Hostitel 2) pomocí přístupového protokolu SSH. Již jsme nastavili SSH spojení mezi oběma stroji. Pro připojení k hostiteli 2 tedy použijeme níže uvedený příkaz z terminálu Host 1:
$ ssh ‘uživatelské_jméno’@’IP_of_Host2’
Zde nahraďte 'user_name' uživatelským jménem hostitele 2, ke kterému se připojujeme, a 'IP_of_Host2' je IP adresa hostitele 2. Viz obrázek níže:
Nyní zkontrolujte dostupná rozhraní na vzdáleném počítači, na který může Tcpdump zachytit. K tomu použijte příkaz:
$ tcpdump --list-interfaces
Ukázkový výstup:
1.enp0s3 [Up, Running]
2.lo [Up, Running, Loopback]
3.any (Pseudo-zařízení, které zachycuje na všech rozhraních) [Up, Running]
4. eno1 [Nahoru]
5.bluetooth-monitor (Bluetooth Linux Monitor) [žádný]
6.nflog (Linuxové rozhraní netfilter log (NFLOG)) [žádné]
7.nfqueue (Linux netfilter rozhraní fronty (NFQUEUE)) [žádné]
8.bluetooth0 (číslo adaptéru Bluetooth 0) [žádné]
Jak vidíte, rozhraní ‚enpos3‘ je v provozu. Nastavíme jej tedy jako cílové rozhraní a spustíme zde příkaz tcpdump. Když máte pocit, že jste zachytili dostatek paketů, stačí stisknout ‚Ctrl+c‘ pro dokončení zachytávání paketů. Příkaz je:
$ sudo tcpdump -s 65535 -i enp0s3 -w my_remote_capture.pcap
Ve výše uvedeném příkazu jsme s Tcpdump použili následující možnosti:
- -s:Starší verze Tcpdump omezují pakety na 68 nebo 96 bajtů. Možnost „-s“ se používá pro zachycení paketů s plnou délkou.
- -i:Vybere rozhraní pro poslech.
- -w:Uloží zachycené nezpracované pakety do souboru namísto jejich zobrazení na terminálu.
Zachycený provoz je uložen v souboru s názvem 'my_remote_capture.pcap'. Nyní tento soubor přeneseme na hostitele 1 pro analýzu pomocí Wireshark. Pro přenos souboru používáme příkaz 'scp'. Opět jsme již nakonfigurovali 'scp', aby fungoval mezi dvěma stroji. Syntaxe příkazu je uvedena níže:
$ scp my_remote_capture.pcap 'username'@'IP_of_remote_machine':
Zde 'username' je jméno uživatele na hostiteli 1 a 'IP_of_remote_machine' je také adresa IP hostitele 1.
Na místním počítači (hostitel 1) zkontrolujte, zda jste soubor obdrželi. V našem případě jsme soubor úspěšně obdrželi a otevřeme jej pomocí Wireshark, jak je uvedeno níže:
Zde je snímek obrazovky souboru Capture z hostitele 1:
Analýza zachyceného souboru
Použijme na výše uvedený soubor filtr zobrazení. Protože jsme byli připojeni k hostiteli 2 pomocí SSH, měly by tam být nějaké stopy protokolu SSH. Do textového pole odpovídajícímu filtru zobrazení zadejte „ssh“:
Na obrázku výše vidíme pouze pakety s protokolem 'SSH'.
Zavíráme…
Blahopřejeme, konečně jsme ukázali, jak můžeme provádět vzdálené zachycení na počítači. Viděli jsme, jak můžeme kombinovat Tcpdump s Wireshark.