EX1. Escaneig de xarxes amb nmap
Contingut
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.