Sådan bruges Nmap Script Engine (NSE) -skripter i Linux


scan åbne porte og tjenester, der kører på disse værter, og så meget mere.

Et af de interessante træk ved Nmap er Nmap Script Engine (NSE), som giver endnu mere fleksibilitet og effektivitet til den. Det giver dig mulighed for at skrive dine egne scripts på Lua programmeringssprog og muligvis dele disse scripts med andre Nmap-brugere derude.

Der er fire typer NSE-scripts, nemlig:

  • Forudgående scripts - er scripts, der kører før nogen af Nmaps scanningsoperationer, de udføres, når Nmap endnu ikke har indsamlet nogen oplysninger om et mål.
  • Værtsskripts - er scripts, der udføres, efter at Nmap har udført normale operationer såsom værtsopdagelse, havnescanning, versionsopdagelse og OS-detektion mod en målvært.
  • Serviceskripts - er scripts, der køres mod bestemte tjenester, der lytter på en målvært.
  • Postrule-scripts - er scripts, der køres efter Nmap har scannet alle sine målværter.

Derefter grupperes disse scripts under forskellige kategorier, herunder dem til autentificering (auth), opdagelse af værter (broadcast), brute force-angreb for at gætte autentificeringsoplysninger (brute), opdage mere om et netværk (discovery), hvilket forårsager en denial of service (dos ), udnytte en vis sårbarhed (udnytte) osv. Et antal scripts hører til standardkategorien.

Bemærk: Før vi går videre, skal du notere disse nøglepunkter:

  • Udfør ikke scripts fra tredjeparter uden kritisk at gennemse dem, eller kun hvis du stoler på forfatterne. Dette skyldes, at disse scripts ikke køres i en sandkasse og dermed uventet eller skadeligt kan skade dit system eller angribe dit privatliv.
  • For det andet kan mange af disse scripts muligvis køre som enten et præregel- eller post-script. I betragtning af dette anbefales det at bruge en forregel til sammenhæng.
  • Nmap bruger scripts/script.db-databasen til at finde ud af de tilgængelige standardskripts og -kategorier.

For at se placeringen af alle tilgængelige NSE-scripter skal du køre lokaliseringsværktøjet på terminalen på denne måde:

$ 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-scripts indlæses ved hjælp af --script -flagget, som også giver dig mulighed for at køre dine egne scripts ved at angive kategorier, scriptfilnavne eller navnet på mapper, hvor dine scripts er placeret.

Syntaksen for aktivering af scripts er som følger:

$ nmap -sC target     #load default scripts
OR
$ nmap --script filename|category|directory|expression,...   target    

Du kan se en beskrivelse af et script med indstillingen --script-help . Derudover kan du videregive argumenter til nogle scripts via indstillingerne --script-args og --script-args-file , den senere bruges til at give et filnavn i stedet for en kommandolinjearg.

For at udføre en scanning med de fleste standardskripter skal du bruge -sC -flagget eller alternativt bruge --script = standard som vist.

$ nmap -sC scanme.nmap.org
OR
$ nmap --script=default scanme.nmap.org
OR
$ nmap --script default scanme.nmap.org
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 at bruge et script til det passende formål kan du først og fremmest få en kort beskrivelse af, hvad det faktisk gør, for eksempel http-headere.

$ nmap --script-help http-headers scanme.nmap.org
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.

Indlæser NSE-scripts for at udføre Nmap-scanninger

Du kan vælge eller indlæse scripts for at udføre en scanning på forskellige måder, der er forklaret nedenfor.

Når du ved, hvad et script gør, kan du udføre en scanning ved hjælp af det. Du kan bruge et script eller indtaste en kommasepareret liste over scriptnavne. Kommandoen nedenfor gør det muligt for dig at se HTTP-headere, der er konfigureret på webserveren på målværten.

$ 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

Du kan også indlæse scripts fra en kategori eller fra en kommasepareret liste over kategorier. I dette eksempel bruger vi alle scripts i standard- og transmissionskategorien til at udføre en scanning på værten 192.168.56.1.

$ nmap --script default,broadcast 192.168.56.1

Dette er nyttigt, når du vil vælge scripts med et givet navnemønster. For eksempel for at indlæse alle scripts med navne, der starter med ssh, skal du køre kommandoen nedenfor på terminalen:

$ nmap --script "ssh-*" 192.168.56.1

Du kan også vælge scripts ved hjælp af boolske udtryk, som du kan bygge ved hjælp af og, eller, og ikke operatorer. Og navne i et boolsk udtryk kan være en kategori, et filnavn fra script.db eller alle.

Den følgende kommando indlæser scripts fra standard- eller transmissionskategorierne.

$ nmap --script "default or broadcast" 192.168.56.10

Hvilket svarer til:

$ nmap --script default,broadcast 192.168.56.10

For at indlæse alle scripts, der udelader dem i kategorien vuln, skal du køre denne kommando på terminalen.

$ nmap --script "not vuln" 192.168.56.10

Den næste kommando ser lidt kompliceret ud, men den er let at forstå, den vælger scripts i standard- eller udsendelseskategorierne og udelader dem med navne, der starter med ssh-:

$ nmap --script "(default or broadcast) and not ssh-*" 192.168.56.10

Det er vigtigt, at det er muligt at kombinere kategorier, scriptnavne, en mappe, der indeholder dine brugerdefinerede scripts eller et boolsk udtryk for at indlæse scripts, som dette:

$ nmap --script broadcast,vuln,ssh-auth-methods,/path/to/custom/scripts 192.168.56.10

Nedenfor er et eksempel, der viser, hvordan man sender argumenter til scripts med muligheden –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 at passere et portnummer skal du bruge indstillingen -p nmap:

$ 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'"

Ovenstående kommando kører en revision af MySQL-databaseserverens sikkerhedskonfiguration mod dele af CIS MySQL v1.0.2 benchmark. Du kan lige så godt oprette dine egne nyttige brugerdefinerede revisionsfiler til andre MySQL-revisioner.

Det er det for nu. Du kan finde flere oplysninger på Nmap man-siden eller tjekke NSE-brug.

For at komme i gang med at skrive dine egne NSE-scripts, se denne vejledning: https://nmap.org/book/nse-tutorial.html

Nmap er et virkelig kraftfuldt og nyttigt værktøj, som ethvert system eller netværksadministrator har brug for i sit sikkerhedsarsenal - NSE tilføjer simpelthen mere effektivitet til det.

I denne artikel introducerede vi dig til Nmap Script Engine og så på, hvordan man finder og bruger de forskellige tilgængelige scripts under forskellige kategorier. Hvis du har spørgsmål, så tøv ikke med at skrive tilbage til os via nedenstående kommentarformular.