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ça45.33.32.156
. - El servidor té 4 serveis accessibles als ports
22/tcp
,80/tcp
9929/tcp
i31337/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.