Objavljeno: 25.11.2006 16:26 | Avtor: Edi Strosar | Monitor Oktober 2006

ARP - Address Resolution Protocol - napadi in obramba

ARP (Address Resolution Protocol) je eden izmed osnovnih protokolov v mrežni plasti (network layer) TCP/IP referenčnega modela OSI. Zastrupljanje predpomnilnika ARP (ARP cache poisoning) oziroma prikrivanje ARP (ARP spoofing) je metoda, ki hekerjem omogoča, da v krajevnih omrežjih povzročijo pravo razdejanje.

Za začetek si oglejmo, kako protokol ARP sploh deluje. ARP je odgovoren za preslikavo internetnega naslova (IP) v pripadajoči "strojni" naslov MAC (Media Access Control). Ker ima vsa omrežna strojna oprema unikaten naslov MAC, imajo vsi omrežni gradniki dva identifikacijska naslova: IP in MAC. Prvi trije bajti naslova MAC predstavljajo identifikacijo izdelovalca strojne opreme; tako na primer 00:02:55 označuje IBM Corporation. Krajevni strojni naslov najlaže odkrijemo z ukazom "ipconfig /all" (Windows) in "ifconfig" (Linux). Strojni naslov je sicer nespremenljiv, vendar so na voljo preproste metode, ki omogočajo njegovo spreminjanje ali prikrivanje (t. i. spoof).

Povezovanje strojne opreme v omrežjih temelji na strojnih naslovih, saj komunikacija deluje na fizični in podatkovno-povezovalni plasti referenčnega modela OSI. Preden se računalnik A lahko poveže z računalnikom B, mora internetni naslov slednjega torej najprej povezati (resolve) z njegovim naslovom MAC, to pa opravi protokol ARP. Nasprotno nalogo opravi RARP (Reverse Address Resolution Protocol), ki naslove MAC povezuje z naslovi IP. Slednjega v zadnjem času vse pogosteje zamenjujeta BOOTP (Bootstrap Protocol) in novejši DHCP (Dynamic Host Configuration Protocol).

Vzpostavitev povezave med dvema računalnikoma poteka tako, da računalnik A (npr. 192.168.0.101) razprši paket ARP z zahtevo (ARP-Request): "Kdo ima IP 192.168.0.102? Sporoči na IP 192.168.39.101" na razprševalni (broadcast) naslov MAC FF:FF:FF:FF:FF:FF. Vse zahteve, ki so poslane na razprševalni naslov MAC, dosežejo vse računalnike v omrežju. Računalnik B (npr. 192.168.39.102) odgovori s paketkom (ARP-Reply), ki vsebuje njegov krajevni strojni naslov MAC. Prejeti odgovor nato računalnik A začasno shrani v svoj predpomnilnik ARP (ARP cache).

Z ustreznim vohljačem lahko neposredno prisluškujemo tudi "pogovorom" prek protokola ARP.

Vsi sodobni operacijski sistemi vsebujejo program "arp", s katerim lahko preverimo ali spreminjamo trenutno stanje predpomnilnika ARP:

Windows:

> arp -a

Interface: 192.168.1.100 .- 0x10003

Internet Address  Physical Address Type

192.168.1.1   00-11-22-AA-BB-CC   dynamic

Linux:

$ arp -na

? (192.168.1.1) at 00:11:22:AA:BB:CC [ether] on eth0

Nekateri vnosi v predpomnilnik ARP (včasih imenovan tudi tabela ARP) so definirani kot "dinamični". To preprosto pomeni, da bodo v nekem doglednem času izbrisani iz tabele, za razliko od "statičnih" vnosov, ki so stalni. Čas (TTL - Time To Live), v katerem bo dinamični vnos izbrisan iz tabele, je odvisen od operacijskega sistema. V povprečju je vnos izbrisan v 1-10 minutah, pri nekaterih Ciscovih usmerjevalnikih pa traja TTL približno 4 ure. Predpomnilnik ARP je dinamičen, zato se avtomatično posodablja z novimi vnosi in briše stare.

ARP je po svoje nenavaden protokol oziroma uradno protokol brez stanja (stateless protocol). To pomeni, da če računalnik A neposredno razpršuje paket ARP-Reply, ga bodi vsi računalniki v omrežju sprejeli in ga evidentirali v svoji tabeli ARP. To in dejstvo, da pri vzpostavitvi povezave ne zahteva nikakršne prijave, je hekerjem omogočilo, da so razvili celo serijo uspešnih napadov na ARP.

Spodaj opisani napadi so najenostavneje izvedljivi v Linuxu. Seveda so tudi programi, ki omogočajo zastrupljanje ARP/prikrivanje ARP tudi v Oknih, vendar je treba tam prej namestiti paket WinPcap, saj programom sicer niso dosegljivi nizkonivojski protokoli (t. i. raw sockets).

Zastrupljanje krajevne tabele ARP

Za osnovno zastrupljanje tabele ARP ne potrebujemo nobenega posebnega hekerskega orodja. Zadostuje standardni program arp, ki je del vseh operacijskih sistemov. Seveda pa moramo biti povezani v krajevno omrežje. Z net view najprej preverimo navzočnost odjemalcev v omrežju, nato pa s tracert ali ping preizkusimo odzivnost oddaljenega računalnika. S tem hkrati vnesemo odjemalčev par IP/MAC v naš predpomnilnik ARP. V naslednjem koraku zastrupimo krajevno tabelo ARP z neveljavnim statičnim naslovom MAC. Rezultat zastrupljanja tabele ARP je nedosegljivost odjemalca, saj strojni in internetni naslov (IP) v našem predpomnilniku ARP nista enaka naslovom v oddaljenem računalniku. Prvotno stanje vzpostavimo z ukazom arp -d *.

Kako zastrupimo sami sebe...

Napadi

Najprej nekaj vzpodbudnega za vse, ki bi jih ob prebiranju, kaj vse je mogoče doseči z napadi ARP, pretirano zaskrbelo: napadi ARP so izvedljivi le v krajevnih (LAN) omrežjih. Protokol ARP namreč ni usmerjevalni (je t. i. non-routable), zato usmerjevalniki paketov ARP privzeto ne posredujejo iz krajevnega omrežja. Če je oddaljeni računalnik zunaj krajevnega omrežja, ARP posreduje strojni naslov mejnega (border) usmerjevalnika. Teoretično so sicer možni tudi napadi ARP prek interneta, vendar mora heker v tem primeru prej vdreti v prehodni usmerjevalnik (gateway router) in ga ustrezno "popraviti".

1 Zastrupljanje tabele ARP (ARP cache poisoning)

Najenostavnejši napad - gre le za razprševanje ponarejenih paketov ARP z namenom prelisičiti odjemalce v omrežju. Napad je trivialen, saj ARP ne zahteva prijave in slepo odgovarja na vse pakete ARP-Request. Zastrupljanje ARP je eden izmed načinov za izvedbo napada s posrednikom ali MITM (man-in-the-middle).

2 Poplavljanje naslova MAC (MAC address flooding)

Variacija na temo zastrupljanja je poplavljanje naslova MAC. Klasično zastrupljanje ARP, le da tarča napada niso odjemalci v omrežju, temveč omrežno stikalo (switch). Stikalo za razliko od razdelilnika (hub) preklaplja oziroma razvršča promet med odjemalci v omrežju. Če stikalo "poplavi" z lažnimi naslovi MAC, napadalec doseže prekoračitev predpomnilnika ARP, to pa povzroči, da stikalo preklopi v način razpršenega delovanja ("broadcast"). To pomeni, da deluje podobno kot razdelilnik in se ves promet posreduje vsem odjemalcem v omrežju; to omogoča vohljanje po omrežnem prometu.

3 Podvajanje MAC (MAC duplication)

Pri podvajanju MAC gre za napad DoS (Denial of Service), pri katerem ponarejeni paketi ARP-Reply vsebujejo podvojeni naslov MAC ene izmed naprav v omrežju. Ker mora imeti vsaka naprava unikaten naslov MAC, to neizogibno povzroči težave. Stikala se na podvojeni strojni naslov različno odzovejo, nekatera preprosto "zmrznejo", druga pa posredujejo omrežni promet na oba naslova. Oboje je pravzaprav tisto, kar bi si morebitni napadalec želel.

4 Prikrivanje MAC (MAC spoofing)

Prikrivanje MAC je metoda, ki se najpogosteje uporablja za (ilegalen) dostop do brezžičnih omrežij. Skoraj vsi brezžični usmerjevalniki namreč omogočajo še dodatno stopnjo zaščite (poleg šifriranja z WEP ali WPA) s tem, da dostop v omrežje dovoljujejo le napravam, ki imajo točno določen strojni naslov MAC. Najprej moramo torej ugotoviti, kateri naslovi MAC so dovoljeni oziroma vpisani v usmerjevalnik. Najbolje bo za to uporabiti program Kismet, ki ga najdemo v internetu. Nato enega izmed pridobljenih naslovov vpišemo na svojo omrežno kartico. Takole:

Windows: Uporabimo program changemac (najdemo ga v internetu) in določimo želeni strojni naslov.

Linux:

# ifconfig eth0 down   (onemogočimo delovanje omrežne kartice)

# ifconfig eth0 hw ether AA:BB:CC:11:22:33   (določimo želeni strojni naslov)

# ifconfig eth0 up    (znova omogočimo delovanje omrežne kartice)

5 Napad s posrednikom oziroma MITM (Man-in-the-Middle)

Pri napadu s posrednikom ves promet med dvema računalnikoma poteka prek napadalčevega računalnika, ki igra vlogo vmesnega člena ali prestreznika. Zastrupljanje ARP je le eden izmed načinov za izvedbo takega napada. Seveda je tak napad najučinkovitejši, kadar poskušamo prestreči komunikacijo protokolov, ki so prosto berljivi (npr. Telnet, Rlogin, FTP, SMTP, LDAP...). To seveda ne pomeni, da pri uporabi šifrirnega protokola, npr. SSH, Kerberos,... MITM, napad ni mogoč. Vztrajnemu in izkušenemu hekerju zbiranje ter razbijanje šifriranih gesel ne povzroča večjih težav. V pomoč pa so mu tudi programi, kot sta mitm-ssh ali Cain & Abel, ki celoten proces pospešita in poenostavita. Komponente napada s posrednikom sestavljajo: napadalec, odjemalec in usmerjevalnik oziroma oddaljeni računalnik, s katerim ima odjemalec dostop do interneta.

Grafična ponazoritev, kako poteka napad s posrednikom

Najprej preverimo (na Linuxu), ali imamo omogočeno internetno posredovanje (IP forwarding):

# cat /proc/sys/net/ipv4/ip_forward

Če je rezultat vrednost "1", je internetno posredovanje omogočeno. V nasprotnem primeru vnesemo naslednji ukaz:

# echo 1 > /proc/sys/net/ipv4/ip_forward

V Oknih internetno posredovanje omogočimo s preprostim posegom v register, kot je razloženo na Microsoftovih straneh:

  • support.microsoft.com/?kbid=315236 (Windows XP)
  • support.microsoft.com/default.aspx?scid=kb;en-us;323339 (Windows 2003 Server)
  • Uporabimo program arpspoof, ki ga je napisal znani heker Dug Song in je del paketa Dsniff. Uporaba programa je nadvse preprosta. Napadalec mora poznati le dva parametra: odjemalčev in usmerjevalnikov internetni naslov (IP). V naslednjem koraku napadalec "prepriča" odjemalca, da je njegov (napadalčev) naslov v resnici usmerjevalnik, slednjega pa prepriča, da je njegov (napadalčev) naslov odjemalec.

    Celoten napad je okleščen na nekaj preprostih ukazov, ki jih izvede napadalec:

    # arpspoof -t IP_odjemalca IP_usmerjevalnika &>/dev/null &

    # arpspoof -t IP_usmerjevalnika IP_odjemalca &>/dev/null &

    # dsniff | less

    # killall arpspoof

    Takoj po tem lahko z uporabo dsniff vohljamo po vsem omrežnem prometu, ki poteka med odjemalcem in usmerjevalnikom. Preprosto, a še kako deluje...

    Celoten proces je podobno enostavno izvedljiv v okenskem okolju, vendar z uporabo programa Cain & Abel:

  • poženemo program, kliknemo "Configure" in izberemo omrežno kartico,
  • aktiviramo vohljača (ikona Start/Stop Sniffer) in kliknemo jeziček "Sniffer",
  • kliknemo ikono "+"; Cain začne prisluškovati omrežju in iskati aktivne naslove,
  • izberemo jeziček APR (ARP Poisoning & Routing),
  • znova kliknemo ikono "+" in izberemo naslove, katerih komunikacijo želimo prestrezati,
  • aktiviramo APR.
  • Cain privzeto filtrira in prikazuje uporabniška imena ter gesla v berljivih protokolih, kot so FTP, HTTP, POP3, SMTP, Telnet... Vsa trenutno zbrana gesla vidimo z izbiro jezička "Passwords". Šifrirana gesla (NTLM, Kerberos...) lahko razberemo z vgrajenim modulom za razbijanje šifer.

    Cain&Abel v akciji

    Obramba

    Naj še enkrat ponovimo lepšo plat zapisanega: zastrupljanje ARP je izvedljivo le v krajevnih omrežjih, saj se protokol ARP ne usmerja. Seveda ta "ovira" izurjenim hekerjem ne povzroča večjih težav. Dodatna voda na hekerjev mlin je tudi to, da pred napadi ARP ni univerzalne rešitve, saj je to ranljivost v protokolu samem. Ranljivi so torej vsi operacijski sistemi in arhitekture. Izjema je Sun Solaris, v katerega je vgrajen mehanizem, ki preprečuje, da bi se v tabelo ARP shranjevali odgovori ARP (ARP Reply), ki jih sistem ni izrecno zahteval s poizvedbo ARP (ARP Request). Zastrupljanje je tako sicer nekoliko težavnejše, vendar se lahko temu varnostnemu mehanizmu izognemo preprosto tako, da Solarisu pošljemo prirejeni (spoofed) ping. Na srečo je na voljo rešitev pred napadi ARP. Imenuje se statični vnosi ARP (static ARP entries). Vnašanje statičnih naslovov MAC v tabelo ARP je enostavno:

    Windows in Linux:

    > arp -s 192.168.0.101 AA:BB:CC:11:22:33

    Vnose lahko brišemo z naslednjim ukazom:

    Windows in Linux:

    > arp -d 192.168.0.101

    Za popolno varnost je torej priporočljivo narediti skript, ki ob zagonu sistema avtomatično vnese naslove vseh omrežnih členov v tabelo ARP. Seveda je taka obramba pri velikih omrežjih praktično neuporabna. V tem primeru ponuja platforma Linux rešitev, imenovano arpwatch, ki preverja istovetnost para naslovov MAC/IP. V okolju Windows je enakovredno orodje XArp, ki ga dobite v internetu. Razmeroma učinkovito obrambo je razvil tudi Cisco, saj nekatera njihova stikala podpirajo Dynamic ARP Inspection in Port Security, ki sta se izkazala kot uspešna zaščita pred napadi ARP.

    Uporabne povezave:

    www.kismetwireless.net

    www.gorlani.com/tools/findamac

    www.r1ch.net/stuff/changemac

    www.networksorcery.com/enp/rfc/rfc826.txt

    www.oxid.it/cain.html

    ntsecurity.nu/toolbox/etherchange

    monkey.org/~dugsong/dsniff

    www-nrg.ee.lbl.gov

    arpoison.sourceforge.net

    www.cisco.com/en/US/products/hw/switches/ps4324/products_configuration_guide_chapter09186a008019d0ca.html

    www.cisco.com/en/US/products/hw/switches/ps4324/products_configuration_guide_chapter09186a008019d0de.html

    www.chrismc.de/developing/xarp

    Naroči se na redna tedenska ali mesečna obvestila o novih prispevkih na naši spletni strani!

    Komentirajo lahko le prijavljeni uporabniki

     
    • Polja označena z * je potrebno obvezno izpolniti
    • Pošlji