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.