Nmap Verkenning: Van Scan tot Exploitatie

Nmap (Network Mapper) is de industriestandaard voor netwerkverkenning en poortscanning. Of je nu een intern netwerk in kaart brengt of een extern aanvalsoppervlak verkent, Nmap is vrijwel altijd de eerste tool die je inzet. In deze tutorial behandelen we alle essientiele scantechnieken, van host discovery tot NSE-scripts, en koppelen we dit aan de geautomatiseerde scans van Incompetent Bastard.

Deze tutorial is uitsluitend bedoeld voor gebruik in geautoriseerde testomgevingen.

Vereisten

IB – Het script scan.sh automatiseert de volledige Nmap-workflow. Gebruik: ./scan.sh eth0 engagement-naam 10.1.2.0/24. Het draait quick scans, full-port scans en vuln scans parallel in screen-sessies.

Stap 1: Host Discovery

Voordat je poorten scant, moet je weten welke hosts actief zijn.

Ping sweep

# ICMP echo, TCP SYN op 443, TCP ACK op 80, ICMP timestamp
nmap -sn 10.10.10.0/24

# Alleen ARP discovery (in lokale netwerken, zeer betrouwbaar)
nmap -sn -PR 192.168.1.0/24

# Zonder DNS-resolutie (sneller)
nmap -sn -n 10.10.10.0/24

Discovery zonder ICMP

Veel firewalls blokkeren ICMP. Gebruik alternatieve methoden:

# TCP SYN discovery op veelgebruikte poorten
nmap -sn -PS22,80,443,445,3389 10.10.10.0/24

# TCP ACK discovery (werkt soms door stateful firewalls)
nmap -sn -PA80,443 10.10.10.0/24

# UDP discovery
nmap -sn -PU53,161 10.10.10.0/24

# Combineer meerdere methoden
nmap -sn -PS22,80,443 -PA80 -PU53 10.10.10.0/24

Resultaten opslaan

# Sla actieve hosts op in een bestand
nmap -sn 10.10.10.0/24 -oG - | grep "Up" | awk '{print $2}' > actieve_hosts.txt

Stap 2: Poortscanning

TCP SYN scan (half-open)

De standaard en meest gebruikte scantechniek. Vereist root-rechten.

# SYN scan op de top 1000 poorten
sudo nmap -sS 10.10.10.5

# SYN scan op alle 65535 poorten
sudo nmap -sS -p- 10.10.10.5

# Specifieke poorten
sudo nmap -sS -p 22,80,443,445,3389 10.10.10.5

# Poortbereik
sudo nmap -sS -p 1-1024 10.10.10.5

TCP Connect scan

Wanneer je geen root-rechten hebt. Maakt een volledige TCP-verbinding.

nmap -sT -p- 10.10.10.5

UDP scan

UDP-services zoals DNS, SNMP en TFTP worden vaak over het hoofd gezien.

# UDP scan (langzaam, gebruik -F voor snellere scan)
sudo nmap -sU -F 10.10.10.5

# Combineer TCP en UDP
sudo nmap -sS -sU -F 10.10.10.5

# Specifieke UDP-poorten
sudo nmap -sU -p 53,69,123,161,500 10.10.10.5

IB – De IB scan.sh gebruikt de volgende nmap-configuratie voor de snelle TCP-scan: -Pn -sT -sV -d -A -F --open --max-retries 25 --max-rate 500 --max-scan-delay 50. Voor UDP: -sUV -sT -T5 -F --version-intensity 0.

Alleen open poorten tonen

# Filter op open poorten (verwijdert filtered/closed)
nmap -sS --open 10.10.10.5

Stap 3: Service- en Versiedetectie

Weten welke poort open is, is niet genoeg. Je moet weten welke software erachter draait.

# Versiedetectie
nmap -sV 10.10.10.5

# Agressievere versiedetectie (intensiteit 0-9)
nmap -sV --version-intensity 9 10.10.10.5

# Lichtgewicht versiedetectie (sneller)
nmap -sV --version-light 10.10.10.5

# Combineer met SYN scan
sudo nmap -sS -sV -p- 10.10.10.5

Banners handmatig ophalen

# Nmap banner grab script
nmap -sV --script=banner -p 21,22,25,80 10.10.10.5

Stap 4: OS-detectie

# OS-detectie (vereist root)
sudo nmap -O 10.10.10.5

# OS-detectie met agressieve gok
sudo nmap -O --osscan-guess 10.10.10.5

# Alles combineren: OS + versie + scripts + traceroute
sudo nmap -A 10.10.10.5

De -A vlag is een afkorting voor -O -sV -sC --traceroute en is vaak de beste keuze voor een grondige scan.

Stap 5: NSE Scripts

De Nmap Scripting Engine (NSE) breidt Nmap uit met honderden scripts voor kwetsbaarheidsdetectie, brute force en meer.

Script-categorieen

# Standaard scripts (veilig en nuttig)
nmap -sC 10.10.10.5

# Specifieke categorie
nmap --script=vuln 10.10.10.5

# Meerdere categorieen
nmap --script="vuln,auth" 10.10.10.5

# Specifiek script
nmap --script=http-title -p 80 10.10.10.5

Veelgebruikte NSE scripts

# HTTP enumeratie
nmap --script=http-enum -p 80,443 10.10.10.5

# SMB kwetsbaarheden (EternalBlue etc.)
nmap --script=smb-vuln* -p 445 10.10.10.5

# FTP anonieme login
nmap --script=ftp-anon -p 21 10.10.10.5

# DNS zone transfer
nmap --script=dns-zone-transfer --script-args dns-zone-transfer.domain=doelwit.lab -p 53 10.10.10.5

# SSL/TLS informatie
nmap --script=ssl-cert,ssl-enum-ciphers -p 443 10.10.10.5

# SNMP informatie
nmap --script=snmp-info,snmp-brute -p 161 -sU 10.10.10.5

# MySQL enumeratie
nmap --script=mysql-info,mysql-enum -p 3306 10.10.10.5

# SMB shares opsommen
nmap --script=smb-enum-shares,smb-enum-users -p 445 10.10.10.5

Script-argumenten

# HTTP brute force met eigen wordlist
nmap --script=http-brute --script-args="http-brute.path=/admin,userdb=users.txt,passdb=pass.txt" -p 80 10.10.10.5

# Script-hulp bekijken
nmap --script-help=http-enum

IB – De vuln-scan in scan.sh gebruikt --script vuln om automatisch kwetsbaarheden te detecteren. Resultaten worden opgeslagen in raw/nmap/{host}_vuln_scan.nmap.

Stap 6: Output Formaten

Sla je resultaten altijd op in meerdere formaten.

# Normaal formaat
nmap -oN scan_resultaat.nmap 10.10.10.5

# Grepable formaat (handig voor scripting)
nmap -oG scan_resultaat.gnmap 10.10.10.5

# XML formaat (voor import in andere tools)
nmap -oX scan_resultaat.xml 10.10.10.5

# Alle drie tegelijk
nmap -oA scan_resultaat 10.10.10.5

Resultaten verwerken

# Open poorten uit grepable output halen
grep "open" scan_resultaat.gnmap | awk '{print $2}'

# XML converteren naar HTML rapport
xsltproc scan_resultaat.xml -o rapport.html

Stap 7: Timing en Performance

Timing templates

# T0 (paranoid) - zeer langzaam, IDS-evasion
nmap -T0 10.10.10.5

# T1 (sneaky) - langzaam
nmap -T1 10.10.10.5

# T2 (polite) - verlaagt belasting
nmap -T2 10.10.10.5

# T3 (normal) - standaard
nmap -T3 10.10.10.5

# T4 (aggressive) - snel, betrouwbaar lokaal netwerk
nmap -T4 10.10.10.5

# T5 (insane) - zeer snel, kan resultaten missen
nmap -T5 10.10.10.5

Fijnafstelling

# Maximaal aantal parallelle probes
nmap --min-rate 1000 --max-rate 5000 10.10.10.5

# Retries beperken
nmap --max-retries 2 10.10.10.5

# Timeout per host
nmap --host-timeout 300s 10.10.10.0/24

Stap 8: Firewall-evasion

Fragmentatie

# Pakketten fragmenteren (8 bytes per fragment)
sudo nmap -f 10.10.10.5

# Eigen fragment grootte
sudo nmap --mtu 16 10.10.10.5

Decoys en source-manipulatie

# Decoy scan (verberg je IP tussen nepbronnen)
sudo nmap -D 10.10.10.1,10.10.10.2,ME,10.10.10.3 10.10.10.5

# Specifieke source poort (sommige firewalls staan 53 of 80 toe)
sudo nmap --source-port 53 10.10.10.5

# Idle/zombie scan (volledig anoniem)
sudo nmap -sI zombie_host:80 10.10.10.5

Andere evasion-technieken

# Willekeurige volgorde van hosts
nmap --randomize-hosts 10.10.10.0/24

# Eigen data toevoegen aan pakketten
nmap --data-length 50 10.10.10.5

# MAC-adres spoofen
sudo nmap --spoof-mac 00:11:22:33:44:55 10.10.10.5

Stap 9: Praktische Scanstrategieen

Externe pentest workflow

# Stap 1: Quick scan op veelgebruikte poorten
nmap -Pn -sS -sV --open -T4 -p 21,22,25,53,80,110,143,443,445,993,995,1433,3306,3389,5432,8080,8443 -oA extern_quick doelwit.nl

# Stap 2: Full port scan
nmap -Pn -sS -sV -p- --open -T4 -oA extern_full doelwit.nl

# Stap 3: Vuln scan op gevonden poorten
nmap -Pn -sV --script vuln -p 22,80,443 -oA extern_vuln doelwit.nl

Interne pentest workflow

# Stap 1: Host discovery
nmap -sn -PR 192.168.1.0/24 -oG discovery.gnmap

# Stap 2: Quick TCP scan op actieve hosts
nmap -sS -sV -F --open -iL actieve_hosts.txt -oA intern_quick

# Stap 3: Full scan op interessante hosts
nmap -sS -sV -A -p- --open 192.168.1.10 -oA intern_full_host10

# Stap 4: UDP scan op kritieke services
nmap -sU -p 53,67,68,69,123,161,162,500,514,1900 -iL actieve_hosts.txt -oA intern_udp

IB – Gebruik ./scan.sh eth0 klant-intern 192.168.1.0/24 om de volledige interne workflow geautomatiseerd uit te voeren. Quick TCP, UDP, full-port en vuln scans draaien parallel in screen-sessies. Controleer voortgang met screen -ls.

Specifieke service-enumeratie

# Webservers vinden
nmap -sS -p 80,443,8080,8443 --open 10.10.10.0/24 -oG webservers.gnmap

# Domain controllers vinden
nmap -sS -p 88,389,636,445 --open 10.10.10.0/24

# Databases vinden
nmap -sS -p 1433,1521,3306,5432,27017 --open 10.10.10.0/24

# Mail servers
nmap -sS -p 25,110,143,465,587,993,995 --open 10.10.10.0/24

Stap 10: Van Scan naar Exploitatie

Na het scannen is de volgende stap het analyseren van resultaten en het identificeren van aanvalsmogelijkheden.

Resultaten analyseren

Zoek naar: 1. Verouderde softwareversies – Vergelijk met bekende CVE’s 2. Standaard credentials – FTP anonymous, default admin/admin 3. Onversleutelde services – Telnet, FTP, HTTP zonder TLS 4. Misconfiguraties – Open SMB shares, zone transfers 5. Bekende kwetsbaarheden – NSE vuln-scripts melden deze direct

Searchsploit koppeling

# Zoek exploits voor gevonden services
searchsploit "Apache 2.4.49"
searchsploit "ProFTPD 1.3.5"
searchsploit "OpenSSH 7.2"

Nmap resultaten naar IB

# Na het scannen kun je gevonden services als bevindingen vastleggen
# in het IB Findings dashboard: /dashboard/findings

Veelgemaakte Fouten

Samenvatting

In deze tutorial heb je geleerd hoe je Nmap effectief inzet tijdens een penetratietest:

  1. Host discovery – Gebruik ping sweeps en TCP/UDP discovery om actieve hosts te vinden.
  2. Poortscanning – Kies de juiste scantechniek (SYN, Connect, UDP) voor je situatie.
  3. Versiedetectie – Identificeer exact welke software op welke poort draait.
  4. NSE scripts – Gebruik scripts voor geautomatiseerde kwetsbaarheidsdetectie.
  5. Output – Sla resultaten op in meerdere formaten voor analyse en rapportage.
  6. Timing en evasion – Pas je scansnelheid en -technieken aan op de omgeving.
  7. IB integratie – Gebruik scan.sh voor een volledige geautomatiseerde scanworkflow.

Nmap is het fundament van elke pentest. Besteed tijd aan het leren van de opties en het analyseren van resultaten – dit bepaalt het succes van de rest van je assessment.