Začněte skutečně ovládat PC. Odposlouchávejte domácí síť

Chcete skutečně ovládat PC? Programujte ho, pochopte základy textových konzolí a ponořte se do tajů síťové komunikace a odposlechů, neboť právě internetu patří budoucnost.

Na sklonku loňského roku vyšlo najevo, že je reklamní systém v chytrých televizorech LG připravený k tomu, aby odesílal na server společnosti různé zajímavé informace o zařízení – třeba názvy souborů na připojených médiích (typicky USB disky). Systém tehdy nicméně ještě nebyl plně funkční, čili televizor sice informaci odesílal, ale na adresu, na které nikdo neposlouchal.

Dokladem této činnosti televizoru byl výstup z programu Wireshark, který slouží k monitorování provozu na síťových kartách počítače, případně na jiných síťových prvcích, které umějí údaje o svém provozu přeposílat na jiný počítač.

751829712
Odhalený pokus o odeslání názvu souborů na USB skrze chytrý televizor na server výrobce. Výstup Wiresharku může být pro začátečníka matoucí, stačí ale použít filtry.

Wireshark po spuštění a výběru síťového zařízení (ethernet, Wi-Fi apod.) vyplní obrazovku seznamem veškeré zaznamenané aktivity na všech internetových protokolech. Aby se v tom člověk vyznal, musí rozumět alespoň elementárním základům komunikace na internetu a pak filtrování.

Kouzlo Wiresharku totiž nespočívá v tom, že na vás vyplivne nepřehledné množství stovek a tisíců přenosů mezi vaším počítačem a zařízeními v síti, ale v tom, že podobný guláš dat můžete filtrovat s pomocí hromady parametrů.

691863463 338876007
Stačí vybrat síťové rozhraní a spustit monitorování – okno programu se zahltí seznamem probíhající komunikace

Po programování počítače a jeho ovládání pomocí textové konzole tedy pokračujeme v našem miniseriálu a podíváme se na to, jak ve Wiresharku provést alespoň základní monitoring a analýzu toho, co vám protéká přes síťovou kartu počítače.

Jak odposlouchávat komunikaci HTTP

Dejme tomu, že chcete ve výstupu vidět pouze HTTP komunikaci mezi počítačem a sítí. Chcete tedy vidět všechny dotazy, které na tomto protokolu provádí spuštěný prohlížeč a jiné programy v počítači.

Do filtrovacího pole stačí zadat formuli:

http

190757657 
Ve Wiresharku jsem nastavil filtr na HTTP komunikaci a v prohlížeči navštívil web Avmania.cz. Nyní mohu přehledně sledovat veškerou komunikaci na daném protokolu mezi prohlížečem a webovým serverem.

Jak odposlouchávat komunikaci FTP

Monitorování HTTP je tedy snadné, co když ale budete chtít pouze vypsat komunikaci, která probíhá na nějakém konkrétním portu TCP? V takovém případě je třeba zadat třeba:

tcp.port == 21

Na portu 21 zpravidla probíhá komunikace protokolu FTP, čili pokud se během spuštěného monitorování pokusíte připojit k nějakému serveru FTP, ve Wiresharku se okamžitě začne vypisovat celá komunikace. Namísto filtru podle portu v tomto případě můžete použít i zkratku ftp.

577407265
V příkazové řádce se přihlašuji k běžnému nešifrovanému serveru FTP, login a heslo tedy letí sítí a Wireshark je může snadno zachytit

Kombinuji, kombinuješ, kombinujeme

Dejme tomu, že budete chtít tyto filtry kombinovat. V takovém případě můžete použít mnoho operátorů – nejčastěji and (&&), or (||) nebo třeba negaci vyjádřenou tradičně vykřičníkem a slovem not.

Pokud tedy budete chtít změť ve Wiresharku omezit pouze na výpis HTTP a FTP komunikace, stačí napsat:

http or ftp, případně http || ftp

102818363
Editor pokročilých filtrů nabízí výběr ze stovek všemožných protokolů v celé šíři referenčního modelu ISO/OSI

Anebo ještě trošku jinak. Co když webový server poslouchá na portu 8000 a vy chcete vyseparovat pouze HTTP komunikaci na tomto portu? Pomůže filtr:

tcp.port == 8000 and http, případně tcp.port == 8000 && http

Negaci by šlo použít třeba takto:

tcp.port == 80 && !http

Případně pro mnohé srozumitelněji:

tcp.port == 80 and not http

Zobrazí se tedy pouze ta komunikace, která protéká na TCP portu 80 ale zároveň se nejedná o komunikaci na protokolu HTTP.

No dobrá, co když vám ale nejde o porty, ale chcete filtrovat IP adresy? Ani to samozřejmě není žádný problém, pokud tedy chcete získat jen seznam jednosměrné komunikace mezi počítačem a třeba IP adresou 173.194.116.23, zadejte:

ip.dst == 173.194.116.23

Případně obecněji pro obousměrnou komunikaci (ať už je daná IP adresa zdroj, či cíl):

ip.addr == 173.194.116.23

SSL

Stále větší množství komunikace protéká šifrovaným spojením SSL typicky na portu 443, můžete ho tedy zobrazit pomocí filtru:

tcp.port == 443

Bez privátního klíče daného serveru nicméně uvidíte jen údaje o zakódované komunikaci, nikoliv obsah třeba vyplněných formulářů. Pomocí aktuální chyby Heartbleed nicméně lze (sic komplikovaně) získat i tyto privátní klíče, a pak byste tedy mohli odposlouchávat i cizí komunikaci.

487990691
Data jsou šifrovaná (HTTPS) a já nemám klíč...

Jak odposlouchávat domácí síť

Jak už jsem napsal výše, do Wiresharku na vašem počítači lze odesílat i údaje o provozu na jiném síťovém zařízení. Toho lze využít pro sledování komunikace jiného počítače v domácí lokální síti. Stačí k tomu jediné – Wi-Fi router, který to umí.

Když jsem tedy zkoumal, co všechno na internet odesílá zapůjčený chytrý televizor od Samsungu, jednoduše jsem jej připojil do domácí Wi-Fi sítě a na Wi-Fi routeru spustil monitoring provozu s přeposíláním komunikace na IP adresu počítače, na kterém byl spuštěný Wireshark. Tuto mocnou funkci zvládnou poměrně elegantně třeba routery od Mikrotiku (systém RouterOS), případně ty kompatibilní s komunitními systémy typu OpenWrt a DD-Wrt (stačí použít Google). Nakonec to často zvládnou i ostatní routery, které umožňují pokročilou a plnohodnotnou správu třeba skrze telnet/SSH a tedy už linuxový terminál.

332273454 912142891
Odposlouchávat komunikaci a přeposílat ji do PC s Wiresharkem umí třeba systém RouterOS dodávaný s routery Mikrotik.

Pokud podobný router nemáte po ruce, můžete pomocí mnoha programů – třeba Connectify – přepnout do režimu hotspotu vlastní počítač a veškerá bezdrátová komunikace pak poteče přímo přes vás.

Jakmile začne Wireshark zachytávat nejen komunikaci mezi hlavním počítačem a internetem, ale také mezi jiným počítačem v lokální síti a internetem, vhod přijde další filtr, který zobrazí pouze komunikaci ze zařízení s lokální IP adresou 192.168.1.3. Pokud by tuto IP adresu měl onen chytrý televizor, jeho jednosměrnou komunikaci zobrazím takto:

ip.src == 192.168.1.3

Takový televizor nicméně bude neustále rekognoskovat terén a bude hledat v lokální síti DLNA zařízení. Pokud tedy budete chtít vyfiltrovat jen přehlednou HTTP komunikaci, opět se nabízí třeba:

ip.src == 192.168.1.3 and http

Nebo obecněji:

ip.addr == 192.168.1.3 and http

Hledáme hesla a odeslané formuláře

Takto tedy vypadá základní tvorba filtrů. Wireshark jich ve skutečnosti nabízí stovky a v záznamu komunikace tedy s trochou zkušeností najdete cokoliv. Filtrovat můžete nejen protokoly TCP/IP, ale prakticky všechny od těch nízkoúrovňových až po ty nejvyšší, které jsou často postavené právě nad protokolem HTTP.

Většina zajímavé komunikace nicméně běží na HTTP, takže si pojďme ukázat, jak ve výpisu zobrazit pouze tu komunikaci, při které dochází k odeslání nějakého formuláře v nešifrované podobě – tedy bez HTTPS spojení.

Podobného kousku docílíte filtrem:

http.request.method == POST

Pak už stačí u zjištěné komunikace rozevřít blok s údaji a dozvíte se přesný textový řetězec, který webový prohlížeč odeslal na cílový server. Tímto způsobem, ať už ve Wiresharku, nebo jiném zachytávači paketů, pak může údaj z formuláře zachytit každý router po cestě mezi vámi a cílem. Právě z tohoto důvodu je naprosto klíčové, aby se všechny důležité formuláře odesílaly pomocí standardního šifrovaného spojení (HTTPS), ačkoliv nedávné zveřejnění chyby Heartbleed jasně ukázalo, že i tato technika může mít své mezery.

771903536
Velké weby by dnes pro přihlašování měly používat výhradně šifrované spojení, u těch maličkých pro pár registrovaných uživatelů to ale zase takové pravidlo není. Pokud tedy nastavím filtr na HTTP dotaz POST a na podobném webu vyplním nějaký přihlašovací formulář, hned se dozvím hodnoty políček z formuláře včetně loginu a hesla jako na obrázku výše.

Všimněte si, že tvorba filtrů se řídí objektovým pravidlem, kdy různé stupně filtru odděluji tečkou. Nejprve jsem tedy filtr omezil na komunikaci skrze protokol HTTP, dále mě zajímá REQUEST, tedy dotaz, a konečně jeho metoda POST.

Wireshark při psaní filtru za každou tečkou zobrazí v našeptávači všechny možnosti, čili i začátečník brzy pozná, co všechno může použít. Pokud ho budou zajímat HTTP dotazy typu GET (tedy ta zbývající drtivá většina), prostě napíše:

http.request.method == GET

Filtr HTTP toho samozřejmě nabízí mnohem více, takže podobným způsobem můžete třeba zobrazit pouze tu komunikaci, která obsahuje nějakou konkrétní sušenku cookie.

Filtr by mohl vypadat takto:

http.cookie contains "userinfo"

Použil jsem nový operátor contains, který se hodí pro případy, kdy chcete zobrazit pouze ty záznamy, ve kterých vybrané pole obsahuje nějakou konkrétní hodnotu.

Nakonec ještě jeden filtr opět z rodiny HTTP. Dejme tomu, že budete chtít zobrazit pouze spojení na konkrétní webovou doménu. Poslouží k tomu filtr http.host:

http.host == "www.zive.cz"

Nyní se ve Wiresharku začne vypisovat pouze HTTP komunikace počítače s webovou doménou www.zive.cz.

540194867
Nyní vidím jen HTTP komunikaci mezi mým počítačem a serverem na doméně www.zive.cz

Fiddler: Když je Wireshark příliš velké sousto

Občas nepotřebujete odposlouchávat celý počítač, případně okolní LAN, ale chcete odposlouchávat jen HTTP komunikaci konkrétního programu na počítači. Tuto práci na Windows může zvládnout program Fiddler.

585171113
Na studium toho, jak komunikují programy na vašem PC, se hodí specializovaný Fiddler

Po spuštění přehledně vypíše seznam HTTP komunikace, přičemž v pravém panelu vždy uvidíte detaily včetně obsahu. Pokud budete chtít sledovat konkrétní program – třeba spuštěný webový prohlížeč, stačí v ovládací liště klepnout na ikonu terčíku a myší označit konkrétní okno programu. Pak se začne vypisovat pouze jeho komunikace.

Fiddler toho ale umí mnohem více a ve spojení s univerzálním Wiresharkem odvede veškerou špinavou práci. S pomocí těchto programů můžete studovat třeba to, co všechno i v klidu odesílá k Wi-Fi připojený telefon, jak probíhá komunikace některých programů (pokud není chráněná SSL) a jakým způsobem se vlastně odposlouchává nešifrovaná (a při krádeži SSL klíčů i šifrovaná) síť. 

Diskuze (29) Další článek: Google si patentoval čočky s integrovanými kamerami

Témata článku: , , , , , , , , , , , , , , , , , , , , , , , ,