Weboldal keresés

Az Nmap Script Engine (NSE) szkriptek használata Linuxban


Az Nmap egy népszerű, hatékony és többplatformos parancssori hálózati biztonsági szkenner és feltáró eszköz. Segíthet abban is, hogy áttekintést kapjon a hálózatát összekötő rendszerekről; segítségével megtudhatja az élő gazdagépek összes IP-címét, megvizsgálhatja az ezeken a gazdagépeken futó nyitott portokat és szolgáltatásokat, és még sok minden mást.

Az Nmap egyik érdekes funkciója az Nmap Script Engine (NSE), amely még nagyobb rugalmasságot és hatékonyságot biztosít. Lehetővé teszi saját szkriptek megírását Lua programozási nyelven, és esetleg megoszthatja ezeket a szkripteket más Nmap felhasználókkal.

Olvassa el még: 29 gyakorlati példa az Nmap parancsokra Linuxon

Négy típusú NSE-szkript létezik, nevezetesen:

  • Előszabályi szkriptek – olyan szkriptek, amelyek az Nmap bármely vizsgálati művelete előtt futnak le, és akkor futnak le, ha az Nmap még nem gyűjtött össze információt a célról.
  • Gazdagép szkriptek – olyan szkriptek, amelyek azután futnak le, hogy az Nmap normál műveleteket hajtott végre, például gazdagépfelderítést, portellenőrzést, verzióérzékelést és operációs rendszer észlelését a célállomáson.
  • Szolgáltatási szkriptek – olyan szkriptek, amelyek meghatározott szolgáltatások ellen futnak, és figyelnek a célállomáson.
  • Postrule szkriptek – olyan szkriptek, amelyek azután futnak le, hogy az Nmap megvizsgálta az összes célállomását.

Ezután ezek a szkriptek különböző kategóriákba vannak csoportosítva, beleértve a hitelesítést (auth), a gazdagépek felfedezését (közvetítés), a brute force támadásokat a hitelesítési adatok kitalálására (brute<)), többet tudhat meg egy hálózatról (felfedezés), szolgáltatásmegtagadást okoz (dos), bizonyos sérülékenységet használ ki (exploit) stb. Számos szkript tartozik az alapértelmezett kategóriába.

Megjegyzés: Mielőtt továbblépnénk, vegye figyelembe az alábbi kulcsfontosságú pontokat:

  • Ne futtasson harmadik féltől származó szkripteket anélkül, hogy kritikusan átnézné azokat, vagy csak akkor, ha megbízik a szerzőben. Ennek az az oka, hogy ezek a szkriptek nem homokozóban futnak, és így váratlanul vagy rosszindulatúan károsíthatják a rendszert, vagy megsérthetik a magánéletét.
  • Másodszor, sok ilyen szkript futhat prerule vagy postrule szkriptként. Ezt figyelembe véve a következetesség érdekében egy előszabály használata javasolt.
  • Az Nmap a scripts/script.db adatbázist használja az elérhető alapértelmezett szkriptek és kategóriák meghatározásához.

Az összes elérhető NSE-szkript helyének megtekintéséhez futtassa a locate segédprogramot a terminálon, a következőképpen:

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

Az NSE-szkriptek a --script jelzővel töltődnek be, amely lehetővé teszi saját szkriptek futtatását is, megadva a kategóriákat, a parancsfájlneveket vagy a szkripteket tartalmazó könyvtárak nevét.

A szkriptek engedélyezésének szintaxisa a következő:

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

Egy szkript leírását a --script-help opcióval tekintheti meg. Ezenkívül argumentumokat adhat át néhány szkriptnek a --script-args és a --script-args-file kapcsolókkal, a későbbi a fájlnév megadására szolgál. egy parancssori arg.

Ha a legtöbb alapértelmezett szkripttel szeretne vizsgálatot végezni, használja a -sC jelzőt, vagy használja a --script=default parancsot, ahogy az ábra mutatja.

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

Ha egy szkriptet a megfelelő célra szeretne használni, először is rövid leírást kaphat arról, hogy valójában mit is csinál, például http-fejlécek.

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

NSE-szkriptek betöltése az Nmap-vizsgálatok végrehajtásához

Az alábbiakban ismertetett különböző módszerek segítségével szkripteket választhat vagy tölthet be a vizsgálat végrehajtásához.

A szkriptnév használata

Ha már tudja, hogy mit csinál egy szkript, akkor végezhet vele vizsgálatot. Használhat egyetlen szkriptet, vagy megadhatja a szkriptnevek vesszővel elválasztott listáját. Az alábbi paranccsal megtekintheti a célállomáson a webszerveren konfigurált HTTP-fejléceket.

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

Kategóriák használata

A szkripteket egy kategóriából vagy egy vesszővel elválasztott kategórialistából is betöltheti. Ebben a példában az alapértelmezett és a szórási kategória összes szkriptjét használjuk a 192.168.56.1 gazdagép vizsgálatához.

nmap --script default,broadcast 192.168.56.1

* Helyettesítő karakter használata

Ez akkor hasznos, ha adott névmintával rendelkező szkripteket szeretne kiválasztani. Például az összes ssh-vel kezdődő nevű szkript betöltéséhez futtassa az alábbi parancsot a terminálon:

nmap --script "ssh-*" 192.168.56.1

Logikai kifejezések használata

A szkripteket logikai kifejezésekkel is kiválaszthatja, amelyeket az és, vagy és not operátorok használatával hozhat létre. A logikai kifejezésekben szereplő nevek lehetnek egy kategória, egy fájlnév a script.db fájlból vagy az összes.

A következő parancs az alapértelmezett vagy broadcast kategóriákból tölti be a szkripteket.

nmap --script "default or broadcast" 192.168.56.10

Ami egyenértékű:

nmap --script default,broadcast 192.168.56.10

Az összes szkript betöltéséhez a vuln kategóriába tartozókat kihagyva futtassa ezt a parancsot a terminálon.

nmap --script "not vuln" 192.168.56.10

A következő parancs kissé bonyolultnak tűnik, de könnyen érthető, az alapértelmezett vagy broadcast kategóriákban választja ki a szkripteket, kihagyva az ssh-vel kezdődő neveket:

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

Fontos, hogy lehetőség van kategóriák, szkriptnevek, egyéni szkripteket tartalmazó könyvtár vagy logikai kifejezés kombinálásával a szkriptek betöltéséhez, például:

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

Érvek átadása az NSE szkripteknek

Az alábbiakban egy példa bemutatja, hogyan lehet argumentumokat adni a szkripteknek a –script-args opcióval:

nmap --script mysql-audit --script-args "mysql-audit.username='root', \
mysql-audit.password='password_here', mysql-audit.filename='nselib/data/mysql-cis.audit'"

Portszám átadásához használja az -p nmap opciót:

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'"

A fenti parancs lefuttatja a MySQL adatbázis-kiszolgáló biztonsági konfigurációjának ellenőrzését a CIS MySQL v1.0.2 benchmark egyes részei alapján. Létrehozhatja saját hasznos egyéni audit fájljait más MySQL-auditokhoz is.

Egyelőre ennyi. További információkat találhat az Nmap kézikönyv oldalán, vagy nézze meg az NSE Usage részt.

A saját NSE-szkriptek írásának megkezdéséhez tekintse meg ezt az útmutatót: https://nmap.org/book/nse-tutorial.html

Következtetés

Az Nmap egy igazán hatékony és hasznos eszköz, amelyre minden rendszer- vagy hálózati rendszergazdának szüksége van a biztonsági arzenáljában – az NSE egyszerűen csak növeli a hatékonyságot.

Ebben a cikkben bemutattuk az Nmap Script Engine-t, és megvizsgáltuk, hogyan találhatja meg és használhatja a különböző kategóriákban elérhető szkripteket. Ha bármilyen kérdése van, ne habozzon visszaírni nekünk az alábbi megjegyzés űrlapon keresztül.