Indahax - Pierre Noguès

Twitter Facebook Linkedin email

Nmap, scan UDP applicatif

Je viens de lire une chose intéressante sur le blog du SANS, nmap commence à implémenter le scan de port applicatif sur le protocole UDP. Voici un extrait du changelog de la dernière version de nmap :

o For some UDP ports, Nmap will now send a protocol-specific payload that is more likely to get a response than an empty packet is. This improves the effectiveness of probes to those ports for host discovery, and also makes an open port more likely to be classified open rather than open|filtered. The ports and payloads are defined in payload.cc. The ports that have a payload are 7 (echo), 53 (domain), 111 (rpcbind), 123 (ntp), 137 (netbios-ns), 161 (snmp), 177 (xdmcp), 500 (isakmp), 520 (route), 1645 and 1812 (radius), 2049 (nfs), 5353 (zeroconf), and 10080 (amanda). [David]

Par scan applicatif j'entends que nmap va envoyer des paquets contenants des données spécifiques au protocole du port concerné. Par exemple pour le port 53, nmap va envoyer une requête DNS et vérifier qu'il reçoit bien une réponse DNS afin de déterminer si le service est open.

Voici un petit extrait du nouveau fichier payload.cc qui contient les nouvelles requêtes :

/*
  These payloads are sent with every host discovery or port scan probe. Only
  include payloads that are unlikely to crash services, trip IDS alerts, or
  change state on the server.

  Some of them are taken from nmap-service-probes.
*/

static const char payload_GenericLines[] = "x0Dx0Ax0Dx0A";
static const char payload_DNSStatusRequest[] =
  "x00x00x10x00x00x00x00x00x00x00x00x00";
static const char payload_RPCCheck[] =
  "x72xFEx1Dx13x00x00x00x00x00x00x00x02x00x01x86xA0"
  "x00x01x97x7Cx00x00x00x00x00x00x00x00x00x00x00x00"
  "x00x00x00x00x00x00x00x00";

C'est une très bonne nouvelle, le scan de port UDP sera dorénavant beaucoup plus fiable et ne reposera plus uniquement sur l'absence de réponse ICMP pour déterminer si un port UDP est open (du moins pour les ports cités dans le changelog).

Exemple sur un serveur qui ne renvoie jamais les paquets ICMP:

pierre@linux:/pentest/scanning$ sudo nmap -sU -sS -pT:22,80,U:53,111 94.23.57.7

Starting Nmap 5.21 ( http://nmap.org ) at 2010-02-01 08:47 CET
Nmap scan report for ks301922.kimsufi.com (94.23.57.7)
Host is up (0.030s latency).
PORT    STATE         SERVICE
22/tcp  open          ssh
80/tcp  open          http
53/udp  open          domain
111/udp open|filtered rpcbind

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