EX1. Escaneig de xarxes amb nmap

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

Guillem Solà i Boeck

Previa

Tindrem una màquina virtual amb Ubuntu Server amb uns quants serveis instal·lats:

  • Apache
  • MariaDB (MySQL)
  • SSH
  • Postfix
  • Dovecot

Posada a punt

Crearem una màquina virtual amb Ubuntu Server 18 que actuarà com a víctima victim-nmap. Una altra màquina virtual serà l'atacant attack-nmap. Compartiran la mateixa xarxa de VirtualBox amb una Xarxa NAT que permeti la connexió entre elles: mode NAT Network a les targetes virtuals.

Víctima

Instal·larem alguns serveis de prova que no requereixin gaire configuració per a poder fer les proves i explotar vulnerabilitats:

sudo apt install apache2 mariadb-server-10 dovecot-imapd postfix -y

Farem una neteja de les regles del IPTables per a començar des d'un estat "net"

iptables -F
iptables -X

Això ho farem després de cada repte per tal de no arrossegar brutícia o regles incoherents entre elles.

Atacant

Haurem d'instal·lar nmap per a poder fer els escanejos:

sudo apt install nmap -y

Segons configuració per DHCP, la màquina atacant té l'adreça 10.16.2.6 i la víctima està a 10.16.2.7. Podem editar l'arxiu /etc/hosts per a poder fer els atacs amb nom de host en comptes d'adreces IP.

Els objectius són:

1. Descobrir els serveis de la xarxa

root@attack-nmap:~# nmap victim-nmap

Starting Nmap 7.60 ( https://nmap.org ) at 2019-01-30 17:42 UTC
Nmap scan report for victim-nmap (10.16.2.6)
Host is up (0.0063s latency).
Not shown: 995 closed ports
PORT    STATE SERVICE
22/tcp  open  ssh
25/tcp  open  smtp
80/tcp  open  http
143/tcp open  imap
993/tcp open  imaps
MAC Address: 08:00:27:85:F6:76 (Oracle VirtualBox virtual NIC)

Nmap done: 1 IP address (1 host up) scanned in 1.62 seconds

2. Descobrir quin software executa cada servei mitjançant nmap

root@attack-nmap:~# nmap -sV victim-nmap

Starting Nmap 7.60 ( https://nmap.org ) at 2019-01-30 17:43 UTC
Nmap scan report for victim-nmap (10.16.2.6)
Host is up (0.00089s latency).
Not shown: 995 closed ports
PORT    STATE SERVICE  VERSION
22/tcp  open  ssh      OpenSSH 7.6p1 Ubuntu 4ubuntu0.1 (Ubuntu Linux; protocol 2.0)
25/tcp  open  smtp     Postfix smtpd
80/tcp  open  http     Apache httpd 2.4.29 ((Ubuntu))
143/tcp open  imap     Dovecot imapd (Ubuntu)
993/tcp open  ssl/imap Dovecot imapd (Ubuntu)
MAC Address: 08:00:27:85:F6:76 (Oracle VirtualBox virtual NIC)
Service Info: Host:  localhost.localdomain; 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 8.13 seconds

3. Esbrina si s'està executant un Firewall al servidor 4. Configura el Firewall per tal que filtri ICMP i fes una prova de funcionament

1. Prova de fer ping
root@attack-nmap:~# ping victim-nmap -c3
PING victim-nmap (10.16.2.6) 56(84) bytes of data.
64 bytes from victim-nmap (10.16.2.6): icmp_seq=1 ttl=64 time=0.801 ms
64 bytes from victim-nmap (10.16.2.6): icmp_seq=2 ttl=64 time=0.915 ms
64 bytes from victim-nmap (10.16.2.6): icmp_seq=3 ttl=64 time=0.963 ms

--- victim-nmap ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 0.801/0.893/0.963/0.067 ms
2. Bloqueja amb IPTables el protocol ICMP
iptables -A INPUT -p icmp -j REJECT
3. Prova el ping
root@attack-nmap:~# ping victim-nmap -c3
PING victim-nmap (10.16.2.6) 56(84) bytes of data.
From victim-nmap (10.16.2.6) icmp_seq=1 Destination Port Unreachable
From victim-nmap (10.16.2.6) icmp_seq=2 Destination Port Unreachable
From victim-nmap (10.16.2.6) icmp_seq=3 Destination Port Unreachable

--- victim-nmap ping statistics ---
3 packets transmitted, 0 received, +3 errors, 100% packet loss, time 2002ms
4. Prova el nmap. Funciona? Per què?
root@attack-nmap:~# nmap victim-nmap

Starting Nmap 7.60 ( https://nmap.org ) at 2019-01-30 17:50 UTC
Nmap scan report for victim-nmap (10.16.2.6)
Host is up (0.00071s latency).
Not shown: 995 closed ports
PORT    STATE SERVICE
22/tcp  open  ssh
25/tcp  open  smtp
80/tcp  open  http
143/tcp open  imap
993/tcp open  imaps
MAC Address: 08:00:27:85:F6:76 (Oracle VirtualBox virtual NIC)

Nmap done: 1 IP address (1 host up) scanned in 1.60 seconds

Nmap segueix funcionant perquè, per defecte, no fa servir el protocol ICMP per tal de comprovar si un port està essent escoltat per un servei o no; a menys que nosaltres li diguem explícitament que utilitzi ICMP amb el flag -PN.

Reptes

Repte 1. nmap VS IPTables

Fes la prova de concepte comparant els scans de nmap amb TCP FIN, NULL i Xmas scan (-sF, -sN, -sX) i documenta com faries per bloquejar cadascun d'ells amb IPTables.


  • TCP FIN

Aquest atac consisteix en dir-li a nmap que analitzi ports oberts (amb la possibilitat de detectar-ne de tancats i saber el servei que s'hi està escoltant darrere) mitjançant l'enviament de paquets TCP FIN; de manera que si el port està obert, no hi haurà resposta. En cas contrari (port tancat), la víctima segurament respondrà amb un RST i podrem saber que hi ha algú escoltant però el port està tancat.

  • Atacant:
root@attack-nmap:/home/guillem# nmap victim-nmap -sF

Starting Nmap 7.60 ( https://nmap.org ) at 2019-02-04 17:03 UTC
Nmap scan report for victim-nmap (10.16.2.6)
Host is up (0.00072s latency).
Not shown: 995 closed ports
PORT    STATE         SERVICE
22/tcp  open|filtered ssh
25/tcp  open|filtered smtp
80/tcp  open|filtered http
143/tcp open|filtered imap
993/tcp open|filtered imaps
MAC Address: 08:00:27:85:F6:76 (Oracle VirtualBox virtual NIC)

Nmap done: 1 IP address (1 host up) scanned in 83.79 seconds
  • Víctima:

Per a bloquejar aquest atac, farem servir aquesta comanda de IPTables:

iptables -A INPUT -p tcp --tcp-flags ALL FIN -j REJECT

El que fa és un REJECT de paquets TCP que portin el flag de FIN, de manera que el mètode d'nmap corresponent no tingui efecte.

  • Atacant:

Si repetim l'anàlisi amb la mateixa comanda, després d'afegir la nova regla a IPTables tindrem el següent resultat:

root@attack-nmap:/home/guillem# nmap victim-nmap -sF

Starting Nmap 7.60 ( https://nmap.org ) at 2019-02-04 17:10 UTC
Warning: 10.16.2.6 giving up on port because retransmission cap hit (10).

Amb això podem comprovar que, al cap de molta estona, nmap no és capaç de detectar res perquè IPTables fa un rebuig dels paquets TCP que contenen FIN.

  • TCP NULL

Aquest atac consisteix en analitzar buscant ports tancats de la víctima enviant paquets TCP sense cap flag (ACK, SYN, FIN) activat.

  • Atacant:

Llançarem l'escaneig amb els paràmetres -sN

root@attack-nmap:/home/guillem# nmap victim-nmap -sN

Starting Nmap 7.60 ( https://nmap.org ) at 2019-02-04 17:20 UTC
Nmap scan report for victim-nmap (10.16.2.6)
Host is up (0.00091s latency).
Not shown: 995 closed ports
PORT    STATE         SERVICE
22/tcp  open|filtered ssh
25/tcp  open|filtered smtp
80/tcp  open|filtered http
143/tcp open|filtered imap
993/tcp open|filtered imaps
MAC Address: 08:00:27:85:F6:76 (Oracle VirtualBox virtual NIC)

Nmap done: 1 IP address (1 host up) scanned in 11.42 seconds
  • Víctima:

Per a evitar aquest tipus de scans, afegirem la regla a IPTables següent:

iptables -A INPUT -p tcp --tcp-flags ALL NONE -j REJECT
  • Atacant:

Quan repetim l'atac després d'afegir la regla al firewall:

root@attack-nmap:/home/guillem# nmap victim-nmap -sN

Starting Nmap 7.60 ( https://nmap.org ) at 2019-02-04 17:23 UTC

Després d'uns 2 minuts de llançar la comanda, nmap no és capaç de donar cap output perquè la víctima no respon de cap manera a aquells paquets enviats.

  • XMas scan

Aquest escaneig consisteix en enviar paquets TCP amb els flags FIN, PSH i URG activats a la víctima i veure com respon. En el cas de ports tancats, nmap rebrà un RST de la víctima; mentre que els ports oberts o filtrats no donaran resposta però tampoc podrem diferenciar-ne l'estat.

  • Atacant:
Starting Nmap 7.60 ( https://nmap.org ) at 2019-02-04 17:28 UTC
Nmap scan report for victim-nmap (10.16.2.6)
Host is up (0.00096s latency).
Not shown: 995 closed ports
PORT    STATE         SERVICE
22/tcp  open|filtered ssh
25/tcp  open|filtered smtp
80/tcp  open|filtered http
143/tcp open|filtered imap
993/tcp open|filtered imaps
MAC Address: 08:00:27:85:F6:76 (Oracle VirtualBox virtual NIC)

Nmap done: 1 IP address (1 host up) scanned in 96.50 seconds
  • Víctima:

Ens protegirem afegint 3 regles a IPTables; ja que hem de fer un REJECT pels paquets que continguin diferents flags TCP:

iptables -A INPUT -p tcp --tcp-flags ALL FIN,PSH,URG -m limit --limit 3/m --limit-burst 5 -j DROP
  • Atacant:

Després d'aplicar la regla d'IPTables a la víctima, l'atacant tindrà aquesta resposta:

root@attack-nmap:/home/guillem# nmap victim-nmap -sX

Starting Nmap 7.60 ( https://nmap.org ) at 2019-02-04 17:35 UTC
Nmap scan report for victim-nmap (10.16.2.6)
Host is up (0.00059s latency).
All 1000 scanned ports on victim-nmap (10.16.2.6) are open|filtered
MAC Address: 08:00:27:85:F6:76 (Oracle VirtualBox virtual NIC)

Nmap done: 1 IP address (1 host up) scanned in 21.63 seconds

De manera que qui ha llançat l'escaneig no té idea de quins ports estan oberts o no. Segons la documentació de nmap, aquest atac és més factible en sistemes Unix més que no pas equips Windows o Cisco; per diferències d'implementació del protocol.

Repte 2. nmap + bruteforce VS IPTables

He buscat info tal com es diu a l'enunciat:

A Iptables firewall versus nmap and hping3 - Sevagas , Dynamically blacklisting hosts on a netfilter firewall tens explicacions com fer llistes negres d’IP de forma dinàmica per a bloquejar atacs per força bruta.


No he trobat res relacionat a la pàgina. Navegant per Internet tampoc he trobat res clar respecte aquest atac; i tampoc entenc el sentit o el concepte de força bruta en una eina d'escaneig de ports. Si un port està tancat, no s'obrirà per molt que l'analitzem milions de vegades com un "ariete". Deu ser que el sentit de "força bruta" en aquest àmbit no deu ser això... Tampoc he trobat enlloc on s'expliqui quin tipus d'atac és aquest; ja que amb nmap en sí no sembla que es puguin tirar atacs d'aquest tipus.

Repte 3. nmap idle VS IPTables

Com que no he fet el repte 2, no sé les regles aplicades ni les màquines que s'han afegit a la llista negra de la víctima; per tant, no puc comprovar que l'atac des d'una màquina zombie no banejada pugui funcionar.

Repte 4. nmap + proxychains VS IPTables

Com que no he fet el repte anterior, que va relacionat amb el repte 2, no puc seguir tampco amb això. Per tant, tampoc tinc manera de provar el funcionament d'un anàlisi a través d'una cadena de proxys des d'una màquina que estigui en llista negra.

Pel segon apartat, el mateix.

Repte 5. nmap VS snort