SÍTĚ
Hackování sítí má stejný princip jako hackování programů:
v prvé řadě jde o pochopení pravidel systému a v druhé o vymyšlení
způsobu, jak tato pravidla využít k dosažení cíle.
0x310 Co jsou sítě?
Celé sítě jsou především o komunikaci, a k tomu, aby byla komunikace
možná mezi dvěmi čí více stranami, musí také existovat nějaké standardy
a protokoly. Je to stejně jako hovořit japonsky k někomu, kdo rozumí jenom
anglicky počítače a síťový hardware se musí dorozumívat stejným jazykem,
aby mohli efektivně komunikovat. To znamená, že se nejprve musí
stanovit standardy, podle nichž se vytvoří komunikační jazyk. Tyto standardy
ale skutečně představují více, než jenom jazyk stanoví také pravidla
komunikace.
Když například na hot-line zvedne operátor telefon, musí se informace
poslat a přijmout podle určitých pravidel, protokolu. Operátor se nejprve
musí zeptat na účastníkovo jméno, příjmení a typ problému, který ho trápí,
než přepojí hovor na příslušné oddělení. Tohle je jednoduchý příklad toho,
jak funguje protokol a jakákoliv odchylka od tohoto protokolu je nežádou158
0x300 Sítě
cí. Síťové komunikace se také řídí sadou protokolů, které jsou definovány
v referenčním modelu OSI ( Open System Interconnection).
0x311 Model OSI
Referenční model OSI poskytuje sadu mezinárodních pravidel a standardů,
které umožňují všem systémům respektující tyto protokoly komunikovat
s ostatními systémy, které jej také používají. Tyto protokoly jsou seskládané
v 7 oddělených, avšak propojených vrstev, kde se každá vrstva stará o odlišnou
stránku komunikace.
Mimo jiné tento návrh umožňuje hardwaru, jakým jsou třeba směrovače
( routery) a firewally, zaměřit se na dílčí části komunikace, které se jich týkají,
a ignorovat ostatní.
Model OSI má následujících 7 vrstev:
1. Fyzická vrstva ( Physical layer): Tato vrstva obsluhuje fyzické spojení
mezi dvěma body. Jedná se o nejnižší vrstvu a její hlavní role spočívá
v posílání syrových bitů po síti. Tato vrstva je také zodpovědná za aktivaci,
správu a deaktivaci této komunikace na bitové úrovni.
2. Linková vrstva ( Data-link layer): Tato vrstva pracuje s posíláním dat
mezi dvěma body. Fyzická vrstva se stará o zasílání samotných bitů,
ale tato vrstva poskytuje vysokoúrovňové funkce, jako je třeba korekce
chyb nebo řízení toku. Také poskytuje procedury pro aktivaci, správu
a deaktivaci datových připojení.
3. Síťová vrstva ( Network layer): Její hlavní role spočívá v zasílání informací
mezi nižšími a vyššími vrstvami a také poskytuje funkce adresování
a směrování.
4. Transportní vrstva ( Transport layer): Ta poskytuje transparentní přenos
dat mezi systémy. Tím se myslí spolehlivé a efektivní zasílání dat,
o což se už nemusejí starat vrstvy vyšší úrovně.
5. Relační vrstva ( Session layer): Tato vrstva je zodpovědná za sestavení
a správu připojení mezi síťovými aplikacemi.
6. Prezentační vrstva ( Presentation layer): Ta zodpovídá za prezentaci
dat aplikacím v syntaxi nebo jazyce, kterému aplikace rozumějí. Umožňuje
tedy věci, jakými jsou třeba šifrování a komprese dat.
7. Aplikační vrstva ( Application layer): Tato poslední vrstva se stará
o udržování požadavků aplikace.
Když jsou data zasílána prostřednictvím těchto protokolů, děje se to ve
formě malých kousků dat zvaných pakety ( packets). Každý paket obsahuje
implementaci těchto protokolů ve vrstvách. Paket jdoucí z aplikační vrstvy
Hacking: umění exploitace 159
je obalený daty z prezentační vrstvy, které zase daty obaluje relační vrstva,
kterou obaluje transportní vrstva a tak dále. Tomuto procesu se říká zapouzdření
( encapsulation). Každá zapouzdřená vrstva obsahuje hlavičku
a tělo: hlavička obsahuje informace o protokolu vyžadované touto vrstvou,
zatímco tělo obsahuje data pro tuto vrstvu. Tělo jedné vrstvy obsahuje celý
balíček předchozích zapouzdřených vrstev, podobně jako slupky cibule
nebo kontexty funkcí na programovém zásobníku.
Když dvě aplikace pracující na dvou odlišných privátních sítí komunikují
přes Internet, jsou datové pakety zapouzdřovány směrem dolů k fyzické
vrstvě, kde jsou posléze předány směrovači. Protože se směrovač nezajímá
o to, co je v paketech ukryto, musí implementovat pouze protokoly do síťové
vrstvy. Směrovač zašle data po Internetu, kde narazí na další směrovač
v síti, který zapouzdří tento paket hlavičkami protokolů na nižší vrstvě potřebných
k tomu, aby paket dorazil na cílové místo. Tento proces je znázorněn
na následujícím obrázku.
aplikce
siť 1
internet
aplikace
síť 2
(7) Aplikační vrstva
(6) Prezentační vrstva
(5) Relační vrstva
(4) Transportní vrstva
(3) Síťová vrstva
(2) Linková vrstva
(1) Fyzická vrstva
Tento proces si můžeme představit jako spletitou byrokracii mezi kancelářemi,
připomínající film Brazil. Na každé vrstvě sedí vysoce specializovaný
úředník, který rozumí pouze jazyku a protokolu příslušné vrstvy. Zatímco
se po síti zasílají data, každý úředník provede nezbytné povinnosti příslušící
každé vrstvě, strčí data do mezi-kancelářské obálky, na obálku napíše
hlavičku a předá ji úředníkovi z další vrstvy. Ten opět zpracuje data, strčí je
do obálky, napíše na ni hlavičku a pošle dalšímu úředníkovi.
Každý úředník se stará pouze o funkce a povinnosti spadající do jeho
vrstvy. Tyto role a odpovědnosti jsou definovány ve striktním protokolu,
eliminující potřebu nějakého opravdového rozumu v okamžiku, kdy je tento
protokol znám. Tento typ neustále se opakující činnosti není vhodný
pro lidi, je ale ideální pro počítač. Kreativita a inteligence lidské duše se
více hodí k navrhování takových protokolů, vytvoření programu, který je
160 0x300 Sítě
implementuje, a vynalézání hacků, které je využijí k dosažení zajímavých
a nepředpokládaných výsledků. Ale stejně jako u ostatních hacků je potřeba
nejprve pochopit pravidla systému před tím, než je dokážeme nově
využít.
0x320 Zajímavé vrstvy v detailech
Samotná síťová vrstva, transportní vrstva nad ní a linková vrstva pod ní, ty
všechny mají jistá specifika, která můžeme exploitovat. Nyní když jsou tyto
vrstvy teoreticky probrány, můžeme se zaměřit na ty části, které se jsou
náchylné k útokům.
0x321 Síťová vrstva
Když se na okamžik vrátíme k analogii s úředníky a byrokracií, síťová vrstva
je jako celosvětová poštovní služba, která k zasílání dat používá různé
metody adresování a dopravování. Protokol, který se na této vrstvě používá,
se nazývá IP (Internet Protokol). Větší část Internetu používá protokol
IP ve verzi 4, takže pokud nebude řečeno jinak, vše, co se v této knize vztahuje
k IP, se vztahuje k této verzi.
Každý systém připojený v síti Internet má svou vlastní IP adresu, která
se skládá ze čtyř bajtů ve formě xx.xx.xx.xx. V této vrstvě se pracuje jak
s pakety IP, tak i s pakety ICMP ( Internet Control Message Protocol). IP pakety
se používají k zasílání samotných dat, kdežto ICMP pakety slouží pro
zasílání diagnostických zpráv. IP je méně spolehlivý jako poštovní úřad,
což znamená, že neexistuje záruka, že IP paket opravdu dorazí do svého
cíle. Pokud nastane problém, zašle se zpět ICMP paket a upozorní se odesílatel.
ICMP se také často využívá pro test konektivity. ICMP zprávy typu Echo
Request a Echo Reply se používají v utilitě ping. Jestliže chce jeden počítač
otestovat, zda je možné směrovat zprávy na cílový počítač, pošle na
onen stroj zprávu ICMP Echo Request. Jakmile počítač obdrží tuto zprávu,
zašle zpět zprávu ICMP Echo Reply. Tyto zprávy se dají využít k zjišťování
latence připojení mezi dvěma stroji. Nicméně je důležité si zapamatovat,
že ICMP a IP jsou oba nespojované protokoly; vše, o co se vrstva stará, je
pouhé doručení paketu na cílovou adresu.
Občas dojde k tomu, že má systém omezenou velikost paketu, takže neumožní
přenos paketů o větší velikosti. To IP vyřeší tak, že rozkouskuje
data na menší pakety, jak můžete vidět na následujícím obrázku:
Hacking: umění exploitace 161
Velký IP paket
Hlavička (header) Data Pokračování dat Další data
Fragmenty paketů
Hlavička (header) Data
Hlavička (header) Pokračování dat
Hlavička (header) Další data
Paket se rozdělí na menší fragmenty, které se už dají po síti poslat, IP hlavičky
se vloží do každého fragmentu a všechna data se poté odešlou. Každý
fragment má jiný offset, který je také uložen v hlavičce. Když cílový počítač
příjme tyto fragmenty, použije se hodnota offset v hlavičce ke zpětnému
sestavení IP paketu.
Opatření typu fragmentace paketů pomáhá při doručování IP paketů, ale
neslouží ke správě připojení nebo zajištění doručení paketu. O to se stará
transportní vrstva.
0x322 Transportní vrstva
Transportní vrstvu si můžeme představit jako první linii úředníků, kteří vyzvedávají
poštu ze síťové vrstvy. Jestliže chce zákazník reklamovat vadné
zboží, musí mu úředník zaslat autorizační kód. Potom se podle protokolu
zeptá na stvrzenku a případně vydá autorizační kód, takže zákazník bude
moci zaslat vadné zboží. Poštovní úřad se stará pouze o zasílání těchto
zpráv (a paketů) a už ne o to, co se s nimi děje dál nebo co obsahují.
Dva hlavní protokoly této vrstvy jsou TCP ( Transport Control Protocol)
a UDP ( User Datagram Protocol). TCP se nejvíce používá pro internetové
služby: Telnet, HTTP ( webový provoz), SMTP ( poštovní provoz) a FTP
( přenos souborů) všechny tyto služby používají protokol TCP. Jeden
z důvodů, proč se tento protokol tolik používá a je tolik oblíbený, je ten, že
poskytuje transparentní, spolehlivé a obousměrné spojení mezi dvěmi IP
adresami. Obousměrné spojení v protokolu TCP je podobné telefonu po
vytočení čísla se vytvoří spojení, přes které mohou obě strany komunikovat.
Spolehlivostí je myšleno to, že TCP zajišťuje, že zaslaná data dorazí do
cíle ve správném pořadí. Jestliže pakety během cesty změní pořadí, TCP
je složí dohromady, než je předá další vrstvě. Jestliže se některé pakety po
cestě ztratí, cílový počítač si ponechá doručené pakety a počká, než zdrojový
počítač znovu doručí chybějící pakety.
Veškerá funkčnost spočívá v nastavení tzv. příznaků TCP a sledování tzv.
sekvenčních čísel. Příznaky TCP jsou tyto:
162 0x300 Sítě
TCP příznaky Znamená Účel
URG urgent určuje, že se jedná o důležitá data
ACK acknowledgment potvrzení spojení, je zapnuto na většině
spojení
PSH push protlačí data bez bufferování
RST reset resetuje spojení
SYN synchronize synchronizuje sekvenční čísla během
počátku spojení
FIN finis ukončuje spojení
Příznaky SYN a ACK se oba používají k vytvoření spojení ve třech krocích
(tzv. three-step handshaking). Když chce klient vytvořit spojení se serverem,
pošle mu paket se zapnutým příznakem SYN, ale vypnutým ACK. Server
odpoví paketem, který má nastaveny příznaky SYN a ACK. K završení
spojení klient zpátky odešle paket s vypnutým příznakem SYN a zapnutým
ACK. Potom už bude mít každý paket zapnutý příznak ACK a vypnutý SYN.
Pouze první dva pakety jednoho spojení budou mít zapnutý příznak SYN,
protože slouží k synchronizaci sekvenčních čísel.
KlienKlient Server
SYN paket
SYN on ACK off
seq # = 324808530
ack # = 0
SYN paket
SYN on ACK off
seq # = 288666267
ack # = 324808531
ACK paket
SYN off ACK on
seq # = 324808531
ack # = 288666268
Sekvenční čísla se používají k zajištění spolehlivosti, neboť umožňují protokolu
TCP zpětně seřadit dosud neseřazené pakety, zjistit, jestli nějaké
pakety nechybí, a odlišit pakety z jiného spojení tak, aby se nemísily dohromady.
Když je iniciováno spojení, každá strana vygeneruje počáteční sekvenční
číslo. Toto číslo si obě strany vymění v prvních dvou SYN paketech.
Potom se s každým zaslaným paketem toto číslo zvyšuje o počet bajtů nalezených
v datové části paketu. Toto sekvenční číslo je vloženo do hlavičky
Hacking: umění exploitace 163
paketu TCP. Navíc má každá TCP hlavička čítač potvrzení, což je jednoduše
sekvenční číslo druhé strany plus jedna.
TCP se hodí pro aplikace, které vyžadují spolehlivé a obousměrné spojení.
Nicméně je cena za tuto funkčnost zaplacena přenosem většího množství
dat.
Protokol UDP má menší nároky a jeho funkčnost je omezenější než u protokolu
TCP. Díky tomu se více chová jako protokol IP: je nespojovaný a nespolehlivý.
Namísto funkčnosti a spravování spolehlivosti UDP očekává, že
se o to stará aplikace sama. Někdy není spojení zapotřebí a použití protokolu
UDP může být jednodušším způsobem, jak některé situace řešit.
0x323 Linková vrstva
Pokud si síťovou vrstvu představujeme jako celosvětový poštovní systém
a fyzickou vrstvu jako vozík, ve kterém se mezi kancelářemi převážejí jednotlivé
zásilky, je linková vrstva systémem výměny mezi kancelářemi. Tato
vrstva poskytuje možnosti adresování a zasílání zpráv ostatním mimo kancelář,
stejně tak jako způsoby zjišťování, kdo v kanceláři sedí.
Na této vrstvě pracuje Ethernet a vrstva poskytuje standardní adresovací
systém pro všechna zařízení Ethernetu. Tyto adresy jsou známy pod
pojmem MAC ( Media Access Control) adresy. Každému zařízení Ethernetu
je přiřazena unikátní adresa skládající se z šesti bajtů, která se většinou zapisuje
ve formě hexadecimálních čísel xx:xx:xx:xx:xx:xx. Tyto adresy se
občas označují za hardwarové adresy, protože je adresa unikátní u každého
kusu hardware a je v něm uložena v integrované paměti. MAC adresy si
můžeme představit jako rodné číslo (nebo číslo sociálního pojištění) hardwaru,
neboť se předpokládá, že každý hardware na světě má svou unikátní
MAC adresu.
Hlavičky Ethernetu obsahují zdrojovou a cílovou adresu, které se používají
ke směrování paketů Ethernetu. Adresování v síti Ethernet má také
speciální všesměrovou adresu, která obsahuje samé binární jedničky, tedy
ff:ff:ff:ff:ff:ff. Jakýkoliv paket zaslaný na tuto adresu bude přijat
všemi připojenými zařízeními.
MAC adresu nemůžeme změnit, ale IP adresu ano. Protokol IP pracuje
o vrstvu výš, takže se nestará o hardwarové adresy, ale používá mechanismus
pro převod mezi dvěmi adresovacími schématy. Tomu se říká ARP
(Address Resolution Protocol).
Existují 4 různé typy zpráv ARP, přičemž dvě nejdůležitější jsou ARP request
(požadavek) a ARP reply (odpověď). ARP request je zpráva, která se
zašle na všesměrovou adresu, obsahující odesílatelovu IP adresu a MAC
adresu, a v podstatě říká: "Hej, kdo má tuto IP? Pokud jsi to ty, prosím odpověz
a pošli mi svou MAC adresu." ARP reply je korespondující odpověď,
která se zašle na specifickou MAC adresu (a IP adresu) a praví: "Toto je
164 0x300 Sítě
moje MAC adresa a mám tuto IP adresu." Většina implementací tohoto protokolu
dočasně ukládá pár adres MAC/IP, které systém získá od ARP, takže
není nutné adresy pro každý paket takto konvertovat.
Například pokud jeden systém používá IP adresu 10.10.10.20 a MAC
adresu 00:00:00:aa:aa:aa a druhý systém je na stejné síti s IP adresou
10.10.10.50 a MAC adresou 00:00:00:bb:bb:bb, ani jeden systém nemůže
komunikovat do doby, než si oba zjistí MAC adresy toho druhého.
ARP požadavek (requestARP request)
zdroj MAC: 00:00:00:aa:aa:aa
cíl MAC: ff:ff:ff:ff:ff:ff
"Kdo má 10.10.10.50?"
ARP odpověď (reply)
zdroj MAC: 00:00:00:bb:bb:bb
cíl MAC: 00:00:00:aa:aa:aa
"10.10.10.50 je na 00:00:00:bb:bb:bb"
První systém
IP: 10.10.10.50
MAC: 00:00:00:aa:aa:aa
Druhý systém
IP: 10.10.10.50
MAC: 00:00:00:bb:bb:bb
Pokud bude chtít první systém vytvořit TCP spojení přes IP na adrese druhého
systému 10.10.10.50, první systém nejprve nakoukne do vyrovnávací
paměti ARPu a pokusí se najít záznam pro 10.10.10.50. Protože je
to poprvé, co se spolu tyto systémy pokouší komunikovat, žádný záznam
nalezen nebude a vyšle se ARP request na všesměrovou adresu. Ten říká:
"Pokud jsi 10.10.10.50, odpověz mi na 00:00:00:aa:aa:aa." Protože
se tento požadavek posílá na všesměrovou adresu, obdrží tuto zprávu
všechny připojené systémy, avšak odpoví pouze systém s korespondující IP
adresou. V tomto případě odpoví druhý systém na MAC adresu 00:00:00:
aa:aa:aa: "Já jsem 10.10.10.50 a mám MAC adresu 00:00:00:bb:bb:
bb." První systém přijme odezvu, uloží pár IP a MAC adres do vyrovnávací
paměti a použije hardwarovou adresu k další komunikaci.
0x330 Odposlouchávání na síti
Na linkové vrstvě také spočívá rozdíl mezi přepínanými a nepřepínanými
sítěmi. Na nepřepínané síti všechny pakety Ethernetu procházejí přes
všechna zařízení na síti s předpokladem, že pakety přijmou pouze ty systémy,
pro něž jsou určeny. Je nicméně triviální přepnout zařízení do tzv. promiskuitního
režimu, ve kterém zařízení přijímá všechny pakety, bez ohledu
na cílovou adresu.
Hacking: umění exploitace 165
Mnoho programu pro odchytávání paketů (tzv. sniffer), jako je třeba tcpdump,
standardně přepne zařízení do tohoto režimu. Můžeme se do něj přepnout
také programem ifconfig, jak je vidět v následujícím výstupu.
# ifconfig eth# eth0
eth0 Link encap:Ethernet HWaddr 00:00:AD:D1:C7:ED
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Interrupt:9 Base address:0xc000
# ifconfig eth0 promisc
# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:00:AD:D1:C7:ED
BROADCAST PROMISC MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Interrupt:9 Base address:0xc000
#
Procesu odchytávání paketů, které nejsou určeny pro veřejné prohlížení,
se říká odposlouchávání ( sniffing). Odposlouchávání paketů v promiskuitním
režimu na nepřepínané síti má za výsledek vyzrazení celé řady užitečných
informací, jak ukazuje následující výstup.
# tcpdump -l -X 'ip host 192.168.0.118'
tcpdump: listening on eth0
21:27:44.684964 192.168.0.118.ftp > 192.168.0.193.32778: P 1:42(41) ack 1
win 17316 <nop,nop,timestamp 466808 920202> (DF)
0x0000 4500 005d e065 4000 8006 97ad c0a8 0076 E..].e@........v
0x0010 c0a8 00c1 0015 800a 292e 8a73 5ed4 9ce8 ........)..s^...
0x0020 8018 43a4 a12f 0000 0101 080a 0007 1f78 ..C../.........x
0x0030 000e 0a8a 3232 3020 5459 5053 6f66 7420 ....220.TYPSoft.
0x0040 4654 5020 5365 7276 6572 2030 2e39 392e FTP.Server.0.99.
0x0050 3133 13
21:27:44.685132 192.168.0.193.32778 > 192.168.0.118.ftp: . ack 42 win 5840
<nop,nop,timestamp 920662 466808> (DF) [tos 0x10]
0x0000 4510 0034 966f 4000 4006 21bd c0a8 00c1 E..4.o@.@.!.....
0x0010 c0a8 0076 800a 0015 5ed4 9ce8 292e 8a9c ...v....^...)...
166 0x300 Sítě
0x0020 8010 16d0 81db 0000 0101 080a 000e 0c56 ...............V
0x0030 0007 1f78 ...x
21:27:52.406177 192.168.0.193.32778 > 192.168.0.118.ftp: P 1:13(12) ack 42
win 5840 <nop,nop,timestamp 921434 466808> (DF) [tos 0x10]
0x0000 4510 0040 9670 4000 4006 21b0 c0a8 00c1 E..@.p@.@.!.....
0x0010 c0a8 0076 800a 0015 5ed4 9ce8 292e 8a9c ...v....^...)...
0x0020 8018 16d0 edd9 0000 0101 080a 000e 0f5a ...............Z
0x0030 0007 1f78 5553 4552 206c 6565 6368 0d0a ...xUSER.leech..
21:27:52.415487 192.168.0.118.ftp > 192.168.0.193.32778: P 42:76(34) ack
13 win 17304 <nop,nop,timestamp 466885 921434> (DF)
0x0000 4500 0056 e0ac 4000 8006 976d c0a8 0076 E..V..@....m...v
0x0010 c0a8 00c1 0015 800a 292e 8a9c 5ed4 9cf4 ........)...^...
0x0020 8018 4398 4e2c 0000 0101 080a 0007 1fc5 ..C.N,..........
0x0030 000e 0f5a 3333 3120 5061 7373 776f 7264 ...Z331.Password
0x0040 2072 6571 7569 7265 6420 666f 7220 6c65 .required.for.le
0x0050 6563 ec
21:27:52.415832 192.168.0.193.32778 > 192.168.0.118.ftp: . ack 76 win 5840
<nop,nop,timestamp 921435 466885> (DF) [tos 0x10]
0x0000 4510 0034 9671 4000 4006 21bb c0a8 00c1 E..4.q@.@.!.....
0x0010 c0a8 0076 800a 0015 5ed4 9cf4 292e 8abe ...v....^...)...
0x0020 8010 16d0 7e5b 0000 0101 080a 000e 0f5b ....~[.........[
0x0030 0007 1fc5 ....
21:27:56.155458 192.168.0.193.32778 > 192.168.0.118.ftp: P 13:27(14) ack
76 win 5840 <nop,nop,timestamp 921809 466885> (DF) [tos 0x10]
0x0000 4510 0042 9672 4000 4006 21ac c0a8 00c1 E..B.r@.@.!.....
0x0010 c0a8 0076 800a 0015 5ed4 9cf4 292e 8abe ...v....^...)...
0x0020 8018 16d0 90b5 0000 0101 080a 000e 10d1 ................
0x0030 0007 1fc5 5041 5353 206c 3840 6e69 7465 ....PASS.l8@nite
0x0040 0d0a ..
21:27:56.179427 192.168.0.118.ftp > 192.168.0.193.32778: P 76:103(27) ack
27 win 17290 <nop,nop,timestamp 466923 921809> (DF)
0x0000 4500 004f e0cc 4000 8006 9754 c0a8 0076 E..O..@....T...v
0x0010 c0a8 00c1 0015 800a 292e 8abe 5ed4 9d02 ........)...^...
0x0020 8018 438a 4c8c 0000 0101 080a 0007 1feb ..C.L...........
0x0030 000e 10d1 3233 3020 5573 6572 206c 6565 ....230.User.lee
0x0040 6368 206c 6f67 6765 6420 696e 2e0d 0a ch.logged.in...
Služby, jako je třeba telnet, FTP a POP3, jsou nešifrované. V předchozím
příkladě můžeme vidět uživatele leech přihlašujícího se na FTP server
heslem l8@nite. Protože je proces autentizace během přihlašování nešifrovaný,
přihlašovací jména a hesla jsou obsažena v částech dat v přijatých
paketech.
Hacking: umění exploitace 167
Tcpdump je úžasný paketový sniffer pro obecné použití, ale existují i specializovanější
nástroje pro vyhledávání přihlašovacích jmen a hesel. Za
zmínku stojí program dsniff.
# dsniff -n
dsniff: listening on eth0
-----------------
12/10/02 21:43:21 tcp 192.168.0.193.32782 -> 192.168.0.118.21 (ftp)
USER leech
PASS l8@nite
-----------------
12/10/02 21:47:49 tcp 192.168.0.193.32785 -> 192.168.0.120.23 (telnet)
USER root
PASS 5eCr3t
I bez asistence nástroje, jakým je třeba dsniff, je pro útočníka odposlouchávajícího
na síti relativně jednoduché najít v těchto paketech přihlašovací
jména a hesla a použít je ke kompromitaci jiných systémů. Z bezpečnostního
hlediska to není dobré, proto inteligentnější spínané huby (tzv. switche)
poskytují přepínané síťové prostředí.
0x331 Aktivní odposlouchávání
V přepínaném síťovém prostředí se pakety zasílají pouze na porty, na které
jsou určeny, podle jejich cílových MAC adres. To vyžaduje inteligentnější
hardware, které umí vytvořit a spravovat tabulku asociovanou s MAC adresami
s porty, v závislosti na tom, které zařízení je na který port připojeno,
jak je vidět na tomto obrázku:
Port 1 = 00:00:00:AA:AA:AA
Port 2 = 00:00:00:BB:BB:BB
Port 3 = 00:00:00:CC:CC:CC
tabulka Port / MAC
switch
1 2 3
00:00:00:AA:AA:AA 00:00:00:BB:BB:BB 00:00:00:CC:CC:CC
Výhoda přepínaného prostředí spočívá v tom, že jsou pakety zasílány pouze
těm zařízením, kterým jsou určeny, takže zařízení v promiskuitním režimu
nejsou schopny ostatní pakety přijímat. Ale i v přepínaném prostředí