Recimo, da imamo običajno lokalno omrežje, na katerem sta računalnika A z internetnim naslovom IA ter B z internetnim naslovom IB. Za dostop na internet skrbi privzeti prehod G z internetnim naslovom IG. Nekje daleč, za devetimi vodami in devetimi gorami se nahaja računalnik Z z internetnim naslovom IZ.

Naprej recimo, da bi z A radi spravili podatke do B in potem do Z.

Da bi A lahko svoje podatke poslal po mreži, jih mora zapakirati v primeren ethernet okvir. Težava je le v tem, da v začetku A pozna le naslov IB, ne pa tudi naslova, ki ga ima B na povezovalni plasti. Da bi izvedel, kateri strojni naslov pripada internetnemu naslovu IB, mora A razposlati povpraševanje (broadcast), namenjeno vsem računalnikom na lokalnem omrežju, v katerem sprašuje, kdo ima naslov IB. Na to povpraševanje odgovori le B, ki v odgovoru pove, kateri strojni naslov ima.

Računalnik A si nato v posebno tabelo zapiše, da internetnemu naslovu IB pripada strojni naslov B.

Nato A ustvari ethernet okvir, v katerem je kot naslovnik naveden B, kot pošiljatelj pa A. V ta ethernet okvir spravi internetni paket, v katerem je kot naslovnik naveden IB, kot pošiljatelj pa IA. Ustvarjeni okvir potem pošlje po omrežju, stikalo pa ga usmeri po žici k B.

Za povpraševanje in odgovor na vprašanje, kdo ima kateri strojni naslov, na internetnih omrežjih uporabljamo ARP - address resolution protocol.

Da bi izpisali tabelo, v kateri je za vsak internetni naslov na lokalnem omrežju zapisan pripadajoči strojni naslov, pod linuxom uporabimo ukaz arp:

polz@extender:~$ sudo arp -n 
Address                  HWtype  HWaddress           Flags Mask            Iface
192.168.1.4              ether   00:24:8c:29:49:41   C                     wlan0
192.168.1.1              ether   00:22:75:24:67:d8   C                     wlan0

S stikalom -n dosežemo, da arp ne poizkusi za vsak internetni naslov ugotoviti pripadajočega imena. Brez stikala -n izpis traja približno desetkrat dlje časa in izgleda takole:

polz@extender:~$ sudo arp
Address                  HWtype  HWaddress           Flags Mask            Iface
minirama.stigma.predosl  ether   00:24:8c:29:49:41   C                     wlan0
192.168.1.1              ether   00:22:75:24:67:d8   C                     wlan0

Kaj pa, če hoče A poslati podatke do Z? Ker ve, da je naslov privzetega prehoda IG, najprej s pomočjo ARP ugotovi strojni naslov G. Nato ustvari ethernet okvir, v katerem je kot naslovnik nastavljen G, kot pošiljatelj pa A. V ta ethernet okvir spravi internetni paket, v katerem je kot naslovnik nastavljen IZ, kot pošiljatelj pa IA. Ko okvir po omrežju prispe do G, ta iz njega pobere internetni paket in ga pošlje naprej v širni Internet.

Prednost modernih ethernet omrežij pred starimi je, da stikala poskrbijo, da se podatki od pošiljatelja prenesejo le do naslovnika. Tako je prepustnost omrežja precej večja, kot bi bila, če bi vsi prejemali podatke, namenjene komurkoli na omrežju.

"Slabost" modernih omrežij je ta, da ima ARP tabela na računalnikih zato pogosto le en ali dva vnosa - običajno je v njej le naslov privzetega prehoda. Ker se podatki ne razpošiljajo po vsem omrežju, je tudi oteženo prisluškovanje.

Vendar vse ni izgubljeno! Večina računalnikov namreč dovoli, da jim neznanci spremenijo vnose v ARP tabeli. Tej tehniki pravimo zastrupljanje ARP tabele oziroma ARP poisoning. Da zlodej B lahko prisluškoval prometu, ki si ga A izmenjuje z računalniki na internetu, mora samo zastrupiti ARP tabeli, ki ju imata A in G. V ARP tabelo A zapiše, da je strojni naslov IG enak B. V ARP tabelo G zapiše, da je strojni naslov IA enak B. Tako privzeti prehod G kot tudi žrtev A bosta odtlej ves internetni promet med A in poljubnim računalnikom izven lokalnega pošiljala čez B.

Vse, kar B potrebuje za napad, so strojni in internetni naslovi A in G ter primeren programček, ki bo razposlal prave ARP paketke po omrežju. Do strojnih naslovov lahko pridemo naprimer tako, da z B pošljemo ping računalnikoma A in G. Naslove potem preberemo s pomočjo ukaza arp.

Za izvedbo samega zastrupljanja lahko uporabimo enega od mnogih temu namenjenih programov. Precej popularen je program ettercap, na vajah pa smo uporabili programček 4g8. Namestitev:

sudo apt-get install ettercap-gtk 4g8

Uporaba 4g8 v primeru, ko bi radi prestrazali ves na internet namenjeni promet z naslova 192.168.1.4 (glej ARP tabelo zgoraj):

sudo 4g8 -g 192.168.1.1 -G 00:22:75:24:67:d8 -s 192.168.1.4 -S 00:24:8c:29:49:41

Za samo prestrezanje potem lahko uporabimo poljuben program za prisluškovanje prometu.

Zadnja sprememba: sreda, 10. avgust 2011, 10.21