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.