Slik bruker du Nmap Script Engine (NSE) skript i Linux
Nmap er en populær, kraftig og kryssplattform kommandolinjenettverkssikkerhetsskanner og utforskningsverktøy. Det kan også hjelpe deg å få oversikt over systemer som koblet nettverket ditt; du kan bruke den til å finne ut alle IP-adresser til live-verter, skanne åpne porter og tjenester som kjører på disse vertene, og mye mer.
En av de interessante funksjonene til Nmap er Nmap Script Engine (NSE), som gir den enda mer fleksibilitet og effektivitet. Det lar deg skrive dine egne skript i programmeringsspråket Lua, og muligens dele disse skriptene med andre Nmap-brukere der ute.
Les også: 29 praktiske eksempler på Nmap-kommandoer for Linux
Det er fire typer NSE-skript, nemlig:
- Forhåndsskript – er skript som kjører før noen av Nmaps skanneoperasjoner, de utføres når Nmap ikke har samlet inn informasjon om et mål ennå.
- Vertsskript – er skript som kjøres etter at Nmap har utført normale operasjoner som vertsoppdagelse, portskanning, versjonsdeteksjon og OS-deteksjon mot en målvert.
- Tjenesteskript – er skript som kjøres mot spesifikke tjenester som lytter på en målvert.
- Postrule-skript – er skript som kjøres etter at Nmap har skannet alle målvertene.
Deretter er disse skriptene gruppert under ulike kategorier, inkludert de for autentisering (autentisering), oppdagelse av verter (broadcast), brute force-angrep for å gjette autentiseringslegitimasjon (brute<), oppdage mer om et nettverk (oppdagelse), forårsake tjenestenekt (dos), utnytte en viss sårbarhet (utnytte) , etc. En rekke skript tilhører standardkategorien.
Merk: Før vi går videre, bør du notere deg disse hovedpunktene:
- Ikke utfør skript fra tredjeparter uten å se kritisk gjennom dem eller bare hvis du stoler på forfatterne. Dette er fordi disse skriptene ikke kjøres i en sandkasse og dermed kan uventet eller skadelig skade systemet ditt eller invadere personvernet ditt.
- For det andre kan mange av disse skriptene kjøres enten som et preregel eller postregel. Med tanke på dette, anbefales det å bruke en prerule for å oppnå konsistens.
- Nmap bruker scripts/script.db-databasen for å finne ut de tilgjengelige standardskriptene og kategoriene.
For å se plasseringen av alle tilgjengelige NSE-skript, kjør lokaliseringsverktøyet på terminalen, slik:
locate *.nse
/usr/share/nmap/scripts/acarsd-info.nse
/usr/share/nmap/scripts/address-info.nse
/usr/share/nmap/scripts/afp-brute.nse
/usr/share/nmap/scripts/afp-ls.nse
/usr/share/nmap/scripts/afp-path-vuln.nse
/usr/share/nmap/scripts/afp-serverinfo.nse
/usr/share/nmap/scripts/afp-showmount.nse
/usr/share/nmap/scripts/ajp-auth.nse
/usr/share/nmap/scripts/ajp-brute.nse
/usr/share/nmap/scripts/ajp-headers.nse
/usr/share/nmap/scripts/ajp-methods.nse
/usr/share/nmap/scripts/ajp-request.nse
/usr/share/nmap/scripts/allseeingeye-info.nse
/usr/share/nmap/scripts/amqp-info.nse
/usr/share/nmap/scripts/asn-query.nse
...
NSE-skript lastes ved hjelp av --script
-flagget, som også lar deg kjøre dine egne skript ved å oppgi kategorier, skriptfilnavn eller navn på kataloger der skriptene dine er plassert.
Syntaksen for å aktivere skript er som følger:
nmap -sC target #load default scripts
OR
nmap --script filename|category|directory|expression,... target
Du kan se en beskrivelse av et skript med --script-help
alternativet. I tillegg kan du sende argumenter til noen skript via alternativene --script-args
og --script-args-file
, det senere brukes til å angi et filnavn i stedet for en kommandolinje arg.
For å utføre en skanning med de fleste standardskriptene, bruk -sC
-flagget eller bruk --script=default
som vist.
nmap -sC scanme.nmap.org
OR
nmap --script=default scanme.nmap.org
OR
nmap --script default scanme.nmap.org
Eksempelutgang
Starting Nmap 7.01 ( https://nmap.org ) at 2017-11-15 10:36 IST
Nmap scan report for scanme.nmap.org (45.33.32.156)
Host is up (0.0027s latency).
Not shown: 999 filtered ports
PORT STATE SERVICE
80/tcp open http
|_http-title: Go ahead and ScanMe!
Nmap done: 1 IP address (1 host up) scanned in 11.74 seconds
For å bruke et skript til riktig formål, kan du først og fremst få en kort beskrivelse av hva det faktisk gjør, for eksempel http-headers.
nmap --script-help http-headers scanme.nmap.org
Eksempelutgang
Starting Nmap 7.01 ( https://nmap.org ) at 2017-11-15 10:37 IST
http-headers
Categories: discovery safe
https://nmap.org/nsedoc/scripts/http-headers.html
Performs a HEAD request for the root folder ("/") of a web server and displays the HTTP headers returned.
Laster inn NSE-skript for å utføre Nmap-skanninger
Du kan velge eller laste inn skript for å utføre en skanning på forskjellige metoder forklart nedenfor.
Bruker skriptnavn
Når du vet hva et skript gjør, kan du utføre en skanning ved å bruke det. Du kan bruke ett skript eller angi en kommadelt liste over skriptnavn. Kommandoen nedenfor lar deg se HTTP-hodene som er konfigurert på webserveren på målverten.
nmap --script http-headers scanme.nmap.org
Starting Nmap 7.01 ( https://nmap.org ) at 2017-11-15 10:39 IST
Nmap scan report for scanme.nmap.org (45.33.32.156)
Host is up (0.27s latency).
Not shown: 996 closed ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
| http-headers:
| Date: Wed, 15 Nov 2017 05:10:04 GMT
| Server: Apache/2.4.7 (Ubuntu)
| Accept-Ranges: bytes
| Vary: Accept-Encoding
| Connection: close
| Content-Type: text/html
|
|_ (Request type: HEAD)
179/tcp filtered bgp
31337/tcp open Elite
Nmap done: 1 IP address (1 host up) scanned in 20.96 seconds
Bruke kategorier
Du kan også laste inn skript fra én kategori eller fra en kommadelt liste over kategorier. I dette eksemplet bruker vi alle skript i standard- og kringkastingskategorien for å utføre en skanning på verten 192.168.56.1.
nmap --script default,broadcast 192.168.56.1
Bruker * Wildcard
Dette er nyttig når du vil velge skript med et gitt navnemønster. For å for eksempel laste inn alle skript med navn som begynner med ssh, kjør kommandoen nedenfor på terminalen:
nmap --script "ssh-*" 192.168.56.1
Bruke boolske uttrykk
Du kan også velge skript ved å bruke boolske uttrykk som du kan bygge ved å bruke og-, eller- og ikke-operatorene. Og navn i et boolsk uttrykk kan være en kategori, et filnavn fra script.db eller alle.
Følgende kommando vil laste skript fra standard- eller kringkastingskategoriene.
nmap --script "default or broadcast" 192.168.56.10
Som tilsvarer:
nmap --script default,broadcast 192.168.56.10
For å laste alle skript som utelater de i vuln-kategorien, kjør denne kommandoen på terminalen.
nmap --script "not vuln" 192.168.56.10
Den neste kommandoen ser litt komplisert ut, men den er lett å forstå, den velger skript i standard- eller kringkastingskategorier, og utelater de med navn som begynner med ssh-:
nmap --script "(default or broadcast) and not ssh-*" 192.168.56.10
Viktigere er det mulig å kombinere kategorier, skriptnavn, en katalog som inneholder de tilpassede skriptene dine, eller et boolsk uttrykk for å laste skript, som dette:
nmap --script broadcast,vuln,ssh-auth-methods,/path/to/custom/scripts 192.168.56.10
Sende argumenter til NSE-skript
Nedenfor er et eksempel som viser hvordan du sender argumenter til skript med alternativet –script-args:
nmap --script mysql-audit --script-args "mysql-audit.username='root', \
mysql-audit.password='password_here', mysql-audit.filename='nselib/data/mysql-cis.audit'"
For å sende et portnummer, bruk -p nmap-alternativet:
nmap -p 3306 --script mysql-audit --script-args "mysql-audit.username='root', \
mysql-audit.password='password_here' , mysql-audit.filename='nselib/data/mysql-cis.audit'"
Kommandoen ovenfor kjører en revisjon av sikkerhetskonfigurasjonen for MySQL-databasetjeneren mot deler av CIS MySQL v1.0.2-referansen. Du kan også lage dine egne nyttige tilpassede revisjonsfiler for andre MySQL-revisjoner.
Det er det for nå. Du kan finne mer informasjon på Nmap-man-siden eller sjekke NSE-bruk.
For å komme i gang med å skrive dine egne NSE-skript, sjekk ut denne veiledningen: https://nmap.org/book/nse-tutorial.html
Konklusjon
Nmap er et veldig kraftig og nyttig verktøy som alle system- eller nettverksadministratorer trenger i sitt sikkerhetsarsenal – NSE gir det ganske enkelt mer effektivitet.
I denne artikkelen introduserte vi deg for Nmap-skriptmotoren og så på hvordan du finner og bruker de forskjellige tilgjengelige skriptene under forskjellige kategorier. Hvis du har spørsmål, ikke nøl med å skrive tilbake til oss via kommentarskjemaet nedenfor.