o Author = [Evil] o Date = 10/08/2002 o Tutorial name = ARP Cache poisoning o Website = www.eviltime.com o Mail = webmaster@eviltime.com ----------------------------------*Disclaimer*--------------------------------- Quello che troverete leggendo il seguito di questo tutorial, è a solo scopo informativo, io non mi ritengo responsabile del danno che potrete arrecare, a terzi, o a voi stessi, mettendo in pratica quanto scritto. -----------------------------------*Sommario*---------------------------------- 1) Intro al tutorial 2) Breve intro al protocollo ARP 3) Teoria dell'attacco 4) Tools 5) Fine ------------------------------*Intro al tutorial*------------------------------ In questo tutorial, parlerò in modo sufficientemente completo, dell'attacco che porta il nome di, "ARP Cache Poisoning". Premetto, che l'attacco non è molto semplice, e si appoggia sull'IP spoofing, prima di scrivere questo tutorial, ho provato ad attuarlo su una LAN, e posso assicurarvi che funziona... ------------------------*Breve intro al protocollo ARP*------------------------ Ogni computer possiede un indirizzo logico, ed uno fisico, rispettivamente un indirizzo IP, (Internet Protocol) e un indirizzo MAC, (Media Access Control) Il protocollo ARP, (Address Resolution Protocol) serve appunto a ricavare, un indirizzo MAC, a partire dall'IP address. La spiegazione è minima, ma non posso stare a fare l'ennesimo tutorial sull'ARP, se avete dubbi o esigete di chiarimenti, contattatemi a: webmaster@eviltime.com altrimenti potete dare un'occhiata a RFC 826, GOOGLE, o ancora [evil@localhost /evil]$ man arp -----------------------------*Teoria dell'attacco*----------------------------- La vulnerabilità, non sta nel protocollo ARP stesso, ma nell'algoritmo usato per l'inserimento voci nella ARP cache... Infatti un host non "cacha", (scusate questo termine impronunciabile) solo le reply indirizzate a lui, ma anche quelle indirizzate ad altri host. quindi, se noi mandassimo una arp reply, ad una query inesistente, destinata ad un host a caso, lui la 'cacha' comunque. Ma ora, vediamo come viene svolto l'attacco : A == Noi B == Host da impersonare C == Host a caso (A) -> spoofed ping -> (B) (A) -> spoofed reply -> (C) L'esempio è incompresibile, e minuto.. vediamo di spiegare meglio: Noi: IP 1.1.1.255 MAC xx:xx:xx:xx:xx:xx Vittima: 1.1.1.1 Host da impersonare: IP 1.1.1.2 MAC aa:aa:aa:aa:aa:aa 1.1.1.255 manda ping spooffato (source address = 1.1.1.2 ) a 1.1.1.1 1.1.1.255 manda ARP reply spooffato (source address = 1.1.1.2) (mac = xx:xx:xx:xx:xx:xx) a 1.1.1.3 ora la vittima, (1.1.1.1), a cachato questo : 1.1.1.2 = mac = xx:xx:xx:xx:xx:xx quindi, ora crede che 1.1.1.2, (l'host con qui sta coversando) ha come MAC xx:xx:xx:xx:xx:xx e non più, aa:aa:aa:aa:aa:aa , come invece ha realmente.. Grazie a questo, ora noi svolgiamo in grandi linee, il lavoro che fa un firewall ovvero.. A = Vittima B = Host impersonato C = Noi In una prima fase il contatto tra A e B era diretto ovvero: A Invia dati a B +-----+ --> +-----+ | . |>--------------------->| . | | A | | B | +-----+ +-----+ O viceversa: B Invia dati a A +-----+ <-- +-----+ | . |<---------------------<| . | | A | | B | +-----+ +-----+ Vediamo invece, dopo l'attacco Schema 1. +-----+ +-----+ | . | | . | | A | | B | +-----+ +-----+ | --> +-----+ --> | \_.>------->| . |>------->._/ | C | +-----+ Schema 2. +-----+ +-----+ | . | | . | | A | | B | +-----+ +-----+ | <-- +-----+ <-- | \_.<-------<| . |<-------<._/ | C | +-----+ Lo schema del lavoro che svolgiamo noi, (ovvero C), è abbastanza comprensibile, ma vediamolo più nel dettaglio: Schema 1. Fase 1: A invia pacchetto dati, a noi Fase 2: Noi controlliamo il pacchetto, e abbiamo la possibilità, di cambiarlo, modificarlo, leggerlo, o anche non inviarlo, (questo lo spiego dopo) Fase 3: B riceve il pacchetto dati (modificato o no) Schema 2. Fase 1: B invia pacchetto dati, a noi Fase 2: Noi controlliamo il pacchetto, e abbiamo la possibilità, di cambiarlo, modificarlo, leggerlo, o anche non inviarlo. Fase 3: A riceve il pacchetto dati, (modificato o no) La cosa, è comprensibile da chiunque.. e a questo punto, lascio a voi immaginare, o provare (se disponete di una LAN di almeno 3 computer)... Prima, ho parlato della possibilità di non inviare il pacchetto dati, a chi di dovere, Infatti questo è possibile, noi possiamo, redirigere il pacchetto dati, ad un host a caso, (meglio se inesistente), in questo modo, B andrebbe in timeout, e cadrebbe... La pecca sta solo nel fatto che, A potrebbe anche ignorare le tue richieste, o l'invio dati. Per ora, abbiamo parlato di come mettere, in pratica questo tipo di attacco, in modo "locale", ma c'è anche un'altra utilità ... vediamo: ----- 1. A è la vittima, ed è collegato ad una shell remota, dove ha accesso di root 2. B è la shell remota 3. C siamo noi ----- Ora, il nostro compito, sarebbe quello di impersonarci nella shell remota (Ovvero in B) per far questo, basta seguire quanto scritto sopra, avvelenare la cache nel modo giusto, e siamo a posto. Ora, noi saremo di nuovo, (come si suol dire). "L'uomo di mezzo" ------------------------------------*Tools*------------------------------------ Per questo tipo di attacco, abbiamo bisogno di un programma, che mandi ICMP packet spooffati, per il ping spooffato, (* guardare sopra), Valk ha codato un tool in C, reperibile su » www.mojodo.it Per ARPSpoof: Reperibile su DSNIFF a questo URL: » http://www.monkey.org/~dugsong/dsniff/ -------------------------------------*Fine*------------------------------------ Vorrei salutare: Resinaro, Evilcry, Xanthic.... per qualunque richieste, dubbi, critiche, domande, mandate un e-mail al seguente indirizzo: webmaster@eviltime.com Oppure mi trovate su IRC : server: irc.azzurra.org chan: #eviltime -------------------------------------*Fine*------------------------------------