Sniffery slouží pro zachytávání a čtení paketů procházejících sítí. Útočník tak díky nim může zjistit řadu zajímavých informací o komunikaci ostatních uživatelů, například přihlašovací jméno a heslo služeb FTP, POP3 atd. Pokud pakety oprávněně analyzuje administrátor, může mimo jiné zjistit, co zapříčiňuje sníženou propustnost sítě.
Při normální síťové komunikaci přijímá počítač pouze ty pakety, které jsou mu určeny. To logicky není dobrá situace pro účely sniffování, takže síťová karta bývá přepnuta do takzvaného promiskuitního módu. V něm pak zachytává všechny pakety sítě a kupříkladu zlá Eva může odchytávat komunikaci nic netušící Alice s Bobem.
Prvních šest bytů ethernetového rámce obsahuje MAC adresu příjemce a dalších šest bytů pak MAC adresu odesílatele. Takže například z prvních 12 bytů paketu tvaru 00 41 32 F3 AF 0C 00 50 BA CF BD 0C lze ihned poznat, odkud a kam paket cestuje – při zaslání paketu s takovýmto začátkem by jediným správným příjemcem byla síťová karta s MAC adresou 00:41:32:F3:AF:0C. Tento paket sice při normální síťové komunikaci vidí i síťové karty všech ostatních počítačů, ale ignorují jej. A právě tuto skutečnost mění karta pracující v promiskuitním módu – přijímá veškerou komunikaci nehledě na uvedenou cílovou MAC adresu.
Chcete-li si „čmuchání“ síťové komunikace vyzkoušet v praxi, na Internetu najdete hned několik kvalitních snifferů. Mezi ty nejznámější patří zejména Ethereal Network Analyzer, který lze získat pro mnoho platforem včetně zdrojových kódů. Počátek jeho vývoje se datuje do roku 1997, kdy Gerald Combs potřeboval nástroj, s jehož pomocí by mohl analyzovat původ síťových problémů. První verze nesoucí označení 0.2.0 pak spatřila světlo světa v polovině roku 1998 a v současné době je k dispozici varianta 0.10.9. Popisovaná aplikace je šířena jako open-source software pod licencí GNU, takže si uživatelé nemusí dělat starosti s placením plné verze nebo sháněním cracku. Na obrázku můžete vidět, že Ethereal Network Analyzer poskytuje funkce uživateli prostřednictvím jednoduchého a přehledného grafického rozhraní. Okno aplikace Ethereal je rozděleno do tří hlavních částí. V té první se zobrazuje seznam zachycených paketů spolu s odpovídajícími atributy: číslo paketu (no.), čas zachycení (time), adresa odesílatele (source), adresa příjemce (destination), protokol (protocol) a popis (info). V prostřední části se nachází stromová struktura zpřístupňující detaily vybraného paketu. Spodní část zobrazuje data v hexadecimální podobě a zvýrazňuje úsek vybraný v prostřední části okna.
Díky nastavení filtrů (nabídka Analyze → Display Filters) program umožňuje sledování pouze určitých paketů; můžete se tak tedy například zaměřit pouze na FTP nebo ICQ spojení. Kompletní seznam všech 658 podporovaných protokolů naleznete zde. A právě na komunikaci protokolem FTP si ukážeme sniffing pomocí programu Ethereal Network Analyzer v praxi. Nejprve pomocí tlačítka Expression v hlavní grafické nabídce přidejte filtr pro FTP spojení a aktivujte jej stisknutím tlačítka Apply. Ze všech zachycených paketů nyní budou zobrazovány pouze ty, které jsou součástí komunikace protokolem FTP. Vlastní sniffing můžete zahájit volbou Start v nabídce Capture. Výsledek vašeho snažení pak může vypadat například takto (všimněte si především údajů ve sloupci Info u jednotlivých paketů):
Ethereal Network Analyzer dovoluje zachycené pakety uložit v mnoha formátech, mezi nimiž nechybí ani možnost exportu do PostScriptu či XML. Pokud plánujete sniffing na síti s větším počtem počítačů, pak se bez nastavování podmínek filtrování (protokol, zdroj, cíl ap.) prakticky neobejdete – při zachytávání všech procházejících paketů by se totiž procesor „čmuchající“ stanice pořádně zapotil.
Neoprávněnému sniffingu se můžete do velké míry bránit použitím šifrované komunikace. Například obsah nešifrovaného paketu zachyceného během přihlašování do schránky webového freemailu vypadá takto (login a heslo jsou zvýrazněny):
0000 43 6f 6e 74 65 6e 74 2d 54 79 70 65 3a 20 61 70 Content-Type: ap
0010 70 6c 69 63 61 74 69 6f 6e 2f 78 2d 77 77 77 2d plication/x-www-
0020 66 6f 72 6d 2d 75 72 6c 65 6e 63 6f 64 65 64 0d form-urlencoded.
0030 0a 43 6f 6e 74 65 6e 74 2d 4c 65 6e 67 74 68 3a .Content-Length:
0040 20 36 30 0d 0a 0d 0a 4d 61 69 6c 42 6f 78 3d 70 60....MailBox=p
0050 65 70 69 6b 26 50 61 73 73 77 64 3d 70 65 70 38 epik&Passwd=pep8
0060 61 25 33 46 6c 26 4c 6f 67 69 6e 5f 42 75 74 74 a%3Fl&Login_Butt
0070 6f 6e 3d 50 25 46 38 69 68 6c 25 45 31 73 69 74 on=P%F8ihl%E1sit
0080 2b 73 65 +se
Není tedy těžké díky jednomu jedinému paketu získat citlivé přihlašovací údaje. Naproti tomu z šifrovaných paketů protokolu SSL při stejném přihlašování toho útočník moc nevyčte:
0000 00 50 ba c6 b0 4c 00 40 33 a2 af 0c 08 00 45 00 .P...L.@ 3.....E.
0010 02 64 09 8e 40 00 80 06 6b b2 c0 a8 01 02 c0 a8 .d..@... k.......
0020 01 01 11 fc 11 80 73 8d 6e 6a fd c5 c6 b1 50 18 ......s. nj....P.
0030 ff 44 63 28 00 00 14 03 01 00 01 01 16 03 01 00 .Dc(.... ........
0040 20 d6 4a 06 a4 f5 ce c8 6b 69 3a 91 b5 78 d4 02 .J..... ki:..x..
0050 cb 1c 2c a7 76 39 f9 3d 3e ee 7d 5b d6 df 3f 79 ..,.v9.= >.}[..?y
0060 03 17 03 01 02 0c 0d ae 50 5e 91 9c 49 82 45 52 ........ P^..I.ER
0070 d7 15 e8 83 16 b6 ef d8 7e d5 ef 5b 07 bf e5 71 ........ ~..[...q
0080 84 68 bc a2 a1 ea 77 98 8f 13 90 cb c2 8f 54 06 .h....w. ......T.
Další způsob obrany proti sniffingu představuje vyhledávání síťových karet v promiskuitním módu. K tomu slouží například aplikace AntiSniff, s jejíž pomocí můžete otestovat počítače v lokální síti.