Introducció

Nmap és una eina per a la detecció de serveis d'internet i l'exploració de xarxa.

Quan inicia una exploració, NMap envia paquets a una o més IPs i espera la resposta. Això permet que NMap determini si els sistemes de destinació responen al trànsit de xarxa i en quins ports.

En examinar en detall les característiques del trànsit, NMap també pot endevinar el sistema operatiu de la màquina que està radera de la IP.

La funcionalitat de NMap s'ha ampliat amb més de 550 scripts que s'executen mitjançant el motor de scripts NMap.

Ves en compte quan executes un script que hagis trobat per Internet perquè molts necessiten permisos de root.

Primer mira exactament que està fent!

Entorn de treball

Crea una màquina virtual a Isard.

La màquina han de ser "Ubuntu 24.04 Server" amb 8 CPUs, 16 GBs de RAM i una interficie de l'institut.

Activa la interfícies enp3s0 amb una IP fixa, on XX és el número de teu ordinador:

$ sudo ip addr add dev enp3s0 10.0.0.1XX/24
$ sudo ip link set dev enp3s0 up

Instal.la nmap :

$ sudo apt update && sudo apt install -y nmap

Escanejar un host

Important! Tingues en compte que quan estem escanejant sistemes reals els teus resultats poden ser diferents perquè les coses canvien.

Per provar amb finalitat educatives, podem escanejar el host scanme.nmap.org.

Aquest permís només inclou l'escaneig mitjançant Nmap, sense exploits o atacs de denegació de servei.

A continuació anem a escanejar tots els ports TCP reservats (del 1 a l 1024) del host que hi ha darrera l’adreça web scanme.nmap.org:

$ nmap scanme.nmap.org
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-11-20 22:38 UTC
Nmap scan report for scanme.nmap.org (45.33.32.156)
Host is up (0.15s latency).
Other addresses for scanme.nmap.org (not scanned): 2600:3c01::f03c:91ff:fe18:bb2f
Not shown: 996 closed tcp ports (conn-refused)
PORT      STATE SERVICE
22/tcp    open  ssh
80/tcp    open  http
9929/tcp  open  nping-echo
31337/tcp open  Elite

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

EL resultat mostra que:

  • L'adreça scanme.nmap.org resol a l'adreça 45.33.32.156.
  • El servidor té 4 serveis accessibles als ports 22/tcp, 80/tcp 9929/tcp i 31337/tcp.
  • El nom del servei és orientatiu (en molts casos està equivocat)

Si vols saber perquè tarda tant en obtenir la informació, executa la mateixa comanda amb l'opció -v per activar el mode detallat:

$ nmap -v scanme.nmap.org
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-11-20 22:39 UTC
Initiating Ping Scan at 22:39
Scanning scanme.nmap.org (45.33.32.156) [2 ports]
Completed Ping Scan at 22:39, 0.15s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 22:39
Completed Parallel DNS resolution of 1 host. at 22:39, 0.00s elapsed
Initiating Connect Scan at 22:39
Scanning scanme.nmap.org (45.33.32.156) [1000 ports]
Discovered open port 22/tcp on 45.33.32.156
Discovered open port 80/tcp on 45.33.32.156
Discovered open port 31337/tcp on 45.33.32.156
Discovered open port 9929/tcp on 45.33.32.156
...

El host scanme.nmap.org resolt a la IP 45.33.32.156

Pots veure que darrera la IP 45.33.32.156 hi ha un servidor ssh al port 22.

Pots tractar de connectar-te a veure que passa:

$ ssh root@45.33.32.156
The authenticity of host '45.33.32.156 (45.33.32.156)' can't be established.
ED25519 key fingerprint is SHA256:FI7R9RbIFL8J0JynWurg3sSFT30ai8Du6MfPJ0wiqvI.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '45.33.32.156' (ED25519) to the list of known hosts.
root@45.33.32.156's password:

El sistema no és molt segur perquè permet fer un login amb l'usuari root amb contrasenya i no fa servir només claus criptogràfiques.

També té un servei web. Anem a veure que respon.

Instal.la un navegador:

$ sudo apt install -y nginx

I mira que respon el servidor web:

$ lynx 45.33.32.156

Però recorda, una cosa és explorar una mica que no és ilegal, i altre cosa és fer exploracions intrusives i exploits que només es poden fer amb autorització.

$ nmap www.santander.es
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-11-20 22:48 UTC
Nmap scan report for www.santander.es (194.224.167.58)
Host is up (0.045s latency).
Not shown: 989 filtered tcp ports (no-response)
PORT     STATE SERVICE
21/tcp   open  ftp
80/tcp   open  http
81/tcp   open  hosts2-ns
443/tcp  open  https
1935/tcp open  rtmp
2001/tcp open  dc
2020/tcp open  xinupageserver
8080/tcp open  http-proxy
8085/tcp open  unknown
8088/tcp open  radan-http
8443/tcp open  https-alt

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

Anem a veure que respon la IP 194.224.167.58 al port 80

Com que és un servei http farem servir lynx:

$ lynx 194.224.167.58
...
Alert!: Unexpected network read error; connection aborted.
Can't Access `http://194.224.167.58/'
Alert!: Unable to access document.

lynx: Can't access startfile

Com que som informàtics farem servir la supereina curl, a veure que està passant:

$ curl -vI http://194.224.167.58
*   Trying 194.224.167.58:80...
* Connected to 194.224.167.58 (194.224.167.58) port 80
> HEAD / HTTP/1.1
> Host: 194.224.167.58
> User-Agent: curl/8.5.0
> Accept: */*
> 
* Recv failure: Connection reset by peer
* Closing connection
curl: (56) Recv failure: Connection reset by peer

Mirar que l’adreça web està ben resolta amb nslookup:

$ nslookup www.santander.es
...

Non-authoritative answer:
Name:   www.santander.es
Address: 194.224.167.58

Com que el host també té un servei https al port 443 anem a provar aquest servei amb l’eina curl:

$ curl https://194.224.167.58
curl: (60) SSL: no alternative certificate subject name matches target host name '194.224.167.58'
More details here: https://curl.se/docs/sslcerts.html

curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.

El servei respon que no té un certifcat per la IP 192.224.167.58.

Podem dir a curl de que res, que tiri endavant amb l’opció -k:

$ curl -k  https://194.224.167.58
curl: (56) Recv failure: Connection reset by peer

Ara l'error és en el protocol Transport Layer Security

Potser és millor dir les les coses pel seu nom, en aquest cas www.santander.es:

$ curl -s https://www.santander.es | head -n 10
<!DOCTYPE html>
<html xml:lang="es" lang="es">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta name="description" content="Ayuntamiento Santander" />
    <meta name="Generator" content="Drupal 7 (http://drupal.org)" />
<link rel="alternate" type="application/rss+xml" title="Portal Ayuntamiento Santander RSS" href="//www.santander.es/rss.xml" />
<link rel="shortcut icon" href="//www.santander.es/sites/default/themes/custom/ayuntamiento/favicon.ico" type="image/vnd.microsoft.icon" />

El lloc web és de l’ajuntament de Santander.

Al final es tractava de dir les coses pel seu nom.

Si faig un curl al port 80 amb el nom correcte, llavors si que em respon amb un resposta 302 Moved Temporarily al servei https:

$ curl -v http://www.santander.es
...
< HTTP/1.0 302 Moved Temporarily
< Location: https://www.santander.es/
...

Encara queden molts serveis per descobrir, explorar i aprendre en aquestes IPs, però ara no tenim temps.

Per cert, com alumne quan un docent et demana que escanejis un host i només ensenyes la sortida de nmap, ja saps quina avaluació et farà de la teva tasca.

Escanejar una xarxa

En l’exemple anterior hem escanejat el host 192.224.167.58 en que està la web de l’ajuntament de Santander, però això no vol dir que el host sigui de l’ajuntament de Santander.

És molt freqüent que darrera un host hi hagi molts dominis d’Internet.

$ dig -x 194.224.167.58
...
;; AUTHORITY SECTION:
167.224.194.in-addr.arpa. 3600  IN      SOA     minerva.ttd.net. hostmaster.ttd.net. 2023041710 86400 7200 2592000 172800
...

Si busques a google "minerva hostmaster" apareixerà una web d’un proveïdor de hosting: https://www.minervahosting.com/

Això és molt important, perquè quan estas escanejant un host, a qui estas afectant és al propietari del equips i la xarxa, en aquest cas segurament serà Minerva Hosting i no pas l’ajutament de Santander.

Mentres ens mantiguem dins dels límits podem seguir treballant, i en aquest cas anirem al límit del que es considera permés.

En aquest exemple llançem una exploració SYN furtiva contra cada host que es troba en rang /30, les 4 adreces contigues on resideix el host www.santander.es.

També intentem determinar quin sistema operatiu s'està executant a cada host que està en funcionament.

Això requereix privilegis de root perquè nmap manipula els paquets SYN per poder detectar el sistema operatiu.

$ sudo nmap -sS -O www.santander.es/30




## TODO

* Acabar d'importat el document original: [Google Docs - Nmap](https://docs.google.com/document/d/1G9n8P9-qNCR8mL3f5IxM2VdD7K3zrPcCnaQ34eotkxU/edit?usp=share_link)

**Activitat**. Fes un nmap a <a href="/cloud/isard/">Isard</a> per saber on està el centre de dades, etc.