A Wireshark egy világszínvonalú csomagelemző, amely Linuxon, Windowson és macOS-en érhető el. Szűrői rugalmasak és kifinomultak, de néha ellentmondásosak. Elmagyarázzuk, hogy milyen „gondokra” kell figyelned.
Tartalomjegyzék
Csomagelemzés Real Bite segítségével
A Wireshark a nyílt forráskódú világ egyik ékköve. Ez egy világszínvonalú szoftvereszköz, amelyet profik és amatőrök egyaránt használnak a hálózati problémák kivizsgálására és diagnosztizálására. A szoftverfejlesztők a kommunikációs rutinok hibáinak pontos meghatározására és jellemzésére használják. A biztonsági kutatók segítségével rögzítik és megszüntetik a rosszindulatú tevékenységeket a hálózaton.
Egy tipikus munkafolyamat a Wireshark Capture módban történő futtatása, így a hálózati forgalmat a számítógép valamelyik hálózati interfészén keresztül rögzíti. A hálózati csomagok valós időben jelennek meg, ahogy rögzítik őket. Azonban az utólagos rögzítés analízisben derül ki a hálózatban zajló események részleteiről.
A rögzített csomagokat nyomkövetésnek nevezzük. Amikor a rögzítés befejeződött, a nyomkövetést csomagonként át lehet lépni. Megvizsgálhatja bármelyik csomagot a legapróbb részletekig, feltérképezheti az eszközök közötti hálózati „beszélgetéseket”, és szűrők használatával bevonhatja (vagy kizárhatja) a csomagokat az elemzésből.
A Wireshark szűrési képességei felülmúlhatatlanok, nagy rugalmassággal és felbontóképességgel rendelkeznek. Vannak olyan finomságok a szintaxisukban, amelyek megkönnyítik a szűrő írását, és olyan eredményt kapnak, amely nem felel meg az elvárásoknak.
Ha nem érti, hogyan működnek a szűrők a Wiresharkban, soha nem fog kiszállni az első sebességfokozatból, és lefojtani a szoftver képességeit.
A Wireshark telepítése
A Wireshark telepítésekor a rendszer megkérdezi, hogy bárki, aki nem root fiókot használ, képes-e rögzíteni a hálózati nyomokat. Nemet mondani erre vonzó ötlet lehet. Lehet, hogy nem szeretné, ha mindenki láthatná, mi történik a hálózaton. Ha azonban a Wiresharkot úgy telepíti, hogy csak a root jogosultsággal rendelkezők használhassák, akkor az összes összetevője emelt szintű jogosultságokkal fog futni.
A Wireshark több mint 2 millió sor bonyolult kódot tartalmaz, és a legalacsonyabb szinten működik együtt a számítógéppel. A legjobb biztonsági gyakorlatok azt tanácsolják, hogy a lehető legkevesebb kód fusson magasabb jogosultságokkal – különösen, ha ilyen alacsony szinten működik.
Sokkal biztonságosabb a Wireshark futtatása normál felhasználói fiókkal. Továbbra is korlátozhatjuk, hogy ki futtathatja a Wiresharkot. Ehhez néhány további beállítási lépésre van szükség, de ez a legbiztonságosabb módja a folytatásnak. A Wireshark adatrögzítési elemei továbbra is magasabb jogosultságokkal fognak futni, de a Wireshark többi része normál folyamatként fut.
Az Ubuntu telepítésének elindításához írja be:
sudo apt-get install wireshark
Fedorán írja be:
sudo dnf install wireshark
Manjaro esetén használja ezt a parancsot:
sudo pacman -Syu wireshark-qt
A telepítés során az alábbi képernyő jelenik meg, amely azt javasolja, hogy ne rootként futtassa a Wiresharkot. Nyomja meg a Tab gombot, hogy a piros kiemelést a „
A következő képernyőn nyomja meg a Tab billentyűt, hogy a piros kiemelést a „
A Wireshark futtatásához a „wireshark” csoport tagjának kell lennie, amely a telepítés során jön létre. Ez lehetővé teszi annak szabályozását, hogy ki futtathatja a Wiresharkot. Aki nem tartozik a „wireshark” csoportba, az nem tudja futtatni a Wiresharkot.
Ha fel szeretné venni magát a „Wireshark” csoportba, használja ezt a parancsot:
sudo usermod -a -G wireshark $USER
Az új csoporttagság életbe lépéséhez kijelentkezhet, majd újra bejelentkezhet, vagy használja ezt a parancsot:
newgrp wireshark
Ha látni szeretné, hogy az új csoport tagja-e, használja a groups parancsot:
groups
Látnia kell a „wireshark”-ot a csoportok listájában.
A Wireshark indítása
A Wiresharkot az alábbi paranccsal indíthatja el. Az és (&) elindítja a Wiresharkot háttérfeladatként, ami azt jelenti, hogy folytathatja a terminálablak használatát. Még a terminál ablakát is bezárhatja, és a Wireshark tovább fut.
Írja be a következőket:
Wireshark &
Megjelenik a Wireshark felület. A számítógépben található hálózati interfész eszközök, valamint néhány beépített áleszköz szerepel a listában.
Az interfész melletti hullámos vonal azt jelenti, hogy az élő, és a hálózati forgalom áthalad rajta. A lapos vonal azt jelenti, hogy nincs tevékenység a felületen. A lista legfelső eleme az „enp0s3”, a számítógép vezetékes kapcsolata, és a várakozásoknak megfelelően tevékenységet mutat.
A csomagok rögzítésének megkezdéséhez kattintson a jobb gombbal az „enp0s3” elemre, majd a helyi menüben válassza a „Rögzítés indítása” lehetőséget.
Szűrőket állíthat be a Wireshark által rögzített forgalom csökkentésére. Inkább mindent rögzítünk, és kiszűrünk mindent, amit nem akarunk látni az elemzés során. Így tudjuk, hogy minden, ami történt, a nyomban van. Nem szeretne véletlenül lemaradni egy olyan hálózati eseményről, amely megmagyarázza a rögzítési szűrő miatt vizsgált helyzetet.
Természetesen a nagy forgalmú hálózatok esetében a nyomkövetések gyorsan nagyon nagyokká válhatnak, így ebben a forgatókönyvben van értelme a rögzítéskor történő szűrésnek. Vagy talán csak jobban szereti ezt így.
Vegye figyelembe, hogy a szintaxis a rögzítési szűrők kissé eltérnek mint a kijelzőknél.
A fenti képen látható kiemelt ikonok a következőket jelzik balról jobbra:
Cápauszony: Ha ez kék, rákattintva elindul a csomagrögzítés. Ha a Wireshark csomagokat rögzít, ez az ikon szürke lesz.
Négyzet: Ha ez piros, a rákattintás leállítja a futó csomagrögzítést. Ha a Wireshark nem rögzít csomagokat, ez az ikon szürke lesz.
Cápauszony környíl: Ha ez zöld, a rákattintás leállítja az éppen futó nyomkövetést. Ez lehetőséget ad a rögzített csomagok mentésére vagy eldobására, valamint a nyomkövetés újraindítására. Ha a Wireshark nem rögzít csomagokat, ez az ikon szürke lesz.
A nyom elemzése
A piros négyzet ikonra kattintva leállítja az adatrögzítést, így elemezheti a nyomkövetésben rögzített csomagokat. A csomagok időrendben kerülnek bemutatásra, és a csomag protokollja szerint színkódolva vannak. A kiemelt csomag részletei a Wireshark felület két alsó ablaktáblájában jelennek meg.
A nyomkövetés egyszerűbb beolvasásának egyszerű módja, ha a Wireshark értelmes neveket ad a csomagok forrás- és cél IP-címéhez. Ehhez kattintson a Nézet > Névfelbontás elemre, és válassza a „Hálózati címek feloldása” lehetőséget.
A Wireshark megpróbálja feloldani az egyes csomagokat küldő és fogadó eszközök nevét. Nem fog tudni minden eszközt azonosítani, de azok, amelyekre képes, segítenek a nyomkövetés kiolvasásában.
A kijelző balra görgetése több oszlopot jelenít meg a jobb oldalon. Az információs oszlopban minden olyan információ látható, amelyet a Wireshark észlel a csomagból. Az alábbi példában néhány ping kérést és választ látunk.
Alapértelmezés szerint a Wireshark az összes csomagot abban a sorrendben jeleníti meg, amelyben nyomon követték őket. Sok eszköz egyszerre küld oda-vissza csomagokat. Ez azt jelenti, hogy két eszköz közötti egyetlen beszélgetés során valószínűleg másoktól származó csomagok vannak átlapolva.
Egyetlen beszélgetés vizsgálatához protokollal elkülönítheti azt. Az egyes csomagok protokollja a protokoll oszlopban látható. A legtöbb látható protokoll a TCP/IP családhoz tartozik. Megadhatja a pontos protokollt, vagy használhatja az Ethernetet egyfajta gyűjtőhelyként.
Kattintson a jobb gombbal a vizsgálni kívánt sorozat bármelyik csomagjára, majd kattintson a Beszélgetésszűrő > Ethernet elemre. Az alábbi példában kiválasztottunk egy ping kérési csomagot.
A csomagok sorozata a közöttük lévők nélkül jelenik meg, mivel a Wireshark automatikusan generált egy szűrőt ehhez. Megjelenik a szűrősávban és zöld színnel kiemelve, ami azt jelzi, hogy a szűrő szintaxisa helyes.
A szűrő törléséhez kattintson az „X” gombra a szűrősávon.
Saját szűrők létrehozása
Tegyünk egy egyszerű szűrőt a szűrősávba:
ip.addr == 192.168.4.20
Ez kiválasztja az összes olyan csomagot, amelyet a 192.168.4.20 IP-című eszköz küldött vagy fogadott. Jegyezze meg a kettős egyenlőségjeleket (==) szóköz nélkül.
Az eszköz (a forrás) által küldött csomagok megtekintéséhez használhatja az ip.src fájlt; az eszközhöz (a célhoz) érkezett csomagok megtekintéséhez használja az ip.dst fájlt, az alábbiak szerint:
ip.dst == 192.168.4.20 && ip.src == 192.168.4.28
Vegye figyelembe a kettős „és” jel (&&) használatát a logikai „és” jelzésére. Ez a szűrő a 192.168.4.28 címről 192.168.4.20 címre érkezett csomagokat keresi.
A Wireshark szűrőkben újoncok gyakran azt gondolják, hogy egy ilyen szűrő minden csomagot rögzít két IP-cím között, de ez nem így van.
Valójában kiszűri az összes csomagot a 192.168.4.20 IP-címre vagy onnan, függetlenül attól, hogy honnan érkeztek vagy hová küldték. Ugyanezt teszi a 192.168.4.28 IP-címről érkező összes csomaggal. Egyszerűbben fogalmazva, kiszűri az összes forgalmat bármelyik IP-címre vagy onnan.
Más protokollokon is kereshet tevékenységet. Például beírhatja ezt a szűrőt a HTTP-kérések kereséséhez:
http.request
Az eszközről érkező vagy arra küldött csomagok kizárásához használjon felkiáltójelet (!), és tegye zárójelbe a szűrőt. [()]:
!(ip.addr == 192.168.4.14)
Ez a szűrő kizárja a 192.168.4.14 címre vagy onnan küldött összes csomagot.
Ez ellentétes, mert a szűrő tartalmazza az egyenlőség operátort (==). Azt várhatta, hogy ezt a szűrőt a következőképpen írja be:
ip.addr !=192.168.4.14
Ez azonban nem fog működni.
Protokoll alapján is kereshet karakterláncokat a csomagokon belül. Ez a szűrő ezt keresi Transmission Control Protocol (TCP) csomagok, amelyek a „youtube” karakterláncot tartalmazzák:
tcp contains youtube
Az újraküldést kereső szűrő hasznos lehet annak ellenőrzésére, hogy van-e kapcsolati probléma. Az újraküldések olyan csomagok, amelyeket újraküldenek, mert az első átvitel során megsérültek vagy elvesztek. A túl sok újraküldés lassú kapcsolatot vagy lassan reagáló eszközt jelez.
Írja be a következőket:
tcp.analysis.retransmission
Születés, élet, halál és titkosítás
Két eszköz közötti hálózati kapcsolat akkor jön létre, amikor az egyik kapcsolatba lép a másikkal, és SYN (szinkronizálás) csomagot küld. A fogadó eszköz ezután egy ACK (nyugtázás) csomagot küld. SYN csomag küldésével jelzi, hogy elfogadja-e a kapcsolatot.
A SYN és az ACK valójában két zászló ugyanabban a csomagban. Az eredeti eszköz ACK küldésével nyugtázza a SYN-t, majd az eszközök hálózati kapcsolatot létesítenek.
Ezt háromirányú kézfogásnak hívják:
A -> SYN -> B A ACK -> B
Az alábbi képernyőképen valaki a „nostromo.local” számítógépen a Secure Shell (SSH) csatlakozik a számítógéphez „ubuntu20-04.local”. A háromirányú kézfogás a két számítógép közötti kommunikáció első része. Vegye figyelembe, hogy a SYN csomagokat tartalmazó két sor sötétszürke színkóddal van ellátva.
A kijelző görgetése a jobb oldali oszlopok megjelenítéséhez megjeleníti a SYN, SYN/ACK és ACK kézfogási csomagokat.
Észreveheti, hogy a két számítógép közötti csomagcsere váltakozik a TCP és az SSH protokollok között. Az adatcsomagokat a titkosított SSH-kapcsolaton keresztül továbbítják, de az üzenetcsomagokat (például az ACK-t) TCP-n keresztül küldik. Hamarosan kiszűrjük a TCP-csomagokat.
Ha a hálózati kapcsolatra már nincs szükség, a rendszer eldobja. A hálózati kapcsolat megszakítására szolgáló csomagsorozat négyirányú kézfogás.
Az egyik oldal FIN (finish) csomagot küld. A másik vég ACK-t küld a FIN nyugtázására, majd szintén FIN-t küld, jelezve, hogy egyetért a kapcsolat megszakításával. Az első oldal ACK-t küld az éppen kapott FIN-re, majd a hálózati kapcsolat megszakad.
Így néz ki a négyirányú kézfogás:
A -> FIN -> B A ACK -> B
Időnként az eredeti FIN egy ACK-csomagon található, amelyet egyébként is el akartak küldeni, amint az alább látható:
A -> FIN, ACK -> B A ACK -> B
Ebben a példában ez történik.
Ha csak az SSH-forgalmat szeretnénk látni ehhez a beszélgetéshez, használhatunk egy szűrőt, amely meghatározza az adott protokollt. A következőket írjuk be, hogy megtekinthessük az SSH protokollt használó összes forgalmat a távoli számítógép felé és onnan:
ip.addr == 192.168.4.25 && ssh
Ez mindent kiszűr, kivéve a 192.168.4.25 SSH-forgalmat.
Egyéb hasznos szűrősablonok
Amikor beír egy szűrőt a szűrősávba, az piros marad mindaddig, amíg a szűrő szintaktikailag helyes lesz. Zöldre vált, ha a szűrő megfelelő és kész.
Ha beír egy protokollt, például tcp, ip, udp vagy shh, majd egy pontot (.) követ, megjelenik egy menü. Felsorolja azokat a legutóbbi szűrőket, amelyek ezt a protokollt tartalmazták, és minden olyan mezőt, amely az adott protokollnév szűrőiben használható.
Például az ip esetén használhatja az ip.addr, ip.checksum, ip.src, ip.dst, ip.id, ip.host és több tucat másikat.
Használja a következő szűrősablonokat a szűrők alapjául:
Csak a HTTP protokoll csomagok megjelenítéséhez: http
Csak a DNS protokoll csomagok megjelenítéséhez: dns
Csak a 4000-es TCP-csomagok megjelenítéséhez forrás- vagy célportként: tcp.port==4000
Az összes TCP visszaállítási csomag megjelenítéséhez: http.request
Az ARP, ICMP és DNS csomagok kiszűrése: !(arp vagy icmp vagy dns)
Az összes újraküldés megjelenítése egy nyomkövetésben: tcp.analysis.retransmission
Jelzők (például SYN vagy FIN) szűréséhez: Be kell állítania egy összehasonlítási értéket ezekhez: 1 azt jelenti, hogy a jelző be van állítva, a 0 pedig azt, hogy nem. Tehát egy példa a következő lenne: tcp.flags.syn == 1.
A kijelzőszűrők néhány vezérelvével és alapvető felhasználási módjaival foglalkoztunk itt, de természetesen van még sok más is.
Ha szeretné értékelni a Wireshark szűrők teljes hatókörét és teljesítményét, feltétlenül nézze meg online hivatkozása.