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.