Cum să utilizați scripturile Nmap Script Engine (NSE) în Linux


scanează porturi deschise și servicii care rulează pe acele gazde și multe altele.

Una dintre caracteristicile interesante ale Nmap este Nmap Script Engine (NSE), care îi aduce și mai multă flexibilitate și eficiență. Vă permite să vă scrieți propriile scripturi în limbajul de programare Lua și, eventual, să partajați aceste scripturi cu alți utilizatori Nmap.

Există patru tipuri de scripturi NSE, și anume:

  • Scripturi de preregulă – sunt scripturi care rulează înaintea oricăreia dintre operațiunile de scanare ale Nmap, sunt executate atunci când Nmap nu a adunat încă nicio informație despre o țintă.
  • Scripturi gazdă – sunt scripturi executate după ce Nmap a efectuat operațiuni normale, cum ar fi descoperirea gazdei, scanarea portului, detectarea versiunii și detectarea sistemului de operare împotriva unei gazde țintă.
  • Scripturi de serviciu – sunt scripturi rulate pe anumite servicii care ascultă pe o gazdă țintă.
  • Scripturi postrule – sunt scripturi rulate după ce Nmap a scanat toate gazdele țintă.

Apoi, aceste scripturi sunt grupate în diferite categorii, inclusiv cele pentru autentificare (auth), descoperirea gazdelor (difuzare), atacuri de forță brută pentru a ghici acreditările de autentificare (brute<), descoperind mai multe despre o rețea (descoperire), provocând o refuz de serviciu (dos), exploatând o anumită vulnerabilitate (exploat) , etc. Un număr de scripturi aparțin categoriei implicite.

Notă: înainte de a trece mai departe, ar trebui să luați notă de aceste puncte cheie:

  • Nu executați scripturi de la terți fără a le căuta cu critici sau numai dacă aveți încredere în autori. Acest lucru se datorează faptului că aceste scripturi nu sunt rulate într-un sandbox și, prin urmare, ar putea deteriora sistemul dumneavoastră în mod neașteptat sau rău intenționat sau vă pot invada confidențialitatea.
  • În al doilea rând, multe dintre aceste scripturi pot rula fie ca script de preregula, fie de postrul. Având în vedere acest lucru, se recomandă folosirea unei prereguli în scopuri de consistență.
  • Nmap folosește baza de date scripts/script.db pentru a identifica scripturile și categoriile prestabilite disponibile.

Pentru a vedea locația tuturor scripturilor NSE disponibile, rulați utilitarul de localizare pe terminal, astfel:

$ 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
...

Scripturile NSE sunt încărcate folosind indicatorul --script, care vă permite, de asemenea, să rulați propriile scripturi, furnizând categorii, nume de fișiere de script sau numele directoarelor în care sunt localizate scripturile dvs.

Sintaxa pentru activarea scripturilor este următoarea:

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

Puteți vizualiza o descriere a unui script cu opțiunea --script-help. În plus, puteți transmite argumente unor scripturi prin opțiunile --script-args și --script-args-file, cea mai târziu este folosită pentru a furniza un nume de fișier, mai degrabă decât un argument de linie de comandă.

Pentru a efectua o scanare cu majoritatea scripturilor implicite, utilizați indicatorul -sC sau, alternativ, utilizați --script=default după cum se arată.

$ nmap -sC scanme.nmap.org
OR
$ nmap --script=default scanme.nmap.org
OR
$ nmap --script default scanme.nmap.org
Ieșire eșantion
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

Pentru a utiliza un script în scopul adecvat, puteți, în primul rând, să obțineți o scurtă descriere a ceea ce face de fapt, de exemplu, http-headers.

$ nmap --script-help http-headers scanme.nmap.org
Ieșire eșantion
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.

Încărcarea scripturilor NSE pentru a efectua scanări Nmap

Puteți selecta sau încărca scripturi pentru a efectua o scanare în diferite metode explicate mai jos.

Folosind Nume Script

Odată ce știți ce face un script, puteți efectua o scanare folosindu-l. Puteți utiliza un singur script sau puteți introduce o listă de nume de script separate prin virgulă. Comanda de mai jos vă va permite să vizualizați anteturile HTTP configurate pe serverul web de la gazda țintă.

$ 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

Utilizarea categoriilor

De asemenea, puteți încărca scripturi dintr-o categorie sau dintr-o listă de categorii separate prin virgulă. În acest exemplu, folosim toate scripturile din categoria implicită și de difuzare pentru a efectua o scanare pe gazda 192.168.56.1.

$ nmap --script default,broadcast 192.168.56.1

Folosind * Wildcard

Acest lucru este util atunci când doriți să selectați scripturi cu un model de nume dat. De exemplu, pentru a încărca toate scripturile cu nume care încep cu ssh, rulați comanda de mai jos pe terminal:

$ nmap --script "ssh-*" 192.168.56.1

Utilizarea expresiilor booleene

De asemenea, puteți selecta scripturi folosind expresii booleene pe care le puteți crea folosind operatorii și, sau și nu. Și numele dintr-o expresie booleană pot fi o categorie, un nume de fișier din script.db sau toate.

Următoarea comandă va încărca scripturi din categoriile implicite sau de difuzare.

$ nmap --script "default or broadcast" 192.168.56.10

Care este echivalent cu:

$ nmap --script default,broadcast 192.168.56.10

Pentru a încărca toate scripturile care le omit pe cele din categoria vuln, rulați această comandă pe terminal.

$ nmap --script "not vuln" 192.168.56.10

Următoarea comandă pare puțin complicată, dar este ușor de înțeles, selectează scripturile implicite sau categoriile de difuzare, lăsându-le deoparte pe cele cu nume care încep cu ssh-:

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

Foarte important, este posibil să combinați categorii, nume de scripturi, un director care conține script-urile dvs. personalizate sau o expresie booleană pentru a încărca scripturi, astfel:

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

Transmiterea de argumente către scripturile NSE

Mai jos este un exemplu care arată cum să transmiteți argumente scripturilor cu opțiunea –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'"

Pentru a transmite un număr de port, utilizați opțiunea -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'"

Comanda de mai sus execută un audit al configurației de securitate a serverului bazei de date MySQL față de părți ale benchmark-ului CIS MySQL v1.0.2. De asemenea, puteți crea propriile fișiere de audit personalizate utile pentru alte audituri MySQL.

Atât deocamdată. Puteți găsi mai multe informații pe pagina de manual Nmap sau consultați Utilizarea NSE.

Pentru a începe să scrieți propriile scripturi NSE, consultați acest ghid: https://nmap.org/book/nse-tutorial.html

Concluzie

Nmap este un instrument cu adevărat puternic și util de care fiecare administrator de sistem sau de rețea are nevoie în arsenalul său de securitate – NSE pur și simplu îi adaugă mai multă eficiență.

În acest articol, v-am prezentat Nmap Script Engine și am analizat cum să găsiți și să utilizați diferitele scripturi disponibile în diferite categorii. Dacă aveți întrebări, nu ezitați să ne scrieți prin formularul de comentarii de mai jos.