Kako koristiti skripte Nmap Script Engine (NSE) u Linuxu


Nmap je popularan, moćan i višeplatformski mrežni sigurnosni skener i alat za istraživanje naredbenog retka. Također vam može pomoći da dobijete pregled sustava koji su povezali vašu mrežu; možete ga koristiti za pronalaženje svih IP adresa živih računala, skeniranje otvorenih portova i servisa koji se izvode na tim računalima i još mnogo toga.

Jedna od zanimljivih značajki Nmapa je Nmap Script Engine (NSE), koji mu donosi još više fleksibilnosti i učinkovitosti. Omogućuje vam pisanje vlastitih skripti u Lua programskom jeziku i moguće dijeljenje tih skripti s drugim korisnicima Nmapa.

Pročitajte također: 29 praktičnih primjera Nmap naredbi za Linux

Postoje četiri vrste NSE skripti, naime:

  • Prerule skripte – su skripte koje se pokreću prije bilo koje Nmapove operacije skeniranja, one se izvršavaju kada Nmap još nije prikupio nikakve informacije o meti.
  • Host skripte – su skripte koje se izvršavaju nakon što je Nmap izvršio normalne operacije kao što su otkrivanje glavnog računala, skeniranje priključaka, otkrivanje verzije i otkrivanje OS-a protiv ciljnog glavnog računala.
  • Skripte usluge – su skripte koje se pokreću protiv određenih usluga koje slušaju na ciljanom hostu.
  • Postrule skripte – su skripte koje se pokreću nakon što Nmap skenira sve svoje ciljne hostove.

Zatim se te skripte grupiraju u različite kategorije uključujući one za autentifikaciju (auth), otkrivanje hostova (broadcast), brute force napade za pogađanje vjerodajnica za autentifikaciju (brute<), otkrivanje više o mreži (discovery), izazivanje uskraćivanja usluge (dos), iskorištavanje neke ranjivosti (exploit) , itd. Brojne skripte pripadaju zadanoj kategoriji.

Napomena: Prije nego što nastavimo, trebali biste zabilježiti ove ključne točke:

  • Ne izvršavajte skripte trećih strana bez da ih kritički pregledate ili samo ako vjerujete autorima. To je zato što se te skripte ne pokreću u sandboxu i stoga bi mogle neočekivano ili zlonamjerno oštetiti vaš sustav ili narušiti vašu privatnost.
  • Drugo, mnoge od ovih skripti mogu se izvoditi kao prerule ili postrule skripta. S obzirom na to, preporučuje se korištenje predpravila radi dosljednosti.
  • Nmap koristi bazu podataka scripts/script.db kako bi otkrio dostupne zadane skripte i kategorije.

Da biste vidjeli lokaciju svih dostupnih NSE skripti, pokrenite uslužni program za lociranje na terminalu, ovako:

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 skripte se učitavaju pomoću oznake --script, koja vam također omogućuje pokretanje vlastitih skripti pružanjem kategorija, naziva datoteka skripti ili naziva direktorija u kojima se nalaze vaše skripte.

Sintaksa za omogućavanje skripti je sljedeća:

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

Možete pogledati opis skripte pomoću opcije --script-help. Osim toga, nekim skriptama možete proslijediti argumente putem opcija --script-args i --script-args-file, posljednja se koristi za pružanje naziva datoteke umjesto arg naredbenog retka.

Da biste izvršili skeniranje s većinom zadanih skripti, koristite oznaku -sC ili alternativno koristite --script=default kao što je prikazano.

nmap -sC scanme.nmap.org
OR
nmap --script=default scanme.nmap.org
OR
nmap --script default scanme.nmap.org
Uzorak izlaza
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

Da biste koristili skriptu za odgovarajuću svrhu, možete, prije svega, dobiti kratak opis onoga što ona zapravo radi, na primjer, http-zaglavlja.

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

Učitavanje NSE skripti za izvođenje Nmap skeniranja

Možete odabrati ili učitati skripte za izvođenje skeniranja na različite metode objašnjene u nastavku.

Korištenje naziva skripte

Nakon što saznate što skripta radi, možete izvršiti skeniranje pomoću nje. Možete koristiti jednu skriptu ili unijeti popis naziva skripti odvojenih zarezima. Naredba u nastavku omogućit će vam pregled HTTP zaglavlja konfiguriranih na web poslužitelju na ciljnom hostu.

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

Korištenje kategorija

Također možete učitati skripte iz jedne kategorije ili s popisa kategorija odvojenih zarezima. U ovom primjeru koristimo sve skripte u zadanoj kategoriji i kategoriji emitiranja kako bismo izvršili skeniranje na hostu 192.168.56.1.

nmap --script default,broadcast 192.168.56.1

Korištenje * zamjenskog znaka

Ovo je korisno kada želite odabrati skripte s danim uzorkom naziva. Na primjer, za učitavanje svih skripti čiji nazivi počinju s ssh, pokrenite naredbu ispod na terminalu:

nmap --script "ssh-*" 192.168.56.1

Korištenje Booleovih izraza

Također možete odabrati skripte pomoću Booleovih izraza koje možete izraditi pomoću operatora i, ili i ne. I imena u Booleovom izrazu mogu biti kategorija, naziv datoteke iz script.db ili sve.

Sljedeća naredba će učitati skripte iz zadanih ili emitiranih kategorija.

nmap --script "default or broadcast" 192.168.56.10

Što je ekvivalentno:

nmap --script default,broadcast 192.168.56.10

Za učitavanje svih skripti izostavljajući one u kategoriji vuln, pokrenite ovu naredbu na terminalu.

nmap --script "not vuln" 192.168.56.10

Sljedeća naredba izgleda malo komplicirano, ali je lako razumjeti, odabire skripte u zadanim kategorijama ili kategorijama emitiranja, izostavljajući one s imenima koja počinju sa ssh-:

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

Važno je da je moguće kombinirati kategorije, nazive skripti, direktorij koji sadrži vaše prilagođene skripte ili Boolean izraz za učitavanje skripti, ovako:

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

Prosljeđivanje argumenata u NSE skripte

Ispod je primjer koji pokazuje kako proslijediti argumente skriptama s opcijom –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'"

Za prosljeđivanje broja priključka koristite opciju -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'"

Gornja naredba pokreće reviziju sigurnosne konfiguracije MySQL poslužitelja baze podataka prema dijelovima CIS MySQL v1.0.2 referentne vrijednosti. Također možete stvoriti vlastite korisne prilagođene revizijske datoteke za druge MySQL revizije.

To je to za sada. Više informacija možete pronaći na Nmap man stranici ili provjerite NSE Usage.

Za početak pisanja vlastitih NSE skripti, pogledajte ovaj vodič: https://nmap.org/book/nse-tutorial.html

Zaključak

Nmap je stvarno moćan i koristan alat koji svaki administrator sustava ili mreže treba u svom sigurnosnom arsenalu – NSE mu jednostavno dodaje veću učinkovitost.

U ovom smo vam članku predstavili Nmap Script Engine i pogledali kako pronaći i koristiti različite dostupne skripte u različitim kategorijama. Ako imate pitanja, ne ustručavajte se pisati nam putem obrasca za komentare u nastavku.