IMPORTANT: Per accedir als fitxer de subversion: http://acacha.org/svn (sense password). Poc a poc s'aniran migrant els enllaços. Encara però funciona el subversion de la farga però no se sap fins quan... (usuari: prova i la paraula de pas 123456)

Alert.png Aquesta wiki forma part dels materials d'un curs
Curs: SeguretatXarxesInformàtiques
Fitxers: EinesHacking.pdf (EinesHacking.odp)
Repositori SVN: https://anonymous@svn.projectes.lafarga.cat/svn/iceupc/SeguretatXarxesInformàtiques
Usuari: anonymous
Paraula de pas: sense paraula de pas
Autors: Sergi Tur Badenas

Instal·lació

Si voleu poder executar ettercap en mode gràfic, heu d'instal·lar:

$ sudo apt-get install ettercap-gtk

Ubuntu 12.04 o superior

Han canviat els noms dels paquets i hi ha versions noves de Ettercap. Vegeu:

http://packages.ubuntu.com/precise/ettercap

El nom ettercap com a nom de paquet passa a ser un paquet virtual.

$ sudo apt-get install ettercap
S'està llegint la llista de paquets… Fet 0%
S'està construint l'arbre de dependències       
S'està llegint la informació de l'estat… Fet%
El paquet ettercap és un paquet virtual proveït per:
 ettercap-text-only 1:0.7.4.2-1
 ettercap-graphical 1:0.7.4.2-1
Necessiteu seleccionar-ne un explícitament per a instaŀlar-lo.

E: El paquet «ettercap» no té candidat d'instaŀlació

Per tant com podeu veure per instal·lar ettercap en mode gràfic:

$ sudo apt-get install ettercap-graphical

I en mode text:

$ sudo apt-get install ettercap-text-only

A més s'ha actualitzat el contingut del paquet i té la nova versió de Ettercap, la versió 0.7.4-Lazarus (--acacha (discussió) 19:41, 27 nov 2012 (CET)):

http://ettercap.sourceforge.net/downloads.html

Origen del nom

Ettercap un monstre del joc de rol Dungeons & Dragons
“Even if blessed with a feeble intelligence, they are cruel and smart..."

És la descripció d'un Ettercap, un monstre del joc de rol Advanced Dungeons & Dragons. Es va escollir per la seva similitud amb la paraula "ethercap" (ethernet capture) i per què el monstre té un poderós verí (ARP Poisoning)

The Lord Of The (Token)Ring
      (the fellowship of the packet)

      "One Ring to link them all, One Ring to ping them, one Ring to bring them all and in the  
      darkness sniff them."

Execució

Ettercap té 3 interfícies d'usuari possibles:

Terminal

$ sudo ettercap -T

o

$ sudo ettercap --text

Ncurses:

$ sudo ettercap -C

o

$ sudo ettercap --curses

Ettercap.jpg

GTK:

$ gksu "ettercap --gtk"

o

 $ gksu "ettercap -G"

Ettercap1.jpg

No hi ha cap mode per defecte i per tant es obligatori especificar un mode a l'iniciar ettercap. Sudo es necessari per poder funcionar en mode promiscu.

Finalment destacar que ettercap es pot executar també com un dimoni:

$ sudo ettercap -D

o

$ sudo ettercap --daemonize

I fer les escoltes a través dels fitxers de log.

Sniffing. Capturant tràfic de la xarxa

Un cop executat ettercap anem al menú Sniffing i executem el tipus de sniffing que volem fer i a quina interfície de xarxa:

Ettercap2.jpg

Amb el mode uniffied haurem d'escollir quina interfície de xarxa volem utilitzar:

Ettercap3.jpg

Amb el mode bridged haurem d'establir el pont entre una interfície i un altre:

Ettercap4.jpg

  • UNIFIED: Captura tots els paquets que passen per un cable (es pot fer en mode promiscu o mode normal, i aleshores només escoltem els paquets de la nostra màquina). Els paquets "sniffats" són automàticament redireccionats al receptor original utilitzant el nivell 3 IP (ip_forwarding). Aquest sistema desactiva el ip_forwarding del kernel per tal d'evitar que el paquet sigui reenviat dos cops. Per tant cal anar en compte si s'utilitza en un gateway ja que es un mode invasiu. Ettercap recomana en el seu manual que s'utilitzi aquest mode en gateways només amb el mode UNOFFENSIVE actiu (paràmetre -u --unoffensive).
  • BRIDGED: Necessita de dos targetes de xarxa i reenvia el tràfic d'una de les targetes a un altre mentrestant es fa la captura de tràfic en temps real. Aquest mètode es completament invisible ja que no hi ha manera de notar que algu és en mig del cable degut a que treballa a nivell 1 físic (es com punxar un cable físicament). Si s'utilitza en un gateway converteix el gateway en un bridge.

Escollint a les víctimes (targets)

Consulteu el següent apartat Exemple pas a pas per veure com es poden seleccionar les víctimes per la interfície gràfica o ncurses.

A l'executar ettercap podem utilitzar

# ettercap [OPCIONS] [TARGET 1] [TARGET 2]

Per especificar els targets podem filtrar per MAC, IPs o PORTs.

Si omitim aquesta opcions els targets seran tota la llista de hosts detectats.

Exemples:

//80 Qualsevol Adreça MAC o IP però només el port 80
/10.0.0.1/" qualsevol MAC, només la IP 10.0.0.1 i qualsevol port.
10.0.0.1-5;10.0.1.33" un rang d'IPS entre 10.0.0.1 i 10.0.0.5 i a més la 23.
20-25,80,110" tots els ports 20, 21, 22, 23, 24, 25, 80 and 110

Exemple pas a pas de captura de contrasenyes: TELNET

Per fer aquest exemple necessitem 3 màquines, 2 han d'estar a la mateixa xarxa LAN (atacat i atacant) i una pot estar a la mateixa xarxa o a una xarxa remota (servidor de TElent):

  • Màquina atacant: Màquina on executarem ettercap
  • Màquina atacada: Màquina a la qual capturarem el tràfic de telnet
  • Servidor de Telnet: És la màquina a la qual l'atacant es connectarà via TELNET

El primer pas és tenir el servidor de Telnet a la màquina Servidor de Telnet. El podem instal·lar amb:

$ sudo apt-get install telnetd

Ara a la màquina atacant executem ettercap:

$ sudo -i
# ettercap -G

Escollim el tipus d'escolta (sniffing que volem fer). Seleccionem Unified Sniffing del menú Sniff:

Ettercap2.jpg

Ara hem de detectar les màquines de la xarxa amb l'opció Scan for Hosts del menú Hosts

Ettercap7.jpg

Ettercap6.jpg

Un cop hem detectat les màquines de la xarxa, podem escollir quines seran les nostres víctimes escollint-les de la llista de Hosts que podem consultar seleccionant l'opció Hosts List del menú Hosts:

Ettercap16.jpg

I afegint-les com a víctimes amb les botons Add To Target 1 o Add To Target 2.

NOTA: Sempre hi ha com a mínim 2 víctimes. La primera víctima és el gateway (per què li suplantem la identitat i ens fem passar per ell) i la segona víctima és 
l'ordinador a qui sniffem.
  • Add to Target 1: Gateway
  • Add to Target 2: Ordinador de la víctima

Ettercap17.jpg

Podem consultar la llista de targets seleccionant l'opció Current Targets del menú Targets:

Ettercap18.jpg

Des d'aquí podem afegir víctimes que no hagin estat detectades per l'escanner utilitzant el botó Add

NOTA: Si no seleccionem víctimes concretes ettercap començarà l'atac contra tota les màquines de la xarxa!!!

Ara podem començar l'escolta amb la opció Start Sniffing del menú Start:

Ettercap12.jpg

Ara ja podem iniciar un atac Man in The Middle (Mitm) escollint l'opció ARP Poisoning del menú Mitm:

Ettercap11.jpg

I seleccionem l'opció Sniff Remote Connections:

Ettercap10.jpg

NOTA: En cas d'utilitzar l'interfície ncurses hem d'escriure remote a la llista d'opcions que ens apareixerà a l'escollir l'opció ARP Poisoning.

Ara només queda visualitzar les connexions "robades" seleccionant l'opció Connections del menú View:

Ettercap13.jpg

I veurem una llista de les connexions robades:

Ettercap15.jpg

Anem a veure com es capturen les contrasenyes de TELNET. Anem a la màquina atacant i executem:

$ telnet IP_DEL_SERVIDOR_DE_TELNET
Trying IP_DEL_SERVIDOR_DE_TELNET
Connected to IP_DEL_SERVIDOR_DE_TELNET
Escape character is '^]'.
Ubuntu 7.04
IP_DEL_SERVIDOR_DE_TELNET login: prova
Password: 

A ettercap apareixerà una connexió marcada amb asterisc:

Ettercap19.jpg

A la zona de missatges de la part inferior veurem en text clar la contrasenya.

A més podem monitoritzar tota la sessió de telnet accedint a Connection Data fent doble clic sobre la connexió:

Ettercap20.jpg

També podem utilitzar el botó View Details per veure els detalls de la connexió:

Ettercap21.jpg


Per acabar les escoltes i sortir hem de seguir els següents passos:

  1. Menú Mitm--> Stop Mitm
  2. Menú Start--> Stop Sniffing
  3. Menú Start--> Exit

Ettercap amb ncurses

Inicieu ettercap en mode ncurses:

$ sudo  ettercap -C

I selecciona les següents opcions:

  • Sniff->Unified Sniffing : eth0 (o el que pertoqui)
  • Hosts->Scan for hosts
  • Start->Start Sniffing
  • Mitm->Arp poisoning
    • Escriviu remote
  • View->Connections
  • Mitm->Stop Mitm
  • Start->Stop Sniffing
  • Start->Exit

Com funciona ettercap?

Podem utilitzar tcpdump per comprovar el funcionament d'ettercap. Veiem un exemple, tenim una xarxa de 3 PCS + Gateway, amb les següents dades:

  • Gateway: 192.168.1.1 00:15:E9:CA:34:A5
  • Màquina 1: 192.168.1.3 00:18:F3:FB:FC:4A
  • Màquina 2: 192.168.1.6 00:0E:35:29:2A:48
  • Màquina 3: 192.168.1.2 00:30:1B:B7:CD:B6

L'atacant esta a la màquina 3 (192.168.1.2). La taula ARP a l'atacant és la següent:

$ arp -n
Address                  HWtype  HWaddress           Flags Mask            Iface
192.168.1.1              ether   00:15:E9:CA:34:A5   C                     eth0
192.168.1.3              ether   00:18:F3:FB:FC:4A   C                     eth0
192.168.1.6              ether   00:0E:35:29:2A:48   C                     eth0

Executem:

$ sudo tcpdump arp 
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes

NOTA: Una opció més completa i que ens permet veure les MAC:

$ sudo tcpdump -ennqi eth0 arp

I en un altre terminal podem forçar noves peticions de ARP, treien entrades de la taula i fent pings:

$ sudo arp -d 192.168.1.1
$ sudo arp -d 192.168.1.3
$ sudo arp -d 192.168.1.6
$ ping 192.168.1.1
$ ping 192.168.1.3
$ ping 192.168.1.6

I començaran a aparèixer peticions arp a la terminal on s'està executant tcpdump:

09:54:40.061879 arp who-has 192.168.1.1 tell 192.168.1.2
09:54:40.062244 arp reply 192.168.1.1 is-at 00:15:e9:ca:34:a5
09:54:58.802487 arp who-has 192.168.1.3 tell 192.168.1.2
09:54:58.802576 arp reply 192.168.1.3 is-at 00:18:f3:fb:fc:4a
09:55:41.012054 arp who-has 192.168.1.6 tell 192.168.1.2
09:55:41.013671 arp reply 192.168.1.6 is-at 00:0e:35:29:2a:48

El funcionament d'ARP és el correcta. Ara anem a provar que passa amb ettercap.

Abans d'executar ettercap executem a totes les màquines:

$ sudo tcpdump arp

En una terminal de la màquina atacant executeu:

$ sudo -i
# ettercap -G

I seguiu els passos habituals:

  • Menú Sniff-->Unified Sniffing
  • Menú Hosts-->Scan for Hosts

Si veieu al fer un scan, ettercap envia una sèrie de ARP-WHO-HAS aleatoris a tot el rang de xarxa per detectar hosts:

09:59:38.512855 arp who-has 192.168.1.226 tell 192.168.1.2
09:59:38.529888 arp who-has 192.168.1.165 tell 192.168.1.2
09:59:38.544853 arp who-has 192.168.1.247 tell 192.168.1.2
09:59:38.560845 arp who-has 192.168.1.239 tell 192.168.1.2
09:59:38.576855 arp who-has 192.168.1.229 tell 192.168.1.2
09:59:38.592865 arp who-has 192.168.1.227 tell 192.168.1.2
09:59:38.609872 arp who-has 192.168.1.211 tell 192.168.1.2
09:59:38.624914 arp who-has 192.168.1.215 tell 192.168.1.2
09:59:38.640965 arp who-has 192.168.1.206 tell 192.168.1.2
09:59:38.656860 arp who-has 192.168.1.240 tell 192.168.1.2
  • Menú Start-->Start Sniffing
  • Menú Mitm-->ARP Poisoning

El resultat és:

10:03:11.168233 arp reply 192.168.1.3 is-at 00:30:1b:b7:cd:b6
10:03:11.168369 arp reply 192.168.1.6 is-at 00:30:1b:b7:cd:b6
10:03:11.200758 arp reply 192.168.1.2 is-at 00:30:1b:b7:cd:b6
10:03:11.200890 arp reply 192.168.1.6 is-at 00:30:1b:b7:cd:b6
10:03:11.220871 arp reply 192.168.1.6 is-at 00:30:1b:b7:cd:b6
10:03:11.221050 arp reply 192.168.1.3 is-at 00:30:1b:b7:cd:b6
10:03:11.248938 arp reply 192.168.1.2 is-at 00:30:1b:b7:cd:b6
10:03:11.249127 arp reply 192.168.1.3 is-at 00:30:1b:b7:cd:b6
10:03:11.264841 arp reply 192.168.1.6 is-at 00:30:1b:b7:cd:b6
10:03:11.264996 arp reply 192.168.1.2 is-at 00:30:1b:b7:cd:b6
10:03:11.276816 arp reply 192.168.1.3 is-at 00:30:1b:b7:cd:b6
10:03:11.276827 arp reply 192.168.1.2 is-at 00:30:1b:b7:cd:b6
10:03:12.292742 arp reply 192.168.1.3 is-at 00:30:1b:b7:cd:b6
10:03:12.292760 arp reply 192.168.1.6 is-at 00:30:1b:b7:cd:b6
10:03:12.304733 arp reply 192.168.1.2 is-at 00:30:1b:b7:cd:b6
10:03:12.304750 arp reply 192.168.1.6 is-at 00:30:1b:b7:cd:b6
10:03:12.316750 arp reply 192.168.1.6 is-at 00:30:1b:b7:cd:b6
10:03:12.316769 arp reply 192.168.1.3 is-at 00:30:1b:b7:cd:b6
10:03:12.328804 arp reply 192.168.1.2 is-at 00:30:1b:b7:cd:b6
10:03:12.328827 arp reply 192.168.1.3 is-at 00:30:1b:b7:cd:b6
10:03:12.340748 arp reply 192.168.1.6 is-at 00:30:1b:b7:cd:b6
10:03:12.340766 arp reply 192.168.1.2 is-at 00:30:1b:b7:cd:b6

És un conjunt de arp-reply falsos. Mireu com la màquina atacant (MAC 00:30:1b:b7:cd:b6) es fa passar per totes les MACS de la xarxa!!!

Fixeu-vos que passa ara a la màquina remota 192.168.1.3. Si consultem la taula arp:

$ arp -n
Address                  HWtype  HWaddress           Flags Mask            Iface
192.168.1.6              ether   00:30:1B:B7:CD:B6   C                     eth0
192.168.1.1              ether   00:15:E9:CA:34:A5   C                     eth0
192.168.1.2              ether   00:30:1B:B7:CD:B6   C                     eth0

Resulta que les MAC de la màquina 192.168.1.6 és la MAC de la màquina atacant.

DOS Deny of service

Anem a veure com ettercap realitza una atac DOS a una màquina de la xarxa utilitzant ARP. Ettercap té un plugin anomenat dos_attack:

EttercapDOS.jpg

Els plugins els podeu trobar al menú Plugins --> Manage The plugins.

El que fa aquest atac és assignar una IP incorrecta a la MAC de la màquina atacada, impedint d'aquesta manera la comunicació amb la màquina. Abans d'executar l'atac executeu:

$ sudo tcpdump arp -n

I ara executeu l'atac:

EttercapDOS1.jpg

EttercapDOS2.jpg

Veureu a la terminal on esteu executant tcpdump que el resutat és:

10:13:18.926375 arp who-has 192.168.1.58 tell 192.168.1.6
10:13:19.036821 arp reply 192.168.1.58 is-at 00:30:1b:b7:cd:b6
10:13:19.039107 arp who-has 192.168.1.58 tell 192.168.1.2
10:13:19.039270 arp reply 192.168.1.58 is-at 00:30:1b:b7:cd:b6
10:13:20.039133 arp who-has 192.168.1.58 tell 192.168.1.2
10:13:20.039189 arp reply 192.168.1.58 is-at 00:30:1b:b7:cd:b6
10:13:20.956842 arp reply 192.168.1.3 is-at 00:30:1b:b7:cd:b6
10:13:20.956863 arp reply 192.168.1.6 is-at 00:30:1b:b7:cd:b6
10:13:20.971206 arp reply 192.168.1.2 is-at 00:30:1b:b7:cd:b6
10:13:20.971225 arp reply 192.168.1.6 is-at 00:30:1b:b7:cd:b6
10:13:20.983245 arp reply 192.168.1.6 is-at 00:30:1b:b7:cd:b6
10:13:20.983256 arp reply 192.168.1.3 is-at 00:30:1b:b7:cd:b6
10:13:20.995261 arp reply 192.168.1.2 is-at 00:30:1b:b7:cd:b6
10:13:20.995274 arp reply 192.168.1.3 is-at 00:30:1b:b7:cd:b6
10:13:21.015291 arp reply 192.168.1.6 is-at 00:30:1b:b7:cd:b6
10:13:21.015303 arp reply 192.168.1.2 is-at 00:30:1b:b7:cd:b6
10:13:21.027274 arp reply 192.168.1.3 is-at 00:30:1b:b7:cd:b6
10:13:21.027286 arp reply 192.168.1.2 is-at 00:30:1b:b7:cd:b6
10:13:21.039177 arp who-has 192.168.1.58 tell 192.168.1.2
10:13:21.039250 arp reply 192.168.1.58 is-at 00:30:1b:b7:cd:b6
10:13:22.043207 arp who-has 192.168.1.58 tell 192.168.1.2
10:13:22.043258 arp reply 192.168.1.58 is-at 00:30:1b:b7:cd:b6
10:13:23.043246 arp who-has 192.168.1.58 tell 192.168.1.2
10:13:23.043294 arp reply 192.168.1.58 is-at 00:30:1b:b7:cd:b6

Un munt d'arp-replys falsos que assignen la IP 192.168.1.58 (no existent a la xarxa) a la MAC de la màquina atacada.

MAC Flooding

Podem utilitzar el plugin rand_flood:

EttercapMAC.jpg

El resultat a la xarxa és el següent:

$ sudo tcpdump arp -n
11:07:01.750043 arp who-has 0.0.0.0 tell 0.0.0.0
11:07:01.754050 arp who-has 0.0.0.0 tell 0.0.0.0
11:07:01.758355 arp who-has 0.0.0.0 tell 0.0.0.0
11:07:01.762106 arp who-has 0.0.0.0 tell 0.0.0.0
11:07:01.766055 arp who-has 0.0.0.0 tell 0.0.0.0
11:07:01.770044 arp who-has 0.0.0.0 tell 0.0.0.0
11:07:01.774052 arp who-has 0.0.0.0 tell 0.0.0.0
11:07:01.778046 arp who-has 0.0.0.0 tell 0.0.0.0
11:07:01.782045 arp who-has 0.0.0.0 tell 0.0.0.0
11:07:01.786079 arp who-has 0.0.0.0 tell 0.0.0.0

Defenses contra ettercap i els atacs de ARP-SPOOFING

Tenim diferents opcions:

  • SSH tunneling
  • Utilitzar un sistema de taules ARP estàtiques: Difícil de mantenir en xarxes grans.
  • DHCP Snooping: Amb DHCP, el dispositiu de xarxa manté una llista de les adreces MC connectades a cada port (switchs gestionats o d'alta gama)
  • arpwatch: Programa que permet detectar quan hi ha arp-replys falsos i envia una notificació per correu electrònic.
  • Port Security: Consulteu Port Security a commutadors Cisco
  • RARP

De totes maneres, cal tenir en compte que ettercap ens ofereix més tipus d'atacs Man in The Middle i caldria també previndré aquests tipus d'atacs.

Consulteu també l'article ARP-spoofing

Detectar sniffers

SSL

$ sudo joe /etc/etter.conf

Busqueu les línies:

#redir_command_on = "iptables -t nat -A PREROUTING -i %iface -p tcp --dport %port -j REDIRECT --to-port %rport"
#redir_command_off = "iptables -t nat -D PREROUTING -i %iface -p tcp --dport %port -j REDIRECT --to-port %rport"

I les descomenteu:

redir_command_on = "iptables -t nat -A PREROUTING -i %iface -p tcp --dport %port -j REDIRECT --to-port %rport"
redir_command_off = "iptables -t nat -D PREROUTING -i %iface -p tcp --dport %port -j REDIRECT --to-port %rport"

Plugin remote_browser

El plugin d'ettercap que permet mostrar les URL que està visitant la víctima utilitza per defecte Mozilla com a navegador web. Ho podem canviar a:

$ sudo joe /etc/etter.conf

I buscar la línia de configuració:

$ cat /etc/etter.conf | grep -n "mozilla"
143:remote_browser = "mozilla -remote openurl(http://%host%url)"

En el meu cas que com podeu veure, la línia és la 143. Canvieu-la per

remote_browser = "sudo firefox http://%host%url"

Ara també cal canviar les línies:

[privs]
ec_uid = 65534                # nobody is the default
ec_gid = 65534                # nobody is the default

Que estan al principi, per

[privs]
ec_uid = 1001
ec_gid = 1001

On 1001 és el vostre uid d'usuari i el podeu obtenir amb:

$ id

Això es necessari perquè si no ettercap s'executa com a usuari nobody i aquest usuari no pot executar Firefox.

Ara quan activeu el plugin remote_browser s'aniran obrint les pàgines que visita la víctima.

Què és capaç de detectar ettercap?

Segons he pogut comprovar,obté automàticament paraules de pas de:

  • Correu POP: Tant la versió no segura com la segura si em configurat SSL i la víctima accepta el certificat fals.
  • Telnet: Captura la paraula de pas i a més pots veure tota la sessió, escriure tu, etc.
  • HTTP: Paraules de pas HTTP i HTTPS. Llocs per provar:
    • Moodle; Qualsevol Moodle amb HTTP o HTTPS
    • Joomla: ídem...
    • Facebook: Amb SSL
  • Hotmail: Amb SSL SSL actiu surt la URL de connexió amb l'usuari i la paraula de pas
  • ...

Un exemple de hotmail:

HTTP : 65.54.186.49:443 -> USER: prova@hotmail.com  PASS: prova  INFO: http://login.live.com/login.srf?wa=wsignin1.0&rpsnv=10&ct=1227687109&rver=5.5.4177.0&wp=MBI&
wreply=http://mail.live.com/default.aspx?n=84914563&id=64


NOTA: Cal tenir en compte que la llista no és completa i que és pot obtenir encara més informació...

Crear disectors a mida

Capturar hash de Windows

Pàgina amb un fake login

Una pàgina de login per HTTP:

http://acacha.org/~sergi/privat

Una alternativa:

http://tinyurl.com/fakelogin

NOTA: Detecta els camps HTML que són de tipus paraula de pas?...

El codi font de HTML és:

<html>
<head><title>login</title></head>
<body bgcolor=gold>
<center>

<form action="/cgi-bin/cgiwrap/sbowne/auth1.pl" method="post">
<table border=1 cellpadding=3 celspacing=3 align=center width=50%>
<tr><td colspan=2 align=center>Login</td></tr>
<tr><td>Username:</td><td><input type=text name=username size="20"></td><tr>
<tr><td>Password:</td><td><input type=password name=password size="20"></td><tr>
<tr><td colspan=2><input type=submit></td><tr>
</table>
</form>

</body>
</html>

Vegeu també

Recursos