Résumé Nmap (ESP)

Reading time: 20 minutes

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks
nmap -sV -sC -O -n -oA nmapscan 192.168.0.1/24

Paramètres

IPs à scanner

  • <ip>,<net/mask>: Indiquer les ips directement
  • -iL <ips_file>: list_IPs
  • -iR <number>: Nombre d'IPs aléatoires, vous pouvez exclure des Ips possibles avec --exclude <Ips> ou --excludefile <file>.

Découverte des équipements

Par défaut Nmap lance une phase de découverte consistant en : -PA80 -PS443 -PE -PP

  • -sL: Non invasif, il liste les cibles en effectuant des requêtes DNS pour résoudre les noms. Utile pour savoir si, par exemple, www.prueba.es/24 toutes les Ips sont nos cibles.
  • -Pn: Pas de ping. Utile si vous savez qu'ils sont tous actifs (sinon vous pourriez perdre beaucoup de temps, mais cette option produit aussi des faux négatifs indiquant qu'ils ne sont pas actifs), elle empêche la phase de découverte.
  • -sn : Pas de scan de ports. Après la phase de reconnaissance, il ne scanne pas les ports. Relativement discret, et permet un petit scan réseau. Avec privilèges il envoie un ACK (-PA) vers 80, un SYN (-PS) vers 443 et une requête echo et une requête Timestamp, sans privilèges il complète toujours les connexions. Si la cible est le réseau, il n'utilise que ARP(-PR). Si utilisé avec une autre option, seuls les paquets de l'autre option sont abandonnés.
  • -PR: Ping ARP. Utilisé par défaut pour analyser des machines sur notre réseau, plus rapide que les pings. Si vous ne voulez pas utiliser les paquets ARP utilisez --send-ip.
  • -PS <ports>: Envoie des paquets SYN ; si la cible répond SYN/ACK c'est open (elle répond avec RST pour ne pas terminer la connexion), si elle répond RST c'est closed et si elle ne répond pas c'est unreachable. En cas d'absence de privilèges, une connexion complète est utilisée automatiquement. Si aucun port n'est donné, il l'envoie sur 80.
  • -PA <ports>: Comme la précédente mais avec ACK, combiner les deux donne de meilleurs résultats.
  • -PU <ports>: L'objectif est l'inverse, ils sont envoyés vers des ports censés être fermés. Certains firewalls ne vérifient que les connexions TCP. Si le port est fermé il répond avec port unreachable, si on reçoit un autre ICMP ou pas de réponse il est laissé comme destination unreachable.
  • -PE, -PP, -PM : PINGS ICMP : echo reply, timestamp et addresmask. Ils sont lancés pour savoir si la cible est active.
  • -PY<ports>: Envoie des probes SCTP INIT vers 80 par défaut, INIT-ACK(open) ou ABORT(closed) ou rien ou ICMP unreachable(inactive) peuvent être renvoyés.
  • -PO <protocols>: Un protocole est indiqué dans les en-têtes, par défaut 1(ICMP), 2(IGMP) et 4(Encap IP). Pour ICMP, IGMP, TCP (6) et UDP (17) les en-têtes de protocole sont envoyés, pour les autres seul l'en-tête IP est envoyé. Le but est que, du fait d'une malformation des en-têtes, Protocol unreachable ou des réponses du même protocole soient renvoyées pour savoir si c'est up.
  • -n: Pas de DNS
  • -R: DNS toujours

Techniques de scan de ports

  • -sS: Ne complète pas la connexion donc ne laisse pas de trace, très bien si utilisable. (privilèges) C'est celle utilisée par défaut.
  • -sT: Complète la connexion, donc laisse une trace, mais peut être utilisée sans problème. Par défaut sans privilèges.
  • -sU: Plus lent, pour UDP. Principalement : DNS(53), SNMP(161,162), DHCP(67 et 68), (-sU53,161,162,67,68): open(reply), closed(port unreachable), filtered (autre ICMP), open/filtered (rien). En cas d'open/filtered, -sV envoie de nombreuses requêtes pour détecter l'une des versions que nmap supporte et peut détecter l'état réel. Augmente fortement le temps.
  • -sY: SCTP, le protocole n'arrive pas à établir la connexion, donc il n'y a pas de logs, fonctionne comme -PY
  • -sN,-sX,-sF: Null, Fin, Xmas, peuvent contourner certains firewalls et extraire des informations. Basés sur le fait que des machines conformes devraient répondre RST à toutes les requêtes qui n'ont pas SYN, RST ou ACK: open/filtered(rien), closed(RST), filtered (ICMP unreachable). Peu fiables sur WIndows, CIsco, BSDI et OS/400. Sur unix oui.
  • -sM: Maimon scan : envoie FIN et ACK, utilisé pour BSD, actuellement retournera tout comme closed.
  • -sA, sW: ACK et Window, utilisé pour détecter des firewalls, pour savoir si les ports sont filtrés ou non. Le -sW distingue open/closed car les ouverts répondent avec une valeur de window différente : open (RST avec window != 0), closed (RST window = 0), filtered (ICMP unreachable ou rien). Pas toutes les machines fonctionnent ainsi, donc si tout est closed, ce n'est pas fiable, si quelques-uns sont open, ça marche bien, et si beaucoup open et peu closed, ça marche inversement.
  • -sI: Idle scan. Pour les cas où il y a un firewall actif mais on sait qu'il ne filtre pas vers une certaine IP (ou quand on veut simplement anonymat) on peut utiliser le scan zombie (fonctionne pour tous les ports), pour chercher des zombies possibles on peut utiliser le script ipidseq ou l'exploit auxiliary/scanner/ip/ipidseq. Ce scanner est basé sur le numéro IPID des paquets IP.
  • --badsum: Envoie une somme incorrecte, les ordinateurs rejetteraient les paquets, mais les firewalls pourraient répondre quelque chose, utilisé pour détecter des firewalls.
  • -sZ: Scanner SCTP "Weird", quand on envoie des probes avec cookie echo fragments ils devraient être abandonnés si open ou répondre ABORT si closed. Peut passer à travers des firewalls que init ne passe pas, le problème est qu'il ne distingue pas filtered et open.
  • -sO: Scan de protocoles IP. Envoie des en-têtes incorrects et vides dans lesquels parfois on ne peut même pas distinguer le protocole. Si ICMP unreachable protocol arrive c'est closed, si unreachable port arrive c'est open, si une autre erreur arrive, filtered, si rien, open|filtered.
  • -b <server>: FTPhost --> Utilisé pour scanner un hôte depuis un autre, cela se fait en se connectant à l'ftp d'une autre machine et en lui demandant d'envoyer des fichiers vers les ports que vous voulez scanner depuis l'autre machine ; selon les réponses on saura s'ils sont open ou non. [<user>:<password>@]<server>[:<port>] Presque tous les serveurs ftp n'autorisent plus cela et donc peu d'utilité pratique.

Analyse ciblée

-p: Utilisé pour spécifier les ports à scanner. Pour sélectionner les 65 335 ports : -p- ou -p all. Nmap possède une classification interne basée sur la popularité. Par défaut, il utilise les 1000 ports les plus utilisés. Avec -F (fast scan) il analyse les 100 premiers. Avec --top-ports il analyse ce nombre de ports les plus utilisés (de 1 à 65 335). Il vérifie les ports dans un ordre aléatoire ; pour empêcher cela, utilisez -r. On peut aussi sélectionner des ports spécifiques : 20-30,80,443,1024- (ce dernier signifie partir de 1024). On peut aussi grouper les ports par protocoles : U:53,T:21-25,80,139,S:9. On peut aussi choisir une plage à l'intérieur des ports populaires de Nmap : -p [-1024] analyse jusqu'au port 1024 parmi ceux inclus dans nmap-services. --port-ratio Analyse les ports les plus courants à l'intérieur d'un ratio entre 0 et 1

-sV Scan de version, l'intensité peut être réglée de 0 à 9, par défaut 7.

--version-intensity On régule l'intensité, plus c'est bas, seulement les probes les plus probables sont lancés, pas toutes. Avec cela on peut considérablement raccourcir le temps des scans UDP

-O Détection d'OS

--osscan-limit Pour une bonne prédiction d'hôte, au moins un port ouvert et un port fermé sont nécessaires. Si cette condition n'est pas remplie et que nous avons défini cette option, il n'essaiera pas la prédiction d'OS (gain de temps)

--osscan-guess Quand la détection d'OS n'est pas parfaite, ceci force des tentatives supplémentaires

Scripts

--script |||[,...]

Pour utiliser les scripts par défaut, utilisez -sC ou --script=default

Available types are: auth, broadcast, default, discovery, dos, exploit, external, fuzzer, intrusive, malware, safe, version, and vuln

  • Auth: exécute tous les scripts d'authentication disponibles
  • Default: exécute les scripts basiques par défaut
  • Discovery: récupère des informations depuis la cible ou la victime
  • External: script pour utiliser des ressources externes
  • Intrusive: utilise des scripts considérés intrusifs envers la cible ou la victime
  • Malware: vérifie les connexions ouvertes par du code malveillant ou des backdoors
  • Safe: exécute des scripts non intrusifs
  • Vuln: découvre les vulnérabilités les plus connues
  • All: exécute absolument tous les scripts d'extension NSE disponibles

Pour rechercher des scripts :

nmap --script-help="http-*" -> Ceux commençant par http-

nmap --script-help="not intrusive" -> Tous sauf ceux intrusifs

nmap --script-help="default or safe" -> Ceux dans l'un ou l'autre

nmap --script-help="default and safe" --> Ceux dans les deux

nmap --script-help="(default or safe or intrusive) and not http-*"

--script-args =,={=},={,}

--script-args-file

--script-help ||||all[,...]

--script-trace ---> Fournit des infos sur le déroulement du script

--script-updatedb

Pour utiliser un script, tapez simplement : nmap --script Script_Name target --> Lors de l'utilisation du script, à la fois le script et le scanner s'exécuteront, donc des options de scanner peuvent aussi être ajoutées. Nous pouvons ajouter "safe=1" pour n'exécuter que les scripts safe.

Contrôle du temps

Nmap peut modifier le temps en secondes, minutes, ms : --host-timeout arguments 900000ms, 900, 900s, et 15m font la même chose.

Nmap divise le nombre total d'hôtes à scanner en groupes et analyse ces groupes par blocs, donc il ne passe pas au bloc suivant tant que tous n'ont pas été analysés (et l'utilisateur ne reçoit aucune mise à jour jusqu'à la fin du bloc). De ce fait, il est plus optimal pour Nmap d'utiliser de grands groupes. Par défaut dans une classe C, il utilise 256.

Ceci peut être changé avec --min-hostgroup ; --max-hostgroup (Ajuste la taille des groupes de scan parallèles)

Vous pouvez contrôler le nombre de scanners parallèles mais il vaut mieux ne pas le faire (Nmap inclut déjà un contrôle automatique basé sur l'état du réseau) : --min-parallelism ; --max-parallelism

On peut modifier le timeout RTT, mais généralement ce n'est pas nécessaire : --min-rtt-timeout , --max-rtt-timeout , --initial-rtt-timeout

On peut modifier le nombre de tentatives : --max-retries

On peut modifier le temps de scan d'un hôte : --host-timeout

On peut modifier le délai entre chaque test pour ralentir : --scan-delay ; --max-scan-delay

On peut modifier le nombre de paquets par seconde : --min-rate ; --max-rate

Beaucoup de ports mettent longtemps à répondre quand ils sont filtered ou closed. Si nous ne cherchons que les open, on peut accélérer avec : --defeat-rst-ratelimit

Pour définir l'agressivité voulue : -T paranoid|sneaky|polite|normal|aggressive|insane

-T (0-1)

-T0 --> Scanne seulement 1 port à la fois et attend 5min avant le suivant

-T1 et T2 --> Très similaires mais n'attendent respectivement que 15 et 0.4sec entre chaque test

-T3 --> Opération par défaut, inclut le scanning parallèle

-T4 --> --max-rtt-timeout 1250ms --min-rtt-timeout 100ms --initial-rtt-timeout 500ms --max-retries 6 --max-scan-delay 10ms

-T5 --> --max-rtt-timeout 300ms --min-rtt-timeout 50ms --initial-rtt-timeout 250ms --max-retries 2 --host-timeout 15m --max-scan-delay 5ms

Firewall/IDS

Ils n'autorisent pas l'accès aux ports et analysent les paquets.

-f Pour fragmenter les paquets, par défaut les fragmente en 8bytes après l'en-tête, pour spécifier cette taille on utilise ..mtu (avec ceci, ne pas utiliser -f), l'offset doit être multiple de 8. Les version scanners et scripts ne supportent pas la fragmentation

-D decoy1,decoy2,ME Nmap envoie des scans mais avec d'autres IPs comme origine, ainsi ils vous cachent. Si vous mettez ME dans la liste, Nmap vous placera là, mieux vaut mettre 5 ou 6 avant vous pour complètement vous masquer. Des IPs aléatoires peuvent être générées avec RND: Pour générer d'IPs aléatoires. Elles ne fonctionnent pas avec les detecteurs de version TCP sans connexion. Si vous êtes à l'intérieur d'un réseau, intéressez-vous à utiliser des IPs actives, sinon il sera très facile de déduire que vous êtes le seul actif.

Pour utiliser des IPs aléatoires : nmap -D RND:10 Target_IP

-S IP Pour quand Nmap ne récupère pas votre IP vous devez la fournir avec ceci. Sert aussi à faire croire qu'un autre hôte vous scanne.

-e Pour choisir l'interface

Beaucoup d'administrateurs laissent des ports d'entrée ouverts pour que tout fonctionne correctement et c'est plus facile pour eux que de trouver une autre solution. Ceux-ci peuvent être des ports DNS ou FTP... pour trouver cette vulnérabilité Nmap incorpore : --source-port ;-g Ils sont équivalents

--data Pour envoyer du texte hexadécimal : --data 0xdeadbeef et --data \xCA\xFE\x09

--data-string Pour envoyer du texte normal : --data-string "Scan conducted by Security Ops, extension 7192"

--data-length Nmap n'envoie que les en-têtes, avec ceci on ajoute un certain nombre d'octets supplémentaires (qui seront générés aléatoirement)

Pour configurer complètement le paquet IP utilisez --ip-options

Si vous souhaitez voir les options dans les paquets envoyés et reçus, spécifiez --packet-trace. Pour plus d'informations et d'exemples sur l'utilisation des IP options avec Nmap, voir http://seclists.org/nmap-dev/2006/q3/52.

--ttl

--randomize-hosts Pour rendre l'attaque moins évidente

--spoof-mac <MAC address, prefix, or vendor name> Pour changer le MAC exemples : Apple, 0, 01:02:03:04:05:06, deadbeefcafe, 0020F2, et Cisco

--proxies Pour utiliser des proxies, parfois un proxy ne maintient pas autant de connexions ouvertes que Nmap le souhaite donc le parallélisme devra être modifié : --max-parallelism

-sP Pour découvrir des hôtes sur notre réseau via ARP

Beaucoup d'administrateurs créent une règle de firewall qui permet à tous les paquets provenant d'un port particulier de passer (comme 20,53 et 67), on peut dire à Nmap d'envoyer nos paquets depuis ces ports : nmap --source-port 53 IP

Sorties

-oN file Sortie normale

-oX file Sortie XML

-oS file Sortie script kiddies

-oG file Sortie Greppable

-oA file Tout sauf -oS

-v level verbosité

-d level débogage

--reason Raison de l'état d'hôte et d'état

--stats-every time Toutes les time il/elle nous indique l'état d'avancement

--packet-trace Pour voir quels paquets sortent, des filtres peuvent être spécifiés comme : --version-trace ou --script-trace

--open affiche open, open|filtered et unfiltered

--resume file Reprend un résumé

Divers

-6 Autorise IPv6

-A équivaut à -O -sV -sC --traceroute

Temps d'exécution

Pendant l'exécution de Nmap nous pouvons changer des options :

v / V Augmenter / diminuer le niveau de verbosité

d / D Augmenter / diminuer le niveau de débogage

p / P Activer / désactiver le packet tracing

? Affiche un écran d'aide d'interaction en runtime

Vulscan

Script Nmap qui regarde les versions des services obtenus dans une base de données offline (téléchargée depuis d'autres sources importantes) et retourne des vulnérabilités possibles

Les DBs utilisées sont :

  1. Scipvuldb.csv | http://www.scip.ch/en/?vuldb
  2. Cve.csv | http://cve.mitre.org
  3. Osvdb.csv | http://www.osvdb.org
  4. Securityfocus.csv | http://www.securityfocus.com/bid/
  5. Securitytracker.csv | http://www.securitytracker.com
  6. Xforce.csv | http://xforce.iss.net
  7. Exploitdb.csv | http://www.exploit-db.com
  8. Openvas.csv | http://www.openvas.org

Pour télécharger et installer dans le dossier Nmap :

wget http://www.computec.ch/projekte/vulscan/download/nmap_nse_vulscan-2.0.tar.gz && tar -czvf nmap_nse_vulscan-2.0.tar.gz vulscan/ && sudo cp -r vulscan/ /usr/share/nmap/scripts/

Vous devrez aussi télécharger les packages DB et les ajouter dans /usr/share/nmap/scripts/vulscan/

Utilisation :

Pour tout utiliser : sudo nmap -sV --script=vulscan HOST_TO_SCAN

Pour utiliser une DB spécifique : sudo nmap -sV --script=vulscan --script-args vulscandb=cve.csv HOST_TO_SCAN

Accélérer le service scan Nmap x16

D'après ce post vous pouvez accélérer l'analyse des services de nmap en modifiant toutes les valeurs totalwaitms dans /usr/share/nmap/nmap-service-probes à 300 et tcpwrappedms à 200.

De plus, les probes qui n'ont pas une servicewaitms spécifiquement définie utilisent une valeur par défaut de 5000. Par conséquent, nous pouvons soit ajouter des valeurs à chacune des probes, soit compiler nmap nous-mêmes et changer la valeur par défaut dans service_scan.h.

Si vous ne voulez pas changer du tout les valeurs de totalwaitms et tcpwrappedms dans le fichier /usr/share/nmap/nmap-service-probes, vous pouvez modifier le parsing code de sorte que ces valeurs dans le fichier nmap-service-probes soient complètement ignorées.

Construire un Nmap statique pour environnements restreints

Dans des environnements Linux durcis ou minimaux (containers, appliances), les binaires Nmap dynamiquement liés échouent souvent en raison d'absence de loaders runtime ou de bibliothèques partagées (par ex. /lib64/ld-linux-x86-64.so.2, libc.so). Construire votre propre Nmap lié statiquement et empaqueter les données NSE permet l'exécution sans installer de packages système.

Approche high-level

  • Utiliser un builder Ubuntu amd64 propre via Docker.
  • Compiler OpenSSL et PCRE2 en tant que libs statiques.
  • Compiler Nmap en liant statiquement et en utilisant les libpcap/libdnet incluses pour éviter des dépendances dynamiques.
  • Empaqueter les scripts NSE et les répertoires de données avec le binaire.

Découvrir l'architecture cible (exemple)

bash
uname -a
# If building from macOS/ARM/etc., pin the builder arch:
docker run --rm --platform=linux/amd64 -v "$(pwd)":/out -w /tmp ubuntu:22.04 bash -lc 'echo ok'

Étape 1 — Préparer la chaîne d'outils

bash
set -euo pipefail
export DEBIAN_FRONTEND=noninteractive
apt-get update && apt-get install -y --no-install-recommends \
build-essential ca-certificates curl bzip2 xz-utils pkg-config perl python3 file git \
automake autoconf libtool m4 zlib1g-dev

Étape 2 — Compiler OpenSSL statique (1.1.1w)

bash
OSSL="1.1.1w"
curl -fsSLO "https://www.openssl.org/source/openssl-$OSSL.tar.gz"
tar xzf "openssl-$OSSL.tar.gz" && cd "openssl-$OSSL"
./Configure no-shared no-zlib linux-x86_64 -static --prefix=/opt/ossl
make -j"$(nproc)" && make install_sw
cd /tmp

Étape 3 — Compiler PCRE2 statique (10.43)

bash
PCRE2=10.43
curl -fsSLO "https://github.com/PCRE2Project/pcre2/releases/download/pcre2-$PCRE2/pcre2-$PCRE2.tar.bz2"
tar xjf "pcre2-$PCRE2.tar.bz2" && cd "pcre2-$PCRE2"
./configure --disable-shared --enable-static --prefix=/opt/pcre2
make -j"$(nproc)" && make install
cd /tmp

Étape 4 — Compiler Nmap statique (7.98)

bash
NMAP=7.98
curl -fsSLO "https://nmap.org/dist/nmap-$NMAP.tar.bz2"
tar xjf "nmap-$NMAP.tar.bz2" && cd "nmap-$NMAP"
export CPPFLAGS="-I/opt/ossl/include -I/opt/pcre2/include"
export LDFLAGS="-L/opt/ossl/lib -L/opt/pcre2/lib -static -static-libstdc++ -static-libgcc"
export LIBS="-lpcre2-8 -ldl -lpthread -lz"
./configure \
--with-openssl=/opt/ossl \
--with-libpcre=/opt/pcre2 \
--with-libpcap=included \
--with-libdnet=included \
--without-zenmap --without-ndiff --without-nmap-update
# Avoid building shared libpcap by accident
sed -i -e "s/^shared: /shared: #/" libpcap/Makefile || true
make -j1 V=1 nmap
strip nmap

Points clés

  • -static, -static-libstdc++, -static-libgcc forcent la liaison statique.
  • L'utilisation de --with-libpcap=included/--with-libdnet=included évite les libs partagées du système.
  • Une modification sed neutralise une cible libpcap partagée si elle est présente.

Étape 5 — Regrouper le binaire et les données NSE

bash
mkdir -p /out/nmap-bundle/nmap-data
cp nmap /out/nmap-bundle/nmap-linux-amd64-static
cp -r scripts nselib /out/nmap-bundle/nmap-data/
cp nse_main.lua nmap-services nmap-protocols nmap-service-probes \
nmap-mac-prefixes nmap-os-db nmap-payloads nmap-rpc \
/out/nmap-bundle/nmap-data/ 2>/dev/null || true

tar -C /out -czf /out/nmap-linux-amd64-static-bundle.tar.gz nmap-bundle

Notes de vérification et d'exploitation

  • Utilisez file sur l'artefact pour confirmer qu'il est lié statiquement.
  • Conservez les données NSE avec le binaire pour garantir la parité des scripts sur les hôtes sans Nmap installé.
  • Même avec un binaire statique, l'exécution peut être bloquée par AppArmor/seccomp/SELinux ; DNS/egress doit toujours fonctionner.
  • Les builds déterministes réduisent le risque de la chaîne d'approvisionnement par rapport au téléchargement de binaires opaques “static”.

One-liner (Dockerized)

Construire, regrouper et afficher les informations sur l'artefact
bash
docker run --rm --platform=linux/amd64 -v "$(pwd)":/out -w /tmp ubuntu:22.04 bash -lc '
set -euo pipefail
export DEBIAN_FRONTEND=noninteractive
apt-get update && apt-get install -y --no-install-recommends \
build-essential ca-certificates curl bzip2 xz-utils pkg-config perl python3 file git \
automake autoconf libtool m4 zlib1g-dev

OSSL="1.1.1w"; curl -fsSLO "https://www.openssl.org/source/openssl-$OSSL.tar.gz" \
&& tar xzf "openssl-$OSSL.tar.gz" && cd "openssl-$OSSL" \
&& ./Configure no-shared no-zlib linux-x86_64 -static --prefix=/opt/ossl \
&& make -j"$(nproc)" && make install_sw && cd /tmp

PCRE2=10.43; curl -fsSLO "https://github.com/PCRE2Project/pcre2/releases/download/pcre2-$PCRE2/pcre2-$PCRE2.tar.bz2" \
&& tar xjf "pcre2-$PCRE2.tar.bz2" && cd "pcre2-$PCRE2" \
&& ./configure --disable-shared --enable-static --prefix=/opt/pcre2 \
&& make -j"$(nproc)" && make install && cd /tmp

NMAP=7.98; curl -fsSLO "https://nmap.org/dist/nmap-$NMAP.tar.bz2" \
&& tar xjf "nmap-$NMAP.tar.bz2" && cd "nmap-$NMAP" \
&& export CPPFLAGS="-I/opt/ossl/include -I/opt/pcre2/include" \
&& export LDFLAGS="-L/opt/ossl/lib -L/opt/pcre2/lib -static -static-libstdc++ -static-libgcc" \
&& export LIBS="-lpcre2-8 -ldl -lpthread -lz" \
&& ./configure --with-openssl=/opt/ossl --with-libpcre=/opt/pcre2 --with-libpcap=included --with-libdnet=included --without-zenmap --without-ndiff --without-nmap-update \
&& sed -i -e "s/^shared: /shared: #/" libpcap/Makefile || true \
&& make -j1 V=1 nmap && strip nmap

mkdir -p /out/nmap-bundle/nmap-data \
&& cp nmap /out/nmap-bundle/nmap-linux-amd64-static \
&& cp -r scripts nselib /out/nmap-bundle/nmap-data/ \
&& cp nse_main.lua nmap-services nmap-protocols nmap-service-probes nmap-mac-prefixes nmap-os-db nmap-payloads nmap-rpc /out/nmap-bundle/nmap-data/ 2>/dev/null || true \
&& tar -C /out -czf /out/nmap-linux-amd64-static-bundle.tar.gz nmap-bundle \
&& echo "===== OUTPUT ====="; ls -lah /out; echo "===== FILE TYPE ====="; file /out/nmap-bundle/nmap-linux-amd64-static || true
'

Références

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks