Nmap Opsomming (ESP)
Tip
Leer & oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer & oefen Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Blaai deur die volledige HackTricks Training-katalogus vir die assesseringsroetes (ARTA/GRTA/AzRTA) en Linux Hacking Expert (LHE).
Ondersteun HackTricks
- Kyk na die intekenplanne!
- Sluit aan by die 💬 Discord-groep, die telegram-groep, volg @hacktricks_live op X/Twitter, of kyk na die LinkedIn-bladsy en YouTube-kanaal.
- Deel hacking tricks deur PRs in te stuur na die HackTricks en HackTricks Cloud github repos.
nmap -sV -sC -O -n -oA nmapscan 192.168.0.1/24
Parameters
IPs to scan
<ip>,<net/mask>: Gee die ips direk aan-iL <ips_file>: list_IPs-iR <number>: Aantal ewekansige IPs, jy kan moontlike Ips uitsluit met--exclude <Ips>of--excludefile <file>.
Equipment discovery
Standaard begin Nmap met ’n discovery-fase wat bestaan uit: -PA80 -PS443 -PE -PP
-sL: Nie-invasief, dit lys die teikens en maak DNS versoeke om name op te los. Dit is nuttig om te weet of byvoorbeeld www.prueba.es/24 al die Ips ons teikens is.-Pn: No ping. Dit is nuttig as jy weet dat almal aktief is (indien nie, kan jy baie tyd verloor, maar hierdie opsie produseer ook vals negatiewe wat sê dat hulle nie aktief is nie), dit verhoed die discovery-fase.-sn: No port scan. Na voltooiing van die verkenningsfase, scan dit nie poorte nie. Dit is relatief stealthy, en laat ’n klein netwerk-skandering toe. Met voorregte stuur dit ’n ACK (-PA) na 80, ’n SYN(-PS) na 443 en ’n echo request en ’n Timestamp request; sonder voorregte voltooi dit altyd verbindings. As die teiken die netwerk is, gebruik dit slegs ARP(-PR). As dit saam met ’n ander opsie gebruik word, word slegs die pakkette van die ander opsie gestaak.-PR: Ping ARP. Dit word standaard gebruik wanneer rekenaars in ons netwerk geanaliseer word, dit is vinniger as om pings te gebruik. As jy nie ARP-pakkette wil gebruik nie gebruik--send-ip.-PS <ports>: Dit stuur SYN-pakkette; as dit met SYN/ACK beantwoord word is dit open (dit antwoord dan met RST sodat die verbinding nie afgehandel word nie), as dit met RST beantwoord word is dit closed en as dit nie antwoord nie is dit unreachable. Indien daar geen voorregte is nie, word ’n volle verbinding outomaties gebruik. As geen poorte gespesifiseer word, word dit na 80 gerig.-PA <ports>: Soos die vorige maar met ACK; die kombinasie van albei gee beter resultate.-PU <ports>: Die teenoorgestelde doel — dit word na poorte gestuur wat verwag word toe te wees. Sommige firewalls kyk slegs na TCP-verbindinge. As dit closed is, word dit beantwoord met port unreachable; as dit met ’n ander icmp beantwoord word of nie beantwoord word nie, word dit gelaat as destination unreachable.-PE, -PP, -PM: ICMP PINGS: echo reply, timestamp en addresmask. Hulle word gebruik om uit te vind of die teiken aktief is.-PY<ports>: Stuur SCTP INIT probes na 80 by verstek; INIT-ACK (open) of ABORT (closed) of niks of ICMP unreachable (inactive) kan terugkom.-PO <protocols>: ’n Protokol word in die headers aangedui, standaard 1(ICMP), 2(IGMP) en 4(Encap IP). Vir ICMP, IGMP, TCP (6) en UDP (17) protokolle word die protokol headers gestuur; vir die res slegs die IP-header. Die doel is om, weens verkeerde formaat in die headers, Protocol unreachable of responsies van dieselfde protokol te kry om te weet of dit op is.-n: No DNS-R: DNS always--system-dns: Forceer die OS resolver in plaas van Nmap se parallel stub resolver. Nuttig wanneer/etc/hosts, split-DNS, of resolver-plugins data teruggee wat Nmap se direkte navrae nie kry nie. Dit is stadiger, en sedert Nmap 7.96 is forward lookups reeds parallel, dus is dit meestal net nodig vir resolver-verenigbaarheid.--dns-servers <server[,server],...>: Forceer spesifieke DNS-servers vir reverse lookups. Nuttig in interne assessments om outoritêre of interne resolvers direk te navraag, of om-sL/reverse-DNS verkeer weg te bounce van die tester se standaard resolvers.
Port scanning techniques
-sS: Voltooi nie die verbinding nie so dit laat geen spoor nie; baie goed indien dit gebruik kan word. (privileges) Dit is die standaard.-sT: Voltooi die verbinding, dus laat dit ’n spoor, maar dit kan altyd gebruik word. Standaard sonder voorregte.-sU: Stadiger, vir UDP. Gewoonlik: DNS(53), SNMP(161,162), DHCP(67 en 68), (-sU53,161,162,67,68): open(reply), closed(port unreachable), filtered (ander ICMP), open/filtered (niks). In geval van open/filtered stuur -sV baie versoeke om enige van die weergawes wat nmap ondersteun te identifiseer en kan die ware toestand opspoor. Dit verhoog die tyd aansienlik.-sY: SCTP-protokol faal om die verbinding te vestig, dus is daar geen logs nie; werk soos -PY-sN,-sX,-sF: Null, Fin, Xmas — hulle kan deur sekere firewalls penetreer en inligting uittrek. Hulle is gebaseer op die feit dat standaard-konforme masjiene met RST behoort te reageer op versoeke wat nie SYN, RST of ACK vlae gestel het nie: open/filtered (niks), closed (RST), filtered (ICMP unreachable). Onbetroubaar op Windows, Cisco, BSDI en OS/400. Op unix ja.-sM: Maimon scan: Stuur FIN en ACK vlae, gebruiklik vir BSD, tans sal dit alles as closed teruggee.-sA, sW: ACK en Window, word gebruik om firewalls te ontdek en te weet of poorte gefilter is of nie. Die -sW onderskei tussen open/closed aangesien die open een met ’n ander window waarde reageer: open (RST met window anders as 0), closed (RST window = 0), filtered (ICMP unreachable of niks). Nie alle rekenaars werk so nie, dus as alles closed is, werk dit nie, as ’n paar open is, werk dit goed, en as baie open en min closed is, werk dit andersom.-sI: Idle scan. Vir gevalle met ’n aktiewe firewall maar ons weet dat dit nie na ’n sekere Ip filter nie (of wanneer ons anoniem wil wees) kan ons die zombie scanner gebruik (werk vir alle poorte). Om moontlike zombies te soek kan ons die skrip ipidseq of die exploit auxiliary/scanner/ip/ipidseq gebruik. Hierdie scanner is gebaseer op die IPID nommer van die IP-pakkette.--badsum: Stuur ’n verkeerde checksum; rekenaars sal die pakkette weggooi, maar firewalls kan iets antwoord — dit word gebruik om firewalls te identifiseer.-sZ: “Weird” SCTP scanner — wanneer probes met cookie echo fragments gestuur word, moet hulle gedrop word as open of beantwoord word met ABORT as closed. Dit kan deur firewalls gaan wat init nie deurlaat nie; die nadeel is dat dit nie tussen filtered en open onderskei nie.-sO: Protocol IP scan. Stuur slegte en leë headers waarin soms nie eens die protokol onderskei kan word nie. As ICMP unreachable protocol kom, is dit closed; as unreachable port kom, is dit open; as ’n ander fout kom, filtered; as niks kom, open|filtered.-b <server>: FTPhost –> Word gebruik om ’n host vanaf ’n ander een te scan: deur die ftp van ’n ander masjien te gebruik en te vra dat dit lêers na die poorte stuur wat jy wil scan vanaf daardie ander masjien. Volgens die antwoorde sal ons weet of hulle open is of nie. [<user>:<password>@]<server>[:<port>] Bykans alle ftp servers laat dit nie meer toe nie en daarom is dit van min praktiese nut.
Focus Analysis
-p: Word gebruik om poorte te spesifiseer. Om alle 65,335 poorte te kies: -p- of -p all. Nmap het ’n interne klassifikasie gebaseer op gewildheid. Standaard gebruik dit die top 1000 poorte. Met -F (fast scan) analiseer dit die top 100. Met –top-ports
-sV Version scanning, die intensiteit kan van 0 tot 9 gereguleer word, standaard is 7.
–version-intensity
–version-light Alias van --version-intensity 2. Baie nuttig vir ’n eerste pas oor groot reekse of stadige UDP-dienste.
–version-all Alias van --version-intensity 9. Forceer alle probes en is nuttig wanneer ’n diens slegs op seldsame probes antwoord.
–allports Forceer version detection op poorte uitgesluit deur nmap-service-probes (noemenswaardig TCP/9100). Wees versigtig: op sommige printers of raw socket listeners kan dit veroorsaak dat hulle die probe-data druk.
-O OS detection
–osscan-limit Vir behoorlike host scanning, is minstens een open poort en een closed poort nodig. As hierdie voorwaarde nie voldaan word nie en ons het dit gestel, sal dit nie OS-voorspelling probeer nie (bespaar tyd).
–osscan-guess Wanneer OS detection nie perfek is nie, laat dit harder probeer.
Scripts
–script
Om default scripts te gebruik, gebruik -sC of –script=default
Beskikbare tipes is: auth, broadcast, default, discovery, dos, exploit, external, fuzzer, intrusive, malware, safe, version, en vuln
- Auth: voer alle beskikbare authentication skripte uit
- Default: voer basiese default tool skripte uit
- Discovery: haal inligting van die teiken of slagoffer
- External: skrip vir gebruik van eksterne bronne
- Intrusive: gebruik skripte wat as intrusive vir die slagoffer of teiken beskou word
- Malware: kontroleer vir verbindings geopen deur kwaadwillige kode of backdoors
- Safe: voer nie-intrusiewe skripte uit
- Vuln: ontdek die bekendste kwetsbaarhede
- All: voer absoluut alle beskikbare NSE extension skripte uit
Om na skripte te soek:
nmap –script-help=“http-*” -> Those starting with http-
nmap –script-help=“not intrusive” -> All except those
nmap –script-help=“default or safe” -> Those in either or both
nmap –script-help=“default and safe” –> Those in both
nmap –script-help=“(default or safe or intrusive) and not http-*”
–script-args
–script-args-file
–script-help
–script-trace —> Gee inligting oor hoe die skrip vorder
–script-updatedb
Om ’n skrip te gebruik, tik net: nmap –script Script_Name target –> Wanneer die skrip gebruik word, sal beide die skrip en scanner uitvoer, dus kan scanner opsies ook bygevoeg word. Ons kan “safe=1” byvoeg om slegs safe skripte uit te voer.
Time Control
Nmap kan tyd in sekondes, minute, ms wysig: –host-timeout argumente 900000ms, 900, 900s, en 15m doen almal dieselfde.
Nmap deel die totale aantal hosts om te scan in groepe en ontleed hierdie groepe in blokkies, dus beweeg dit nie na die volgende blokkie totdat alles geanaliseer is nie (en die gebruiker ontvang geen opdaterings totdat die blokkie geanaliseer is nie). Op hierdie manier is dit meer optimaal vir Nmap om groot groepe te gebruik. Standaard in class C gebruik dit 256.
Dit kan verander word met –min-hostgroup
Jy kan die aantal parallel scanners beheer, maar dit is beter om dit nie te doen nie (Nmap het reeds outomatiese beheer gebaseer op netwerkontsag): –min-parallelism
Ons kan die RTT timeout wysig, maar dit is gewoonlik nie nodig nie: –min-rtt-timeout , –max-rtt-timeout , –initial-rtt-timeout
Ons kan die aantal pogings wysig: –max-retries
Ons kan die skanderingstyd van ’n host aanpas: –host-timeout
Ons kan die tyd tussen elke toets wysig om dit stadiger te maak: –scan-delay ; –max-scan-delay
Ons kan die aantal pakkette per sekonde wysig: –min-rate
Baie poorte neem lank om te antwoord wanneer gefilter of closed. As ons slegs in open poorte belangstel, kan ons vinniger gaan met: –defeat-rst-ratelimit
Om te definieer hoe aggressief ons wil hê Nmap moet wees: -T paranoid|sneaky|polite|normal|aggressive|insane
-T (0-1)
-T0 –> Scan slegs 1 poort op ’n slag en wag 5min tot die volgende
-T1 en T2 –> Baie soortgelyk maar wag net 15 en 0.4s onderskeidelik tussen elke toets
-T3 –> Standaard werking, sluit parallel scanning in
-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
Hulle verhoed toegang tot poorte en ontleed pakkette.
-f Om pakkette te fragmenteer; standaard fragmenteer dit in 8bytes na die header; om daardie grootte te spesifiseer gebruik ons ..mtu (moenie -f saam met dit gebruik nie), die offset moet ’n veelvoud van 8 wees. Version scanners en skripte ondersteun nie fragmentasie nie
-D decoy1,decoy2,ME Nmap stuur scans maar met ander IP adresse as oorsprong, sodoende verberg dit jou. As jy ME in die lys sit, sal Nmap jou daar plaas; beter om 5 of 6 voor jou te sit om jou heeltemal te maskeer. Ewekansige IPs kan gegenereer word met RND:
Om ewekansige IPs te gebruik: nmap -D RND:10 Target_IP
-S IP Vir wanneer Nmap nie jou IP raaksien nie; jy moet dit hier gee. Dit dien ook om hulle te laat dink ’n ander teiken scan hulle.
-e
Baie administrateurs laat insetpoorte oop vir alles sodat dinge reg werk en dit is makliker as om ’n ander oplossing te vind. Dit kan DNS-poorte of FTP-poorte wees… om hierdie kwesbaarheid te vind bevat Nmap: –source-port
–data
–data-string
–data-length
Om die IP-pakket volledig te konfigureer gebruik –ip-options
As jy die opsies in pakkette wat gestuur en ontvang word wil sien, spesifiseer –packet-trace. Vir meer inligting en voorbeelde van die gebruik van IP-opsies met Nmap, sien http://seclists.org/nmap-dev/2006/q3/52.
–ttl
–randomize-hosts Om die aanval minder opvallend te maak
–spoof-mac <MAC address, prefix, or vendor name> Om die MAC te verander voorbeelde: Apple, 0, 01:02:03:04:05:06, deadbeefcafe, 0020F2, en Cisco
–proxies
-sP Om hosts in ons netwerk deur ARP te ontdek
Baie administrateurs skep ’n firewall-reël wat alle pakkette vanaf ’n bepaalde poort toelaat (soos 20,53 en 67); ons kan Nmap sê om ons pakkette vanaf daardie poorte te stuur: nmap –source-port 53 IP
Outputs
-oN file Normale uitset
-oX file XML-uitset
-oS file Script kiddies uitset
-oG file Greppable uitset. Dit werk nog steeds, maar is verouderd; XML is die beter formaat vir automatisering omdat nuwe Nmap-funksies daar eers bygevoeg word. Hou by -oN as jy --resume wil hê, en verkies -oX/-oA vir masjienparsing.
-oA file Alles behalwe -oS
–webxml Verander die XML stylesheet verwysing na https://nmap.org/svn/docs/nmap.xsl, wat die XML makliker maak om as HTML op ’n ander masjien oop te maak.
–stylesheet <path|url> Gebruik ’n pasgemaakte XSL stylesheet. --webxml is net ’n kortpad na die gehoste amptelike stylesheet.
-v level verbosity
-d level debugging
–reason Rede van host en state
–stats-every time Elke daardie tyd gee dit ons ’n statusopdatering
–packet-trace Om te sien watter pakkette uitgaan; filters kan gespesifiseer word soos: –version-trace of –script-trace
–open wys open, open|filtered en unfiltered
–resume file Hervat ’n onderbroke skandering vanaf ’n normale (-oN) of grepable (-oG) uitsetlêer. In huidige workflows is dit algemeen om -oN vir hervatbaarheid en -oX vir parsing te hou.
Example for parsing/HTML conversion workflows:
# Send only XML to stdout for tooling
nmap -sV -oX - 10.10.10.0/24
# Portable HTML-friendly XML
nmap -sV --webxml -oX scan.xml 10.10.10.10
Diverses
-6 Laat IPv6 toe
-A is dieselfde as -O -sV -sC –traceroute
Tydens uitvoering
Terwyl Nmap loop kan ons opsies verander:
v / V Verhoog / verlaag die verbositeitsvlak
d / D Verhoog / verlaag die ontvoutingsvlak
p / P Skakel pakketopsporing aan / af
? Wys ’n runtime-interaksie hulpskerm
Vulscan
Nmap-script wat kyk na weergawes van dienste wat in ’n offline databasis verkry is (afgelaai vanaf ander baie belangrike bronne) en moontlike kwesbaarhede teruggee
Die DBs wat dit gebruik is:
- 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
Om af te laai en in die Nmap-gids te installeer:
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/
Jy sal ook die DB-pakkette moet aflaai en by /usr/share/nmap/scripts/vulscan/ voeg.
Gebruik:
Om alles te gebruik: sudo nmap -sV –script=vulscan HOST_TO_SCAN
Om ’n spesifieke DB te gebruik: sudo nmap -sV –script=vulscan –script-args vulscandb=cve.csv HOST_TO_SCAN
As jy internettoegang het, is Nmap se amptelike vulners NSE script gewoonlik die vinnigste, goed-onderhoude alternatief vir weergawe-gebaseerde verryking:
nmap -sV --script vulners --script-args mincvss=7.0 <IP>
This script behoort tot die safe, external, en vuln kategorieë. Aangesien dit afhang van hoe akkuraat -sV was, valideer treffers handmatig wanneer die servicebanner generies is of deur ’n proxy gerouteer word.
Recent Practical Notes (7.94+)
- Sedert Nmap 7.94 gebruik UDP port scan (
-sU) en version detection (-sV) dieselfdenmap-service-probespayload-bron. ’n UDP-reaksie vanaf die skandeerfase kan onmiddellik version matching voed, so-sU -sV --version-lightis nou ’n goeie eerste deurloop teen groot of verliesgevoelige reekse. - Sedert Nmap 7.94 kan
-sVook UDP-dienste ondersoek wat agter DTLS versteek is, wat nuttig is vir moderne management/ICS toerusting wat UDP-protokolle in DTLS omsluit. - Nmap 7.95 het ’n groot groep nuwe service fingerprints bygevoeg, insluitend
grpc,mysqlx,remotemouse, entuya, plus nuwe ICS-gefokusde NSE-dekking sooshartip-infoeniec61850-mms. As jy OT of ingebedde omgewings skandeer, is dit meer betekenisvol om Nmap op te dateer as om te vroeg eie probes by te voeg. - Sedert Nmap 7.96 is forward DNS-lookup ook paralleliseer. Groot hostname-lyste is nou baie vinniger, so
--system-dnsmoet gewoonlik vir kompatibiliteitskwessies gereserveer word eerder as vir prestasie.
Speed Up Nmap Service scan x16
Volgens to this post kan jy die nmap service-analise versnel deur al die totalwaitms waardes in /usr/share/nmap/nmap-service-probes na 300 te verander en tcpwrappedms na 200.
Verder gebruik probes wat nie ’n spesifiek gedefinieerde servicewaitms het nie ’n standaardwaarde van 5000. Daarom kan ons óf waardes by elkeen van die probes voeg, óf ons kan compile nmap self en die standaardwaarde verander in service_scan.h.
As jy die waardes van totalwaitms en tcpwrappedms glad nie in die /usr/share/nmap/nmap-service-probes-lêer wil verander nie, kan jy die parsing code wysig sodat hierdie waardes in die nmap-service-probes-lêer heeltemal geïgnoreer word.
Build a static Nmap for restricted environments
In geharde of minimale Linux-omgewings (containers, appliances) faal dinamies gekoppelde Nmap-binaries dikwels weens ontbrekende runtime loaders of gedeelde biblioteke (bv. /lib64/ld-linux-x86-64.so.2, libc.so). Om jou eie staties gekoppelde Nmap te bou en NSE-data saam te bind, maak uitvoering moontlik sonder om stelselpakette te installeer.
Hoëvlakbenadering
- Gebruik ’n skoon amd64 Ubuntu builder via Docker.
- Bou OpenSSL en PCRE2 as statiese biblioteke.
- Bou Nmap wat staties link en die ingesluit libpcap/libdnet gebruik om dinamiese afhanklikhede te vermy.
- Pak NSE-skripte en datalêergidse saam met die binary.
Discover target architecture (example)
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'
Stap 1 — Berei toolchain voor
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
Stap 2 — Bou statiese OpenSSL (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
Stap 3 — Bou statiese PCRE2 (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
Stap 4 — Bou ’n statiese Nmap (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
Belangrike punte
- -static, -static-libstdc++, -static-libgcc dwing statiese koppeling af.
- Deur –with-libpcap=included/–with-libdnet=included te gebruik vermy system-shared libs.
- sed-wysiging neutraliseer ’n shared libpcap target indien teenwoordig.
Stap 5 — Bundel binêre en NSE-data
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
Verifikasie- en operasionele notas
- Gebruik file op die artefak om te bevestig dat dit staties gelink is.
- Hou NSE-data saam met die binary om skrippariteit op hosts sonder Nmap geïnstalleer te verseker.
- Selfs met ’n statiese binary kan uitvoering geblokkeer word deur AppArmor/seccomp/SELinux; DNS/egress moet steeds werk.
- Deterministiese builds verminder supply-chain risiko in vergelyking met die aflaai van ondoorsichtige “static” binaries.
Eenreël (Dockerized)
Bou, bundel en vertoon artefak-inligting
```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-devOSSL=“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
’
</details>
## Verwysings
- [Compiling static Nmap binary for jobs in restricted environments](https://www.pentestpartners.com/security-blog/compiling-static-nmap-binary-for-jobs-in-restricted-environments/)
- [Static Nmap Binary Generator (helper tool)](https://github.com/0x5ubt13/static_nmap_binary_generator)
- [OpenSSL sources](https://www.openssl.org/source/)
- [PCRE2 releases](https://github.com/PCRE2Project/pcre2/releases)
- [Nmap source tarballs](https://nmap.org/dist/)
- [Nmap Change Log](https://nmap.org/changelog.html)
- [Nmap Output Formats](https://nmap.org/book/man-output.html)
> [!TIP]
> Leer & oefen AWS Hacking:<img src="../../../../../images/arte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://hacktricks-training.com/courses/arte)<img src="../../../../../images/arte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">\
> Leer & oefen GCP Hacking: <img src="../../../../../images/grte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training GCP Red Team Expert (GRTE)**](https://hacktricks-training.com/courses/grte)<img src="../../../../../images/grte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">\
> Leer & oefen Az Hacking: <img src="../../../../../images/azrte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training Azure Red Team Expert (AzRTE)**](https://hacktricks-training.com/courses/azrte)<img src="../../../../../images/azrte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">
> Blaai deur die [**volledige HackTricks Training-katalogus**](https://hacktricks-training.com/courses/) vir die assesseringsroetes (**ARTA/GRTA/AzRTA**) en [**Linux Hacking Expert (LHE)**](https://hacktricks-training.com/courses/lhe/).
>
> <details>
>
> <summary>Ondersteun HackTricks</summary>
>
> - Kyk na die [**intekenplanne**](https://github.com/sponsors/carlospolop)!
> - **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f), die [**telegram-groep**](https://t.me/peass), **volg** [**@hacktricks_live**](https://twitter.com/hacktricks_live) op **X/Twitter**, of kyk na die [**LinkedIn-bladsy**](https://www.linkedin.com/company/hacktricks/) en [**YouTube-kanaal**](https://www.youtube.com/@hacktricks_LIVE).
> - **Deel hacking tricks deur PRs in te stuur na die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
>
> </details>


