1
|
Zadanie na projekt WAN Technológie. Predmet plný prekvapení, kde nám bolo na prvej prednáške oznámené, že je priamo nadväzuje na predmet Počítačové systémy a siete II, ktorý väčšina z nás Informatikou nemala. Nuž smola, ale šlo sa ďalej s tým, že budeme musieť trochu zabrať.
K programu je priložená dokumentácie, tak ju tu nebudem prepisovať, ale v podstate išlo o dvojportový smerovač s implementovanými filtrami a protokolom na dynamickú výmenu routovacích tabuliek. Pripojili sa 4 počítače, dva robili router a dva klientov. Program obsahuje jednu chybu a ta je v tom, že packet, ktorý je smerovaný priamo jemu nezahadzuje, ale vyšle ARP request, čo spôsobí, že počítače s windowsom vypíšu chybu a je možné, že táto verzia sa ešte snaží preposielať broadcast. Sú to ale ľahko opraviteľné drobnosti, na opravenie ktorých som však nemal dôvod.
Apropo, ARP trieda by mala byť nezávislá na tomto projekte, čiže je ju možné využiť kdekoľvek. Kompilácie je opäť jednoduché make, binárnu verziu som skompiloval staticky.
router.zip (32 KB)
router-bin.zip (446 KB)
router.pdf (68 KB)
|
Tento script je takého diskutabilného rázu, svojho času som objavoval aj temnejšiu stránku sieti a vtedy som ho napísal. Nieje to nič zložité ani výnimočné, je to len taký malý pokus, mierne hranie sa s ARP cache.
O čo ide?
Pomocou tohoto scriptu je možné za istých podmienok (vo veľa prípadoch) odchytávať konkrétnu komunikáciu na sieti. Podotýkam, jedná sa iba o lokálnu sieť (LAN). Odchytenú komunikáciu je možné sledovať, čím sa dajú zistiť okrem iného aj heslá pri nekryptovaných spojeniach. Miernou úpravou scriptu si môžete vyskúšať aj spôsob útoku Man-it-the-middle (MITM), ktorý patrí medzi tie najnebezpečnejšie a môže sa Vám kľudne podariť sledovať cudzie kryptované spojenie.
Ako to funguje?
Každý počítač v sieti, ktorý sa chce pripojiť do siete internet, odosiela svoju požiadavku a následne aj celú komunikáciu cez Gateway (bránu), ktorej IP adresu má u seba nastavenú, či už manuálne, alebo automaticky. Keďže pozná iba jej IP adresu a nie MAC adresu, vyšle ARP request, kde si vypýta MAC adresu k danej IP adrese. To isté robí aj brána, keď chce poslať odpoveď. Nakoľko túto informáciu potrebuje vedieť pre každý packet, ktorý odošle, je nemysliteľné, aby sa počítače zakaždým pýtali na svoje MAC adresy a preto existuje takzvaná ARP cache. Po zistení MAC adresy prislúchajúcej k IP sa táto informácia uloží do tejto cache a tento záznam ostáva platný určitú dobu (spravidla okolo minúty). Protokol ARP je natoľko jednoduchý, že si nepamätá, či o nejakú MAC adresu požiadal, alebo nie, preto prípadnú odpoveď, aj keď o ňu nepožiadal, kľudne spracuje a tým zmení ARP cache. A teraz si predstavte situáciu, v ktorej by sa k IP adrese brány, priradila Vaša MAC adresa. Znamenalo by to, že všetko čo klient pošle na bránu, pošle v skutočnosti Vám a ani o tom nebude vedieť. Aby to ale bolo dokonalé, tak si brána musí myslieť, že vaša MAC adresa patrí IP adrese obeti. Keď vieme ako zmeniť ARP cache u obeti, tak to môžeme tak isto spraviť aj pri bráne, proste je pošleme nevyžiadaný ARP response, ktorý spôsobí prepis ARP cache.V tomto momente už ide celá komunikácia cez Váš počítač a môžete sledovať čo sa deje, alebo za istých podmienok aj upravovať packety. Jediná na čo treba dávať pozor je to, aby nevypršal čas životnosti záznamu v ARP cache. To zaručíme jednoducho tak, že budeme nevyžiadaný ARP response packet posielať v pravidelných intervaloch nižších ako je životnosť záznamu v ARP cache (spravila pol minúty stačí). Nieje to nič nové, len aplikovanie toho, čo všetci už dávno vedia.
Dá sa proti tomu chrániť?
Áno a je to veľmi jednoduché. Stačí začať používať statickú ARP tabuľku, v ktorej budú napevno nastavené IP adresy patriace ku MAC adresám. Táto tabuľka má vyššiu prioritu ako ARP cache a preto sa bude používať záznam z tejto tabuľky, ak v nej existuje. Ako bonus získate nižšie teoretické zaťaženie siete, nakoľko nebude potrebné odosielať akékoľvek ARP packety (nečakajte však, že to bude nejak poznať).
Script na odosielanie ARP packetov využíva program nemesis, ktorý musíte mať nainštalovaný. Kľudne ho však môžete nahradiť za niečim svojim. Program prijíma 4 parametre z príkazového riadku. Prvé dva sú povinné a to IP adresa brány a IP adresa obete. Nasleduje zariadenie (ak sa nezadá, dosadí sa automaticky eth0, aj keby neexistovalo) a interval v ktorom sa má opakovať otrávenie ARP cache, štandardne je nastavené na 10 sekúnd. POZOR, nepoužívať bez vedomia ostatných, aby ste tak nenarúšali ich súkromie. Script je možné použiť iba na vzdelávacie účeli, ale ako pomôcku pri zabezpečovaní lokálnej siete (LAN).
|
Polsemestrálny projekt na predmet Počítačové systémy a siete. Úlohou bolo naprogramovať jednoduchý sieťový analyzátor, niečo na spôsob Wireshark (niekdajší Ethereal). Také jednoduché na tom však bolo jedine bodové ohodnotenie (maximálne 16 bodov aj zo všetkými bonusmi, ak si dobre spomínam). Rozdiel oproti Wiresharku bol v tom, že packety sa spracovávali offline. Inak povedané, načítal sa dump súbor, práve z Wiresharku. Programátorsky tam v podstate nebol rozdiel, nakoľko by sa len použila iná funkcia na otvorenie spojenia. Program mal za úlohu vypísať a preparsovať packety. Každý packet mal byť rozpísaný aj s názvom protokolu a pri významnejších protokoloch aj podrobnejšie rozobratý. Okrem toho to malo obsahovať filter na mac adresy, ako zdrojové, tak aj cieľové a ako čerešnička na torte bol výpis TCP/IP spojení (na ktorý sa väčšina ľudí vykašlala, lebo im to nestálo za tú námahu). Mali sa nájsť všetky začínajúce TCP/IP spojenia (identifikovanie Three-way handshaking) a následne sa mal vypísať ich priebeh až po ich ukončenie, ak sa tam nachádzalo. V tom období som práve skončil v jednej práci a inú som ešte nemal, tak som mal čas na toto. Dá sa povedať, že viac ako sieťarina ma zdržiavalo GTK++ s ktorým som sa ešte stále len oboznamoval. Ja som okrem klasických funkcií dorobil filter na jednotlivé pacekty. Filter je dosť rozsiahli, ale nie mojou zásluhou, ja som len využil to, čo mi ponúkal pcap. Filter má teda jeho syntax a tá je dosť rozsiahla a dajú sa nastavovať aj pokročilejšie filter (možnosti filtrovania, ktoré poskytuje Wireshark sú robené práve skrze tento filter).
Na sieťovú komunikáciu som použil knižnicu libpcap, ktorá nám bola odporúčaná. Rozhranie GTK++ som si zvolil preto, lebo je multiplatformové a odovzdávať sme to museli na Windowse (vo Visual Studiu som to naozaj nemienil programovať). Prikladám zdrojové kódy pod GNU/Linux (kompilácia make) aj pod Windows s projektom vo Visual Studiu. Windows verzia nemusí byť úplne aktuálna, len som ju niekde náhodou vyhrabal. Okrem zdrojákov prikladám aj binárne súbory pre GNU/Linux, knižnica pcap je zakompilovaná staticky a GTK++ ostalo dynamicky a binárne súbory pre Windows, balík je väčší pretože obsahuje pcap aj celé GTK++. Ďalšie podrobnosti o projekte nájdete v priloženej dokumentácii.
analyzator.zip (6.7 MB)
analyzator-bin.zip (503 KB)
analyzator-win-bin.zip (4.2 MB)
1