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
- Vérifiez les plans d'abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépôts github.
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
-sV Scan de version, l'intensité peut être réglée de 0 à 9, par défaut 7.
--version-intensity
-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
--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
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
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
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 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
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
--data
--data-string
--data-length
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
-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 :
- Scipvuldb.csv | http://www.scip.ch/en/?vuldb
- Cve.csv | http://cve.mitre.org
- Osvdb.csv | http://www.osvdb.org
- Securityfocus.csv | http://www.securityfocus.com/bid/
- Securitytracker.csv | http://www.securitytracker.com
- Xforce.csv | http://xforce.iss.net
- Exploitdb.csv | http://www.exploit-db.com
- 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)
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
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)
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)
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)
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
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
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
- Compilation d'un binaire Nmap statique pour des tâches dans des environnements restreints
- Static Nmap Binary Generator (outil d'aide)
- Sources OpenSSL
- Releases de PCRE2
- Tarballs source de Nmap
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
- Vérifiez les plans d'abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépôts github.