Nmap

TG
  • Tommy Gingras
    Studio Webux S.E.N.C
    21 Septembre 2020

Notes et cheatsheet pour NMAP

Documentation : https://nmap.org/book/man-briefoptions.html

Documentation des scripts : https://nmap.org/nsedoc/index.html

Les commandes

Description Commande
Stealth scan (Syn Scan) -sS
UDP Scan -sU
Detect OS -O
Service Version -sV
Add verbosity -v
More verbosity -vv
Export output to XML format -oX [filename]
Export output to NORMAL format -oN [filename]
Export output to Script Kiddie format -oS [filename]
Export output to Grepable format -oG [filename]
Agressive Scan (OS detection, Version Detection, Script Scanning and traceroute) -A
Set the timing to max level (Timing template higher is faster) -T5
To scan a specific port (Ex: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9) -p
scan every port -p-
To run a script –script=
Update script database –script-updatedb
Get help for a script –script-help=
To run all vulneraiblity scripts –script vuln
To skip host discovery (and dont ping the hosts) -Pn
Do not resolve the IP -n

Exemples

Pour simplifier les étapes ci-dessous, vous pouvez utiliser une variable,

host=1.2.3.4

Collecter les premières informations sur une machine

nmap -sS $host

Starting Nmap 7.80 ( https://nmap.org ) at 2020-09-20 13:33 EDT

Nmap scan report for 10.10.131.134

Host is up (0.091s latency).

Not shown: 998 closed ports

PORT STATE SERVICE

22/tcp open ssh

80/tcp open http

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

Collecter la version des services

nmap -sV $host

Starting Nmap 7.80 ( https://nmap.org ) at 2020-09-20 13:34 EDT

Nmap scan report for 10.10.131.134

Host is up (0.089s latency).

Not shown: 998 closed ports

PORT STATE SERVICE VERSION

22/tcp open ssh OpenSSH 6.6.1p1 Ubuntu 2ubuntu2.10 (Ubuntu Linux; protocol 2.0)

80/tcp open http Apache httpd 2.4.7 ((Ubuntu))

Service Info: 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 9.46 seconds

Collecter le plus d’information possible

nmap -A $host

Starting Nmap 7.80 ( https://nmap.org ) at 2020-09-20 13:35 EDT

Nmap scan report for 10.10.131.134

Host is up (0.090s latency).

Not shown: 998 closed ports

PORT STATE SERVICE VERSION

22/tcp open ssh OpenSSH 6.6.1p1 Ubuntu 2ubuntu2.10 (Ubuntu Linux; protocol 2.0)

| ssh-hostkey:

| 1024 cc:17:2d:35:54:b4:96:d5:54:96:22:15:b6:18:e9:a1 (DSA)

| 2048 cb:1e:d6:e7:e3:e6:8b:bc:3c:e7:72:9a:5e:12:cf:b4 (RSA)

| 256 c5:94:93:2c:03:b0:41:d3:70:fb:75:d2:d5:06:cd:13 (ECDSA)

|_ 256 da:a7:70:08:c5:fb:40:29:28:f6:b7:22:b3:f3:b3:84 (ED25519)

80/tcp open http Apache httpd 2.4.7 ((Ubuntu))

| http-cookie-flags:

| /:

| PHPSESSID:

|_ httponly flag not set

| http-robots.txt: 1 disallowed entry

|_/

|_http-server-header: Apache/2.4.7 (Ubuntu)

| http-title: Login :: Damn Vulnerable Web Application (DVWA) v1.10 *Develop...

|_Requested resource was login.php

Service Info: 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 12.17 seconds

Utiliser un fichier contenant la liste des IP cibles

Scan des ports 22 et 80 pour tous les hosts définis dans le fichier hosts.txt en utilisant la verbosité puis redirigeant les résultats en mode grepable dans le fichier extended_results.txt

nmap -p 22,80 -iL hosts.txt -v -oG extended_results.txt

Filtrer les résultats pour faire un test agressif (-A)

cat extended_results.txt | grep 'Ports: 22/open/tcp//ssh///, 80/open/tcp//http///' | cut -d ' ' -f 2 > filtered.txt

Puis les IPs filtrés seront utilisés comme suit:

On collecte la version du service qui est exécuté sur le port 9090, on ne fait pas de ping, Le mode verbose est utilisé et les résultats sont sauvegardés en mode par défaut.

nmap -sV -n -v -p 9090 -iL filtered.txt -oN aggresive_9090_results.txt

Filtrer les résultats et les séparer en petit fichier de 1024 IPs

De cette façon nous pouvons automatiser les scans en utilisant des listes avec au maximum 1024 hosts.

cat filtered.txt | uniq -u > unique.txt
split -l 1024 unique.txt

Par exemple,

mkdir -p done/ || true
files=$(ls | grep -E '^x[a-z][a-z]$')
for f in $files; do
  echo "File -> $f"
  time nmap -A -p9090 -iL $f -vvv -oN results/$f_9090.log
  mv $f done/
done

Ces exemples sont basés sur les résultats de masscan : sudo masscan 0.0.0.0/0 -p 9090 --max-rate 10000000 --exclude 255.255.255.255 -oG masscan_results.txt (cette commande va DDOS votre router …)