Kako koristiti Nmap Script Engine (NSE) skripte u Linuxu


Nmap je popularan, moćan i multi-platformski skener mrežne sigurnosti i alat za istraživanje. Takođe vam može pomoći da dobijete pregled sistema koji su povezali vašu mrežu; možete ga koristiti da saznate sve IP adrese živih hostova, skenirate otvorene portove i usluge koje rade na tim hostovima i još mnogo toga.

Jedna od zanimljivih karakteristika Nmapa je Nmap Script Engine (NSE), koji mu donosi još veću fleksibilnost i efikasnost. Omogućava vam da pišete vlastite skripte u programskom jeziku Lua i da ih po mogućnosti dijelite s drugim Nmap korisnicima.

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

Postoje četiri tipa NSE skripti, i to:

  • Prerule skripte – su skripte koje se pokreću prije bilo koje Nmapove operacije skeniranja, izvršavaju se kada Nmap još nije prikupio nikakve informacije o cilju.
  • Host skripte – su skripte koje se izvršavaju nakon što je Nmap izvršio normalne operacije kao što su otkrivanje hosta, skeniranje portova, otkrivanje verzije i otkrivanje OS-a na ciljnom hostu.
  • Servisne skripte – su skripte koje se pokreću prema određenim uslugama koje slušaju na ciljnom hostu.
  • Postrule skripte – su skripte koje se pokreću nakon što Nmap skenira sve svoje ciljne hostove.

Zatim su ove skripte grupisane u različite kategorije uključujući one za autentifikaciju (auth), otkrivanje hostova (broadcast), napade grubom silom da se pogode vjerodajnice za autentifikaciju (brute<), otkrivanje više o mreži (otkriće), izazivanje uskraćivanja usluge (dos), iskorištavanje neke ranjivosti (eksploatacija) , itd. Određeni broj skripti pripada zadanoj kategoriji.

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

  • Ne izvršavajte skripte trećih strana bez kritičkog pregleda ili samo ako vjerujete autorima. To je zato što se ove skripte ne pokreću u sandboxu i stoga mogu neočekivano ili zlonamjerno oštetiti vaš sistem ili narušiti vašu privatnost.
  • Drugo, mnoge od ovih skripti mogu se pokrenuti ili kao prerule ili poststrule skripte. Imajući to u vidu, preporučljivo je koristiti prerule radi dosljednosti.
  • Nmap koristi bazu podataka scripts/script.db da otkrije dostupne zadane skripte i kategorije.

Da vidite lokaciju svih dostupnih NSE skripti, pokrenite uslužni program locate 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ćava pokretanje vlastitih skripti pružanjem kategorija, naziva datoteka skripte ili imena 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. Dodatno, možete proslijediti argumente nekim skriptama putem opcija --script-args i --script-args-file, pri čemu se posljednja koristi za pružanje naziva datoteke umjesto arg.

Da izvršite skeniranje sa 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
Sample Output
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 u odgovarajuću svrhu, možete, prije svega, dobiti kratak opis onoga što ona zapravo radi, na primjer, http-headers.

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

Kada znate šta skripta radi, možete izvršiti skeniranje pomoću nje. Možete koristiti jednu skriptu ili uneti listu naziva skripte odvojene zarezima. Naredba u nastavku će vam omogućiti da vidite HTTP zaglavlja konfigurirana na web serveru 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 sa liste kategorija razdvojenih zarezima. U ovom primjeru koristimo sve skripte u zadanoj kategoriji i kategoriji emitiranja da izvršimo skeniranje na hostu 192.168.56.1.

nmap --script default,broadcast 192.168.56.1

Korištenje * zamjenskog znaka

Ovo je korisno kada želite da odaberete skripte sa datim uzorkom imena. Na primjer da učitate sve skripte s imenima koja počinju sa ssh, pokrenite naredbu ispod na terminalu:

nmap --script "ssh-*" 192.168.56.1

Korištenje logičkih izraza

Također možete odabrati skripte koristeći logičke izraze koje možete izgraditi pomoću i, ili i ne operatora. I imena u Booleovom izrazu mogu biti kategorija, naziv datoteke iz script.db ili sve.

Sljedeća komanda će učitati skripte iz zadanih ili emitovanih kategorija.

nmap --script "default or broadcast" 192.168.56.10

Što je ekvivalentno:

nmap --script default,broadcast 192.168.56.10

Da učitate sve skripte 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 ju je lako razumjeti, odabire skripte u zadanim, ili kategorijama emitiranja, izostavljajući one čiji nazivi počinju s 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 booleov izraz za učitavanje skripti, kao što je ovaj:

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

Prenošenje 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 porta 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 komanda pokreće reviziju sigurnosne konfiguracije MySQL servera baze podataka u odnosu na dijelove CIS MySQL v1.0.2 benchmark-a. Možete kreirati i svoje korisne prilagođene datoteke revizije za druge MySQL revizije.

To je to za sada. Možete pronaći više informacija na Nmap man stranici ili pogledati NSE Usage.

Da biste započeli s pisanjem vlastitih NSE skripti, pogledajte ovaj vodič: https://nmap.org/book/nse-tutorial.html

Zaključak

Nmap je zaista moćan i koristan alat koji je potreban svakom administratoru sistema ili mreže u svom sigurnosnom arsenalu – NSE mu jednostavno dodaje veću efikasnost.

U ovom članku smo vas upoznali sa Nmap Script Engineom i pogledali kako pronaći i koristiti različite dostupne skripte u različitim kategorijama. Ako imate bilo kakvih pitanja, ne ustručavajte se da nam pišete putem obrasca za komentare ispod.