}w !"#$%&'()+,-./012345
M ASARYKOVA UNIVERZITA FAKULTA INFORMATIKY
Zvýšení bezpeˇcnosti malých smˇerovaˇcu˚ a ADSL modemu˚ D IPLOMOVÁ PRÁCE
Jan Barienˇcík
Brno, podzim 2010
Prohlášení Prohlašuji, že tato diplomová práce je mým puvodním ˚ autorským dílem, které jsem vypracoval samostatnˇe. Všechny zdroje, prameny a literaturu, které jsem pˇri vypracování používal nebo z nich cˇ erpal, v práci rˇ ádnˇe cituji s uvedením úplného odkazu na pˇríslušný zdroj.
ˇ Vedoucí práce: Ing. Pavel Celeda, Ph.D. ii
Podˇekování ˇ Dˇekuji Ing. Pavlu Celedovi, Ph.D. za jeho odborné vedení práce, cenné rady a zkušenosti, které mi pˇredal.
iii
Shrnutí Tato práce pojednává o HW a SW architektuˇre malých smˇerovaˇcu˚ a ADSL modemu. ˚ Analyzuje bezpeˇcnost tˇechto zaˇrízení a dokumentuje souˇcasný stav jejich zabezpeˇcení. Praktickým výstupem práce je realizace systému pro zvýšení bezpeˇcnosti a vzdálené monitorování malých smˇerovaˇcu. ˚
iv
Klíˇcová slova OpenWrt, libpcap-rpcap, RPCAPd, Snort, Infosvr, NetFlow, syslog, útok, smˇerovaˇc, detekce, sledování sítˇe
v
Obsah 1 2
3
4
5
Úvod . . . . . . . . . . . . . . . . . . . . . . Architektura malých smˇerovaˇcu˚ . . . . . . 2.1 Technické vybavení . . . . . . . . . . . 2.1.1 Organizace pamˇeti . . . . . . . 2.2 Programové vybavení . . . . . . . . . 2.2.1 Operaˇcní systém VxWorks . . . 2.2.2 Operaˇcní systém GNU/Linux . 2.2.3 Zavadˇecˇ systému . . . . . . . . 2.2.4 Uživatelské aplikace . . . . . . 2.2.5 Systém souboru˚ . . . . . . . . . Analýza Asus WL-500g Premium . . . . . 3.1 Popis zaˇrízení . . . . . . . . . . . . . . 3.1.1 Technické vybavení . . . . . . . 3.1.2 Programové vybavení . . . . . 3.1.3 Princip konfigurace zaˇrízení . 3.2 Bezpeˇcnostní analýza firmware . . . . 3.2.1 Použité nástroje . . . . . . . . . 3.2.2 Sdílení souboru˚ . . . . . . . . . 3.2.3 Universal Plug and Play . . . . 3.2.4 DNS server . . . . . . . . . . . 3.2.5 Webové rozhraní . . . . . . . . 3.3 Pˇrehled nalezených zranitelností . . . Bezpeˇcnostní zranitelnost v Infosvr . . . . 4.1 Analýza Device Discovery . . . . . . . 4.2 Analýza Download Master . . . . . . 4.3 Démon Infosvr . . . . . . . . . . . . . . 4.4 Vývoj exploitu . . . . . . . . . . . . . . 4.4.1 Použítí . . . . . . . . . . . . . . 4.4.2 Ukázka výstupu . . . . . . . . 4.4.3 Omezení . . . . . . . . . . . . . 4.5 Analýza zbývajících nástroju˚ . . . . . Návrh systému pro sledování sítˇe . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3 5 6 7 7 8 8 8 9 9 11 11 14 14 16 17 17 18 19 20 21 22 23 23 24 25 28 28 29 30 30 32 1
5.1 5.2 5.3
Motivace . . . . . . . . . . . . . . . . . Požadavky na systém . . . . . . . . . . Výbˇer distribuce . . . . . . . . . . . . . 5.3.1 Dodávaný systém . . . . . . . . 5.3.2 Oleguv ˚ firmware . . . . . . . . 5.3.3 OpenWrt . . . . . . . . . . . . . 5.4 Výbˇer nástroju˚ . . . . . . . . . . . . . . 5.4.1 Paketové analýza . . . . . . . . 5.4.2 Vzdálené zachytávání paketu˚ . 5.4.3 Analýza datových toku˚ . . . . 5.4.4 Systémové logy . . . . . . . . . 5.4.5 Hloubková paketová analýza . 5.5 Shrnutí . . . . . . . . . . . . . . . . . . 6 Realizace navrženého systému . . . . . . . 6.1 Úvod do kompilace OpenWrt . . . . . 6.2 Vytvoˇrení nového balíˇcku . . . . . . . 6.2.1 Balíˇcek libpcap-rpcap . . . . . 6.3 Instalace systému . . . . . . . . . . . . 6.4 Ovˇerˇ ení funkˇcnosti . . . . . . . . . . . 6.4.1 Tcpdump . . . . . . . . . . . . . 6.4.2 RPCAPd . . . . . . . . . . . . . 6.4.3 nProbe . . . . . . . . . . . . . . 6.4.4 Snort . . . . . . . . . . . . . . . 7 Závˇer . . . . . . . . . . . . . . . . . . . . . . Literatura . . . . . . . . . . . . . . . . . . . . . . A Obsah CD . . . . . . . . . . . . . . . . . . . B Pakety z komunikace nástroju˚ . . . . . . . B.1 Device Discovery – Výzva . . . . . . . B.2 Device Discovery – Odpovˇed’ . . . . . B.3 Download Master – pˇríkaz ke spuštˇení C Datové struktury Infosvr . . . . . . . . . . D Makefile pro libpcap-rpcap . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
32 33 34 34 34 35 35 35 36 37 38 38 39 40 41 42 44 45 46 46 47 47 48 49 52 53 54 54 55 56 57 59
2
Kapitola 1
Úvod Rozšiˇrování celosvˇetové poˇcítaˇcové sítˇe Internet je doprovázeno zvyšujícím se poˇctem pˇripojených aktivních prvku. ˚ V dnešní dobˇe není nic neobvyklého se setkat s nˇekolika takovými zaˇrízení i v malých domácích sítích obsluhovaných bˇežnými uživateli. Pro pˇripojení místní sítˇe k Internetu se používají hlavnˇe ADSL (Asymetric Digital Subscriber Line) modemy a malé smˇerovaˇce. Jedná se o složitˇejší aktivní prvky poskytující i další služby. Výrobci aktivních prvku˚ se stále snaží pˇridávat nové funkce, cˇ ímž zvyšují pravdˇepodobnost zanesení dalších chyb a složitost tˇechto puvodnˇ ˚ e jednoúˇcelových zaˇrízení. Zabezpeˇcení místní poˇcítaˇcové sítˇe je zcela závislé na bezpeˇcnosti použitých aktivních prvku, ˚ a tedy na kvalitˇe programového vybavení dodávaného výrobcem. Jedním z cílu˚ této práce je prozkoumat souˇcasný stav programového vybavení malých smˇerovaˇcu˚ a ADSL modemu˚ za úˇcelem identifikace zranitelných míst, které jsou potenciálnˇe napadnutelné útoˇcníkem nebo škodlivými programy. Práce je motivována nedávným objevem nových vzdálenˇe rˇ ízených škodlivých programu, ˚ takzvaných botu, ˚ napadajících právˇe tato nezabezpeˇcená zaˇrízení pˇres poˇcítaˇcovou sít. Boti naslouchají pˇríkazum ˚ rˇ ídícího uzlu a dohromady vytváˇrí obrovskou sít’ oznaˇcovanou jako botnet. Útoˇcník muže ˚ sít’ používat napˇríklad k rozesílání nevyžádané pošty nebo provádˇení distribuovaných útoku˚ na vybrané sít’ové servery. Sítˇe botnet se ve svˇetˇe poˇcítaˇcové bezpeˇcnosti objevují už delší dobu, ale doposud využívali výhradnˇe osobní poˇcítaˇce s operaˇcním systémem Windows. Na rozdíl od osobních poˇcítaˇcu, ˚ malá zaˇrízení nejsou na škodlivé programy pˇripravena. V systému neexistují potˇrebné nástroje pro detekci útoku˚ a sledování ˇ sít’ové komunikace. Cást práce je proto zamˇerˇ ena na návrh a realizaci systému, který by takové nástroje poskytoval. První kapitola se zabývá souˇcasnˇe používanou architekturou ADSL modemu˚ a malých smˇerovaˇcu. ˚ Je rozdˇelena na technické a programové vybaˇ vení. Cást o technickém vybavení popisuje funkci osazených integrovaných ˇ obvodu˚ a používané typy pamˇetí. Cást o programovém vybavení pˇribližuje používané operaˇcní systémy, zavadˇecˇ e a souborové systémy. 3
1. Ú VOD Druhá kapitola je vˇenována analýze vybraného malého sít’ového smˇerovaˇce WL-500g Premium od firmy Asus. V kapitole je produkt dukladnˇ ˚ e popsán a následnˇe podroben bezpeˇcnostní analýze. Kapitola a potažmo celá práce se zamˇerˇ uje hlavnˇe na uvedené zaˇrízení, ale popsané metody analýzy a protiopatˇrení jsou obecnˇe použitelné na libovolné ADSL modemy a malé smˇerovaˇce založené na operaˇcním systému GNU/Linux. Tˇretí kapitola popisuje novˇe odhalenou zranitelnost v programovém vybavení zkoumaného malého smˇerovaˇce, která umožnuje ˇ spustit vzdálenˇe libovolný pˇríkaz bez znalosti pˇrístupového hesla. Souˇcástí kapitoly je také popis vývoje a použití nástroje Asusutility, který popsaný bezpeˇcnostní problém prakticky demonstruje. Poslední dvˇe kapitoly jsou zamˇerˇ eny na návrh a pˇrípravu nového firmware pro malý smˇerovaˇc WL-500gP, jehož cílem je zvýšení bezpeˇcnosti a poskytnutí nástroju˚ pro monitorování cˇ innosti smˇerovaˇce. Podle výsledku˚ pˇredchozích analýz a získaných zkušeností jsou nejprve stanoveny klíˇcové požadavky. Následuje pruzkum ˚ existujících firmware a výbˇer vhodných nástroju˚ z oblastí sít’ové bezpeˇcnosti. Po návrhu systému se práce vˇenuje pˇridávání nových programu˚ do vybrané distribuce, kompilací výsledného obrazu a jeho nasazení. Závˇerem je funkˇcnost navrženého rˇ ešení odzkoušena a zhodnocena.
4
Kapitola 2
Architektura malých smˇerovaˇcu˚ Sít’ový smˇerovaˇc je obecnˇe zaˇrízení, které na základˇe hlaviˇcky paketu a smˇerovací tabulky pˇreposílá paket pˇres odpovídající sít’ové rozhraní, aby se dostal ke svému adresátovi. Malé sít’ové smˇerovaˇce kombinují nˇekolik funkcí do jednoho zaˇrízení. Kromˇe bˇežného smˇerování implementují napˇríklad pˇreklad sít’ových adres, blokování nežádoucí komunikace, službu pro pˇreklad doménových jmen na IP adresy, službu pro pˇridˇelování IP adres poˇcítaˇcum ˚ v místní síti a mnoho dalších. Bývají vybaveny jedním WAN (Wide Area Network) portem pro pˇripojení smˇerovaˇce do sítˇe poskytovatele internetových služeb a nˇekolika LAN (Local Area Network) porty pro pˇripojení poˇcítaˇcu˚ do místní sítˇe. Malý smˇerovaˇc muže ˚ navíc obsahovat Wifi modul nebo integrovaný ADSL modem. V pˇrípadˇe malého smˇerovaˇce s integrovaným ADSL modemem je WAN port nahrazen konektorem RJ-11 pro pˇripojení modemu k digitální telefonní lince. Wifi modul slouží k rozšíˇrení místní sítˇe o bezdrátovou sít’. Multimediální malé smˇerovaˇce pˇridávají USB rozhraní otevírající další smˇery využití zaˇrízení. Mohou sloužit jako sítové úložištˇe, tiskový server nebo sít’ová web-kamera.
PDA
Notebook Internet
ADSL/Cable modem
tiskárna WIFI
WAN
USB
LAN
pevný disk webkamera
stolní počítač
Obrázek 2.1: Možnosti zapojení malého multimediálního smˇerovaˇce 5
ˇU ˇ ˚ 2. A RCHITEKTURA MALÝCH SM EROVA C
2.1
Technické vybavení
Malé smˇerovaˇce jsou jednodeskové poˇcítaˇce. Všechny souˇcásti vˇcetnˇe konektoru˚ jsou osazené na jedné základní desce. Využívají se hlavnˇe integrované obvody implementující urˇcitou funkcionalitu na jednom cˇ ipu, cˇ ímž se minimalizuje složitost, velikost a energetická spotˇreba celé základní desky.
Flash
2-32 MiB
Síťový procesor
802.11 rádio
Ethernet
WI-FI ANT
USB
RAM
16-128 MiB
Ethernet
PHY
Switch
WAN
4x LAN
Obrázek 2.2: Blokové schéma malého smˇerovaˇce Hlavním integrovaným obvodem na základní desce je sít’ový procesor oznaˇcovaný nˇekdy také zkratkou SoC (System on a Chip). Obvod obsahuje vlastní mikroprocesor, ruzné ˚ rˇ adiˇce, vnitˇrní sbˇernici a rozhraní pro komunikaci s externími periferiemi. Mikroprocesor bývá nejˇcastˇeji 32 bitový procesor založený na MIPS nebo ARM architektuˇre. Každé integrované sít’ové rozhraní malého smˇerovaˇce má uvnitˇr sít’ového procesoru vlastní MAC (Medium Access Controller) implementující ˇ adresaci a pˇrístup do komunikaˇcního kanálu. Radiˇ ce MAC jsou napojeny pˇres MII (Medium Independent Interface) na další obvody, které zajišt’ují pˇrevod univerzálních signálu˚ na fyzické. Obvodem muže ˚ být jednoduchý jednoportový ethernetový transceiver, víceportový integrovaný switch nebo bezdrátové rádio. Sít’ový procesor muže ˚ navíc obsahovat rˇ adiˇc USB (Universal Serial Bus) rozhraní nebo dokonce rˇ adiˇce zvukových kanálu˚ pro hlasové služby. Mu˚ žeme v nˇem dále nalézt rˇ adiˇc rozhraní UART (Universal Asynchronous Receiver Transmitter) pro sériovou komunikaci a rˇ adiˇc vstupnˇe výstupního rozhraní GPIO (General Purpose Input Output) pro pˇripojení ovládacích tlaˇcítek a signalizaˇcních LED diod. 6
ˇU ˇ ˚ 2. A RCHITEKTURA MALÝCH SM EROVA C
2.1.1 Organizace pamˇeti Malé smˇerovaˇce využívají energeticky závislé i nezávislé pamˇeti s pˇrímým pˇrístupem. Operaˇcní pamˇet’ oznaˇcovaná jako RAM (Random Access Memory) je rychlá energeticky závislá pamˇet’ primárnˇe urˇcená pro spouštˇení ˇ aplikací. Casto se ale využívá i jako virtuální disk pro ukládání doˇcasných souboru, ˚ protože persistentní pamˇet’ má vˇetšinou omezený poˇcet zápisu. ˚ Firmware malých smˇerovaˇcu˚ je uložen v pomalejší energeticky nezávislé pamˇeti. Dˇríve se používala pamˇet’ typu ROM (Read Only Memory), do které byl firmware napevno nakopírován pˇri výrobˇe. Nyní se používá pˇrepisovatelná pamˇet’ typu Flash umožnující ˇ jednoduchou aktualizaci firmware pˇrímo uživatelem. Protože puvodní ˚ pamˇet’ ROM neumožnovala ˇ zápis, zavedla se pro ukládání nastavení speciální zapisovatelná pamˇet’ oznacˇ ovaná jako NVRAM (Non-volatile) o velikosti rˇ ádovˇe pár kilobajtu. ˚ V soucˇ asné dobˇe bývá NVRAM cˇ asto fyzicky realizovaná jako cˇ ást adresního prostoru pamˇeti Flash, protože je to cenovˇe výhodnˇejší než osazovat základní desku samostatným cˇ ipem s dražší pamˇetí.
RAM
kernel ----------aktivní procesy ----------tmpfs
Flash spuštění
zavaděč -------------kernel -------------aplikace
NVRAM konfigurace systému a zavaděče
Obrázek 2.3: Organizace pamˇeti v malých smˇerovaˇcích
2.2
Programové vybavení
Firmware je programové vybavení elektronického zaˇrízení. Muže ˚ se jednat o jednoduchý program nebo složitý systém v závislosti na typu zaˇrízení. V malých smˇerovaˇcích a ADSL modemech se jako firmware oznaˇcuje operaˇcní systém, uživatelské aplikace a zavadˇecˇ systému. Používají se hlavnˇe dva typy operaˇcních systému. ˚ Prvním je komerˇcní systém VxWorks, vyvinutý speciálnˇe pro embedded zaˇrízení. Druhým typem jsou systémy založené na svobodném operaˇcním systému GNU/Linux s otevˇreným zdrojovým kódem používaným i na bˇežných osobních poˇcítaˇcích a serverech. Tato práce se zabývá bezpeˇcností malých smˇerovaˇcu˚ založených hlavnˇe na operaˇcním systému GNU/Linux, protože takových zaˇrízení neustále pˇribývá a jsou cˇ ím dál cˇ astˇeji terˇcem ruzných ˚ sít’ových útoku. ˚ 7
ˇU ˇ ˚ 2. A RCHITEKTURA MALÝCH SM EROVA C
2.2.1 Operaˇcní systém VxWorks VxWorks byl vytvoˇren americkou firmou Wind River Systemes zabývající se vestavˇenými systémy. Podporuje znaˇcnou rˇ adu architektur jako napˇríklad x86, MIPS, ARM nebo PowerPC. Klíˇcové vlastnosti systému jsou podpora multitaskingu, zpracování aplikací v reálném cˇ ase s rychlou odezvou a podpora zpracování procesu˚ na více jádrech. K systému je dodáváno vývojové prostˇredí vˇcetnˇe cross kompilátoru umožnující ˇ pˇreklad aplikací pro VxWorks na bˇežných systémech Windows nebo Linux. Bˇeh zkompilovaných aplikací lze vyzkoušet na simulátoru zaˇrízení VxSim. Systém VxWorks patˇrí mezi nejrozšíˇrenˇejší vestavˇené systémy a kromˇe malých smˇerovaˇcu, ˚ telefonu˚ nebo satelitních pˇrijímaˇcu˚ je používán napˇríklad i pro rˇ ízení umˇelých kosmických tˇeles. [14] 2.2.2 Operaˇcní systém GNU/Linux GNU/Linux je vytváˇren komunitou spolupracujících vývojáˇru˚ po celém svˇetˇe. Vznikl spojením linuxového jádra a projektu GNU. Základ linuxového jádra naprogramoval pro architekturu x86 Linus Torvalds v roce 1991. Od té doby bylo jádro neustále vylepšováno a nyní podporuje kromˇe velkého množství zaˇrízení i mnoho dalších architektur, jako napˇríklad MIPS, ARM, PowerPC, x86-64. Díky tomu je GNU/Linux použitelný i v malých zaˇrízeních. Cílem projektu GNU je vytvoˇrit kompletní programový systém kompatibilní se systémem Unix složený pouze ze svobodných programu˚ s otevˇreným zdrojovým kódem. Projekt je šíˇren pod GNU GPL licencí, která umožnuje ˇ zdrojové kódy programu˚ volnˇe používat a modifikovat pod podmínkou, že všechny modifikace a aplikace využívající GNU programy spadají opˇet pod GNU GPL licenci. Výrobci malých smˇerovaˇcu˚ mohou tedy GNU/Linux používat ve svém zaˇrízení, ale rovnˇež musí zpˇrístupnit kompletní zdrojové kódy systému, ze kterých je možné sestavit výsledný obraz firmware. 2.2.3 Zavadˇecˇ systému Zavadˇecˇ (boot loader) primárnˇe slouží ke spuštˇení operaˇcního systému. Muže ˚ být ale využíván i jako servisní konzole zaˇrízení. Konzole je pˇrístupná pˇres Ethernet nebo sériovou linku. Pomocí pˇríkazu zde lze zavadˇecˇ konfigurovat, nastavovat spouštˇecí parametry operaˇcního systému nebo stahovat firmware pˇres TFTP (Trivial File Transport Protocol) a instalovat jej do Flash pamˇeti. 8
ˇU ˇ ˚ 2. A RCHITEKTURA MALÝCH SM EROVA C
Operaˇcní systém VxWorks používá svuj ˚ vlastní zavadˇecˇ . Pro systém GNU/Linux existují volnˇe šiˇritelné zavadˇecˇ e napˇríklad RedBoot, CFE, Das U–Boot a další. 2.2.4 Uživatelské aplikace Malé smˇerovaˇce založené na operaˇcním systému GNU/Linux mohou používat GNU aplikace napsané v jazyce C. Vˇetšinou se však používají odlehˇcené verze, u kterých je kladen duraz ˚ na minimální velikost a spotˇrebu systémových prostˇredku. ˚ Dostupná pamˇet’ u malých smˇerovaˇcu˚ je totiž znaˇcnˇe omezená. Základním kamenem tˇechto programu˚ je knihovna uClibc poskytující nezbytné funkce pro práci se systémem. Jedná se o standardní knihovnu programovacího jazyka C, která je ovšem mnohem menší než bˇežná knihovna GNU C Library používaná u osobních poˇcítaˇcu. ˚ Menší velikost je dosažena optimalizací kódu a vypuštˇením nˇekterých nevyužívaných funkcí z knihovny. Aplikace napsané v jazyce C mají urˇcitou opakující se režii. V pˇrípadˇe malých jednoúˇcelových programu˚ zabírá tato režie znaˇcnou cˇ ást ve výsledném spustitelném kódu. V malých smˇerovaˇcích se proto používá projekt Busybox, který nadbyteˇcnou režii odstranuje ˇ elegantním zpusobem. ˚ Požadované malé aplikace spojuje do jednoho spustitelného souboru, který je zastupuje. Volání jednotlivých programu˚ je realizováno pomocí symbolických odkazu˚ na Busybox. Spojení aplikací umožnuje ˇ další optimalizace jako slouˇcení stejných funkcí. Je podporováno velké množství programu, ˚ pˇrevážnˇe nástroju˚ pro práci se soubory a terminálem. Programy mají vˇetšinou menší poˇcet spouštˇecích parametru˚ než obvykle, cˇ ímž se dosahuje ještˇe vˇetší redukce velikosti výsledného kódu. 2.2.5 Systém souboru˚ Firmware v malých smˇerovaˇcích je vˇetšinou koncipován jako statický. Soubory jsou jednou vytvoˇreny a nepoˇcítá se s tím, že by se dále mˇenily. Dostupné souborové systémy pro malé smˇerovaˇce jsou proto zpravidla pouze ke cˇ tení. Nejpoužívanˇejší jsou CramFS a SquashFS. Jedná se o komprimované souborové systémy poskytující okamžitý pˇrístup k souborum ˚ bez potˇreby vlastního rozbalení pˇred použitím. Využívají se kompresní algoritmy GZIP a LZMA. K dispozici jsou i další ménˇe používané systémy souboru˚ RomFS a JFFS2 (Journalling Flash File System). První je jednoduchý nekomprimovaný systém souboru˚ urˇcený pouze ke cˇ tení. Druhý zástupce je specifický podpo9
ˇU ˇ ˚ 2. A RCHITEKTURA MALÝCH SM EROVA C
rou cˇ tení i zápisu. JFFS2 byl vytvoˇren speciálnˇe pro Flash pamˇeti. Snaží se redukovat poˇcet zápisu˚ do stejných oblastí a zvýšit tak životnost pamˇeti. V malých smˇerovaˇcích se používá jen zˇrídka, protože má zbyteˇcnˇe vyšší režii než souborové systémy pouze ke cˇ tení. Zápis do souboru˚ není u malých smˇerovaˇcu˚ a ADSL modemu˚ díky pˇrítomnosti NVRAM navíc potˇreba. [19]
10
Kapitola 3
Analýza Asus WL-500g Premium Na trhu je rˇ ada malých smˇerovaˇcu˚ a ADSl modemu˚ založených na operaˇcním systému GNU/Linux. Pro analýzu stavu bezpeˇcnosti tˇechto zaˇrízení byl zvolen cˇ asto používaný malý smˇerovaˇc ASUS WL-500g Premium, jelikož se jedná o hodnˇe vybavené zaˇrízení poskytující rˇ adu funkcí. Momentálnˇe existují dvˇe revize tohoto zaˇrízení. K analýze byla použita novˇejší revize identifikovatelná pˇríponou V2, protože starší už není bˇežnˇe k dispozici. Na první pohled vypadají obˇe revize úplnˇe stejnˇe, ale rozdíly jsou nezanedbatelné. Revize V2 obsahuje úplnˇe novou rˇ adu firmware s novým webovým rozhraním a funkcemi. Nová rˇ ada je používána u více zaˇrízení, takže nalezené bezpeˇcnostní problémy se týkají i dalších produktu˚ firmy ASUS používajících stejné programové vybavení, jako napˇríklad malý smˇerovaˇc WL-520gu. Po stránce technického vybavení pˇrináší revize V2 hlavnˇe novˇejší verzi sít’ového procesoru obsahující sít’ový pˇrepínaˇc pˇrímo uvnitˇr cˇ ipu a integrované bezdrátové rádio nahrazující dražší MiniPCI slot s bezdrátovou sít’ovou kartou. Nová revize nˇekteré uživatele moc nepotˇešila, jelikož absence MiniPCI slotu zamezuje výmˇenu bezdrátového radia za lepší nebo úplnˇe jiné MiniPCI zaˇrízení. Frekvence mikroprocesoru byla navíc o trochu snížena z 264 MHz na 240 MHz. [9]
3.1
Popis zaˇrízení
Asus WL-500g Premium V2 je bezdrátový multimediální malý smˇerovaˇc s bezdrátovým rádiem a USB portem. Muže ˚ zastávat funkci internetové brány, sít’ového smˇerovaˇce, bezdrátového pˇrístupového bodu, tiskového serveru, serveru pro ukládání souboru, ˚ sít’ové web kamery a jiné. Zaˇrízení je prodáváno v balení obsahující mimo vlastní malý smˇerovaˇc napájecí zdroj s napˇetím 5 V a maximální zátˇeží 2.5 A, dva metry dlouhou kroucenou dvoulinku pro pˇripojení poˇcítaˇce k malému smˇerovaˇci, standardní všesmˇerovou anténku se ziskem 2 dB pro vnitˇrní použiti, cˇ eský ná11
3. A NALÝZA A SUS WL-500 G P REMIUM vod k použití a CD. Kompaktní disk obsahuje zdrojové kódy vˇcetnˇe GPL licence, elektronickou verzi návodu k použití a speciální nástroje, kterým se práce ještˇe vˇenuje pozdˇeji. Malý smˇerovaˇc je vybaven napájecím konektorem, dvˇema USB porty, cˇ tyˇrmi sít’ovými konektory pro místní sít’ LAN, jedním konektorem WAN pro pˇripojení k Internetu, tlaˇcítkem pro restartování zaˇrízení, programovatelným tlaˇcítkem pro spuštˇení nastavené akce a anténním konektorem pro pˇripojení interní nebo venkovní antény. Uvnitˇr zaˇrízení jsou dále pˇripraveny kontaktní plošky pro pˇripojení servisní linky. Používá se sériové rozhraní s napˇet’ovou úrovní 3,3 V. Pro pˇripojení malého smˇerovaˇce k bˇežnému sériovému rozhraní osobního poˇcítaˇce je nutné použít konvertor napˇet’ových úrovní, který pˇrevede signály na napˇetí 12 V. [9]
Anténa
1xWAN
4xLAN
Napájecí 2xUSB 2.0 konektor
Programovatelné tlačítko a reset Obrázek 3.1: Zadní panel Asus WL-500gP V2 [16] Zaˇrízení se konfiguruje pomocí webového rozhraní poskytujícího jednoduché pruvodce ˚ i pokroˇcilé nastavení. Pokroˇcilé nastavení je rozdˇeleno na oblasti bezdrátové pˇrípojení, LAN, WAN, USB aplikace, firewall, správa a systémový záznam. Bezdrátové pˇripojení slouží k nastavení bezdrátového rádia malého smˇerovaˇce. Je podporován režim pˇrístupového bodu, bezdrátového mostu pro spojení dvou samostatných sítí a bezdrátového distribuovaného systému pro vytváˇrení rozsáhlých bezdrátových sítí. Bezpeˇcnost je zajištˇena pomocí standardních šifrovacích algoritmu˚ a filtrace klientu˚ na základˇe jejich MAC adresy. Navíc lze aktivovat izolaci klientu, ˚ pro zamezení pˇrímé komunikace mezi jednotlivými bezdrátovými stanicemi, a zapínání rádia podle nastaveného cˇ asového plánu. Je podporována i nová metoda snadné konfigurace silného šifrování WPS (Wireless Protected Setup) pomocí osobního identifikaˇcního cˇ ísla nebo párovacího tlaˇcítka na zaˇrízení. Pro zlepšení bezdrátového pˇrenosu multimediálních dat je do malého smˇerovaˇce pˇridána pod12
3. A NALÝZA A SUS WL-500 G P REMIUM pora WMM (Wifi Multimedia) rozšiˇrující bezdrátové sítˇe o rˇ ízení a upˇrednostnování ˇ datových toku, ˚ které zaruˇcuje urˇcitou kvalitu komunikaˇcních služeb QoS (Quality of Service). Sekce LAN nastavuje místní sít’. Je zde umístˇeno nastavení IP protokolu verze 4 pro odpovídající rozhraní, zapnutí podpory multicastu, nastavení statického smˇerování a konfigurace DHCP serveru pro pˇridˇelování IP adres pˇripojeným klientum. ˚ DHCP server dovoluje zadaným klientum ˚ pˇridˇelovat stejnou IP adresu na základˇe jejich MAC adresy usnadnující ˇ identifikaci zaˇrízení na síti. Pˇripojení k Internetu a pˇresmˇerování portu˚ se nastavuje v sekci WAN. IP protokol u sít’ového rozhraní lze nastavit ruˇcnˇe nebo automaticky ze serveru poskytovatele internetových služeb. Jsou podporovány i další protokoly jako PPTP (Point to Point Tunneling Protocol), L2TP (Layer 2 Tunneling Protocol) nebo PPPoE (Point to Point Protocol over Ethernet). Sdílení internetového pˇripojení je realizováno pˇrekladem sít’ových adres. Pˇríchozí spojení na pˇrípadnou veˇrejnou IP adresu mohou být pˇresmˇerovány na vybraného klienta v místní síti pomocí DMZ host. Lze pˇresmˇerovávat i jednotlivé porty a využít tak veˇrejnou IP adresu pro více klientu. ˚ Zaˇrízení podporuje i službu DDNS (Dynamic Domain Name System) poskytující stálé doménové jméno pro dynamicky pˇridˇelenou veˇrejnou IP adresu pomocí zasílání aktuální IP adresy na DDNS server. Kvalita služeb QoS je dosažena nastavitelnou prioritou pro zadané zdrojové a cílové IP adresy. Sekce USB aplikace se zabývá hlavnˇe sdílením souboru˚ z pˇripojených USB disku. ˚ Jsou podporovány dvˇe metody. Vzdálený pˇrístup k souborum ˚ SMB/CIFS (Server Message Block, Common Internet File System) bˇežnˇe používaný u systému˚ Windows ke sdílení souboru˚ a FTP (File Transfer Protocol) používaný pro pˇrenos souboru˚ pˇres Internet. Obˇe metody využívají jednotnou správu uživatelských úˇctu˚ definující uživatele a jejich oprávnˇení. Kromˇe nastavení sdílení souboru˚ lze na této konfiguraˇcní stránce vypnout podporu jednoduchého pˇripojování zaˇrízení k síti UPnP (Universal Plug and Play). Nastavení blokování nežádoucí komunikace se provádí na stránce Firewall. Najdeme zde blokování pˇrístupu na webové rozhraní ze zóny WAN, blokování odpovˇedi na výzvu ICMP Echo Request, ochranu proti DoS (Denial of Service) útokum, ˚ blokování pˇrístupu na nepovolené webové stránky a uživatelské nastavení dalších filtru˚ podle libovolných položek hlaviˇcky IP paketu. Poslední dvˇe sekce obsahují nastavení pˇrístupového hesla administrátora, nastavení synchronizace cˇ asu pomocí NTP (Network Time Protocol), nahrání nového firmware, zobrazení systémového logu a smˇerovací tabulky. 13
3. A NALÝZA A SUS WL-500 G P REMIUM 3.1.1 Technické vybavení Asus WL-500g Premium V2 je složen ze sít’ového procesoru BCM5354 firmy Broadcom, 32 MiB operaˇcní pamˇeti a 8 MiB pamˇeti Flash. Na desce zaˇrízení není samostatná pamˇet’ NVRAM pro ukládání nastavení ani žádné další integrované obvody. Sít’ový procesor tedy vykonává veškerou funkcionalitu malého smˇerovaˇce. Integrovaný obvod obsahuje 32 bitový MIPS mikroprocesor s pracovní frekvencí 240 MHz a jednotkou pro správu operaˇcní pamˇeti MMU (Memory Management Unit). Jednotka slouží k ochranˇe a virtualizaci pamˇeti. Provádí pˇreklad virtuálních adres na fyzické. Sít’ová rozhraní malého smˇerovaˇce jsou uvnitˇr integrovaného obvodu zastoupena vestavˇeným sít’ovým pˇrepínaˇcem, který obsahuje jak rˇ adiˇc rˇ ízení pˇrístupu k médiu, tak pˇrevodník signálu˚ na fyzické signály komunikaˇcního média. Obdobnˇe bezdrátové sít’ové rozhraní je rovnˇež kompletnˇe integrováno vˇcetnˇe Broadcom IEEE 802.11b/g rádia. Sít’ový procesor obsahuje dále rˇ adiˇc USB rozhraní verze 2.0, rozhraní pro komunikaci s Flash a operaˇcní pamˇetí, vstupnˇe výstupní rozhraní GPIO, rozhraní JTAG pro odlad’ování systému a rozhraní UART.
USB 2.0 Host 1 MB -32MB Flash
Flash I/F
2 MB-128MB 120 Mhz DDR/SDR SDRA M
SDRAM I/F
802.11 b/g MA C/PHY/Radio Encore DSP 16 K B I-Cache
16 K B D-Cache
240-MHz MIPS32 with MMU
PLL GPIO JTA G UA RT
Low-Cost Five-Port Switch 10/100 MA C/PHY
Obrázek 3.2: Systémový diagram sít’ového procesoru BCM5354 [1]
3.1.2 Programové vybavení Analyzovaný malý smˇerovaˇc Asus WL-500g Premium V2 má od výrobce nainstalovaný firmware verze 3.0.3.5, jehož zdrojové kódy jsou k dispozici na pˇriloženém CD a webových stránkách firmy Asus. Firmware obsahuje zavadˇecˇ CFE (Common Firmware Environment) od firmy Broadcom, který po zapnutí zaˇrízení spouští operaˇcní systém GNU/Linux s linuxovým jádrem rˇ ady 2.4, konkrétnˇe verze 2.4.20. Pro uložení operaˇcního systému a 14
3. A NALÝZA A SUS WL-500 G P REMIUM programu˚ v pamˇeti Flash byl zvolen komprimovaný souborový systém SquashFS. Adresáˇrová struktura je tedy pouze ke cˇ tení. Nastavení malého smˇerovaˇce je proto ukládáno v umˇelé vytvoˇrené pamˇeti NVRAM o velikosti 32 KiB. Pamˇet’ obsahuje pole promˇenných a jejich hodnot. S pamˇetí lze pracovat explicitnˇe pomocí nástroje nvram umožnujícího ˇ pole cˇ íst i do nˇej zapisovat. Jednotlivé funkce malého smˇerovaˇce bývají vˇetšinou reprezentovány samostatnými programy. Napˇríklad program Dproxy plní funkci serveru pro pˇreklad doménových jmen na IP adresy. Server pro pˇridˇelování adres pˇripojeným zaˇrízením je pro zmˇenu implementován programem Udhcpd. Výjimkou je program Busybox, který vykonává cˇ innost mnoha unixových malých nástroju. ˚ Blokování nežádoucí komunikace, pˇreklad sít’ových adres a pˇresmˇerovávání portu˚ je rˇ ešeno pˇrímo jádrem operaˇcního systému. Konkrétnˇe se jedná o vrstvu Netfilter ovlivnující ˇ pruchod ˚ paketu˚ pˇres TCP/IP stack na základˇe pravidel definovaných v pˇríslušných tabulkách. Pravidla se vˇetšinou nastavují nástrojem iptables spuštˇeném v uživatelském prostoru. Firmware obsahuje pouze odlehˇcený nástroj iptables-restore, který tabulky dokáže obnovit ze zadaného souboru, ale neumožnuje ˇ nastavená pravidla zobrazit. Funkce malého smˇerovaˇce se nastavují pˇres administrativní webové rozhraní bˇežící na http serveru milli_httpd vyvíjeným firmou Broadcom. Jedná se o server vycházející z kombinace serveru˚ micro_httpd a mini_httpd od firmy ACME Labs Software. Webový server byl rozšíˇren o mnoho podpur˚ ných funkcí pro interpretaci vlastních ASP (Active Server Pages) skriptu. ˚ Pˇredevším o funkce pro práci s NVRAM pamˇetí. Podle vložených licencí uvnitˇr zdrojových kódu˚ je webový server považován za proprietární programové vybavení firmy Broadcam. Jádro programu je ale díky licenˇcním podmínkám puvodních ˚ projektu˚ stále volnˇe šiˇritelné. Pˇredchozí revize zaˇrízení podporovala kromˇe webového rozhraní ještˇe konfiguraci pˇres vzdálený terminál. Použitý terminálový server reprezentovaný aplikací utelnetd je dostupný i v novˇejší revizi V2, ale z neznámých duvod ˚ u˚ je implicitnˇe vypnutý. Webové rozhraní neposkytuje žádnou možnost terminálový server zapnout. Nastavení malého smˇerovaˇce se zpracovává programem rc zajišt’ujícím spouštˇení a zastavování systémových služeb. Zastupuje rovnˇež funkci hlavního programu init, kterému se po spuštˇení jádra pˇredává rˇ ízení, aby provedl inicializaci uživatelského prostoru a spustil všechny ostatní procesy. Program rc je vytvoˇren firmou Broadcom a ASUSTek Inc.
15
3. A NALÝZA A SUS WL-500 G P REMIUM 3.1.3 Princip konfigurace zaˇrízení Zmˇena nastavení malého smˇerovaˇce zaˇcíná na webovém rozhraní, kde se pomocí HTML formuláˇre odešlou nové hodnoty na stránku start_apply.htm. Pˇrestože název stránky má pˇríponu htm používanou pro statické webové stránky, jedná se o skript na stranˇe serveru zpracovávající formuláˇr. Skript nejprve zavolá podpurnou ˚ funkci update_variables() aktualizující pole promˇenných v pracovní kopii pamˇeti NVRAM podle nových hodnot. Odeslaný formuláˇr s novým nastavením obsahuje kromˇe vlastních hodnot také seznam skupin, kterých se zmˇeny týkají. Na základˇe tohoto seznamu jsou pozdˇeji odpovídající systémové služby restartovány. Seznam také slouží k validaci nových hodnot, protože každá skupina má definované atributy, které musí být vyplnˇeny. Po zkontrolování správnosti nových hodnot je skriptem spuštˇena podpurná ˚ funkce asus_nvram_commit(). Funkce ukládá obsah pracovní kopie do permanentní NVRAM pamˇeti. Nakonec skript spouští podpurnou ˚ funkci notify_services() pro restartování pˇríslušných systémových služeb a tím je zmˇena konfigurace dokonˇcena. Restart služeb provádí program rc. Funkce notify_services() informuje program rc o zmˇenˇe nastavení zasláním signálu SIGUSR1. Program rc provede restart služby, jejíž název je pˇredán pomocí názvu souboru vytvoˇreného ve složce /tmp/rc_notification. Po restartování služby je soubor opˇet vymazán. Pˇri restartování služby jsou parametry cˇ teny z NVRAM pamˇeti programem rc, takže aplikace reprezentující službu s ní nepotˇrebuje vubec ˚ pracovat. Všechny parametry dostane od programu rc.
httpd
NVRAM
tmpfs
rc
nastav: wan_ipaddr=10.0.0.1 ulož hodnoty vytvoř soubor: /tmp/rc_notification/restart_networking pošli signál: SIGUSR1 načti obsah: notify_services() /tmp/rc_notification/ asus_nvram_commit() načti parametry restartované služby update_variables()
Obrázek 3.3: Interakce komponent pˇri zmˇenˇe WAN IP adresy
16
3. A NALÝZA A SUS WL-500 G P REMIUM
3.2
Bezpeˇcnostní analýza firmware
Asus WL-500g Premium revize 2 obsahuje mnoho funkcí. Obecnˇe platí, že cˇ ím více funkcí zaˇrízení poskytuje, tím více muže ˚ obsahovat bezpeˇcnostních problému. ˚ Bezpeˇcnost malých smˇerovaˇcu˚ bývá podcenována, ˇ jelikož se jedná o relativnˇe levná zaˇrízení pro domácí použití. Nalezené zranitelnosti mají ruznou ˚ duležitost, ˚ od drobných nedostatku˚ po závažné bezpeˇcnostní problémy. Cílem bezpeˇcnostní analýzy bylo odhalit zranitelnosti umožnující ˇ útoˇcníkovi získat plnou kontrolu nad zaˇrízením a spustit v nˇem vlastní kód. 3.2.1 Použité nástroje Prvním a zárovenˇ nejduležitˇ ˚ ejším použitým nástrojem je Nessus od firmy Tenable Network Security. Jedná se o bezpeˇcnostní skener hledající známé bezpeˇcnostní zranitelnosti. Je urˇcen pro skenování vzdálených stroju˚ pˇripojených do poˇcítaˇcové sítˇe, ale lze spustit i na stroji lokálním. Nessus obsahuje systém zásuvných modulu˚ pro jednoduchou aktualizaci a rozšiˇrování databáze zranitelností. Poˇcet zásuvných modulu˚ je aktuálnˇe pˇribližnˇe 40 000. Skener se ovládá pomocí webového rozhraní naslouchajícího na portu 8834, což umožnuje ˇ Nessus používat i vzdálenˇe bez instalace klientské aplikace. Pro domácí použití je program poskytován zcela zdarma, v opaˇcném pˇrípadˇe je tˇreba platit poplatek na každý rok. Druhý použitý nástroj je aplikace s otevˇreným zdrojovým kódem nazvaná Nmap (Network Mapper). Aplikace je primárnˇe urˇcena k vyhledávání zaˇrízení pˇripojených k poˇcítaˇcové síti a skenování otevˇrených portu. ˚ Na základˇe databáze charakteristik operaˇcních systému˚ a cˇ asto používaných služeb je nmap schopen odhadnout typ spuštˇeného operaˇcního systému a verzi jednotlivých služeb bˇežících na otevˇrených portech. Program od verze 4.2 obsahuje skriptovací mechanizmus NSE (Nmap Script Engine) pro interpretaci uživatelských skriptu˚ v jazyce Lua. Jazyk je rozšíˇren o funkce programu Nmap, což umožnuje ˇ rychle vytváˇret skripty pro nejruznˇ ˚ ejší sít’ové úlohy, jako napˇríklad vyhledávání novˇe objevených zranitelností, a obohatit tak funkce programu. Nmap je konzolová aplikace s textovým rozhraním. Je k dispozici i oficiální python aplikace Zenmap poskytující grafické uživatelské rozhraní. Grafické rozhraní funguje jako spouštˇecˇ a interpret výstupu. ˚ Další použitý nástroj nazvaný Wireshark neslouží pˇrímo k analýze bezpeˇcnosti jako takové, ale k podrobnému zkoumání probíhající sít’ové komunikace. Wireshark je nejpoužívanˇejší paketový analyzátor podporující rˇ adu 17
3. A NALÝZA A SUS WL-500 G P REMIUM protokolu˚ z linkové, sít’ové, transportní a aplikaˇcní vrstvy referenˇcního modelu ISO/OSI. Znalost protokolu˚ dovoluje identifikovat v datovém toku jednotlivé cˇ ásti a vypsat je na obrazovku poˇcítaˇce. K dispozici je grafické i textové rozhraní programu. Wireshark zachytává sít’ovou komunikaci pomocí knihovny Libpcap poskytující aplikacím jednotný pˇrístup k surovým datum ˚ sít’ové karty. Knihovna i nástroj Wireshark jsou aplikace s otevˇreným zdrojovým kódem a tedy opˇet volnˇe k použití. Posledním užiteˇcným nástrojem pro bezpeˇcnostní analýzu zaˇrízení je volnˇe šiˇritelný paketový generátor Mausezahn s otevˇreným zdrojovým kódem. Paketový generátor umožnuje ˇ vytváˇret a odesílat pakety s libovolným obsahem ze zadaného sít’ového rozhraní. Uplatní se pˇri testování nestandardních situací. Konkrétnˇe pˇri testování reakcí služeb na pˇríchod neoˇcekávaného paketu, testování odolnosti proti DoS (Denial of Services) útokum ˚ nebo testování systému pro blokování nežádoucí komunikace. 3.2.2 Sdílení souboru˚ Malý smˇerovaˇc Asus WL-500gP nabízí možnost sdílení souboru˚ z pˇripojeného USB disku pomocí FTP (File Transfer Protocol) a SMB/CIFS (Server Message Block, Common Internet File System) protokolu. Služby jsou v systému reprezentovány volnˇe šiˇritelnými servery Vsftpd a Samba, které jsou spuštˇeny až po pˇripojení USB disku a po jeho odpojení opˇet ukonˇceny. První nalezený bezpeˇcnostní problém je skuteˇcnost, že po pˇripojení USB disku je celý svazek zpˇrístupnˇen pomocí FTP protokolu na WAN rozhraní pod anonymním uživatelským úˇctem s plným oprávnˇením. Pokud má malý smˇerovaˇc veˇrejnou IP adresu, muže ˚ se kdokoliv z Internetu na FTP server pˇripojit a obsah disku cˇ íst nebo vymazat. USB disk je rovnˇež plnˇe pˇrístupný z místní sítˇe pˇres FTP i SMB/CIFS protokol, což už ale není tak závažný problém. Pˇrístupová práva lze pˇres webové rozhraní malého smˇerovaˇce zmˇenit, ale uživatel si hrozící riziko nemusí uvˇedomit. Bezpeˇcnostní skener v pˇrípadˇe FTP serveru Vsftpd nenalezl, kromˇe anonymního pˇrihlášení, žádný další bezpeˇcnostní problém. Na domácí stránce programu je tedy popis „pravdˇepodobnˇe nejbezpeˇcnˇejší a nejrychlejší FTP server pro unixové systémy“ uveden nejspíš oprávnˇenˇe. V malém smˇerovaˇci je použita starší verze Vsftpd serveru oznaˇcovaná rˇ etˇezcem 2.0.4. Pˇri hledání možných zranitelností pro uvedenou verzi, byly nalezeny dvˇe potenciálnˇe použitelné. Zranitelnosti umožnovaly ˇ provést DoS útok na Vsftpd server verze 2.0.5. První zranitelnost se týkala modulu pro podporu autentizaˇcního mechanizmu PAM (Pluggable Authentication Modules), který není v systému vubec ˚ implementován. Druhá zranitelnost se týkala pouze 18
3. A NALÝZA A SUS WL-500 G P REMIUM distribuce RedHat, ve které byl nevhodnˇe upraven kód funkce pro filtrování výpisu obsahu adresáˇre. Obˇe zranitelnosti zpusobovaly ˚ pád programu zaplnˇením dostupné operaˇcní pamˇeti, ale u nainstalované verze Vsftpd serveru nebyly použitelné. V pˇrípadˇe serveru Samba pro sdílení souboru˚ pˇres SMB/CIFS protokol byla situace z hlediska bezpeˇcnosti mnohem horší. Samba server podle výsledku˚ bezpeˇcnostního skeneru obsahuje velké množství zranitelností. V zaˇrízení je nainstalovaná celkem zastaralá Samba verze 3.0.2. Jde o jednu z prvních verzí nové rˇ ady 3.x obsahující ještˇe mnoho chyb. Následující zranitelnosti umožnují ˇ podle skeneru vzdálené spuštˇení vlastního kódu uvnitˇr zaˇrízení i DoS útoky. • • • • •
Samba NDR MS-RPC Request Heap-Based Remote Buffer Overflow Samba smbd FindNextPrintChangeNotify() Request Remote DoS Samba Multiple Remote Vulnerabilities Samba Mangling Method Hash Overflow Samba < 3.0.7 Multiple Remote DoS
Pro Samba server rˇ ady 3.x existuje pouze jeden veˇrejnˇe dostupný exploit, tedy program prakticky demonstrující bezpeˇcnostní problém. Exploit je ale vytvoˇren pouze pro Sambu verze 3.0.21 – 3.0.24 spuštˇenou na architektuˇre x86. Identifikované zranitelnosti proto nebyly prakticky odzkoušeny. Pokud by výrobce malého smˇerovaˇce Samba server pomocí záplat zabezpeˇcil, ale zachoval cˇ íslování verze, byla by detekce provedena špatnˇe. Bezpeˇcnostní skener totiž rozpoznal zranitelnosti pouze na základˇe verze Samba serveru. Z toho duvodu ˚ jsem navíc provedl kontrolu zdrojových kódu˚ a ovˇerˇ il, že bezpeˇcnostní záplaty skuteˇcnˇe neobsahují. 3.2.3 Universal Plug and Play Slovní spojení Universal Plug and Play oznaˇcuje skupinu sít’ových protokolu˚ pro jednoduché nalezení a propojení dostupných služeb na poˇcítaˇcové síti, jako napˇríklad tisk, sdílení dat, pˇrenos zvuku a obrazu nebo pˇripojení k Internetu. Pro malé smˇerovaˇce je nejpodstatnˇejší rˇ ídicí protokol IGD (Internet Gateway Device). Protokol umožnuje ˇ napˇríklad dynamicky pˇridˇelovat porty externího rozhraní smˇerovaˇce jednotlivým zaˇrízením v místní síti nebo zjišt’ovat informace o nastavení externího rozhraní. Nevýhodou UPnP je absence jakékoliv autentizace. Nˇekterá bezpeˇcnostní rizika proto vyplývají pˇrímo ze specifikace. 19
3. A NALÝZA A SUS WL-500 G P REMIUM Asus WL-500gP používá implementaci UPnP od firmy Broadcom, která je obecnˇe charakteristická dvˇema bezpeˇcnostními problémy. Prvním je možnost pˇrerušení spojení malého smˇerovaˇce s externí sítí poskytovatele Internetových služeb. Druhým pak možnost pˇresmˇerování portu˚ externího rozhraní na jiná zaˇrízení vnˇejší sítˇe. Nˇekteˇrí výrobci malých smˇerovaˇcu˚ proto implementaci UPnP od firmy Broadcom pˇred nasazením do svých produktu˚ ještˇe upravují. Asus WL-500gP obˇe zranitelnosti obsahuje. Podpora UPnP je navíc v zaˇrízení implicitnˇe zapnuta bez jakýchkoliv varování o možných bezpeˇcnostních rizicích. Pˇrerušení spojení s externí sítí zpusobuje ˚ zaslání signálu ForceTermination ze schématu WANIPConnection. Signál muže ˚ odeslat jakékoliv zarˇ ízení v místní síti podporující UPnP. Spojení lze opˇet obnovit zasláním signálu RequestConnection. Problém nastává v pˇrípadˇe, kdy administrátor malého smˇerovaˇce neví o existenci této funkce. Webové rozhraní nezobrazuje informace o pˇríˇcinˇe odpojení sítˇe ani neobsahuje ovládací prvek pro obnovení. Administrátor musí pro obnovu spojení znovu nastavit WAN rozhraní nebo zaˇrízení restartovat. Pˇresmˇerování portu˚ externího rozhraní lze zneužít mnoha zpusoby. ˚ Problém spoˇcívá v neprovˇerˇ ování cílové IP adresy. Externí port malého smˇerovaˇce lze pˇresmˇerovat na úplnˇe jiné zaˇrízení, než ze kterého požadavek pˇrišel. Zadaná IP adresa muže ˚ být z vnitˇrní nebo dokonce vnˇejší sítˇe. Pokud má vnˇejší rozhraní malého smˇerovaˇce veˇrejnou IP adresu, muže ˚ kdokoliv z vnitˇrní sítˇe zpˇrístupnit služby místních zaˇrízení vnˇejšímu svˇetu. Dalším pˇríkladem zneužití je zablokování pˇrístupu k vnˇejší službˇe malého smˇerovaˇce. Pokud je pˇri pˇresmˇerování zadán port, na kterém už bˇeží napˇríklad FTP server, stane se služba nedostupnou. Vlastnost lze také využít k provedení MITM (Man in the Middle) útoku, kdy puvodní ˚ port je pˇresmˇerován na jiné zaˇrízení, které se pˇripojuje pomocí dalšího pˇresmˇerování na port puvodní. ˚ Posledním pˇríkladem zneužití pˇresmˇerování je k provedení anonymní komunikace. Port malého smˇerovaˇce muže ˚ být pˇresmˇerován na zarˇ ízení ve vnˇejší síti a tím poskytnout ostatním zaˇrízením prostˇredníka pro anonymní komunikaci s cílovou IP adresou. Anonymní komunikace muže ˚ být zneužita pro rozesílání nevyžádané elektronické pošty nebo útokum. ˚ 3.2.4 DNS server DNS (Domain Name System) server slouží k pˇrekladu doménových jmen na IP adresy. Systém doménových jmen se skládá z hierarchicky uspoˇrádané struktury serveru, ˚ které obhospodaˇrovávají pouze urˇcitou zónu. Pˇri pˇrekladu doménového jména musí být struktura prohledána postupným 20
3. A NALÝZA A SUS WL-500 G P REMIUM zasláním dotazu˚ do každé zóny tvoˇrící doménové jméno. Pro snížení objemu pˇrenášených dat a zátˇeže serveru˚ se obˇcas používají ještˇe pomocné DNS servery. Pomocné servery ukládají zpracované dotazy do vyrovnávací pamˇeti pro opakované použití. Asus WL-500g Premium pro vyˇrizování dotazu˚ z místní sítˇe používá pomocný DNS server Dproxy-nexgen. Server ukládá zpracované dotazy do doˇcasného textového souboru obsahujícího rovnˇež uživatelsky definované pˇreklady doménových jmen. V zaˇrízení je kromˇe Dproxy nainstalován program Dnsmasq poskytující obdobnou funkcionalitu. Program však není nikterak používán a je tedy nejspíš pouze pozustatkem ˚ z vývoje programového vybavení malého smˇerovaˇce. Dproxy-nexgen obsahuje bezpeˇcnostní zranitelnost CVE-2007-1866 [3] umožnující ˇ vzdálené spuštˇení kódu. Bezpeˇcnostní skener Nessus nalezenou chybu vubec ˚ nedetekoval. Zranitelnost byla odhalena a zdokumentována už v roce 2007, ale doposud nebyla stále odstranˇena. Vývoj aplikace Dproxy-nexgen byl nejspíš ukonˇcen. Zranitelnost lze využít pouze z místní sítˇe, protože pˇrístup z externího rozhraní je blokován. Dostupný exploit není optimalizován pro MIPS architekturu, a tak zpusobuje ˚ místo spuštˇení vzdáleného kódu pouze pád serveru. 3.2.5 Webové rozhraní Bezpeˇcnostní skener pˇri analýze webového serveru neobjevil žádná slabá místa. Server je realizován programem milli_httpd založeném na kombinaci mini_httpd a micro_httpd. Ani jeden z uvedených programu˚ neobsahuje veˇrejnˇe známé zranitelnosti. Analýza webového rozhraní odhalila bezpeˇcnostní problém vyvolaný nekorektním chováním klienta. Pokud je navázáno spojení na port webového serveru bez odeslání jakýchkoliv dat, webový server nekoneˇcnˇe vyˇckává, dokud není spojení klientem pˇrerušeno. Pˇri cˇ ekání nejsou obsluhovány žádné další požadavky a webové rozhraní se tak stává nedostupné. Webové rozhraní používá autentizaci typu Basic auth, která zasílá pˇrihlašovací jméno a heslo v nekódovaném tvaru pˇri každém naˇctení webových stránek. Pˇrihlašovací údaje je proto možné snadno odposlechnout. Konkrétní podmínky vyžadování autentizace jsou definovány ve zdrojových kódech webového serveru. Dokud není implicitní pˇrihlašovací heslo zmˇenˇeno, umožnuje ˇ server pˇrístup k nˇekterým stránkám bez pˇrihlášení. Po nastavení nového pˇrístupového hesla je neautentizovaný pˇrístup ke všem stránkám zablokován. Webové rozhraní tedy neumožnuje ˇ obcházet autentizaci napˇríklad pˇrímou komunikací s konfiguraˇcními skripty nebo zadáním adresy nˇejaké zapomenuté konfiguraˇcní stránky. 21
3. A NALÝZA A SUS WL-500 G P REMIUM
3.3
Pˇrehled nalezených zranitelností
Následující tabulka shrnuje zjištˇené bezpeˇcnostní problémy u malého smˇerovaˇce Asus WL-500g Premium revize 2 s firmware 3.0.3.5 popsané v této kapitole. Tabulka je rozdˇelena do cˇ tyˇr sloupcu˚ struˇcnˇe charakterizující zranitelnosti. Sloupec riziko je pouze orientaˇcní a snaží se vystihnout pravdˇepodobnost výskytu a pˇrípadné následky zranitelnosti.
Služba
Popis zranitelnosti
Riziko
Rozhraní
FTP
Anonymní pˇrístup k USB disku (s možností cˇ tení i zápisu) Anonymní pˇrístup k USB disku (s možností cˇ tení i zápisu) Anonymní pˇrístup k USB disku (s možností cˇ tení i zápisu) Zablokování služby (více zranitelností) Spuštˇení kódu (více zranitelností) Odpojení od externí sítˇe (pomocí ForceTermination) Zpˇrístupnˇení interních služeb (pˇresmˇerováním portu) ˚ Potenciál k MITM útoku na vnˇejší služby (pˇresmˇerováním portu) ˚ Spuštˇení kódu (zasláním speciálního požadavku) Zablokování služby (pˇri neukonˇceném spojení)
vysoké
WAN
nízké
LAN
nízké
LAN
stˇrední
LAN
vysoké
LAN
vysoké
LAN
stˇrední
LAN
nízké
LAN
vysoké
LAN
nízké
LAN
FTP Samba Samba Samba UPnP UPnP UPnP DNS Web
Tabulka 3.1: Nalezené zranitelnosti
22
Kapitola 4
Bezpeˇcnostní zranitelnost v Infosvr Pˇri analýze uživatelských nástroju˚ dodávaných na pˇriloženém datovém nosiˇci byla nalezena dosud nezdokumentovaná zranitelnost umožnující vzdálené spuštˇení vlastního pˇríkazu uvnitˇr zaˇrízení. Zranitelnost je zpusobena ˚ použitím nezabezpeˇceného protokolu pˇri komunikaci zaˇrízení s uživatelskými nástroji.
4.1
Analýza Device Discovery
Nástroj Device Discovery slouží k nalezení zaˇrízení na síti a zjištˇení základních informací. Vyhledávání je zahájeno ihned po spuštˇení programu, ale lze vyvolat i explicitnˇe tlaˇcítkem „hledat“. Pomocí paketového analyzátoru Wireshark bylo zjištˇeno, že komunikace s malým smˇerovaˇcem zaˇcíná zasláním UDP paketu s neznámým obsahem1 o velikosti 512 B na speciální adresu 255.255.255.255 a port cˇ íslo 9999. Použitá adresa oznaˇcuje globální všesmˇerové vysílání, které pˇrijímají všechna zaˇrízení v místní síti bez ohledu na konkrétnˇe nastavenou IP adresu. Malý smˇerovaˇc po pˇríjmu paketu odpoví opˇet pˇres adresu globálního všesmˇerového vysílání s cílovým portem 9999. Odpovˇed’2 obsahuje textové rˇ etˇezce s názvem zaˇrízení, verzí firmware, sít’ovou maskou, názvem bezdrátového pˇrístupového bodu a informace o pˇripojených USB zaˇrízeních. IP adresa nalezeného zaˇrízení je umístˇena pˇrímo v IP hlaviˇcce jako adresa odesílatele. Další informace nebyly bez bližší znalosti formátu odpovˇedi srozumitelné. Protokol UDP nevytváˇrí spojení mezi zdrojovou a cílovou IP adresou. Díky této vlastnosti je vhodný pro všesmˇerové vysílání, ale neposkytuje žádnou záruku doruˇcení nebo detekci ztráty paketu. Nástroj Device Discovery proto posílá pakety se stejným obsahem opakovanˇe, aby tak zvýšil pravdˇepodobnost úspˇechu. 1. Ukázka obsahu paketu zasílaného klientem – viz pˇríloha B.1 2. Obsah paketu odpovˇedi – viz pˇríloha B.2
23
ˇ 4. B EZPE CNOSTNÍ ZRANITELNOST V I NFOSVR
Po odeslání nˇekolika paketu˚ na adresu 255.255.255.255 zkouší nástroj lokální všesmˇerové vysílání, jehož adresa se vypoˇcítá z IP adresy a sít’ové masky klientského poˇcítaˇce. Lokální všesmˇerové vysílání pˇrijímají, na rozdíl od globálního, pouze zaˇrízení ve stejné podsíti. 5x výzva na adresu 255.255.255.255 port 9999 Odpověď: Asus WL500gP V2, maska 255.255.255.0, fw 3.0.3.5
192.168.1.2
5x výzva na adresu 192.168.1.255 port 9999 Odpověď: Asus WL500gP V2, maska 255.255.255.0, fw 3.0.3.5
192.168.1.1
Obrázek 4.1: Komunikace Device Discovery s malým smˇerovaˇcem
4.2
Analýza Download Master
Download Master je uživatelský nástroj umožnující nastavit seznam souboru, ˚ které má malý smˇerovaˇc stáhnout z Internetu. Jsou podporovány protokoly HTTP, FTP a BT (BitTorrent). Soubory jsou ukládány na pˇripojený USB disk, odkud jsou dále zpˇrístupnˇeny pomocí služby sdílení souboru. ˚ Nástroj tedy umožnuje ˇ stahovat soubory bez zapnutého poˇcítaˇce. Chování nástroje bylo opˇet podrobeno zkoumání paketovým analyzátorem Wireshark. Bylo zjištˇeno, že samotné spuštˇení nástroje není doprovázeno žádnou sít’ovou aktivitou. Situace se zmˇení až po vybrání položky „pˇripojit“ v hlavní nabídce. Jako první je provedeno hledání malého smˇerovaˇce. Hledání probíhá obdobným zpusobem ˚ jako u nástroje Device Discovery. Odesílá se UDP paket na adresu všesmˇerového vysílání, ale tentokrát pouze globálního. Cílem hledání je zjistit IP adresu zaˇrízení a informace o pˇripojeném USB disku. Jestliže k malému smˇerovaˇci není žádný disk pˇripojen, program zobrazí chybovou hlášku a vrátí se do klidového stavu. Pˇri prvním pˇripojení je pomocí SMB/CIFS protokolu kopírováno nˇekolik programu˚ a skriptu˚ na vzdálený USB disk. Evidentnˇe jde o programy nezbytné pro správnou funkci nástroje. Konkrétnˇe napˇríklad program snarf umožnující ˇ stahovat soubory z HTTP a FTP serveru, ˚ program ctorrent pro stahování souboru˚ z výmˇenné sítˇe BitTorrent nebo server GiFT, který podle zachycené komunikace poskytuje informace o prubˇ ˚ ehu stahování souboru. ˚ Dostupnost programu˚ je kontrolována pˇri každém spuštˇení, takže pˇri vložení nového USB disku se proces opakuje. 24
ˇ 4. B EZPE CNOSTNÍ ZRANITELNOST V I NFOSVR
Po kontrole adresáˇrové struktury byl na IP adresu malého smˇerovaˇce odeslán UDP paket s cílovým portem 9999, tedy se stejným portem jako pˇri hledání zaˇrízení na síti. Paket obsahoval cˇ itelný textový rˇ etˇezec1 pˇripomínající systémový pˇríkaz. Zachycený paket prokazatelnˇe spouštˇel novˇe nakopírované programy v systému malého smˇerovaˇce, jelikož po odeslání paketu zaˇcal malý smˇerovaˇc odesílat data protokolu GiFT. 3x výzva na adresu 255.255.255.255 port 9999 Odpověď: Asus WL500gP V2, maska 255.255.255.0, fw 3.0.3.5, informace o připojeném USB disku
192.168.1.2
připojit k smbfs:\\192.168.1.1\PART0\.apps\ nakopírovat pomocné programy a skripty
192.168.1.1
(ctorrent, snarf, dmathined, giftd, gshell, dmex, rcinstall, ...)
paket s textovým řetězcem na port 9999
(.apps\bin\ctorrent; .apps\usr\gift-nasoc\bin\asus_gift&; ...)
připojit na GiFT server port 1213
(request: attach() client (Download Master) version (1.1.3.1))
Obrázek 4.2: První pˇripojení nástroje Download Master
4.3
Démon Infosvr
Pˇri sledování sít’ové komunikace nástroje Download Master s malým smˇerovaˇcem jsem zachytil paket, který uvnitˇr zaˇrízení spouštˇel skripty a programy. Paket byl smˇerován na UDP port cˇ íslo 9999. Zkoumáním dostupných zdrojových kódu˚ programového vybavení malého smˇerovaˇce se ukázalo, že uvedený port obsluhuje aplikace Infosvr. Démon Infosvr po spuštˇení otevírá soket protokolu UDP naslouchající na portu 9999 na všech sít’ových rozhraních. Po otevˇrení soketu program pˇrechází do nekoneˇcné smyˇcky, ve které se pomocí funkce select() pru˚ bˇežnˇe dotazuje na novˇe pˇríchozí data. Pokud jsou nová data k dispozici, je zavolána funkce processReq(). Cílem této funkce je naˇcíst obsah paketu do datového pole znaku˚ pdubuf o velikosti 512 B. Pakety s obsahem jiné délky jsou ignorovány. Pokud probˇehne vše v poˇrádku, naplnˇené pole znaku˚ pdubuf je pˇredáno poslední funkci processPacket() zajišt’ující dekódování a zpracování obsahu.
1. Ukázka paketu s textovým rˇ etˇezcem – viz pˇríloha B.3
25
ˇ 4. B EZPE CNOSTNÍ ZRANITELNOST V I NFOSVR
Funkce processPacket() zaˇcíná namapováním pˇreddefinované datové struktury IBOX_COMM_PKT_HDR na datové pole znaku˚ pdubuf. Struktura je obecnˇe datový typ, který je složen z více jednoduchých datových typu˚ jako napˇríklad cˇ íslo nebo pravdivostní hodnota. Pˇri dekódování paketu˚ se struktura používá k rozdˇelení souvislého bloku pamˇeti na jednotlivé promˇenné. Po namapování struktury IBOX_COMM_PKT_HDR lze pˇristupovat ke klíˇcovým promˇenným ServiceID, PacketType, OpCode a Info urˇcujících typ požadavku. Podle typu se následnˇe mapují další datové struktury na zbývající prvky pole pdubuf. typedef struct iboxPKT { BYTE ServiceID; BYTE PacketType; WORD OpCode; DWORD Info; } IBOX_COMM_PKT_HDR;
0c 15 d4 f9 01 00 18 00 04 00 00 00 04 00 ...
1f 12 02 00 00 00 00
00 00 00 00 00 00 00
00 00 a0 11 03 00 03
00 00 00 00 00 00 00
00 01 00 00 00 00 00
00 00 00 00 00 00 00
ServiceID = 0x0c PacketType = 0x15 OpCode = 0x001f Info = 0x00000000
pdubuf
Obrázek 4.3: Dekódování obsahu paketu pomocí datové struktury Bylo zjištˇeno, že funkce processPacket() zpracovává pouze pakety, které mají nastavenou položku ServiceID na hodnotu 0x0c a položku PacketType na hodnotu 0x15 jako na obrázku výše. Komunikaˇcní protokol nevyžaduje ke zpracování paketu˚ žádnou autentizaci, pˇrestože zdrojové kódy nˇejaké pokusy o implementaci autentizace heslem obsahují. Je zde k vidˇení napˇríklad datová strukturu IBOX_COMM_PKT_HDR_EX rozšírˇ ující základní strukturu o další dvˇe promˇenné Password a MacAddress. Promˇenné mají nejspíš sloužit pro zadání pˇrístupového hesla a fyzické adresy malého smˇerovaˇce, ale ovˇerˇ ovací algoritmus je zatím nedokonˇcený. Komunikaˇcní protokol se díky absenci autentizaˇcního mechanizmu stává nezabezpeˇcený a muže ˚ být snadno zneužit útoˇcníkem. Po namapování základní struktury je dekódovací funkce vˇetvena na základˇe hodnoty OpCode. Rozlišuje se deset konkrétních operaˇcních kódu˚ pokrývajících oblasti zjišt’ování informací, nastavování zaˇrízení a spuštˇení systémových pˇríkazu. ˚ Operaˇcní kódy provádˇející v systému nˇejaké zmˇeny používají promˇennou Info jako identifikátor transakce. Identifikátor zamezuje opakovanému zpracování stejných paketu. ˚ Jestliže poslednˇe zpracovaný paket mˇel stejný operaˇcní kód i identifikátor, nový paket se ignoruje. Mechanismus tak urˇcitým zpusobem ˚ brání i útoku pˇrehráním, kde se útoˇcník snaží zopakovat zachycenou sít’ovou komunikaci. 26
ˇ 4. B EZPE CNOSTNÍ ZRANITELNOST V I NFOSVR
Operaˇcní kód pro spuštˇení pˇríkazu má cˇ íselnou hodnotu 0x33, což odpovídá konstantˇe NET_CMD_ID_MANU_CMD. Konstanta je definována spolu s ostatními v hlaviˇckovém souboru iboxcom.h. Dekódovací funkce po nacˇ tení tohoto kódu provádí namapování struktury PKT_SYSCMD na další prvky datového pole pdubuf. Pomocí uvedené struktury jsou rozkódovány promˇenné cmd a len obsahující pˇríkaz ke spuštˇení a jeho délku. Maximální povolená délka je omezena konstantou MAXSYSCMD na 256 znaku. ˚ Pˇred vlastním spuštˇením pˇríkazu je textový rˇ etˇezec rozšíˇren o pˇresmˇerování standardního výstupu do souboru /tmp/syscmd.out. Obsah souboru je následnˇe naˇcítán do struktury PKT_SYSCMD_RES, ze které je sestaven paket s odpovˇedí. Na konci dekódovací funkce se paket s odpovˇedí tˇrikrát odešle, aby se pˇredešlo jeho ztrátˇe. Odpověď
Žádost 1B 1B 2B 4B 6B 32B 2B 420B
ServiceID PacketType OpCode Info MacAddress Password len cmd ...
vždy 0x0c vždy 0x15 vždy 0x0033 Náhodné Nepoužívá se Nepoužívá se Délka příkazu Příkaz
1B 1B 2B 4B 6B 2B 420B
ServiceID PacketType OpCode Info MacAddress len res
vždy 0x0c vždy 0x16 vždy 0x0033 ID žádosti MAC zařízení Délka výstupu Výstup
...
Obrázek 4.4: Obsah paketu˚ pro spuštˇení pˇríkazu Paket zjišt’ující informace o stavu malého smˇerovaˇce má operaˇcní kód 0x1f odpovídající konstantˇe NET_CMD_ID_GETINFO. Používá se napˇríklad pˇri spuštˇení nástroje Device Discovery k vyhledání zaˇrízení na síti. Souˇcástí paketu nejsou žádné dodateˇcné informace. Po jeho pˇrijetí démon Infosvr pouze sestaví odpovˇed’ složenou z nˇekolika naplnˇených datových struktur a odešle na adresu globálního všesmˇerového vysílání. IBOX_COMM_PKT_RES [8 bajtů]
1B 1B 2B 4B
ServiceID PacketType OpCode Info
= 0x0c = 0x16 = 0x1f NULL
obsazeno 443 bajtů nevyužito 69 bajtů
PKT_GET_INFO [248 bajtů]
128B PrinterInfo 32B SSID 32B NetMask 32B ProductID 16B FirmwareVersion 1B OperationMode 6B MacAddress 1B Regulation
WS_INFO_T [20 bajtů]
4B 2B 2B 5B 1B 6B
Name Channel SampleRate union u Compress Reserved
STORAGE_INFO_T [167 bajtů]
2B Capability 2B AppsStatus 32B AppsPool 32B AppsShare 1B DiskStatus 32B DiskModel 2B DiskSize 32B PrinterModel1 32B PrinterModel2
Obrázek 4.5: Vytvoˇrení odpovˇedi z datových struktur
27
ˇ 4. B EZPE CNOSTNÍ ZRANITELNOST V I NFOSVR
4.4
Vývoj exploitu
Na základˇe zjištˇených skuteˇcností jsem sestrojil exploit demonstrující zranitelnost v démonu Infosvr. První testy probˇehly už ve fázi analýzy dodávaných nástroju. ˚ Na poˇcátku jsem se snažil odeslat modifikovaný pˇríkaz u zachyceného paketu pro ovˇerˇ ení hypotetického problému. Pokus byl úspˇešný a malý smˇerovaˇc vrátil pˇredpokládanou odpovˇed’. Pro odeslání modifikovaného paketu jsem nakonec zvolil paketový generátor Mausezahn umožnující ˇ sestavit naprosto libovolný paket. Puvodní ˚ zámˇer použít bˇežnˇe dostupný program Netcat se ukázal nevyhovující, jelikož aplikace nedokáže odeslat pakety na adresu všesmˇerového vysílání. Výsledkem prvních pokusu˚ bylo vytvoˇrení parametrizovaného skriptu pro pˇríkazový interpret Bash. Skript dostal pracovní název Asusexe, což je zkratka pro sousloví Asus Execution vyjadˇrující možnost spouštˇet pˇríkazy v nˇekterých malých smˇerovaˇcích výrobce Asus. Skript simuluje chování nástroje Download Master. Nejprve odešle paket zjišt’ující informace o stavu malého smˇerovaˇce a potom pˇríkaz ke spuštˇení zadaný parametrem z pˇríkazové rˇ ádky. Skript vyžaduje root oprávnˇení, protože program Mausezahn nelze spustit pod obyˇcejným uživatelem. Prozkoumání zdrojových kódu˚ démona Infosvr pˇrineslo nové poznatky umožnující ˇ naprogramovat více sofistikovaný nástroj Asusutility. Oproti pˇredešlému skriptu navíc dokáže zpracovat odpovˇedi malého smˇerovaˇce a zobrazit duležité ˚ cˇ ásti na standardní výstup. Umí využít maximální délku pˇríkazu. Nevyžaduje posílat paket zjišt’ující základní informace o zaˇrízení pˇred provedením pˇríkazu, jelikož pokaždé generuje nový náhodný identifikátor transakce Info. Nástroj je vytvoˇren v jazyku C. 4.4.1 Použítí Program Asusutility ve své finální podobˇe umožnuje ˇ spustit pˇríkaz, zapnout terminálový server Utelnetd, zobrazit heslo administrátora nebo vyhledat zaˇrízení na zadané IP adrese. Adresa muže ˚ být pˇrímo zaˇrízení nebo všesmˇerového vysílání. Usage: asusutility [options]
options: -c - command to run on Asus wireless router -t <1/0> - enable/disable telnet -p - get http password -s - scan for router (on specificed address) -h - show this help 28
ˇ 4. B EZPE CNOSTNÍ ZRANITELNOST V I NFOSVR
4.4.2 Ukázka výstupu •
Vyhledání zaˇrízení / zjištˇení základních informací
$ ./asusutility -s 255.255.255.255 Product-ID: WL-500gP V2 Firmware: 3.0.3.5 SSID: default MAC: 90:e6:ba:f0:24:7e Netmask: 255.255.255.0 IP address: 192.168.1.1 •
Zjištˇení administrátorského hesla
$ ./asusutility -p 192.168.1.1 tajneheslo •
Spuštˇení uživatelského pˇríkazu, v tomto pˇrípadˇe výpis root adresáˇre
$ ./asusutility lrwxrwxrwx 1 drwxr-xr-x 1 dr-xr-xr-x 55 drwxr-xr-x 1 drwxr-xr-x 1 lrwxrwxrwx 1 drwxr-xr-x 1 •
192.168.1.1 0 0 3 0 0 23 0 0 0 0 0 0 0 0 0 0 0 7 0 0
-c "ls -la /" Nov 12 2008 shares -> tmp Nov 12 2008 apps Jan 1 2000 proc Nov 12 2008 mnt Jan 1 1970 dev Nov 12 2008 var -> tmp/var
Zapnutí vzdáleného terminálu
$ ./asusutility -t1 192.168.1.1 Info: system command has no output! Info: telnet should be run at 192.168.1.1 $ telnet 192.168.1.1 Trying 192.168.1.1... Connected to 192.168.1.1. Escape character is ’^]’. BusyBox v0.60.0 (2008.11.10-09:14) Built-in shell (msh) Enter ’help’ for a list of built-in commands. 29
ˇ 4. B EZPE CNOSTNÍ ZRANITELNOST V I NFOSVR
4.4.3 Omezení Nástroj lze používat pouze z místní sítˇe, pˇrestože démon Infosvr podle zdrojového kódu v souboru infosvr.c naslouchá na všech sít’ových rozhraních. Protokol vrací výstup spuštˇených pˇríkazu˚ do maximální délky 420 znaku. ˚ Pˇri pokusu vypsat napˇríklad spuštˇené procesy nebo obsah adresáˇre je vrácený výstup oˇríznut. Použití ukrytého terminálového serveru umožnuje ˇ zobrazit kompletní výstupy pˇríkazu. ˚ Server byl nalezen ve složce /usr/sbin. Jeho spuštˇení však nebylo tak jednoduché, jak se na první pohled zdálo. Na zaˇcátku programu je kontrolována hodnota promˇenné telnet_down v NVRAM pamˇeti. Jestliže je rovna nule, server se nespustí. Zapnutí terminálu je proto pˇridáno do exploitu jako samostatná funkce. Zkoumání spuštˇeného systému objasnilo poslední nejasnosti. Démon Infosvr nepˇrijímá pakety z externího sít’ového rozhraní, jelikož komunikaci blokuje Netfilter. Jak už bylo zmínˇeno v kapitole 3.1.2, nastavená pravidla nelze ze systému jednoduše získat, jelikož v programovém vybavení malého smˇerovaˇce je pouze nástroj pro import pravidel ze zadaného souboru. Procházením zdrojového kódu programu rc, zajišt’ujícího mimo jiné nastavení sítˇe, bylo v souboru firewall_ex_noipt.c nalezeno umístˇení tohoto souboru. # cat /tmp/filter/rules -A INPUT -m state --state INVALID -j DROP -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -i lo -m state --state NEW -j ACCEPT -A INPUT -i br0 -m state --state NEW -j ACCEPT -A INPUT -p udp --sport 67 --dport 68 -j ACCEPT -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT -A INPUT -j DROP
4.5
Analýza zbývajících nástroju˚
Na dodávaném CD se nachází ještˇe dva další nástroje. Aby byla analýza malého smˇerovaˇce kompletní, zamˇerˇ il jsem se i na zkoumání tˇechto nástroju. ˚ Prvním je Firmware Restoration, což je nástroj pro obnovu nebo nahrání nového firmware pomocí protokolu TFTP (Trivial File Transfer Protocol). Pˇred použitím nástroje musí být malý smˇerovaˇc pˇrepnut do režimu obnovy, který spustí TFTP server. Pˇrepnutí režimu se provádí dlouhým stiskem tlaˇcítka reset pˇri startu zaˇrízení. Použití nástroje tedy vyžaduje fyzický pˇrístup k zaˇrízení a není tedy žádnou hrozbou. 30
ˇ 4. B EZPE CNOSTNÍ ZRANITELNOST V I NFOSVR
Druhým a celkovˇe posledním nástrojem je pruvodce ˚ EZsetup wizard. Nástroj je urˇcený k jednoduché konfiguraci bezdrátového sít’ového rozhraní malého smˇerovaˇce a klientského poˇcítaˇce. Nelze jej proto používat pˇres bezdrátovou sít’. Pˇri prvním spuštˇení lze nastavit název pˇrístupového bodu a šifrování pˇrenosu. Po prvotním nastavení je tato možnost uzamˇcena a pruvodce ˚ dále slouží pouze ke konfiguraci bezdrátového sít’ového adaptéru klientského poˇcítaˇce. Klientský adaptér se konfiguruje podle nastavení pˇrístupového bodu zjišt’ovaného po síti. Paketový analyzátor Wireshark zachytil pˇri komunikaci nástroje s malým smˇerovaˇcem tˇri datové toky protokolu TCP s cílovým portem 9998. Každý datový tok obsahoval vždy pˇresnˇe dva pakety o velikosti 512 Bajtu. ˚ Obsah paketu˚ byl velice podobný paketum ˚ démona Infosvr, který však port 9998 protokolu TCP prokazatelnˇe neobsluhuje. Postupným ukonˇcováním podezˇrelých aktivních procesu˚ pomocí vzdáleného terminálu jsem identifikoval aplikaci naslouchající na daném portu. Komunikaˇcní port byl uzavˇren po ukonˇcení aplikace ots, která je ve skuteˇcnosti symbolickým odkazem na program rc. Zdrojové kódy programu rc poskytují detailní informace o formátu paketu˚ a možnostech použití. Komunikaˇcní protokol opˇet nevyžaduje autentizaci. Lze zneužít k získání nebo nastavení všech parametru˚ sít’ových rozhraní vˇcetnˇe rozhraní WAN, což neposkytuje ani pruvodce ˚ EZsetup. Útoˇcník muže ˚ napˇríklad pˇrenastavit implicitní bránu nebo podstrˇcit vlastní doménový server a provést tak MITM (Man in the Middle) útok na ostatní klienty místní sítˇe. Na druhou stranu nedovoluje spustit vlastní pˇríkaz jako démon Infosvr, a proto mu nebyla vˇenována tak velká pozornost. 1. TCP datový tok dotaz na stav nastavení
(Paket s OpCode = NET_CMD_ID_EZPROBE)
odpověď: isNotDefault=0, isSetByOts=0, ...
(Paket s OpCode = NET_CMD_ID_EZPROBE)
192.168.1.2
2. TCP datový tok nové nastavení bezdrátové sítě
(OpCode=NET_CMD_QUICKGW_EX, QuickFlag=QFCAP_WIRELESS)
192.168.1.1 port 9998
nastavení bezdrávové sítě
(OpCode=NET_CMD_QUICKGW_EX, QuickFlag=QFCAP_WIRELESS)
3. TCP datový tok signalizace dokončení změn nastavení
(OpCode=NET_CMD_QUICKGW_EX, QuickFlag=QFCAP_FINISH
potvrzení dokončení změn
(OpCode=NET_CMD_QUICKGW_EX, QuickFlag=QFCAP_FINISH
Obrázek 4.6: Prvotní nastavení bezdrátové sítˇe pruvodcem ˚ EZsetup 31
Kapitola 5
Návrh systému pro sledování sítˇe 5.1
Motivace
Malé smˇerovaˇce a ADSL modemy mohou obsahovat slabá místa umožnuˇ jící útoˇcníkovi získat úplnou kontrolu nad zaˇrízením. S plnou kontrolou lze napˇríklad odposlouchávat citlivé informace uživatelu˚ místní sítˇe nebo promˇenit zaˇrízení v souˇcást sítˇe botnet. Jak už bylo uvedeno v úvodu práce, pojem botnet oznaˇcuje sít’ nezávislých botu˚ urˇcených k rozesílání nevyžádané pošty nebo distribuovaným útokum. ˚ Sít’ je ovládána operátorem, který pomocí komunikaˇcního kanálu posílá rˇ ídicí signály. Nejˇcastˇeji je tímto kanálem komunikaˇcní protokol IRC (Internet Relay Chat) pro výmˇenu textových zpráv v reálném cˇ ase, jehož veˇrejné servery jsou dostupné po celém svˇetˇe a útoˇcníkovi poskytují urˇcitou anonymitu. Koncem roku 2009 byla rozkryta rozsáhlá botnet sít’ „Chuck Norris“ útoˇcící na malé smˇerovaˇce a podobná MIPS zaˇrízení s operaˇcním systémem GNU/Linux. Zaˇrízení byla infikována vzdáleným spuštˇením škodlivého kódu pˇres službu telnet s implicitním nebo jednoduchým pˇrístupovým heslem, které podlehlo prostému slovníkovému útoku. Po napadení systému se bot pˇripojil na rˇ ídicí IRC server a zablokoval TCP porty vzdálené správy v rozsahu 22–80, aby se skuteˇcný administrátor nemohl pˇrihlásit. Škodlivý program byl uložen pouze v operaˇcní pamˇeti, která je energeticky závislá. Jeho odstranˇení proto bylo velice jednoduché, jelikož staˇcilo odpojit napájení nebo zaˇrízení restartovat. Administrátor se o nákaze nemusel vubec ˚ dozvˇedˇet a nedostupnost služeb vzdálené správy mohl považovat jen za selhání systému. [21] Bezpeˇcnostní analýza malého smˇerovaˇce Asus WL-500gPV2 ukázala, že zaˇrízení je dobˇre zabezpeˇceno proti útokum ˚ z vnˇejší sítˇe, ale obsahuje nˇekolik závažných zranitelností v aplikacích pro interní sít. Pokud by se do této sítˇe pˇripojil útoˇcník, napˇríklad pˇres nedostateˇcnˇe zabezpeˇcenou bezdrátovou sít’ nebo infikovaný poˇcítaˇc, mohl by získat kontrolu nad celou místní poˇcítaˇcovou sítí. 32
5. N ÁVRH SYSTÉMU PRO SLEDOVÁNÍ SÍT Eˇ
bezdrátový malý směrovač WL-500gP
Útočník
WAN
LAN
slovníkový útok na telnet (pouze u reverze 1)
Dproxy exploit Infosvr exploit
Internet
bot
bot
Botnet
bot
nedostatečně zabezpečená
drátová místní síť počítač infikovanný škodlivým programem
bot
bot bot
Samba exploit
bezdrátová místní síť
Operátor
IRC server
Oběť
Obrázek 5.1: Možnosti vzdáleného spuštˇení kódu ve smˇerovaˇci WL-500gP
5.2
Požadavky na systém
Cílem nového systému je zvýšení bezpeˇcnosti a pˇridání nástroju˚ pro sledování chování zaˇrízení, zejména monitorování poˇcítaˇcové sítˇe. Nový systém by mˇel najít uplatnˇení jak v domácích sítích, kde uživatelé ocení vyšší bezpeˇcnost a pokroˇcilé sít’ové nástroje, tak i ve vˇetších firemních sítích, ve kterých zaˇrízení muže ˚ sloužit napˇríklad jako sít’ová sonda pro sbˇer a odesílaní informací do bezpeˇcnostního centra. Klíˇcové vlastnosti: • • • • • • •
aplikace bez známých zranitelností, snadná budoucí aktualizace aplikací, detekce slovníkových útoku˚ na služby, nástroje pro paketovou analýzu, exportování informací o datových tocích, odesílání systémových logu˚ na vzdálený server, plnohodnotný paketový filtr. 33
5. N ÁVRH SYSTÉMU PRO SLEDOVÁNÍ SÍT Eˇ
5.3
Výbˇer distribuce
Výhodou zaˇrízení s operaˇcním systémem GNU/Linux je dostupnost zdrojových kódu˚ a tedy možnost úpravy programového vybavení. Postupem cˇ asu vzniklo nˇekolik projektu, ˚ zamˇerˇ ených na modifikaci nebo dokonce kompletní vytvoˇrení nového univerzálního systému pro tato zaˇrízení. Pˇri hledání vhodného programového základu pro realizaci požadovaného systému jsem uvažoval nˇekolik rˇ ešení.
5.3.1 Dodávaný systém První variantou je využít pˇrímo puvodní ˚ zdrojové kódy poskytované výrobcem. Zastaralé verze programu˚ obsahující zranitelnosti je možné snadno nahradit pˇrepsáním odpovídajících zdrojových souboru˚ novými. Pˇridání dalších nástroju˚ je o nˇeco složitˇejší, protože se musí vyˇrešit pˇrípadné dynamické závislosti a upravit proces sestavování výsledného obrazu systému. Pro pˇreklad zdrojových kódu je vyžadován cross kompilátor a skupina vývojových nástroju˚ podporujících cílovou architekturu. V pˇrípadˇe zkoumaného malého smˇerovaˇce WL-500gPV2 se jedná o architekturu MIPS s instrukˇcní sadou MIPS-I. Nevýhoda použití dodávaného systému je úzká spojitost s cílovým zaˇrízením, jelikož vytvoˇrené binární soubory jsou spustitelné pouze na MIPS-I mikroprocesorech a systém obsahuje ovladaˇce pro konkrétní technické vybavení. Nový systém by rovnˇež nesplnoval ˇ požadavek snadné aktualizace, jelikož by se musel pˇri výskytu nových zranitelností znovu pˇrekompilovat a nahrát do zaˇrízení.
5.3.2 Oleguv ˚ firmware Oleguv ˚ firmware je první veˇrejnˇe rozšíˇrenou modifikací puvodního ˚ programového vybavení malých smˇerovaˇcu˚ Asus WL-5xx a WL-3xx založených na sít’ových procesorech Broadcom rˇ ady BCM47xx/53xx. Firmware aktualizuje verze programu˚ a pˇridává nové funkce jako napˇríklad SSH server, podporu IPv6, spouštˇení systému z externího USB disku se zapisovatelným souborovým systémem ext3 a skript ipkg.sh pro instalaci binárních ipkg balíˇcku˚ na USB disk. Puvodní ˚ funkcionalita systému je pˇritom plnˇe zachována. Poslední verze tohoto firmware byla uvolnˇena v roce 2008, projekt je tedy nejspíš zastaven. Nevýhody tohoto firmware jsou obdobné jako u pˇredchozí varianty, akorát snadná aktualizace systému je díky podpoˇre externího úložištˇe a ipkg balíˇcku snadno dosažitelná. [8] 34
5. N ÁVRH SYSTÉMU PRO SLEDOVÁNÍ SÍT Eˇ 5.3.3 OpenWrt Projekt OpenWrt je distribuce pro malá zaˇrízení podporující velké množství sít’ových procesoru˚ ruzných ˚ architektur. Distribuce je urˇcena hlavnˇe pro malé smˇerovaˇce plnící funkci internetové brány. Je podporována dokonce architektura Intel x86 umožnující ˇ spustit systém na bˇežných osobních poˇcítaˇcích a ve virtuálních strojích usnadnujících ˇ ladˇení. Od obvyklých systému˚ pro malé smˇerovaˇce se projekt OpenWrt odlišuje hlavnˇe v použití plnˇe zapisovatelného souborového systému namísto statického a pˇridáním balíˇckovacího systému pro správu nainstalovaných aplikací. Projekt se tak více pˇribližuje klasické GNU/Linux distribuci používané u osobních poˇcítaˇcu. ˚ Pro vývojáˇre aplikací poskytuje navíc prostˇredí pro snadné pˇridávání nových nebo portování existujících programu˚ z jiných platforem. Díky tomu dnes existuje pˇribližnˇe 2300 binárních balíˇcku˚ s programy a knihovnami, které si uživatel muže ˚ kdykoliv nainstalovat. [10] Jako základ pro navrhovaný systém se projekt OpenWrt ukázal plnˇe vyhovující, jelikož je univerzální, plnˇe modifikovatelný a obsahuje balíˇckovací systém vhodný pro pˇrípadnou aktualizaci nainstalovaných programu. ˚
5.4
Výbˇer nástroju˚
5.4.1 Paketové analýza Paketové analyzátory jsou nástroje pro analýzu sít’ového provozu. Zachytávají pakety ze sít’ového rozhraní a jejich obsah zobrazují uživateli. Nejznámˇejší zástupci jsou Tcpdump a Wireshark. Oba programy ke své funkci využívají knihovnu Libpcap, která zajišt’uje pˇrístup k datum ˚ sít’ové karty, provádí základní selekci paketu˚ pomocí zadaného pcap-filtru a poskytuje funkce pro cˇ tení a zápis souboru˚ formátu libpcap. Tcpdump je s knihovnou úzce spojen, jelikož oba spadají pod jeden projekt [13]. Tcpdump používá textové rozhraní. Zachycené pakety zobrazuje na standardní výstup nebo zapisuje do libpcap souboru. Soubory lze rovnˇež otevírat a zkoumat zachycenou komunikaci pozdˇeji. Program dokáže zobrazit hlaviˇcky paketu linkové, sít’ové a transportní vrstvy referenˇcního modelu ISO/OSI. Wireshark byl pˇredstaven už dˇríve – viz 3.2.1. Nástroj disponuje grafickým rozhraním, které však nelze v malých smˇerovaˇcích použít, protože zpravidla neobsahují grafický X server. Souˇcástí projektu je také nástroj Tshark poskytující textové rozhraní. 35
5. N ÁVRH SYSTÉMU PRO SLEDOVÁNÍ SÍT Eˇ 5.4.2 Vzdálené zachytávání paketu˚ Vˇetšina nástroju˚ pro sledování sítˇe v GNU/Linux je založena na knihovnˇe Libpcap, která zajišt’uje potˇrebné funkce pro zachytávaní paketu. ˚ Nástroje musí být spuštˇeny na monitorovaném stroji, což v nˇekterých pˇrípadech není realizovatelné. Napˇríklad nástroj Wireshark s grafickým rozhraním nelze spustit v malém smˇerovaˇci. Vˇetšinou lze grafické rozhraní nahradit textovým, ale to už nemusí být tak pˇrehledné a uživatelsky pˇrívˇetivé. Existují ruzné ˚ zpusoby ˚ jak dostat zachycené pakety do grafického rozhraní nebo aplikace na jiném poˇcítaˇci. Je možné napˇríklad zkopírovat soubory obsahující pakety nebo vytvoˇrit datovou rouru [15]. Docela sofistikované rˇ ešení nabízí upravená verze knihovny Libpcap z projektu Liberouter [11] obsahující navíc pomocný program RPCAPd. RPCAPd (Remote Packet Capture daemon) je server zpˇrístupnující ˇ pakety z lokálních sít’ových rozhraní vzdáleným klientum, ˚ pˇriˇcemž klientem muže ˚ být libovolný program založený na standardní knihovnˇe Libpcap. Upravená verze knihovny je rozšíˇrena o funkce pro vzdálené zachytávání paketu. ˚ Pˇridává nový typ sít’ového rozhraní napojeného na rpcapd server. Pro zprovoznˇení vzdáleného zachytávání staˇcí vymˇenit v systému standardní verzi knihovny za rozšíˇrenou. Vlastní klientské programy není potˇreba upravovat vubec, ˚ protože z jejich pohledu se nic nemˇení. Jedná se tedy o velice flexibilní rˇ ešení. Adresa serveru a název vzdáleného sít’ového adaptéru jsou pˇredány pomocí rˇ etˇezce popisujícího rozhraní. klient
server
IP 10.0.0.10
IP 10.0.0.5
Tcpdump # tcpdump -i rpcap://10.0.0.5/eth0
Řídící port (2002)
Wireshark GUI podpora vzdáleného zachytávání
RPCAPd # rpcapd -n -b 10.0.0.5
signály
data LIBPCAP
RPCAP API
síť
LIBPCAP
data Port pro přenos dat (náhodně zvolený)
řídící spojení UDP/TCP spojení pro přenos dat
pakety
Obrázek 5.2: Princip vzdáleného zachytávání paketu˚ pomocí RPCAPd 36
5. N ÁVRH SYSTÉMU PRO SLEDOVÁNÍ SÍT Eˇ 5.4.3 Analýza datových toku˚ Paketová analýza není vhodná pro všechny situace. Pˇri vˇetším sít’ovém provozu bývá znaˇcnˇe výkonovˇe nároˇcná, jelikož se zpracovává obsah každého paketu. V pˇrípadˇe vzdáleného zachytávání paketu˚ je analýza nároˇcná i na kapacitu linky. Pokud není nastaven žádný filtr, jsou všechny pruchozí ˚ pakety odesílány na vzdálený poˇcítaˇc ke zpracování. V nejhorším pˇrípadˇe je tedy potˇreba dvojnásobná kapacita linky. Další nevýhoda paketové analýzy je ztráta soukromí komunikujících uživatelu. ˚ V poslední dobˇe se cˇ astˇeji používá analýza datových toku. ˚ Datový tok je proud paketu˚ mezi dvˇema cíli. Je popisován pˇeticí údaju, ˚ kterými jsou zdrojová IP adresa, cílová IP adresa, zdrojový port, cílový port a typ transportního protokolu. Pro pˇrenos informací o datových tocích byl firmou Cisco Systems vytvoˇren protokol NetFlow [2], který se stal jakýmsi svˇetovˇe uznávaným standardem. Postupem cˇ asu vznikalo více verzí tohoto protokolu, pˇriˇcemž momentálnˇe nejpoužívanˇejší je v5, v9 a IPFIX. Protokol rozšiˇruje základní pˇetici o nové údaje charakterizující datové toky, jako napˇríklad poˇcet paketu˚ a bajtu˚ pˇrenesných v datovém toku, cˇ asové znaˇcky prvního a posledního paketu a další. Datové toky mají i své nevýhody. Jelikož vlastní obsah paketu˚ je zahazován, nelze provádˇet detekci narušení sít’ové bezpeˇcnosti pomocí hloubkové paketové analýzy. Pro detekci se musí použít alternativní metody, které nejsou zatím dostupné pro všechny typy útoku. ˚ Na druhou stranu, praxe ukazuje, že analýza datových toku˚ dokáže odhalit anomálie na síti už dnes. Napˇríklad popisovaný botnet „Chuck Norris“ byl odhalen právˇe pomocí této analýzy. Sbˇer informací o datových tocích probíhá na sondách. Sondy odesílají nasbírané informace pomocí NetFlow protokolu na kolektor, který provádí uložení a zpracování. Informace se ukládají do souboru˚ nebo databáze. Pˇri zpracování mohou být datové toky vypsány, graficky znázornˇeny nebo mohou být podle nich generovány nˇejaké události, jako napˇríklad odeslání varovného emailu správci sítˇe. V pˇrípadˇe navrhovaného systému pobˇeží v malém smˇerovaˇci pouze sonda pro sbˇer dat realizovaná programem nProbe [6]. Kolektor si uživatel muže ˚ vytvoˇrit podle individuálních požadavku˚ na jiném poˇcítaˇci napˇríklad pomocí programu Nfdump [4] s webovým rozhraním Nfsen [5] umožnujícím programovat vlastní zásuvné moduly. Alternativnˇe lze jako kolektor použít projekt Ntop [7].
37
5. N ÁVRH SYSTÉMU PRO SLEDOVÁNÍ SÍT Eˇ 5.4.4 Systémové logy Systémové logy jsou záznamy zpráv generovaných primárnˇe aplikacemi spuštˇenými na pozadí. Ukládání zpráv zajišt’uje daemon Syslogd. Každá zpráva obsahuje kromˇe vlastního sdˇelení i typ a prioritu umožnující ˇ snadnˇejší zpracování. Rozlišují se priority: Emergency, Alert, Critical, Error, Warning, Notice, Info a Debug. Typy zpráv jsou: auth, authpriv, cron, daemon, ftp, kern, lpr, mail, news, syslog, user, uucp a local 0 až 7. Do systémového logu lze zapisovat ruzné ˚ informace usnadnující ˇ diagnostiku zaˇrízení, jako napˇríklad neplatné pokusy o autentizaci. Záznamy zpráv se v malých smˇerovaˇcích vˇetšinou ukládají do souboru v doˇcasné pamˇeti, která je po výpadku napájení nebo restartu zaˇrízení vymazána. Soubor má pevnˇe danou velikost rˇ ádovˇe v desítkách kilobajtu. ˚ Po jeho zaplnˇení jsou záznamy pˇrepisovány. Daemon Syslogd kromˇe ukládání záznamu do souboru podporuje i odesílání zpráv na vzdálený Syslogd server. 5.4.5 Hloubková paketová analýza Hloubková paketová analýza prohledává obsah celého paketu. Využívá se hlavnˇe v oblasti bezpeˇcnosti pro odhalování sít’ových útoku. ˚ Systémy pro detekci narušení bezpeˇcnosti se oznaˇcují zkratkou IDS (Intrusion Detection System). Pˇri detekci problému odesílají upozornˇení na definovaný výstup. Kromˇe detekˇcních systému˚ existují i systémy prevence narušení IPS (Intrusion Prevention System) umožnující ˇ pˇredcházet prunik ˚ um ˚ zablokováním podezˇrelé sít’ové komunikace. IPS systémy vyžadují aktivní pˇripojení do poˇcítaˇcové sítˇe, aby mohly pruchozí ˚ pakety blokovat. Pro operaˇcní systém GNU/Linux existuje svobodná implementace systému detekce a prevence narušení v podobˇe programu Snort [12]. Program lze spustit v režimu Sniffer, Packet Logger, NIDS (Network Intrusion Detection System) a Inline mode. První dva režimy provádí pouze paketovou analýzu obdobnˇe jako program Tcpdump. Poslední dva spouští systém detekce nebo prevence narušení. Oba jsou založeny na stejném detekˇcním mechanismu. Rozdíl je ve zpusobu ˚ získávání paketu˚ a reakci na událost. Inline režim získává pakety z NetFilter iptables a podle potˇreby je akceptuje nebo zahodí. Režim NIDS získává pakety pˇres knihovnu Libpcap a incidenty oznaˇcované jako Alert ukládá do systémového logu, souboru nebo odesílá do databáze. Snort dokáže detekovat poˇcítaˇcové cˇ ervy, útoky na známé zranitelnosti aplikací, DoS útoky, útoky hrubou silou na autentizaci služeb bez SSL šifrování a další anomálie na síti jako napˇríklad výskyt nekorektních paketu. ˚ 38
5. N ÁVRH SYSTÉMU PRO SLEDOVÁNÍ SÍT Eˇ Detekˇcní mechanismus je založen hlavnˇe na hledání vzoru˚ a dekodérech protokolu. ˚ Vzory jsou unikátní znakové rˇ etˇezce uvnitˇr paketu˚ identifikující hrozby. Dekodéry na základˇe znalosti protokolu ovˇerˇ ují správnou strukturu a hodnoty paketu. ˚ Nekorektní paket muže ˚ vzniknout cˇ istˇe náhodou chybou pˇrenosu nebo úmyslnˇe k útoku na slabé místo cílové aplikace. Snort je složen z nˇekolika cˇ ástí. Najdeme zde dekodér, preprocesory, vlastní detekˇcní jednotku a výstupní moduly. Dekodér je urˇcen k rozkódování hlaviˇcky IP paketu pro další zpracování. Provádí také ovˇerˇ ování korektnosti IP paketu podle definovaných pravidel. Preprocesoru˚ existuje víc. Používají se pro pˇrípravu dat pro dekódovací jednotku a také pro detekci nˇekterých útoku˚ jako napˇríklad skenování portu. ˚ Pˇrípravou dat je myšleno napˇríklad spojení paketu˚ jednoho datového toku do souvislého bloku dat, aby bylo možné vyhledávat signatury pˇrekraˇcující délku jednoho paketu. Poslední cˇ ástí jsou výstupní moduly, které zajišt’ují ukládání výstupu do souboru, syslogu nebo komunikaci s databází. [20] Dekodér, preprocesory a detekˇcní jednotka poskytují funkce pro detekci hrozeb. Vlastní hrozby se definují pomocí textových souboru˚ s pravidly. Každé pravidlo odpovídá právˇe jedné hrozbˇe. Pravidla jsou do souboru˚ rozdˇelena podle adekvátních oblastí. Pˇred spuštˇením programu je potˇreba nastavit, které preprocesory, výstupní moduly a sady pravidel se mají použít. Sady pravidel nejsou standardnˇe souˇcástí programu a musí se stahovat explicitnˇe. Pˇrestože vlastní program je nabízen zdarma, nejnovˇejší pravidla jsou zpoplatnˇena. Zdarma jsou pouze pravidla mˇesíc stará.
5.5
Shrnutí
Navrhovaný systém bude vycházet ze základní distribuce OpenWrt rozšírˇ ené o popsané sít’ové nástroje. Bude pˇridán paketový analyzátor Tcpdump, upravená knihovna Libpcap s RPCAPd, sonda nProbe pro sbˇer informací o datových tocích a systém pro detekci narušení Snort. Nalezené hrozby budou ukládány do systémového logu. Nástroj Wireshark a pˇrípadnˇe další nástroje založené na knihovnˇe Libpcap bude možné díky serveru RPCAPd spouštˇet vzdálenˇe pˇrímo z poˇcítaˇce uživatele. Plnohodnotný paketový filtr je pˇrítomen pˇrímo v distribuci. Systém bude možné ovládat pˇres bezpeˇcný terminál SSH nebo implicitní webové rozhraní LuCI distribuce OpenWrt.
39
Kapitola 6
Realizace navrženého systému OpenWrt je dostupné jak formou zdrojových kódu, ˚ tak v binární podobˇe zkompilované pro ruzné ˚ platformy. Binární obraz obsahuje vybrané programy pokrývající základní funkce malých smˇerovaˇcu. ˚ Velké množství dalších lze doinstalovat formou balíˇcku. ˚ Distribuce OpenWrt rozdˇeluje volnou Flash pamˇet’ malého smˇerovaˇce na dvˇe cˇ ásti se souborovými systémy SquashFS a JFFS2. První cˇ ást oznaˇcovaná jako rootfs obsahuje celý binární obraz a je pouze ke cˇ tení. Druhá cˇ ást rootfs_data je ke cˇ tení i zápisu a používá se pro ukládání dat. Korˇ enový adresáˇr systému je vytvoˇren spojením obou cˇ ástí, pˇriˇcemž data uložená na oddílu rootfs_data mají pˇrednost. V adresáˇrové struktuˇre je tento oddíl pˇripojen jako adresáˇr overlay, což umožnuje ˇ snadnou zálohu doinstalovaných programu˚ a nastavení. Vymazání obsahu adresáˇre vrátí zaˇrízení do stavu po instalaci firmware. ---------------------------------------------0 - 128 KiB (CFE) / (rootfs) 128 - 8128 KiB (LINUX) ---> 8128 - 8192 KiB (NVRAM) \ (rootfs_data) ---------------------------------------------Pˇri realizaci nového systému mˇe napadly dva zpusoby, ˚ jak výsledný systém pˇripravit pro koncové uživatele. Lze vytvoˇrit binární obraz obsahující všechny požadované nástroje, který by staˇcilo pouze nahrát do zarˇ ízení. Nevýhodou je, že všechna data kromˇe nastavení by byla v rootfs oddílu, což zpusobuje ˚ duplicity programu˚ v pamˇeti a zmenšení velikosti zapisovatelného oddílu. Duplicity vznikají, protože puvodní ˚ program pˇri aktualizaci nelze vymazat a je tedy znovu zapsán do rootfs_data. Druhým uvažovaným rˇ ešením je využít vlastnosti rozdˇelené pamˇeti a vytvoˇrit ze složky overlay archív, který by si uživatel rozbalil na zapisovatelný oddíl do novˇe nainstalovaného firmware. Alternativnˇe lze obsah archivu uložit na externí USB disk a pˇrímo jej pˇripojit do systému jako složku overlay. Tím by byly vyˇrešeny problémy spojené s aktualizací a systém by byl stále rychle použitelný. 40
6. R EALIZACE NAVRŽENÉHO SYSTÉMU Jako základ pro navržený systém jsem vybral binární obraz OpenWrt verze 10.03 s kódovým oznaˇcením Backfire. Jedná se o aktuálnˇe poslední stabilní verzi. Pro sít’ový procesor BCM5354 existují dvˇe vydání oznaˇcovaná brcm-2.4 a brcm47xx. První obsahuje jádro rˇ ady 2.4 a je udržováno pouze kvuli ˚ ovladaˇcum ˚ pro integrované bezdrátové rádio, které jsou k dispozici pouze v binární podobˇe pro toto jádro. Druhé používá souˇcasné jádro rˇ ady 2.6 a je urˇceno pro malé smˇerovaˇce s jiným než Broadcom rádiem. Použil jsem tedy brcm-2.4. Po prozkoumání seznamu dostupných balíˇcku˚ jsem zjistil, že chybí jen balíˇcek pro program RPCAPd. Cílem realizace systému je tedy vytvoˇrit tento balíˇcek, doinstalovat programy, ovˇerˇ it jejich funkci a vytvoˇrit archív s obsahem zapisovatelného oddílu pro rychlejší nasazení systému u koncových uživatelu. ˚
6.1
Úvod do kompilace OpenWrt
Zdrojové kódy projektu OpenWrt ve skuteˇcnosti neobsahují pˇrímo kód, ale pouze rˇ ídící skripty a šablony zajišt’ující stažení, úpravu, zkonfigurování a zkompilování programu. ˚ Šablony vˇetšinou obsahují složku patches pro záplaty, složku files pro dodateˇcné soubory, soubor Config.in pro zpˇrístupnˇení voleb pˇrekladu konfiguraˇcnímu procesu a hlavnˇe speciální soubor Makefile definující odkud zdrojové kódy programu stáhnout a jak je pˇreložit. Záplaty se používají pro pˇrizpusobení ˚ zdrojových kódu˚ prostˇredí vestavˇených systému. ˚ Jsou to textové soubory obsahující soupis rozdílu˚ mezi puvodními ˚ a upravenými soubory. Šablony jsou rozdˇeleny do následující adresáˇrové struktury: • • • •
Package – programy a jádro, ze kterých se pak vytváˇrí balíˇcky. Toolchain – cross kompilátor, knihovna uCLibc a další nástroje pro pˇreklad aplikací do strojového kódu vybrané platformy. Tools – pomocné nástroje nepˇrímo závislé na platformˇe pro vytváˇrení binárního obrazu, ipkg balíˇcku, ˚ souborového systému a další. Target – obsahuje vˇeci specifické pro konkrétní platformu, hlavnˇe modifikace linuxového jádra a popis formátu binárního obrazu.
Po stažení a rozbalení archívu OpenWrt se musí projekt nakonfigurovat. Konfigurace se provádí obdobnˇe jako u linuxového jádra spuštˇením pˇríkazu „make menuconfig“. Pˇríkaz zobrazí nabídku pro výbˇer platformy, souborového systému, modulu˚ jádra a programu. ˚ Po ukonˇcení je nastavení 41
6. R EALIZACE NAVRŽENÉHO SYSTÉMU uloženo v souboru .config. Vybrané programy a moduly jádra lze oznacˇ it písmenem M nebo hvˇezdiˇckou. Hvˇezdiˇcka se používá pro zaˇclenˇení položky do binárního obrazu a vytvoˇrení binárního ipkg balíˇcku. Písmeno M vytváˇrí pouze balíˇcek. Základní archív obsahuje pouze šablony cˇ asto používaných programu. ˚ Zbytek je potˇreba stáhnout dodateˇcnˇe ze Subversion serveru. Pro usnadnˇení práce existuje pˇríkaz „make package/symlinks“, který stáhne všechny šablony balíˇcku˚ do nové složky feeds, vytvoˇrí indexové soubory a zavede symbolické odkazy stažených šablon do složky package/feeds. Vytvoˇrení odkazu˚ zpˇrístupní nové programy v konfiguraˇcní nabídce. Po nahlédnutí do odpovídajícího Makefile lze zjistit, že pˇríkaz ve skuteˇcnosti volá skript feeds ze složky scripts. Šablony lze pomocí skriptu pˇridávat i jednotlivˇe, což je pro vˇetšinu pˇrípadu˚ lepší, jelikož konfiguraˇcní nabídka neobsahuje zbyteˇcnˇe všech 2300 programu. ˚ Pˇridání šablon pro programy tcpdump, nprobe a snort se provede následovnˇe. $ scripts/feeds update $ scripts/feeds install tcpdump nprobe snort Po zkonfigurování projektu lze pˇreklad spustit pˇríkazem „make“. Pˇríkaz nejprve zkompiluje podpurné ˚ nástroje ze složky tools a toolchain, potom jádro systému a nakonec jednotlivé balíˇcky s programy. Prubˇ ˚ eh kompilace se ukládá do doˇcasných souboru˚ ve vytvoˇreném adresáˇri build_dir. Hotové podpurné ˚ nástroje jsou zkopírovány do nové složky staging_dir. Pˇred kompilací jednotlivých programu˚ jsou postupnˇe stahovány jejich zdrojové kódy do složky dl. Výsledný binární obraz a binární ipkg balíˇcky jsou uloženy ve složce bin. [17] [18]
6.2
Vytvoˇrení nového balíˇcku
Projekt OpenWrt nabízí více vývojových prostˇredí pro ruzné ˚ úkony: •
•
•
OpenWrt SDK (Software Development Kit) je urˇceno pro vytváˇrení nových balíˇcku˚ bez potˇreby kompilace ostatních programu˚ a nástroju. ˚ Obsahuje zkompilované tools, toolchain a knihovny pro konkrétní cílovou platformu a architekturu hostitelského poˇcítaˇce. Image Builder používá se pro rychlé vytváˇrení binárních obrazu˚ bez kompilace. Obsahuje všechny dostupné binární balíˇcky a nezbytné nástroje pro vytvoˇrení výsledného firmware. Buildroot oznaˇcuje kompletní vývojové prostˇredí. 42
6. R EALIZACE NAVRŽENÉHO SYSTÉMU Proces vytváˇrení balíˇcku je ve skuteˇcnosti pouze pˇríprava nové šablony, tedy hlavnˇe vytvoˇrení souboru Makefile. Soubor je zakonˇcen voláním makra BuildPackage zajištujícího zpracování následujícího obsahu. Základní promˇenné •
• •
PKG_NAME – Název vytváˇreného balíˇcku. Nemusí odpovídat názvu výsledného ipkg balíˇcku ani názvu položky v konfiguraˇcní nabídce. Jeden Makefile muže ˚ totiž vytváˇret více balíˇcku˚ a položek. PKG_VERSION – Verze stahovaného programu. PKG_RELEASE – Verze vydání balíˇcku.
Nastavení zdroje • • •
PKG_SOURCE – Název souboru se zdrojovým kódem. PKG_SOURCE_URL – Adresa umístˇení souboru. PKG_MD5SUM (nepovinné) – Kontrolní souˇcet staženého souboru.
Uvedené promˇenné popisují stažení souboru z webového serveru protokolem HTTP. Jsou podporovány i další typy jako SVN, CVS, GIT nebo lokální úložištˇe. Po nastavení promˇenných následují definice popisující konfiguraci, kompilaci a instalaci programu. Jestliže nˇekterá z definic není uvedena, použije se implicitní. Staˇcí tedy pˇridat pouze specifické oblasti. Definice •
• • • • • • •
Package/ – Nastavuje informace o balíˇcku pro konfiguraˇcní nabídku a výsledný balíˇcek. Obsahuje krátký popis, kategorii, seznam pˇrípadných závislostí a kontaktní informace. Package//description – Pˇridává dlouhý popis balíˇcku. Package//config – Obdoba souboru Config.in. Build/Prepare – Ovlivnuje ˇ pˇrípravu zdrojových kódu, ˚ hlavnˇe rozbalení archívu a aplikaci záplat. Build/Configure – Ovlivnuje ˇ konfiguraci programu. Používá se k pˇredání speciálních voleb skriptu ./Configure. Build/Compile – Ovlivnuje ˇ pˇreklad programu. Build/InstallDev – Popisuje instalaci knihoven a hlaviˇckových souboru˚ pˇreloženého programu. Package//install – Popisuje instalaci všech souboru˚ nezbytných pro funkci programu. 43
6. R EALIZACE NAVRŽENÉHO SYSTÉMU 6.2.1 Balíˇcek libpcap-rpcap Pro vytvoˇrení nového RPCAPd balíˇcku jsem zvolil kompletní vývojové prostˇredí, jelikož SDK není zatím pro verzi Backfire na oficiální webové stránce ke stažení. V pˇrípadˇe potˇreby lze Image Builder i SDK vygenerovat ze zdrojových kódu˚ projektu dodateˇcnˇe. Puvodnˇ ˚ e jsem si myslel, že program RPCAPd bude fungovat i se standardní verzí knihovny Libpcap. Ukázalo se ale, že tato verze zpusobuje ˚ pˇri odpojení klienta od RPCAPd serveru neoprávnˇený pˇrístup do pamˇeti a používat tedy nelze. Nový balíˇcek proto obsahuje jak program RPCAPd, tak i upravenou verzi knihovny. Aby nedocházelo ke konfliktum ˚ se standardní verzí, rozhodl jsem se její název pˇrejmenovat na libpcap-rpcap. Pˇri vytváˇrení šablony jsem vycházel ze šablony standardní knihovny. Nejprve jsem pˇrepsal promˇenné v souboru Makefile na nové hodnoty a odstranil nekompatibilní záplaty. První pˇreklad se zastavil hned pˇri spuštˇení skriptu ./Configure, jelikož obsahoval chybu v detekci pˇrítomnosti nástroje Yacc. Chyba je v privátní SVN verzi knihovny už opravena, a tak stacˇ ilo vytvoˇrit pouze pˇríslušnou záplatu. Další problém nastal pˇri vkládání hlaviˇckového souboru string.h z knihovny uClibc. Problém jsem odstranil další záplatou rušící závislost na tomto souboru. Poslední záplata pˇrejmenovává název knihovny ve zdrojových kódech a pˇridává instalaci rpcapd serveru, která se jinak spouští pˇríkazem „make install-rpcapd“. Takto upravený soubor Makefile1 a složku patch obsahující záplaty jsem zkopíroval do nového adresáˇre libpcap-rpcap ve složce package. Všechny šablony v této složce jsou automaticky pˇridávány do konfiguraˇcního menu. Pro pˇreklad balíˇcku v cˇ istém Buildroot prostˇredí je potˇreba nejprve pˇreložit pomocné nástroje tools a toolchain. Nástroje a nový balíˇcek lze pˇreložit dˇríve popsaným pˇríkazem „make“, který spouští pˇreklad celého projektu, nebo spouštˇením jednotlivých souboru˚ Makefile oddˇelenˇe: $ make tools/install $ make toolchain/install $ make package/libpcap-rcap-clean $ make package/libpcap-rcap-compile
1. Obsah souboru Makefile - viz pˇríloha D
44
6. R EALIZACE NAVRŽENÉHO SYSTÉMU
6.3
Instalace systému
Pro nasazení navrženého systému na malý smˇerovaˇc Asus WL-500gP revize 2 je potˇreba nejprve nainstalovat binární obraz OpenWrt verze 10.03 pro platformu brcm-2.4. Obraz lze stáhnout z domácí stránky projektu [10]. Stažený obraz se do zaˇrízení nahrává pˇres TFTP protokol. Pˇred nahráním se zaˇrízení musí pˇrepnout do diagnostického režimu. Pˇrepnutí se provádí podržením tlaˇcítka reset po pˇripojení napájecího kabelu. Diagnostický režim je signalizován pomalu blikající kontrolkou napájení. Poˇcítaˇc, ze kterého bude obraz kopírován musí být pˇripojen do ethernetového portu LAN1 a mít pevnˇe nastavenou IP adresu z rozsahu 192.168.1.0/24. Pˇred samotným pˇrenosem obrazu je dobré ovˇerˇ it komunikaci s malým smˇerovaˇcem nástrojem ping. Malý smˇerovaˇc by mˇel odpovídat na adrese 192.168.1.1. Pˇrenos obrazu se provede pomocí TFTP klienta následovnˇe: $ tftp 192.168.1.1 tftp> binary tftp> trace tftp> put openwrt-brcm-2.4-squashfs.trx Obraz se nejprve kopíruje do operaˇcní pamˇeti, kde se zkontroluje kontrolní souˇcet. Poté je kopírován do pamˇeti permanentní. Bˇehem tohoto procesu nesmí dojít k výpadku napájení, jinak muže ˚ dojít k poškození programového vybavení. V pˇrípadˇe poškození zavadˇecˇ e se stává zaˇrízení nefunkˇcní a pomuže ˚ jen pˇreprogramování pamˇet’ového cˇ ipu. Pˇrenos obrazu travá necelých 10 sekund, zaˇrízení by mˇelo zustat ˚ v klidu alesponˇ 6 minut po skonˇcení pˇrenosu. Po úspˇešném pˇrehrání firmware by mˇelo dojít k auˇ tomatickému restartování zaˇrízení. Casto se ale tak nedˇeje a po uplynutí bezpeˇcné hranice je potˇreba zaˇrízení restartovat ruˇcnˇe. [9] Pˇri prvním spuštˇení systému je dostupný pouze telnet server primárnˇe urˇcený pro vytvoˇrení pˇrístupového hesla uživatele root. Po jeho zadání je telnet zablokován a pˇrístup k terminálu je realizován pˇres zabezpeˇcený SSH protokol. Nastavení sítˇe a nˇekterých služeb lze provést také pˇres webové rozhraní LuCI. Po nakonfigurování sítˇe lze instalovat nové balíˇcky z pˇrednastavených oficiálních repositáˇru˚ nástrojem opkg. Pˇred instalací je nutné aktualizovat seznam dostupných balíˇcku˚ pˇríkazem „opkg update“. Instalace nebo odstranˇení se potom provádí s parametry „install“ a „remove“. # opkg update # opkg install tcpdump nprobe zlib snort-wireless # opkg install /tmp/libpcap-rpcap_1.1.1-1_brcm-2.4.ipk 45
6. R EALIZACE NAVRŽENÉHO SYSTÉMU Pˇredchozí ukázka demonstruje, jak doinstalovat do cˇ istého systému navrhované nástroje. Alternativnˇe lze využít pˇripravený archív s obsahem zapisovatelného oddílu, který byl používán pˇri ovˇerˇ ování funkcionality systému. Archív staˇcí pˇrenést do zaˇrízení a rozbalit do adresáˇre overlay. Zapisovatelný oddíl obsahuje veškeré nastavení malého smˇerovaˇce vˇcetnˇe pˇrístupového hesla a vygenerovaných primárních šifrovacích klíˇcu. ˚ Kromˇe bˇežných souboru˚ se na zapisovatelný oddíl ukládají i meta informace o souborech smazaných z rootfs oddílu. Informace se ukládají do textových souboru˚ s prefixem META. Pˇrehrání obsahu složky overlay by se proto nemˇelo provádˇet na už zkonfigurovaném systému. # # # #
rm -rf /overlay/* cd / tar -xf /tmp/opnwrt-10.03-security_tools_overlay.tar reboot
6.4
Ovˇerˇení funkˇcnosti
Pro ovˇerˇ ování funkˇcnosti jsem použil kromˇe malého smˇerovaˇce WL-500gP verze 2 s adresou 192.168.1.1 ještˇe notebook s adresou 192.168.1.10. Notebook byl pˇripojen k LAN rozhraní malého smˇerovaˇce. Royhraní WAN bylo pˇripojeno do sítˇe Internet. Pro pˇrehlednost budu uvedený malý smˇerovaˇc v následujícím textu oznaˇcovat jen jako smˇerovaˇc. 6.4.1 Tcpdump Nástroj nevyžaduje žádnou konfiguraci a lze tedy rovnou spustit. Pokud není zadán žádný parametr, spustí se zachytávání paketu˚ na prvním dostupným sít’ovým rozhraním. Vnitˇrní rozhraní LAN je ve smˇerovaˇci oznacˇ eno jako eth0.0, vnˇejší rozhraní WAN jako eth0.1. Pˇri testování programu jsem zjistil, že smˇerovaˇc dokáže sít’ový provoz s rychlostí pˇribližnˇe 20 Mbit/s zobrazit bez ztráty paketu. Pˇri této rychlosti dosahuje celkové zatížení mikroprocesoru maximální hodnoty 99%. Vlastní program pˇritom spotˇrebovává jen 58%, zbytek používá SSH server Dropbear pro odeslání textového výstupu klientovi. Spotˇreba pamˇeti je konstantní okolo 5 MB. Sít’ový provoz jsem generoval programem Iperf urcˇ eným k mˇerˇ ení propustnosti sítˇe. Program umožnuje ˇ odesílat UDP pakety nastavenou rychlostí. Implicitnˇe používá port 5001. root@OpenWrt:~# tcpdump -n -i eth0.0 port 5001 13392 packets received by filter 0 packets dropped by kernel 46
6. R EALIZACE NAVRŽENÉHO SYSTÉMU 6.4.2 RPCAPd Server umožnující ˇ vzdálené zachytávání paketu˚ jsem testoval obdobnˇe jako Tcpdump. Programem Iperf jsem postupnˇe zvyšující se rychlostí odesílal UDP pakety a sledoval zatížení procesoru a poˇcet zahozených paketu. ˚ První pakety se zaˇcaly zahazovat už pˇri rychlosti 8 Mbit/s, pˇrestože zatížení mikroprocesoru dosahovalo pouze hodnoty 43%. Horní hranice je rychlost 12 Mbit/s, pˇri které zatížení mikroprocesoru stouplo na 99%. Spotˇreba pamˇeti se liší podle stavu programu. Bez pˇripojeného klienta spotˇrebovává 1.6 MB. Po jeho pˇripojení se použitá pamˇet’ zvýší na 6 MB. RPCAPd lze spustit v démon nebo interaktivním režimu. Komunikace mezi klientem a serverem není nikterak šifrována. Z toho duvodu ˚ není dobré zapínat autentizaci klienta heslem, jelikož muže ˚ být snadno na síti odposlechnuto. Jako obranu proti neautorizovanému pˇrístupu lze použít seznam povolených IP adres. Další možností je vytvoˇrení šifrovaného kanálu. V prostˇredí vestavˇených systému˚ tomu ale brání nedostatek výpoˇcetního výkonu zpusobující ˚ snížení propustnosti. Klientem serveru muže ˚ být jakákoliv aplikace založená na knihovnˇe Libpcap. V operaˇcním systému GNU/Linux je nutné použít upravenou verzi knihovny z projektu Liberouter. V systému Windows staˇcí standardní knihovna WinPCAP poskytující obdobnou funkcionalitu. server # rpcapd -b 192.168.1.1 -n klient # tshark -i rpcap://192.168.1.1/eth0.0 port 5001 Parametry serveru: • • • •
-b – IP adresa, na které bude server pˇrijímat klienty, -l <seznam> – seznam adres povolených klientu, ˚ -d – spouští aplikaci na pozadí, -n – vypnutí autentizace heslem.
6.4.3 nProbe Exportér datových toku˚ je z testovaných nástroju˚ nejménˇe výkonovˇe nároˇcný. Dokáže úspˇešnˇe analyzovat sít’ovou komunikaci s rychlostí okolo 40 Mbit. Program obsahuje mnoho parametru. ˚ Pˇri testování základní funkcionality jsem si vystaˇcil s parametrem pro výbˇer sít’ového rozhraní a specifikaci adresy pˇríjemce datových toku. ˚ # nprobe -i eth0.0 -n 192.168.1.10:9995 47
6. R EALIZACE NAVRŽENÉHO SYSTÉMU Jako pˇríjemce informací o datových tocích jsem vybral projekt Nfdump, který se skládá z nˇekolika samostatných aplikací. Program pro zachytávání informací se nazývá Nfcapd. Pˇri jeho spuštˇení je potˇreba zadat alesponˇ složku pro ukládání záznamu. ˚ Pokud není uvedeno jinak, aplikace naslouchá na portu 9995 protokolu UDP. Parametrem -E lze zapnout výpis surových pˇríchozích dat na standardní výstup. # nfcapd -l /tmp/ -E 6.4.4 Snort Posledním provˇerˇ ovaným nástrojem je Snort. V repositáˇri OpenWrt jsou pˇripraveny balíˇcky snort-wireless a snort. První je založen na verzi 2.4.3, druhý na novˇejší 2.8.4. Balíˇcek s novou verzí nelze do smˇerovaˇce nainstalovat, jelikož po rozbalení zabírá 6.9 MB. Nainstaloval jsem proto verzi starší, která je navíc speciálnˇe upravená pro detekci útoku˚ na bezdrátovou sít’. Po nainstalování je potˇreba pˇridat pravidla pro detekci hrozeb. Pravidla se standardnˇe stahují na domácí stránce programu, jenomže verze 2.4.3 už není podporovaná. Souˇcasná rˇ ada programu nese oznaˇcení 2.9. Naštˇestí jsou na Internetu i alternativní sady pravidel1 . Hlavní konfigurace programu se provádí pomocí souboru snort.conf, ve kterém je potˇreba nastavit základní promˇenné sítˇe, preprocesory, výstupní ˇ moduly a vybrat požadované sady pravidel. Cím více pravidel a preprocesoru˚ je vybráno, tím vˇetší zátˇež pro systém program je. Protože smˇerovaˇc má pouze omezené zdroje, rozhodl jsem se nastavit jen detekci slovníkových útoku˚ a skenování portu. ˚ Slovníkové útoky lze detekovat pouze u služeb používajících autentizaci v otevˇreném tvaru, jako napˇríklad FTP. Pro ovˇerˇ ení detekce zmínˇených útoku jsem nejprve do smˇerovaˇce doinstaloval FTP server Vsftpd. Na pˇrenosném poˇcítaˇci jsem si pˇripravil skener portu˚ Nmap a program THC-Hydra pro provedení slovníkového útoku. Oba útoky Snort správnˇe detekoval a oznámil v systémovém logu. # logread -f Jan 10 07:38:52 OpenWrt auth.alert snort: [1:2002835:3] BLEEDING-EDGE SCAN FTP Brute Force Attempts [Classification: Potentially Bad Traffic] [Priority: 2]: {TCP} 192.168.1.1:21 -> 192.168.1.10:60356 Jan 10 07:35:04 OpenWrt auth.alert snort: [122:1:0] (portscan) TCP Portscan {PROTO255} 192.168.1.10 -> 192.168.1.1
1. http://www.bleedingsnort.com/downloads/
48
Kapitola 7
Závˇer Práce vznikla díky objevu botnetu „Chuck Norris“, který zkoušel napadnout nˇekterá zaˇrízení v síti Masarykovi univerzity pˇres slovníkový útok na telnet server. Pro sledování vnitˇrního chování vestavˇených systému˚ se musela použít externí sonda pˇripojená na sít’ové rozhraní, protože zaˇrízení takovou funkcí neposkytovalo. Prvním úkolem bylo prozkoumat zabezpeˇcení vybraného malého smˇerovaˇce a odhalit pˇrípadné další zpusoby ˚ získání vzdáleného pˇrístupu k systémové konzoli. Pomocí bezpeˇcnostních skeneru˚ jsem identifikoval potenciálnˇe použitelné zranitelnosti v Samba serveru, ale nepodaˇrilo se mi sehnat žádný program, který by je prakticky používal. Pokraˇcoval jsem zkoumáním zdrojových kódu˚ programového vybavení a podle zjištˇených názvu˚ a verzí programu˚ odhalil další závažnou zranitelnost v DNS proxy serveru. Ke zranitelnosti existuje exploit, který ale není urˇcen pˇrímo pro MIPS architekturu. Výstupem pruzkumu ˚ bylo podrobné sepsání všech nalezených bezpeˇcnostních problému. ˚ Analýzou chování nástroju˚ dodávaných k zaˇrízení jsem zachytil podezˇrelou sít’ovou komunikaci, která odhalila závažnou bezpeˇcnostní zranitelnost v démonu Infosvr. Zranitelnost umožnuje ˇ vzdálené provedení pˇríkazu. Pomocí zranitelnosti se mi podaˇrilo spustit v zaˇrízení telnet server a získat tak pˇrístup k systémové konzoli. Jedná se o novou zranitelnost, proti které není pˇri použití aktuálnˇe dostupného firmware obrana. Objev a dokumentaci zranitelnosti proto považuji za nejvˇetší pˇrínos. Ve druhé cˇ ásti práce se zabývám návrhem a tvorbou nového systému pro sledování sítˇe a chování malého smˇerovaˇce. Jako základ jsem po krátkém rozboru možností vybral distribuci OpenWrt podporující velké množství platforem. Ze sít’ových nástroju˚ jsem vybral Snort, nProbe, Tcpdump a RPCAPd. Poslední nástroj byl portován pro GNU/Linux teprve nedávno v rámci projektu Liberouter. Za pˇrínos považuji pˇredstavení programu a vytvoˇrení ipkg balíˇcku umožnující ˇ rozšíˇrení technologie vzdáleného zachytávání paketu˚ mezi uživatele projektu OpenWrt.
49
ˇ 7. Z ÁV ER
Systém jsem koncipoval tak, aby mohl být využíván jako bezpeˇcné programové vybavení pro domácí malý smˇerovaˇc nebo sonda sbírající informace o datových tocích pro vˇetší sítˇe. Pˇri ovˇerˇ ování funkˇcnosti systému jsem zjistil, že pˇridané nástroje znaˇcnˇe zatˇežují omezené systémové zdroje zaˇrízení. Paketový analyzátor Tcpdump a RPCAPd server je proto vhodné používat s nastaveným pcap filtrem pro omezení poˇctu zobrazovaných paketu. ˚ Snort zase vyžaduje pˇresné nastavení s minimálním množstvím pravidel a aktivních preprocesoru. ˚ Pro plný provoz systému detekce hrozeb by bylo lepší zvolit výkonnˇejší technické vybavení.
50
Literatura [1] Bcm5354 product brief. Available from: http://www. alldatasheet.com/datasheet-pdf/pdf/175111/BOARDCOM/ BCM5354.html. [2] Cisco systems netflow services export version 9. http://www.ietf.org/rfc/rfc3954.txt.
Available from:
[3] Dproxy-nexgen stack-based buffer overflow. Available from: http://cve.mitre.org/cgi-bin/cvename.cgi?name= CVE-2007-1866. [4] Nfdump homepage. sourceforge.net/.
Available
from:
http://nfdump.
[5] Nfsen homepage. Available from: http://nfsen.sourceforge. net/. [6] Nprobe homepage. nProbe.html.
Available from: http://www.ntop.org/
[7] Ntop homepage. Available from: http://www.ntop.org/. [8] Oleg’s firmware. Available from: http://oleg.wl500g.info/. [9] Openwrt asus wl500gp. Available from: http://wiki.openwrt. org/toh/asus/wl500gp. [10] Openwrt homepage. Available from: http://openwrt.org/. [11] Remote packet capturing. Available from: http://www. liberouter.org/nific/usecases/rpcap/rpcap.php. [12] Snort homepage. Available from: www.snort.org. [13] Tcpdump/libpcap homepage. tcpdump.org/.
Available from: http://www.
51
ˇ 7. Z ÁV ER
[14] Vxworks. VxWorks.
Available from: http://en.wikipedia.org/wiki/
[15] Wireshark remote sniffing without rpcapd. Available from: http:// www.pawelko.net/35-Without-Rpcapd. [16] WL-500gP V2 Wireless Router manual. [17] Florian Fainelli. The OpenWrt embedded development framework. January 2008. Available from: http://downloads.openwrt.org/ people/florian/fosdem/fosdem.pdf. [18] Felix Fietkau and Waldemar Brodkorb. Openwrt buildroot. Available from: http://downloads.openwrt.org/docs/ buildroot-documentation.html. [19] Alexander Sirotkin. Hacking Embedded Linux Based Home Appliances, chapter Modifying the root filesystem. August 2007. Available from: http://www.linuxconf.eu/2007/papers/Sirotkin. pdf. [20] Snort Team. Snort Users Manual, chapter High Performance Configuration. 2010. Available from: http://www.snort.org/assets/ 125/snort_manual-2_8_5_1.pdf. ˇ [21] Pavel Celeda, Radek Krejˇcí, Jan Vykopal, and Martin Drašar. Embedded malware - an analysis of the chuck norris botnet, 2010. Available from: http://www.muni.cz/research/publications/ 904554/.
52
Pˇríloha A
Obsah CD • • • • •
Zachycená komunikace nástroju˚ dodávaných k malému smˇerovaˇci Archív s obsahem zapisovatelného oddílu (rootfs_data) Balíˇcek libpcap-rpcap Skript asus_exe Exploit asusutility
53
Pˇríloha B
Pakety z komunikace nástroju˚ B.1 Device Discovery – Výzva src 192.168.1.2 port 9999 -> dst 255.255.255.255 port 9999, length 512B 0000 0010 0020 0030 0040 0050 0060 0070 0080 0090 00A0 00B0 00C0 00D0 00E0 00F0 0100 0110 0120 0130 0140 0150 0160 0170 0180 0190 01A0 01B0 01C0 01D0 01E0 01F0
0c 01 04 04 04 00 01 15 51 12 3c 18 ef 00 00 fa 0a 5a 0e 00 00 28 30 00 00 00 00 8f 3b 4b 00 30
15 00 00 00 00 00 00 00 0c 00 41 41 0f 00 00 65 be 88 05 00 00 fa 88 00 00 00 00 04 be be 00 00
1f 02 00 00 00 00 00 00 10 00 3a 3a b3 00 00 25 37 36 08 00 00 12 36 00 00 00 00 39 37 37 00 00
00 00 00 00 00 00 00 00 28 00 00 00 00 00 00 5b 7e 7e 00 00 00 00 7e 00 00 00 00 7e 7e 7e 00 00
00 a0 03 03 03 00 13 15 da 0f d4 ef 00 0c 00 00 d9 34 01 00 01 cc ff ef 0c 04 9c b0 18 00 58 18
00 00 00 00 00 00 00 00 04 00 f9 0f 00 fb 00 00 8b fa 26 00 00 fa ff 0f fb 00 fa 8e 90 00 fb 90
00 00 00 00 00 00 00 00 85 00 12 b3 00 12 00 00 36 12 bd 00 00 12 ff b3 12 00 12 37 74 00 12 74
00 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 7e 00 00 00 00 00 ff 00 00 00 00 7e 00 00 00 00
d4 18 00 00 04 00 00 0d 17 b8 35 49 0e 01 00 00 00 2a 14 10 00 b8 2a 0e 2c 01 0e ff 47 00 73 47
f9 00 00 00 00 00 00 00 00 f9 39 3a 05 00 00 00 f0 88 00 00 00 fa 88 05 90 26 05 ff 00 00 e4 00
12 00 00 00 00 00 00 00 00 12 25 25 08 00 00 00 fd 36 00 00 00 12 36 08 74 bd 08 ff 00 00 90 00
00 00 00 00 00 00 00 00 00 00 5b 5b 00 00 00 00 7f 7e 00 00 00 00 7e 00 00 00 00 ff 00 00 7c 00
00 11 00 00 02 00 00 0d 01 18 28 0c 47 b0 00 74 74 00 01 01 00 8f a0 47 ab e4 7c ab 00 00 00 00
00 00 00 00 00 00 00 00 00 66 41 fb 00 04 00 fa fa 00 00 00 00 04 8e 00 8e fa fb 8e 00 00 fb 00
01 00 00 00 00 00 00 00 00 25 3a 12 00 00 00 12 12 00 00 00 00 39 37 00 37 12 12 37 00 00 12 00
00 00 00 00 00 00 00 00 00 5b 00 00 00 00 00 00 00 00 00 00 00 7e 7e 00 7e 00 00 7e 00 00 00 00
........ ........ ........ ........ ........ ........ ........ ........ Q..(.... ........
........ ........ ........ ........ ........ ........ ........ ........ ........ .....f%[ 59%[(A:. I:%[.... ....G... ........ ........ ....t... ....t... *.6~.... ........ ........ ........ ......9~ *.6~..7~ ....G... ,.t...7~ .&...... ....|... ......7~ G....... ........ s..|.... G.......
54
B. PAKETY Z KOMUNIKACE NÁSTROJ U˚
B.2 Device Discovery – Odpovˇed’ src 192.168.1.1 port 9999 -> dst 255.255.255.255 port 9999, length 512 B 0000 0010 0020 0030 0040 0050 0060 0070 0080 0090 00a0 00b0 00c0 00d0 00e0 00f0 0100 0110 0120 0130 0140 0150 0160 0170 0180 0190 01a0 01b0 01c0 01d0 01e0 01f0
0c 00 00 00 00 00 00 00 00 00 00 32 00 20 00 00 00 00 2f 00 00 00 00 00 00 00 00 00 00 00 00 00
16 00 00 00 00 00 00 00 00 00 00 35 00 56 00 00 00 00 70 00 00 00 00 00 00 00 00 00 00 00 00 00
1f 00 00 00 00 00 00 00 00 00 00 35 00 32 00 00 00 00 61 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 2e 00 00 00 00 00 00 72 00 00 00 00 00 00 00 00 00 00 00 00 00
02 00 00 00 00 00 00 00 00 00 00 30 00 00 00 00 00 bf 74 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 03 30 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20 00 00 00 00 00 00 00 64 00 32 00 57 00 33 00 00 68 00 73 00 00 00 00 00 00 00 00 00 00 00 00
20 00 00 00 00 00 00 00 65 00 35 00 4c 00 2e 90 00 61 00 68 00 32 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 66 00 35 00 2d 00 30 e6 00 72 00 61 00 2e 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 61 00 2e 00 35 00 2e ba 00 64 00 72 00 30 00 00 00 00 00 00 00 00 00 00
24 00 00 00 00 00 00 00 75 00 32 00 30 00 33 f0 00 64 00 65 00 00 00 00 00 00 00 00 00 00 00 00
7e 00 00 00 00 00 00 00 6c 00 35 00 30 00 2e 24 00 69 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 74 00 35 00 67 00 35 7e 00 73 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 2e 00 50 00 00 00 00 6b 00 00 00 00 00 00 00 00 00 00 00 00 00 00
........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ 255.0... ........ V2..... ........ ........ ........ ........ /part0.. ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........
..$~.. ........ ........ ........ ........ ........ ........ ........ default. ........ 255.255. ........ WL-500gP ........ 3.0.3.5. .....$~. ........ harddisk ........ share... ........ .2.0.... ........ ........ ........ ........ ........ ........ ........ ........ ........ ........
55
B. PAKETY Z KOMUNIKACE NÁSTROJ U˚
B.3 Download Master – pˇríkaz ke spuštˇení src 192.168.1.2 port 1039 -> dst 192.168.1.1 port 9999, length 512 B 0000 0010 0020 0030 0040 0050 0060 0070 0080 0090 00a0 00b0 00c0 00d0 00e0 00f0 0100 0110 0120 0130 0140 0150 0160 0170 0180 0190 01a0 01b0 01c0 01d0 01e0 01f0
0c 00 00 72 01 6e 14 8e 00 00 22 66 73 00 d4 01 6e 14 58 01 00 00 54 2e 3e c1 00 33 01 6e 00 00
15 00 00 75 00 5c 00 a2 00 00 00 74 5f 00 cc 00 5c 00 01 00 00 00 fb 61 00 32 00 01 00 5c 00 00
33 00 00 6e 00 63 14 03 20 00 00 2d 67 00 2c 00 64 14 00 20 00 00 33 70 00 db 00 00 00 67 00 00
00 00 00 5f 00 74 00 00 00 00 00 6e 69 00 01 00 6d 00 00 00 00 00 01 70 00 80 00 00 00 64 00 00
02 00 00 61 12 6f 00 2c 80 00 2e 61 66 1c 04 13 61 00 76 80 00 3c 1e 73 14 7d 00 00 0d 00 00 00
00 00 00 70 00 72 00 44 81 00 61 73 74 bf 00 00 74 00 03 81 00 bf 00 5c 00 0c 00 00 00 00 00 00
00 00 00 70 00 72 08 0c 94 00 70 6f 00 5b 00 00 68 08 00 53 00 5b 00 62 14 00 20 00 00 00 00 00
00 00 00 73 00 65 00 00 97 00 70 63 00 00 00 00 69 00 00 3a 00 00 00 69 00 00 00 00 00 00 00 00
90 00 00 20 2e 6e db 13 04 32 73 5c 26 9c 24 2e 6e 2b 0e 08 1e 1c 01 6e 00 20 80 00 2e 00 00 00
e6 00 00 26 61 74 4c 00 00 00 5c 62 00 cc 00 61 65 90 00 00 00 fb 00 5c 00 27 81 00 61 00 00 00
ba 00 00 00 70 00 5c 00 48 00 75 69 00 2c 00 70 64 31 00 c0 00 33 00 64 08 00 d7 00 70 00 00 00
f0 00 00 00 70 00 39 00 e3 00 73 6e 00 01 00 70 00 39 00 e3 00 01 00 6d 00 00 3b 00 70 00 00 00
24 00 00 22 73 3e 6d 00 33 01 72 5c 0c dc 22 73 3e 6c 00 33 0c 64 0e 65 0d 0d 08 1e 73 00 00 00
7e 00 00 00 5c 00 62 00 01 00 5c 61 90 21 00 5c 00 d2 00 01 91 67 00 78 5b 00 00 00 5c 00 00 00
00 00 0a 00 62 00 69 00 00 00 67 73 5b 27 00 62 00 46 00 00 5b 27 00 00 b9 00 18 00 62 00 00 00
00 00 00 00 69 00 49 00 00 00 69 75 00 01 00 69 00 6f 00 00 00 01 00 00 36 00 e4 00 69 00 00 00
..3..... ........ ........ run_apps ........ n\ctorre ........ ....,D.. .. ..... ........ "....app ft-nasoc s_gift.. ......[. ..,..... ........ n\dmathi ........ X...v... .. ...S: ........ ....<.[. T.3..... .apps\bi >....... .2..}... ...... . 3....... ........ n\gd.... ........ ........
....$~.. ........ ........ &.."... .apps\bi nt..>... .L\9mbiI ........ ..H.3... 2....... s\usr\gi \bin\asu &.....[. ..,..!’. $..."... .apps\bi ned.>... +.19l.Fo ........ ....3... ......[. ..3.dg’. ........ n\dmex.. .....[.6 ’...... ...;.... ........ .apps\bi ........ ........ ........
56
Pˇríloha C
Datové struktury Infosvr #define #define #define #define #define #define
ULONG DWORD BYTE PBYTE WORD INT
unsigned long unsigned long char char * unsigned short int
typedef struct iboxPKT { BYTE BYTE WORD DWORD } IBOX_COMM_PKT_HDR;
// 4Byte // 4Byte // 1Byte // 2Byte
ServiceID; PacketType; OpCode; Info; // Or Transaction ID
typedef struct iboxPKTEx { BYTE ServiceID; BYTE PacketType; WORD OpCode; DWORD Info; // Or Transaction ID BYTE MacAddress[6]; BYTE Password[32]; } IBOX_COMM_PKT_HDR_EX;
// 6x 1Byte // 32x 1Byte
typedef struct iboxPKTExRes { BYTE ServiceID; BYTE PacketType; WORD OpCode; DWORD Info; // Or Transaction ID BYTE MacAddress[6]; } IBOX_COMM_PKT_RES_EX; typedef struct iboxPKTCmd { WORD len; BYTE cmd[420]; } PKT_SYSCMD; // total 422 bytes typedef struct iboxPKTCmdRes { WORD len; BYTE res[420]; } PKT_SYSCMD_RES; // total 422 bytes
57
C. D ATOVÉ STRUKTURY I NFOSVR typedef struct PktGetInfo { BYTE PrinterInfo[128]; BYTE SSID[32]; BYTE NetMask[32]; BYTE ProductID[32]; BYTE FirmwareVersion[16]; BYTE OperationMode; BYTE MacAddress[6]; BYTE Regulation; } PKT_GET_INFO;
typedef struct ws_info_t { BYTE Name[4]; WORD Channel; WORD SampleRate; union { unsigned char SampleSize; struct { unsigned char s8:1, s16:1, s24:1, s32:1, rsvd:3, cflag:1; } b; } u; BYTE Compress; BYTE Reserved[6]; } WS_INFO_T
typedef struct storage_info_t { DWORD Capability; DWORD AppsStatus; BYTE AppsPool[32]; BYTE AppsShare[32]; BYTE DiskStatus; BYTE DiskModel[32]; DWORD DiskSize; BYTE PrinterModel1[32]; BYTE PrinterModel2[32]; } STORAGE_INFO_T;
// // // // // // // // //
/* /* /* /* /* /*
bit0, Sample Size 8-bits bit1, Sample Size 16-bits bit2, Sample Size 24-bits bit3, Sample Size 32-bits bit4~6, Reserved */ bit7, Connection Flag */
*/ */ */ */
APPS_CAP_XXXX APPS_STATUS_XXXX Name of Pool, len=0 means none Name of Share, len=0 means none DISK_STATUS_XXXX Name of Disk Size in Bytes Name of Printer Model Name of Printer Model
58
Pˇríloha D
Makefile pro libpcap-rpcap # # # # # # # # #
Copyright (C) 2006-2010 OpenWrt.org Modified by Jan Bariencik (Faculty of Informatics Masaryk University) This is free software, licensed under the GNU General Public License v2. See /LICENSE for more information.
include $(TOPDIR)/rules.mk PKG_NAME:=libpcap PKG_VERSION:=1.1.1 PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=http://www.liberouter.org/nific/usecases/rpcap/ PKG_MD5SUM:=0c8c8ced2eb90ca6280effd4c1491e2f PKG_INSTALL:=1 include $(INCLUDE_DIR)/package.mk include $(INCLUDE_DIR)/kernel.mk define Package/libpcap-rpcap SECTION:=libs CATEGORY:=Libraries TITLE:=Low-level packet capture library with remote capture URL:=http://www.liberouter.org/nific/usecases/rpcap DEPENDS:=+libpthread endef define Package/libpcap-rpcap/description This package contains a system-independent library for user-level network packet capture with remote capture functionality. endef define Package/libpcap-rpcap/config source "$(SOURCE)/Config.in" endef
59
D. M AKEFILE PRO LIBPCAP - RPCAP TARGET_CFLAGS += \ -ffunction-sections \ -fdata-sections CONFIGURE_VARS += \ ac_cv_linux_vers=$(LINUX_VERSION) CONFIGURE_ARGS += \ --enable-shared \ --enable-static \ --disable-yydebug \ --enable-ipv6 \ --with-build-cc="$(HOSTCC)" \ --with-pcap=linux \ --without-septel \ --without-dag MAKE_FLAGS += \ CCOPT="$(TARGET_CFLAGS) -I$(BUILD_DIR)/linux/include" # pass CONFIGURE_VARS a CONFIGURE_ARGS variables to ./Configure scripts # if not definied then delete "pcap-<usb/bt>-linux.c" from Makefile # "PCAP_SUPPORT_" from config.h define Build/Configure $(call Build/Configure/Default) $(if $(CONFIG_PCAP_HAS_USB),,\ $(SED) \’/^#define PCAP_SUPPORT_USB/D’ $(PKG_BUILD_DIR)/config.h) $(if $(CONFIG_PCAP_HAS_USB),,\ $(SED) ’s/pcap-usb-linux.c *//’ $(PKG_BUILD_DIR)/Makefile) $(if $(CONFIG_PCAP_HAS_BT),,\ $(SED) ’/^#define PCAP_SUPPORT_BT/D’ $(PKG_BUILD_DIR)/config.h) $(if $(CONFIG_PCAP_HAS_BT),,\ $(SED) ’s/pcap-bt-linux.c *//’ $(PKG_BUILD_DIR)/Makefile) endef # install header files # install libpcap-rpcap static and shared library define Build/InstallDev $(INSTALL_DIR) $(1)/usr/include $(CP) $(PKG_INSTALL_DIR)/usr/include/pcap* $(1)/usr/include/ $(INSTALL_DIR) $(1)/usr/lib $(CP) $(PKG_INSTALL_DIR)/usr/lib/libpcap-rpcap.{a,so*} $(1)/usr/lib/ endef # install libpcap-rpcap shared library # install rpcapd define Package/libpcap-rpcap/install $(INSTALL_DIR) $(1)/usr/lib $(CP) $(PKG_INSTALL_DIR)/usr/lib/libpcap-rpcap.so* $(1)/usr/lib/ $(INSTALL_DIR) $(1)/usr/bin $(CP) $(PKG_INSTALL_DIR)/usr/bin/rpcapd $(1)/usr/bin/ endef $(eval $(call BuildPackage,libpcap-rpcap))
60