# nmap Riferimento Rapido

*Scansione porte, scoperta host, rilevamento servizi e script NSE*

> Source: Nmap Documentation (nmap.org/docs) · MIT

## Scansioni di Base

### Target di Scansione

```
nmap 192.168.1.1              # host singolo
nmap 192.168.1.0/24           # intera sottorete
nmap 192.168.1.1-50           # intervallo IP
nmap -iL targets.txt          # host da file
```

### Specificare i Target

| Command | Description |
|---------|-------------|
| `192.168.1.1` | Indirizzo IP singolo |
| `192.168.1.0/24` | Notazione CIDR (256 host) |
| `192.168.1.1-254` | Intervallo IP |
| `example.com` | Hostname (risolto in IP) |
| `-iL file.txt` | Legge i target da file |
| `--exclude 192.168.1.1` | Esclude host specifici |
| `--excludefile skip.txt` | Esclude host da file |

## Scansione delle Porte

### Tipi di Scansione

| Command | Description |
|---------|-------------|
| `-sS` | Scansione TCP SYN (default, discreta, richiede root) |
| `-sT` | Scansione TCP connect (handshake completo, senza root) |
| `-sU` | Scansione UDP (lenta, spesso filtrata) |
| `-sA` | Scansione TCP ACK (rileva firewall) |
| `-sN` | Scansione TCP NULL (nessun flag) |
| `-sF` | Scansione TCP FIN (solo flag FIN) |
| `-sX` | Scansione Xmas (flag FIN+PSH+URG) |

### Selezione delle Porte

```
nmap -p 80,443 target         # porte specifiche
nmap -p 1-1000 target         # intervallo di porte
nmap -p- target               # tutte le 65535 porte
nmap --top-ports 100 target   # le 100 porte più comuni
```

### Stati delle Porte

| Command | Description |
|---------|-------------|
| `open` | L'applicazione accetta connessioni |
| `closed` | Porta raggiungibile ma nessun servizio in ascolto |
| `filtered` | Firewall blocca, impossibile determinare lo stato |
| `unfiltered` | Porta accessibile, stato aperto/chiuso sconosciuto |
| `open\|filtered` | Impossibile determinare se aperta o filtrata |

## Scoperta degli Host

### Metodi di Scoperta

| Command | Description |
|---------|-------------|
| `-sn` | Solo ping scan (senza scansione porte) |
| `-Pn` | Salta la scoperta host (tratta tutti come attivi) |
| `-PS 80,443` | Scoperta TCP SYN sulle porte |
| `-PA 80` | Scoperta TCP ACK |
| `-PU 53` | Scoperta UDP |
| `-PE` | Richiesta echo ICMP |
| `-PR` | Scoperta ARP (rete locale) |

### Sweep di Rete

```
nmap -sn 192.168.1.0/24       # ping sweep sottorete
nmap -sn -n 10.0.0.0/24       # sweep, salta DNS
nmap -sn -PR 192.168.1.0/24   # scansione ARP (più veloce)
```

## Rilevamento dei Servizi

### Rilevamento della Versione

```
nmap -sV target               # rileva versioni dei servizi
nmap -sV --version-intensity 5 target  # probing più approfondito
nmap -sV --version-all target  # prova ogni probe (lento)
nmap -A target                 # OS + versione + script + traceroute
```

### Flag dei Servizi

| Command | Description |
|---------|-------------|
| `-sV` | Interroga le porte aperte per servizio/versione |
| `--version-intensity 0-9` | Intensità del probing (default 7) |
| `--version-light` | Probing leggero (intensità 2) |
| `--version-all` | Prova ogni probe (intensità 9) |
| `-A` | Aggressivo: -sV -O --script=default -traceroute |
| `-sC` | Esegue gli script NSE predefiniti |

## Rilevamento OS

### Fingerprinting OS

```
nmap -O target                # rilevamento OS (richiede root)
nmap -O --osscan-limit target # solo host promettenti
nmap -O --osscan-guess target # supposizione aggressiva OS
nmap -A target                # include rilevamento OS
```

### Flag per il Rilevamento OS

| Command | Description |
|---------|-------------|
| `-O` | Abilita il rilevamento OS |
| `--osscan-limit` | Salta host senza porte TCP aperte+chiuse |
| `--osscan-guess` | Indovina OS in modo più aggressivo |
| `--max-os-tries N` | Tentativi massimi di rilevamento OS per host |

## Script (NSE)

### Utilizzo degli Script

```
nmap --script=default target   # categoria predefinita
nmap --script=vuln target      # script di vulnerabilità
nmap --script=http-headers target
nmap --script="http-*" target  # corrispondenza con wildcard
```

### Categorie degli Script

| Command | Description |
|---------|-------------|
| `default` | Script sicuri e utili (scorciatoia -sC) |
| `vuln` | Controlla vulnerabilità note |
| `safe` | Script non intrusivi |
| `intrusive` | Può causare crash o attivare IDS |
| `discovery` | Scoperta di rete e servizi |
| `auth` | Controlli relativi all'autenticazione |
| `brute` | Test di credenziali a forza bruta |
| `exploit` | Tentativi di sfruttamento attivo |

### Script Utili

| Command | Description |
|---------|-------------|
| `http-title` | Recupera i titoli delle pagine web |
| `ssl-cert` | Mostra i dettagli del certificato SSL |
| `ssh-hostkey` | Mostra le impronte delle chiavi host SSH |
| `dns-brute` | Enumera i sottodomini DNS |
| `smb-os-discovery` | Rileva OS Windows tramite SMB |
| `vuln` | Esegue tutti i controlli di vulnerabilità |

## Formati di Output

### Opzioni di Output

```
nmap -oN scan.txt target      # output testo normale
nmap -oX scan.xml target      # output XML
nmap -oG scan.gnmap target    # output grepabile
nmap -oA scan_all target      # tutti i formati insieme
```

### Flag di Output

| Command | Description |
|---------|-------------|
| `-oN file` | Output normale su file |
| `-oX file` | Output XML (per strumenti/parsing) |
| `-oG file` | Output grepabile (un host per riga) |
| `-oA basename` | Tutti e tre i formati (basename.nmap/xml/gnmap) |
| `-v` | Aumenta la verbosità (-vv per di più) |
| `-d` | Output di debug (-dd per di più) |
| `--open` | Mostra solo le porte aperte |
| `--reason` | Mostra il motivo dello stato della porta |

## Timing e Prestazioni

### Template di Timing

| Command | Description |
|---------|-------------|
| `-T0 (paranoid)` | Molto lento, evasione IDS (5 min tra i probe) |
| `-T1 (sneaky)` | Lento, evasione IDS (15 sec tra i probe) |
| `-T2 (polite)` | Velocità ridotta, meno banda |
| `-T3 (normal)` | Timing predefinito |
| `-T4 (aggressive)` | Veloce, presuppone rete affidabile |
| `-T5 (insane)` | Massima velocità, può perdere risultati |

### Regolazione Fine

| Command | Description |
|---------|-------------|
| `--min-rate 1000` | Invia almeno 1000 pacchetti/sec |
| `--max-rate 500` | Limite a 500 pacchetti/sec |
| `--max-retries 2` | Max ritrasmissioni dei probe |
| `--host-timeout 30m` | Salta host se la scansione supera 30 min |
| `--scan-delay 1s` | Ritardo tra i probe |
| `--min-parallelism 10` | Gruppi minimi di probe paralleli |

## Evasione Firewall

### Tecniche di Evasione

| Command | Description |
|---------|-------------|
| `-f` | Frammenta i pacchetti (blocchi da 8 byte) |
| `-D RND:5` | Scansione con 5 IP casuali come decoy |
| `-S spoof_ip` | Falsifica IP sorgente (richiede raw packets) |
| `-e eth0` | Usa un'interfaccia di rete specifica |
| `--source-port 53` | Usa porta sorgente specifica (es. DNS) |
| `--data-length 25` | Aggiunge dati casuali ai pacchetti |
| `--spoof-mac 0` | Randomizza l'indirizzo MAC |

### Esempi di Evasione

```
nmap -f -D RND:3 target        # frammenti + decoy
nmap --source-port 53 target   # porta DNS (spesso consentita)
nmap -T1 --scan-delay 5s target  # lento per eludere IDS
```

## Pattern Comuni

### Ricognizione Rapida

```
nmap -T4 -F target             # porte comuni veloci
nmap -T4 -A -v target          # rilevamento OS + servizi
nmap -sV --top-ports 1000 target  # top 1000 + versioni
```

### Scansione Completa

```
# TCP completo + servizi + OS + script
nmap -sS -sV -O -sC -p- -T4 -oA full target
# Scansione UDP sulle porte comuni
nmap -sU --top-ports 50 target
```

### Audit Server Web

```
nmap -p 80,443 --script=http-title,http-headers,\
ssl-cert,http-methods target
# Controlla proxy aperti e vulnerabilità
nmap -p 80,443,8080 --script=http-open-proxy,vuln target
```

### Inventario di Rete

```
# Scopri tutti gli host attivi con info OS
nmap -sn 192.168.1.0/24 -oG - | grep "Up"
# Inventario servizi per sottorete
nmap -sV -T4 192.168.1.0/24 -oX inventory.xml
```
