Enumération

Publié par

Plus de connaissances nous avons sur une cible ou un réseau, plus nous aurons d’options par la suite. Il est indispensable que l’énumération soit menée correctement.

Nous devons déterminer quels sont les services impliqués ainsi que les ports. Chaque machine a 65535 ports disponibles. La plupart sont des ports standard: exemple le port 80 pour le service HTTP.

Nous allons utiliser nmap pour faire un scan de ports. Nous cherchons les ports ouverts. La réponse obtenue sera: ouvert, fermé ou filtré (par un firewall).

Options

La commande nmap sera bien utilisée siles bonnes options sont utilisées.

Exemples:

-sSSyn scan
-sUUDP scan
-Osystème d’exploitation
-sVversion des services
-v verbosité
-vvverbosité niveau 2
-oAsauvegarder les résultats dans 3 formats différents
-oNsauvegarde dans un format normal
-oGsauvegarde dans un format grepable
-A« aggressive mode » (services, version, système d’exploitation, traceroute)
-T5vitesse du scan niveau 5 (plus facilement détectable, peut générer des erreurs)
-p 80scanner le port 80
-p 1000-10500scanner du port 1000 au port 1500
-p-scanner tous les ports
–scriptactivation d’un script
–scriptactivation d’un script de la catégorie vuln

Il y a 3 types basiques de scan à connaître. Il en existe d’autres plus particuliers.

TCP Connect Scans-sT
SYN Scans-sS
UDP Scans-sU
TCP Null Scans-sN
TCP Fin Scans-sF
TCP XMas Scans-sX

TCP Connect Scans

Ce scan effectue le « three-way handshake » (SYN, SYN+ACK, ACK). C’est pour cette raison que l’on dit « Connect ». Si un port est fermé, le serveur enverra un paquet TCP avec un flag RST (Reset). Par contre, si un port est ouvert, le serveur répondra avec les flags SYN+ACK.

Maintenant, que se passe-t-il si le port est ouvert mais derrière un firewall ? Le firewall « drop » le paquet: le serveur ne répond pas. Nmap comprendra que le port n’est ni ouvert, ni fermé, mais filtré.

On peut faire en sorte que le serveur réponde plutôt avec un flag RST afin que le scan indique un port fermé plutôt qu’un port filtré. Exemple avec iptables:

iptables -I INPUT -p tcp --dport <port> -j REJECT --reject-with tcp-reset
root@ip-10-10-27-113:~# nmap -sT 10.10.210.140

Starting Nmap 7.60 ( https://nmap.org ) at 2022-12-20 22:46 GMT
Nmap scan report for ip-10-10-210-140.eu-west-1.compute.internal (10.10.210.140)
Host is up (0.00063s latency).
Not shown: 995 filtered ports
PORT     STATE SERVICE
21/tcp   open  ftp
53/tcp   open  domain
80/tcp   open  http
135/tcp  open  msrpc
3389/tcp open  ms-wbt-server
MAC Address: 02:8F:1B:57:DA:D9 (Unknown)

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

Voir RFC 793 pour le protocole TCP.

C’est un scan semi-ouvert (ou non-connecté). En effet, le three-way handshake est presque fait. La différence est que le client renvoie un flag RST au lieu d’un flag ACK pour les ports ouverts. C’est donc un scan plus furtif car il n’y a pas de connexion.

Ce scan peut être utilisé pour contourner des IDS obsolètes. Par ailleurs, il y a moins de chance que ces scans soient journalisés. Enfin, étant donné qu’il n’y a pas de connexion, ce scan est plus rapide.

Par contre, il faut les permissions sudo pour l’utiliser. Aussi, des services instables peuvent être interrompus à cause de ces scans.

Si on fait un scan par défaut sans les permissions, le scan sera un TCP Connect Scan. Si on le fait avec les permissions, ce sera un Syn Scan.

Pour les ports fermés et filtrés, ce scan fonctionne comme le TCP Connect Scan.

root@ip-10-10-27-113:~# nmap -sS 10.10.210.140

Starting Nmap 7.60 ( https://nmap.org ) at 2022-12-20 22:48 GMT
Nmap scan report for ip-10-10-210-140.eu-west-1.compute.internal (10.10.210.140)
Host is up (0.00068s latency).
Not shown: 995 filtered ports
PORT     STATE SERVICE
21/tcp   open  ftp
53/tcp   open  domain
80/tcp   open  http
135/tcp  open  msrpc
3389/tcp open  ms-wbt-server
MAC Address: 02:8F:1B:57:DA:D9 (Unknown)

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

UDP Scans

Contrairement à TCP, les scans UDP sont stateless. Le scan UDP est plus lent et plus difficile à interpréter car nous n’avons pas d’accusé de réception en retour.

Si le serveur ne répond pas, le port peut être ouvert ou filtré. Si le port est fermé, le serveur répondra par un ICMP Packet ( port unreachable).

Etant donné que ce scan est extrêmement lent, on pourra ajouter des options pour scanner par exemple les 10 ports UDP les plus courants.

nmap -sU --top-ports 10 <cible>
root@ip-10-10-27-113:~# nmap -sS 10.10.210.140

Starting Nmap 7.60 ( https://nmap.org ) at 2022-12-20 22:48 GMT
Nmap scan report for ip-10-10-210-140.eu-west-1.compute.internal (10.10.210.140)
Host is up (0.00068s latency).
Not shown: 995 filtered ports
PORT     STATE SERVICE
21/tcp   open  ftp
53/tcp   open  domain
80/tcp   open  http
135/tcp  open  msrpc
3389/tcp open  ms-wbt-server
MAC Address: 02:8F:1B:57:DA:D9 (Unknown)

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

Null, Fin, Xmas Scans

Ces scans sont généralement utilisés lorsque les autres l’ont déjà été.

Le scan Null n’envoie aucun flag. Si un port est fermé, un flag RST est renvoyé.

root@ip-10-10-27-113:~# nmap -sN 10.10.210.140

Starting Nmap 7.60 ( https://nmap.org ) at 2022-12-20 22:50 GMT
Nmap scan report for ip-10-10-210-140.eu-west-1.compute.internal (10.10.210.140)
Host is up (0.00016s latency).
All 1000 scanned ports on ip-10-10-210-140.eu-west-1.compute.internal (10.10.210.140) are open|filtered
MAC Address: 02:8F:1B:57:DA:D9 (Unknown)

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

Le scan FIN envoie un flag FIN. Si un port est fermé, un flag RST est renvoyé.

root@ip-10-10-27-113:~# nmap -sF 10.10.210.140

Starting Nmap 7.60 ( https://nmap.org ) at 2022-12-20 22:53 GMT
Nmap scan report for ip-10-10-210-140.eu-west-1.compute.internal (10.10.210.140)
Host is up (0.00014s latency).
All 1000 scanned ports on ip-10-10-210-140.eu-west-1.compute.internal (10.10.210.140) are open|filtered
MAC Address: 02:8F:1B:57:DA:D9 (Unknown)

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

Le scan Xmas (pour Christmas Tree) envoie un paquet avec les flags PSH, URG et FIN. Si un port est fermé, le serveur renverra un flag RST.

root@ip-10-10-27-113:~# nmap -sX 10.10.210.140

Starting Nmap 7.60 ( https://nmap.org ) at 2022-12-20 22:55 GMT
Nmap scan report for ip-10-10-210-140.eu-west-1.compute.internal (10.10.210.140)
Host is up (0.00024s latency).
All 1000 scanned ports on ip-10-10-210-140.eu-west-1.compute.internal (10.10.210.140) are open|filtered
MAC Address: 02:8F:1B:57:DA:D9 (Unknown)

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

Pour détecter un port ouvert, ces 3 scans fonctionnent à peu près comme un scan UDP. Si un port est ouvert, le serveur ne renverra pas de réponse. Aussi, avec les firewalls, les 3 états obtenus seront opened, closed et opened|filtered. Si un port est filtré avec l’un de ces scans, alors on aura reçu une réponse ICMP (port unreachable).

La RFC 793 nous dit que les hôtes du réseau répondent aux paquets malformés avec un flag RST pour les ports fermés, et ne répondent pas pour les ports ouverts. Mais ce n’est pas toujours le cas ! Exemple pour Microsoft Windows ou les périphériques Cisco qui renverront un flag RST que le port soit fermé ou non. Tous les ports apparaîtront fermés.

Ces scans sont en général utilisés pour contourner certains firewalls. Aujourd’hui, la plupart des IDS peuvent reconnaître ces types de scan.

Scan réseau ICMP

Nous cherchons à obtenir une carte de la structure du réseau. Pour ce faire, nous allons effectuer un « ping sweep ». Nmap envoie un paquet ICMP à chaque adresse IP potentielle. Les machines répondant au ping nous permettent de savoir quels hôtes sont actifs. Ce scan n’est pas toujours exact, mais il fournit déjà une bonne base.

root@ip-10-10-142-84:~# nmap -sn 10.10.143.0/24

Starting Nmap 7.60 ( https://nmap.org ) at 2022-12-21 16:57 GMT
Nmap scan report for ip-10-10-143-24.eu-west-1.compute.internal (10.10.143.24)
Host is up (0.00044s latency).
MAC Address: 02:B8:B3:44:98:67 (Unknown)
Nmap scan report for ip-10-10-143-38.eu-west-1.compute.internal (10.10.143.38)
Host is up (-0.100s latency).
MAC Address: 02:F3:21:3B:4D:3D (Unknown)
Nmap scan report for ip-10-10-143-61.eu-west-1.compute.internal (10.10.143.61)
Host is up (0.00039s latency).
MAC Address: 02:AD:E6:46:A5:27 (Unknown)
Nmap scan report for ip-10-10-143-77.eu-west-1.compute.internal (10.10.143.77)
Host is up (0.00025s latency).
MAC Address: 02:BA:DE:D9:7D:97 (Unknown)
Nmap scan report for ip-10-10-143-78.eu-west-1.compute.internal (10.10.143.78)
Host is up (-0.100s latency).
MAC Address: 02:63:E7:E2:CA:25 (Unknown)
Nmap scan report for ip-10-10-143-116.eu-west-1.compute.internal (10.10.143.116)
Host is up (0.00042s latency).
MAC Address: 02:F8:76:6D:0C:25 (Unknown)
Nmap scan report for ip-10-10-143-120.eu-west-1.compute.internal (10.10.143.120)
Host is up (0.00028s latency).
MAC Address: 02:16:DC:94:4A:01 (Unknown)
Nmap scan report for ip-10-10-143-142.eu-west-1.compute.internal (10.10.143.142)
Host is up (-0.100s latency).
MAC Address: 02:41:3D:F0:22:F1 (Unknown)
Nmap scan report for ip-10-10-143-161.eu-west-1.compute.internal (10.10.143.161)
Host is up (0.00036s latency).
MAC Address: 02:CA:5B:38:61:43 (Unknown)
Nmap scan report for ip-10-10-143-162.eu-west-1.compute.internal (10.10.143.162)
Host is up (0.00026s latency).
MAC Address: 02:CB:DC:C1:8C:FB (Unknown)
Nmap scan report for ip-10-10-143-201.eu-west-1.compute.internal (10.10.143.201)
Host is up (0.00030s latency).
MAC Address: 02:52:D7:ED:58:DF (Unknown)
Nmap scan report for ip-10-10-143-214.eu-west-1.compute.internal (10.10.143.214)
Host is up (-0.100s latency).
MAC Address: 02:F4:8C:CB:E8:39 (Unknown)
Nmap scan report for ip-10-10-143-218.eu-west-1.compute.internal (10.10.143.218)
Host is up (0.00040s latency).
MAC Address: 02:14:32:8A:43:4F (Unknown)
Nmap done: 256 IP addresses (13 hosts up) scanned in 2.93 seconds

Scripts

Le moteur de script Nmap (NSE) est un élément essentiel du scanner tant il multiplie les possibilités de l’outil. Les scripts sont écrits dans le langage LUA. Il s’agit de scans de vulnérabilités, automatisations d’exploits. On trouve plusieurs catégories dans la bibliothèque de scripts.

safen’affectera pas la cible
intrusivesusceptible d’affecter la cible
vulnscan de vulnérabilités
exploitexploiter une vulnérabilité
authbypasser l’authentification de certains services
brutebruteforce des identifiants de certains services
discoveryinterrogation des services en cours pour obtenir plus d’informations à propos du réseau.

Voir https://nmap.org/book/nse-usage.html

Pour utiliser la commande, on ajoutera:

--script=<nom-du-script>

Plusieurs scripts peuvent être lancés en même temps:

--script=http-fileupload-exploiter,smb-enum-users

Certains scripts nécessitent des arguments (comme des identifiants). Dans ce cas, on ajoutera:

--script-args

Une liste des scripts peut être trouvée dans la documentation.

Les scripts ont aussi un menu d’aide.

Exemple:

root@ip-10-10-142-84:~# nmap --script-help ftp-anon

Starting Nmap 7.60 ( https://nmap.org ) at 2022-12-21 17:11 GMT

ftp-anon
Categories: default auth safe
https://nmap.org/nsedoc/scripts/ftp-anon.html
  Checks if an FTP server allows anonymous logins.

  If anonymous is allowed, gets a directory listing of the root directory
  and highlights writeable files.

Comment trouver ces scripts ? Soit par l’URL plus-haut, soit dans le dossier /usr/share/nmap/scripts.

root@ip-10-10-142-84:/usr/share/nmap/scripts# ls
acarsd-info.nse                         ip-forwarding.nse
address-info.nse                        ip-geolocation-geoplugin.nse
afp-brute.nse                           ip-geolocation-ipinfodb.nse
afp-ls.nse                              ip-geolocation-map-bing.nse
afp-path-vuln.nse                       ip-geolocation-map-google.nse
afp-serverinfo.nse                      ip-geolocation-map-kml.nse
afp-showmount.nse                       ip-geolocation-maxmind.nse
ajp-auth.nse                            ip-https-discover.nse
ajp-brute.nse                           ipidseq.nse
ajp-headers.nse                         ipmi-brute.nse
ajp-methods.nse                         ipmi-cipher-zero.nse
ajp-request.nse                         ipmi-version.nse
allseeingeye-info.nse                   ipv6-multicast-mld-list.nse
amqp-info.nse                           ipv6-node-info.nse
asn-query.nse                           ipv6-ra-flood.nse
auth-owners.nse                         irc-botnet-channels.nse
auth-spoof.nse                          irc-brute.nse
backorifice-brute.nse                   irc-info.nse
backorifice-info.nse                    irc-sasl-brute.nse
bacnet-info.nse                         irc-unrealircd-backdoor.nse
banner.nse                              iscsi-brute.nse
bitcoin-getaddr.nse                     iscsi-info.nse
bitcoin-info.nse                        isns-info.nse
bitcoinrpc-info.nse                     jdwp-exec.nse
bittorrent-discovery.nse                jdwp-info.nse
bjnp-discover.nse                       jdwp-inject.nse
broadcast-ataoe-discover.nse            jdwp-version.nse
broadcast-avahi-dos.nse                 knx-gateway-discover.nse
broadcast-bjnp-discover.nse             knx-gateway-info.nse
broadcast-db2-discover.nse              krb5-enum-users.nse
broadcast-dhcp6-discover.nse            ldap-brute.nse
broadcast-dhcp-discover.nse             ldap-novell-getpass.nse
broadcast-dns-service-discovery.nse     ldap-rootdse.nse
broadcast-dropbox-listener.nse          ldap-search.nse
broadcast-eigrp-discovery.nse           lexmark-config.nse
broadcast-igmp-discovery.nse            llmnr-resolve.nse
broadcast-listener.nse                  lltd-discovery.nse
broadcast-ms-sql-discover.nse           maxdb-info.nse
broadcast-netbios-master-browser.nse    mcafee-epo-agent.nse
broadcast-networker-discover.nse        membase-brute.nse
broadcast-novell-locate.nse             membase-http-info.nse
broadcast-ospf2-discover.nse            memcached-info.nse
broadcast-pc-anywhere.nse               metasploit-info.nse
broadcast-pc-duo.nse                    metasploit-msgrpc-brute.nse
broadcast-pim-discovery.nse             metasploit-xmlrpc-brute.nse
broadcast-ping.nse                      mikrotik-routeros-brute.nse
broadcast-pppoe-discover.nse            mmouse-brute.nse
broadcast-rip-discover.nse              mmouse-exec.nse
broadcast-ripng-discover.nse            modbus-discover.nse
broadcast-sonicwall-discover.nse        mongodb-brute.nse
broadcast-sybase-asa-discover.nse       mongodb-databases.nse
broadcast-tellstick-discover.nse        mongodb-info.nse
broadcast-upnp-info.nse                 mqtt-subscribe.nse
broadcast-versant-locate.nse            mrinfo.nse
broadcast-wake-on-lan.nse               msrpc-enum.nse
broadcast-wpad-discover.nse             ms-sql-brute.nse
broadcast-wsdd-discover.nse             ms-sql-config.nse
broadcast-xdmcp-discover.nse            ms-sql-dac.nse
cassandra-brute.nse                     ms-sql-dump-hashes.nse
cassandra-info.nse                      ms-sql-empty-password.nse
cccam-version.nse                       ms-sql-hasdbaccess.nse
cics-enum.nse                           ms-sql-info.nse
cics-info.nse                           ms-sql-ntlm-info.nse
cics-user-brute.nse                     ms-sql-query.nse
cics-user-enum.nse                      ms-sql-tables.nse
citrix-brute-xml.nse                    ms-sql-xp-cmdshell.nse
citrix-enum-apps.nse                    mtrace.nse
citrix-enum-apps-xml.nse                murmur-version.nse
citrix-enum-servers.nse                 mysql-audit.nse
citrix-enum-servers-xml.nse             mysql-brute.nse
clamav-exec.nse                         mysql-databases.nse
clock-skew.nse                          mysql-dump-hashes.nse
coap-resources.nse                      mysql-empty-password.nse
couchdb-databases.nse                   mysql-enum.nse
couchdb-stats.nse                       mysql-info.nse
creds-summary.nse                       mysql-query.nse
cups-info.nse                           mysql-users.nse
cups-queue-info.nse                     mysql-variables.nse
cvs-brute.nse                           mysql-vuln-cve2012-2122.nse
cvs-brute-repository.nse                nat-pmp-info.nse
daap-get-library.nse                    nat-pmp-mapport.nse
daytime.nse                             nbstat.nse
db2-das-info.nse                        ncp-enum-users.nse
dhcp-discover.nse                       ncp-serverinfo.nse
dict-info.nse                           ndmp-fs-info.nse
distcc-cve2004-2687.nse                 ndmp-version.nse
dns-blacklist.nse                       nessus-brute.nse
dns-brute.nse                           nessus-xmlrpc-brute.nse
dns-cache-snoop.nse                     netbus-auth-bypass.nse
dns-check-zone.nse                      netbus-brute.nse
dns-client-subnet-scan.nse              netbus-info.nse
dns-fuzz.nse                            netbus-version.nse
dns-ip6-arpa-scan.nse                   nexpose-brute.nse
dns-nsec3-enum.nse                      nfs-ls.nse
dns-nsec-enum.nse                       nfs-showmount.nse
dns-nsid.nse                            nfs-statfs.nse
dns-random-srcport.nse                  nje-node-brute.nse
dns-random-txid.nse                     nje-pass-brute.nse
dns-recursion.nse                       nntp-ntlm-info.nse
dns-service-discovery.nse               nping-brute.nse
dns-srv-enum.nse                        nrpe-enum.nse
dns-update.nse                          ntp-info.nse
dns-zeustracker.nse                     ntp-monlist.nse
dns-zone-transfer.nse                   omp2-brute.nse
docker-version.nse                      omp2-enum-targets.nse
domcon-brute.nse                        omron-info.nse
domcon-cmd.nse                          openlookup-info.nse
domino-enum-users.nse                   openvas-otp-brute.nse
dpap-brute.nse                          openwebnet-discovery.nse
drda-brute.nse                          oracle-brute.nse
drda-info.nse                           oracle-brute-stealth.nse
duplicates.nse                          oracle-enum-users.nse
eap-info.nse                            oracle-sid-brute.nse
enip-info.nse                           oracle-tns-version.nse
epmd-info.nse                           ovs-agent-version.nse
eppc-enum-processes.nse                 p2p-conficker.nse
fcrdns.nse                              path-mtu.nse
finger.nse                              pcanywhere-brute.nse
fingerprint-strings.nse                 pcworx-info.nse
firewalk.nse                            pgsql-brute.nse
firewall-bypass.nse                     pjl-ready-message.nse
flume-master-info.nse                   pop3-brute.nse
fox-info.nse                            pop3-capabilities.nse
freelancer-info.nse                     pop3-ntlm-info.nse
ftp-anon.nse                            pptp-version.nse
ftp-bounce.nse                          puppet-naivesigning.nse
ftp-brute.nse                           qconn-exec.nse
ftp-libopie.nse                         qscan.nse
ftp-proftpd-backdoor.nse                quake1-info.nse
ftp-syst.nse                            quake3-info.nse
ftp-vsftpd-backdoor.nse                 quake3-master-getservers.nse
ftp-vuln-cve2010-4221.nse               rdp-enum-encryption.nse
ganglia-info.nse                        rdp-vuln-ms12-020.nse
giop-info.nse                           realvnc-auth-bypass.nse
gkrellm-info.nse                        redis-brute.nse
gopher-ls.nse                           redis-info.nse
gpsd-info.nse                           resolveall.nse
hadoop-datanode-info.nse                reverse-index.nse
hadoop-jobtracker-info.nse              rexec-brute.nse
hadoop-namenode-info.nse                rfc868-time.nse
hadoop-secondary-namenode-info.nse      riak-http-info.nse
hadoop-tasktracker-info.nse             rlogin-brute.nse
hbase-master-info.nse                   rmi-dumpregistry.nse
hbase-region-info.nse                   rmi-vuln-classloader.nse
hddtemp-info.nse                        rpcap-brute.nse
hnap-info.nse                           rpcap-info.nse
hostmap-bfk.nse                         rpc-grind.nse
hostmap-ip2hosts.nse                    rpcinfo.nse
hostmap-robtex.nse                      rsync-brute.nse
http-adobe-coldfusion-apsa1301.nse      rsync-list-modules.nse
http-affiliate-id.nse                   rtsp-methods.nse
http-apache-negotiation.nse             rtsp-url-brute.nse
http-apache-server-status.nse           rusers.nse
http-aspnet-debug.nse                   s7-info.nse
http-auth-finder.nse                    samba-vuln-cve-2012-1182.nse
http-auth.nse                           script.db
http-avaya-ipoffice-users.nse           servicetags.nse
http-awstatstotals-exec.nse             shodan-api.nse
http-axis2-dir-traversal.nse            sip-brute.nse
http-backup-finder.nse                  sip-call-spoof.nse
http-barracuda-dir-traversal.nse        sip-enum-users.nse
http-brute.nse                          sip-methods.nse
http-cakephp-version.nse                skypev2-version.nse
http-chrono.nse                         smb2-capabilities.nse
http-cisco-anyconnect.nse               smb2-security-mode.nse
http-coldfusion-subzero.nse             smb2-time.nse
http-comments-displayer.nse             smb2-vuln-uptime.nse
http-config-backup.nse                  smb-brute.nse
http-cookie-flags.nse                   smb-double-pulsar-backdoor.nse
http-cors.nse                           smb-enum-domains.nse
http-cross-domain-policy.nse            smb-enum-groups.nse
http-csrf.nse                           smb-enum-processes.nse
http-date.nse                           smb-enum-sessions.nse
http-default-accounts.nse               smb-enum-shares.nse
http-devframework.nse                   smb-enum-users.nse
http-dlink-backdoor.nse                 smb-flood.nse
http-dombased-xss.nse                   smb-ls.nse
http-domino-enum-passwords.nse          smb-mbenum.nse
http-drupal-enum.nse                    smb-os-discovery.nse
http-drupal-enum-users.nse              smb-print-text.nse
http-enum.nse                           smb-protocols.nse
http-errors.nse                         smb-psexec.nse
http-exif-spider.nse                    smb-security-mode.nse
http-favicon.nse                        smb-server-stats.nse
http-feed.nse                           smb-system-info.nse
http-fetch.nse                          smb-vuln-conficker.nse
http-fileupload-exploiter.nse           smb-vuln-cve2009-3103.nse
http-form-brute.nse                     smb-vuln-cve-2017-7494.nse
http-form-fuzzer.nse                    smb-vuln-ms06-025.nse
http-frontpage-login.nse                smb-vuln-ms07-029.nse
http-generator.nse                      smb-vuln-ms08-067.nse
http-git.nse                            smb-vuln-ms10-054.nse
http-gitweb-projects-enum.nse           smb-vuln-ms10-061.nse
http-google-malware.nse                 smb-vuln-ms17-010.nse
http-grep.nse                           smb-vuln-regsvc-dos.nse
http-headers.nse                        smtp-brute.nse
http-huawei-hg5xx-vuln.nse              smtp-commands.nse
http-icloud-findmyiphone.nse            smtp-enum-users.nse
http-icloud-sendmsg.nse                 smtp-ntlm-info.nse
http-iis-short-name-brute.nse           smtp-open-relay.nse
http-iis-webdav-vuln.nse                smtp-strangeport.nse
http-internal-ip-disclosure.nse         smtp-vuln-cve2010-4344.nse
http-joomla-brute.nse                   smtp-vuln-cve2011-1720.nse
http-litespeed-sourcecode-download.nse  smtp-vuln-cve2011-1764.nse
http-ls.nse                             sniffer-detect.nse
http-majordomo2-dir-traversal.nse       snmp-brute.nse
http-malware-host.nse                   snmp-hh3c-logins.nse
http-mcmp.nse                           snmp-info.nse
http-methods.nse                        snmp-interfaces.nse
http-method-tamper.nse                  snmp-ios-config.nse
http-mobileversion-checker.nse          snmp-netstat.nse
http-ntlm-info.nse                      snmp-processes.nse
http-open-proxy.nse                     snmp-sysdescr.nse
http-open-redirect.nse                  snmp-win32-services.nse
http-passwd.nse                         snmp-win32-shares.nse
http-phpmyadmin-dir-traversal.nse       snmp-win32-software.nse
http-phpself-xss.nse                    snmp-win32-users.nse
http-php-version.nse                    socks-auth-info.nse
http-proxy-brute.nse                    socks-brute.nse
http-put.nse                            socks-open-proxy.nse
http-qnap-nas-info.nse                  ssh2-enum-algos.nse
http-referer-checker.nse                ssh-auth-methods.nse
http-rfi-spider.nse                     ssh-brute.nse
http-robots.txt.nse                     ssh-hostkey.nse
http-robtex-reverse-ip.nse              ssh-publickey-acceptance.nse
http-robtex-shared-ns.nse               ssh-run.nse
http-security-headers.nse               sshv1.nse
http-server-header.nse                  ssl-ccs-injection.nse
http-shellshock.nse                     ssl-cert-intaddr.nse
http-sitemap-generator.nse              ssl-cert.nse
http-slowloris-check.nse                ssl-date.nse
http-slowloris.nse                      ssl-dh-params.nse
http-sql-injection.nse                  ssl-enum-ciphers.nse
http-stored-xss.nse                     ssl-heartbleed.nse
http-svn-enum.nse                       ssl-known-key.nse
http-svn-info.nse                       ssl-poodle.nse
http-title.nse                          sslv2-drown.nse
http-tplink-dir-traversal.nse           sslv2.nse
http-trace.nse                          sstp-discover.nse
http-traceroute.nse                     stun-info.nse
http-unsafe-output-escaping.nse         stun-version.nse
http-useragent-tester.nse               stuxnet-detect.nse
http-userdir-enum.nse                   supermicro-ipmi-conf.nse
http-vhosts.nse                         svn-brute.nse
http-virustotal.nse                     targets-asn.nse
http-vlcstreamer-ls.nse                 targets-ipv6-map4to6.nse
http-vmware-path-vuln.nse               targets-ipv6-multicast-echo.nse
http-vuln-cve2006-3392.nse              targets-ipv6-multicast-invalid-dst.nse
http-vuln-cve2009-3960.nse              targets-ipv6-multicast-mld.nse
http-vuln-cve2010-0738.nse              targets-ipv6-multicast-slaac.nse
http-vuln-cve2010-2861.nse              targets-ipv6-wordlist.nse
http-vuln-cve2011-3192.nse              targets-sniffer.nse
http-vuln-cve2011-3368.nse              targets-traceroute.nse
http-vuln-cve2012-1823.nse              targets-xml.nse
http-vuln-cve2013-0156.nse              teamspeak2-version.nse
http-vuln-cve2013-6786.nse              telnet-brute.nse
http-vuln-cve2013-7091.nse              telnet-encryption.nse
http-vuln-cve2014-2126.nse              telnet-ntlm-info.nse
http-vuln-cve2014-2127.nse              tftp-enum.nse
http-vuln-cve2014-2128.nse              tls-nextprotoneg.nse
http-vuln-cve2014-2129.nse              tls-ticketbleed.nse
http-vuln-cve2014-3704.nse              tn3270-screen.nse
http-vuln-cve2014-8877.nse              tor-consensus-checker.nse
http-vuln-cve2015-1427.nse              traceroute-geolocation.nse
http-vuln-cve2015-1635.nse              tso-brute.nse
http-vuln-cve2017-1001000.nse           tso-enum.nse
http-vuln-cve2017-5638.nse              unittest.nse
http-vuln-cve2017-5689.nse              unusual-port.nse
http-vuln-cve2017-8917.nse              upnp-info.nse
http-vuln-misfortune-cookie.nse         url-snarf.nse
http-vuln-wnr1000-creds.nse             ventrilo-info.nse
http-waf-detect.nse                     versant-info.nse
http-waf-fingerprint.nse                vmauthd-brute.nse
http-webdav-scan.nse                    vmware-version.nse
http-wordpress-brute.nse                vnc-brute.nse
http-wordpress-enum.nse                 vnc-info.nse
http-wordpress-users.nse                vnc-title.nse
http-xssed.nse                          voldemort-info.nse
iax2-brute.nse                          vtam-enum.nse
iax2-version.nse                        vuze-dht-info.nse
icap-info.nse                           wdb-version.nse
iec-identify.nse                        weblogic-t3-info.nse
ike-version.nse                         whois-domain.nse
imap-brute.nse                          whois-ip.nse
imap-capabilities.nse                   wsdd-discover.nse
imap-ntlm-info.nse                      x11-access.nse
impress-remote-discover.nse             xdmcp-discover.nse
informix-brute.nse                      xmlrpc-methods.nse
informix-query.nse                      xmpp-brute.nse
informix-tables.nse                     xmpp-info.nse
root@ip-10-10-142-84:/usr/share/nmap/scripts# file http-vuln-cve2017-8917.nse 
http-vuln-cve2017-8917.nse: HTML document, ASCII text
root@ip-10-10-142-84:/usr/share/nmap/scripts# head http-vuln-cve2017-8917.nse 
local http = require "http"
local shortport = require "shortport"
local string = require "string"
local stdnse = require "stdnse"
local vulns = require "vulns"
local table = require "table"

description = [[
An SQL Injection vulnerability affecting Joomla! 3.7.x before 3.7.1 allows for
unauthenticated users to execute arbitrary SQL commands. This vulnerability was
root@ip-10-10-142-84:/usr/share/nmap/scripts# 

Il est possible que certains scripts ne soient pas présents. Si tel est le cas, on fera:

sudo apt update && sudo apt install nmap

A noter que dans ce fichiers se trouve le fichier script.db: une base de données contenant les scripts. Si, par exemple, on cherche des scripts avec la catégorie « brute », on fera:

root@ip-10-10-142-84:/usr/share/nmap/scripts# grep "brute" script.db
Entry { filename = "afp-brute.nse", categories = { "brute", "intrusive", } }
Entry { filename = "ajp-brute.nse", categories = { "brute", "intrusive", } }
Entry { filename = "backorifice-brute.nse", categories = { "brute", "intrusive", } }
Entry { filename = "cassandra-brute.nse", categories = { "brute", "intrusive", } }
Entry { filename = "cics-enum.nse", categories = { "brute", "intrusive", } }
Entry { filename = "cics-user-brute.nse", categories = { "brute", "intrusive", } }
Entry { filename = "cics-user-enum.nse", categories = { "brute", "intrusive", } }
Entry { filename = "citrix-brute-xml.nse", categories = { "brute", "intrusive", } }
Entry { filename = "cvs-brute-repository.nse", categories = { "brute", "intrusive", } }
Entry { filename = "cvs-brute.nse", categories = { "brute", "intrusive", } }
Entry { filename = "dns-brute.nse", categories = { "discovery", "intrusive", } }
Entry { filename = "domcon-brute.nse", categories = { "brute", "intrusive", } }
Entry { filename = "dpap-brute.nse", categories = { "brute", "intrusive", } }
Entry { filename = "drda-brute.nse", categories = { "brute", "intrusive", } }
Entry { filename = "ftp-brute.nse", categories = { "brute", "intrusive", } }
Entry { filename = "http-brute.nse", categories = { "brute", "intrusive", } }
Entry { filename = "http-form-brute.nse", categories = { "brute", "intrusive", } }
Entry { filename = "http-iis-short-name-brute.nse", categories = { "brute", "intrusive", } }
Entry { filename = "http-joomla-brute.nse", categories = { "brute", "intrusive", } }
Entry { filename = "http-proxy-brute.nse", categories = { "brute", "external", "intrusive", } }
Entry { filename = "http-wordpress-brute.nse", categories = { "brute", "intrusive", } }
Entry { filename = "iax2-brute.nse", categories = { "brute", "intrusive", } }
Entry { filename = "imap-brute.nse", categories = { "brute", "intrusive", } }
Entry { filename = "impress-remote-discover.nse", categories = { "brute", "intrusive", } }
Entry { filename = "informix-brute.nse", categories = { "brute", "intrusive", } }
Entry { filename = "ipmi-brute.nse", categories = { "brute", "intrusive", } }
Entry { filename = "irc-brute.nse", categories = { "brute", "intrusive", } }
Entry { filename = "irc-sasl-brute.nse", categories = { "brute", "intrusive", } }
Entry { filename = "iscsi-brute.nse", categories = { "brute", "intrusive", } }
Entry { filename = "ldap-brute.nse", categories = { "brute", "intrusive", } }
Entry { filename = "membase-brute.nse", categories = { "brute", "intrusive", } }
Entry { filename = "metasploit-msgrpc-brute.nse", categories = { "brute", "intrusive", } }
Entry { filename = "metasploit-xmlrpc-brute.nse", categories = { "brute", "intrusive", } }
Entry { filename = "mikrotik-routeros-brute.nse", categories = { "brute", "intrusive", } }
Entry { filename = "mmouse-brute.nse", categories = { "brute", "intrusive", } }
Entry { filename = "mongodb-brute.nse", categories = { "brute", "intrusive", } }
Entry { filename = "ms-sql-brute.nse", categories = { "brute", "intrusive", } }
Entry { filename = "mysql-brute.nse", categories = { "brute", "intrusive", } }
Entry { filename = "mysql-enum.nse", categories = { "brute", "intrusive", } }
Entry { filename = "nessus-brute.nse", categories = { "brute", "intrusive", } }
Entry { filename = "nessus-xmlrpc-brute.nse", categories = { "brute", "intrusive", } }
Entry { filename = "netbus-brute.nse", categories = { "brute", "intrusive", } }
Entry { filename = "nexpose-brute.nse", categories = { "brute", "intrusive", } }
Entry { filename = "nje-node-brute.nse", categories = { "brute", "intrusive", } }
Entry { filename = "nje-pass-brute.nse", categories = { "brute", "intrusive", } }
Entry { filename = "nping-brute.nse", categories = { "brute", "intrusive", } }
Entry { filename = "omp2-brute.nse", categories = { "brute", "intrusive", } }
Entry { filename = "openvas-otp-brute.nse", categories = { "brute", "intrusive", } }
Entry { filename = "oracle-brute-stealth.nse", categories = { "brute", "intrusive", } }
Entry { filename = "oracle-brute.nse", categories = { "brute", "intrusive", } }
Entry { filename = "oracle-sid-brute.nse", categories = { "brute", "intrusive", } }
Entry { filename = "pcanywhere-brute.nse", categories = { "brute", "intrusive", } }
Entry { filename = "pgsql-brute.nse", categories = { "brute", "intrusive", } }
Entry { filename = "pop3-brute.nse", categories = { "brute", "intrusive", } }
Entry { filename = "redis-brute.nse", categories = { "brute", "intrusive", } }
Entry { filename = "rexec-brute.nse", categories = { "brute", "intrusive", } }
Entry { filename = "rlogin-brute.nse", categories = { "brute", "intrusive", } }
Entry { filename = "rpcap-brute.nse", categories = { "brute", "intrusive", } }
Entry { filename = "rsync-brute.nse", categories = { "brute", "intrusive", } }
Entry { filename = "rtsp-url-brute.nse", categories = { "brute", "intrusive", } }
Entry { filename = "sip-brute.nse", categories = { "brute", "intrusive", } }
Entry { filename = "smb-brute.nse", categories = { "brute", "intrusive", } }
Entry { filename = "smtp-brute.nse", categories = { "brute", "intrusive", } }
Entry { filename = "snmp-brute.nse", categories = { "brute", "intrusive", } }
Entry { filename = "socks-brute.nse", categories = { "brute", "intrusive", } }
Entry { filename = "ssh-brute.nse", categories = { "brute", "intrusive", } }
Entry { filename = "svn-brute.nse", categories = { "brute", "intrusive", } }
Entry { filename = "telnet-brute.nse", categories = { "brute", "intrusive", } }
Entry { filename = "tso-brute.nse", categories = { "intrusive", } }
Entry { filename = "tso-enum.nse", categories = { "brute", "intrusive", } }
Entry { filename = "vmauthd-brute.nse", categories = { "brute", "intrusive", } }
Entry { filename = "vnc-brute.nse", categories = { "brute", "intrusive", } }
Entry { filename = "vtam-enum.nse", categories = { "brute", "intrusive", } }
Entry { filename = "xmpp-brute.nse", categories = { "brute", "intrusive", } }

Exemple d’un script de connexion sur un service FTP

root@ip-10-10-142-84:~# nmap --script=ftp-anon -p 21 10.10.143.38 -vv

Starting Nmap 7.60 ( https://nmap.org ) at 2022-12-21 17:44 GMT
NSE: Loaded 1 scripts for scanning.
NSE: Script Pre-scanning.
NSE: Starting runlevel 1 (of 1) scan.
Initiating NSE at 17:44
Completed NSE at 17:44, 0.00s elapsed
Initiating ARP Ping Scan at 17:44
Scanning 10.10.143.38 [1 port]
Completed ARP Ping Scan at 17:44, 0.22s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 17:44
Completed Parallel DNS resolution of 1 host. at 17:44, 0.00s elapsed
Initiating SYN Stealth Scan at 17:44
Scanning ip-10-10-143-38.eu-west-1.compute.internal (10.10.143.38) [1 port]
Discovered open port 21/tcp on 10.10.143.38
Completed SYN Stealth Scan at 17:44, 0.22s elapsed (1 total ports)
NSE: Script scanning 10.10.143.38.
NSE: Starting runlevel 1 (of 1) scan.
Initiating NSE at 17:44
Completed NSE at 17:44, 30.00s elapsed
Nmap scan report for ip-10-10-143-38.eu-west-1.compute.internal (10.10.143.38)
Host is up, received arp-response (0.00027s latency).
Scanned at 2022-12-21 17:44:24 GMT for 31s

PORT   STATE SERVICE REASON
21/tcp open  ftp     syn-ack ttl 128
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
|_Can't get directory listing: TIMEOUT
MAC Address: 02:F3:21:3B:4D:3D (Unknown)

NSE: Script Post-scanning.
NSE: Starting runlevel 1 (of 1) scan.
Initiating NSE at 17:44
Completed NSE at 17:44, 0.00s elapsed
Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 30.80 seconds
           Raw packets sent: 3 (116B) | Rcvd: 3 (116B)

Firewall Evasion

Nous avons vu quelques techniques utiles ( Syn Scan, NULL, FIN et Xmas Scans).

Une machine Windows bloque normalement tous les paquets ICMP. Nmap peut donc considérer une machine comme étant inactive, alors qu’elle l’est !

Pour contourner cette configuration, on utilisera l’option -Pn. Cette option indique à Nmap de ne pas pinger une cible avant de la scanner. Nmap considèrera donc que la machine est active. La contrepartie est que cette option fait que le scan est beaucoup plus lent.

Aussi, si on est déjà dans le réseau local, Nmap peut également utiliser les requêtes ARP pour déterminer l’activité de l’hôte.

On trouvera une documentation sur le site d’Nmap pour le contournement de firewalls.

Voici des exemples:

-ffragmentation de paquets afin de réduire les chances d’être détecté par un firewall ou un IDS
–mtu <nombre>gère le Maximum Transfert Unit (le nombre doit être un multiple de 8)
–scan-delay <time>mspermet d’ajouter un délai entre chaque envoi de paquet. utile pour contourner des déclencheurs de pare-feu/IDS basés sur le temps
–badsumgénère un checksum invalide pour les paquets. Il sera normalement rejeté mais un firewall/IDS peut éventuellement répondre. Dans ce cas, cette option nous permet de savoir qu’un firewall/IDS est présent.

Enfin, voici un mémo sur l’outil: