Nmap parancsfájl motor (Nmap Scripting Engine (NSE))

Az Nmap parancsfájl motor (NSE) egyesíti az Nmap hatékony hálózatkezelését a Lua könnyűsúlyú parancsnyelv sokoldalúságával, így kínálva számtalan lehetőséget. A https://nmap.org/nse/ címen bőséges dokumentációt talál az NSE-ről (beleértve a programozói felületet is). Az NSE célja, hogy hatékony környezetet biztosítson az Nmap képességeinek kiterjesztéséhez és a felhasználók számára egyszerűbbé tegye testreszabott tesztek létrehozását. Az NSE felhasználási területei:

Kiterjesztett változat érzékelés (kategória version) — Bár az Nmap rendelkezik egy saját szolgáltatás- és változatérzékelő rendszerrel, mely hatékonyságában és működési körében páratlan, egy bonyolultabb próbákat igénylő szolgáltatás felderítésekor ez az erő nem használható ki. Például a Skype-Protocol 2-es változatának azonosításához két független próbacsomagot kell elküldeni, melyre a beépített rendszer nem képes. Egy egyszerű NSE parancsfájl végre tudja hajtani ezt a feladatot és frissíteni tudja a kapukhoz tartozó szolgáltatások információit.

Károkozó érzékelés (kategóriák malware és backdoors) - Mind a támadók, mind a féregprogramok gyakran hagynak maguk után hátsó bejáratokat - például a levélszemetek küldői gyakran használnak szokatlan kapukon működő SMTP kiszolgálókat a leveleik továbbítására, vagy a betörők egyfajta FTP kiszolgálót használva próbálnak meg hozzáférni kritikus adatokhoz. Pár sor Lua kóddal ezek a rések könnyen felderíthetők.

Sebezhetőség érzékelés (kategória vulnerability)- Az NSE képességeinek kihasználásával könnyen azonosíthat olyan veszélyeket, mint például az alapértelmezett jelszavak, vagy az SMTP kiszolgálók levél-átjátszási képessége tetszőleges tartományokból.

Hálózati felderítés és Információgyújtés (kategóriák safe, intrusive és discovery) — Egyrészt a parancsnyelv és a hatékony aszinkron hálózati programfelület, másrészt a korábbi letapogatások során begyűjtött információk segítségével az NSE lehetőséget nyújt ara, hogy a célgépen futó szolgáltatásokhoz ügyfélprogramokat készítsen. Ezekkel az ügyfelekkel olyan információkat is begyűjthet, mint például az elérhető NFS/SMB/RPC megosztások, egy IRC hálózaton lévő csatornák vagy az éppen bejelentkezett felhasználók száma.

A különböző felhasználási formák miatt és a megfelelő parancsfájl kiválasztásának leegyszerűsítése érdekében minden parancsfájl tartalmaz egy mezőt, mellyel a fenti kategóriák bármelyikébe (akár több kategóriába is) besorolható. A kategóriák és parancsfájlok kapcsolatának nyilvántartására egy script.db nevű fájl is telepítésre kerül a parancsfájlok mellett. Így például ha egy gépről szeretné megállapítani, hogy fertőzött-e valamilyen féregprogrammal, az Nmap által biztosított egyik parancsfájl segítségével és az nmap --script=malware [célpont] parancs lefuttatásával ezt könnyen kiderítheti. A version kategóriába sorolt parancsfájlok mindig lefutnak, beleértve a parancsfájl letapogatás kiválasztását is. A script.db fájl maga is egy Lua parancsfájl és a --script-updatedb paraméteren keresztül frissíthető.

Minden NSE parancsfájl egy darab Lua kód, mely két szakaszból áll: egy teszt, hogy az adott parancsfájl lefuttatható-e egy megadott állomáson vagy kapun (ezek neve hostrule vagy portrule) és egy action szakasz, mely akkor fut le, ha az előző teszt visszatérési értéke igaz. A parancsfájlok az Nmap által korábban összegyűjtött legtöbb információhoz hozzáférnek. Ezek minden állomásnál az IP cím, az állomás neve (ha elérhető) és az operációs rendszer. Ha a parancsfájl célja egy kapu, akkor hozzáfér a kapu számához, a protokollhoz (tcp, udp vagy ssl), a kapu mögött futó szolgáltatás nevéhez és feltételesen a változat érzékeléssel megszerzett információkhoz. Az NSE parancsfájlok hagyományosan rendelkeznek egy nse kiterjesztéssel. Bár jelenleg nem szükséges követnie ezt a szokást, ez a jövőben változhat. Az Nmap figyelmeztetni fogja, ha egy fájlnak más a kiterjesztése. Az NSE-ről további bőséges dokumentációt találhat (beleértve a programozói felület leírását) a https://nmap.org/nse/ címen.

-sC

végrehajt egy parancsfájl alapú letapogatást az alap paransfájl készlettel (egyenértékű a --script=safe,intrusive paraméterrel

--script <paransfájl kategória|könyvtár|fájlnév|all>

Lefuttat egy parancsfájl alapú letapogatást (mint az -sC) a kiválasztott parancsfájlokkal. A paraméterek lehetnek parancsfájl kategóriák, meghatározott parancsfájlok, parancsfájlokat tartalmazó könyvtárak, melyek a célpont ellen lesznek kipróbálva. Az Nmap a paramétereket először kategóriáknak próbálja értelmezni, azután fájloknak vagy könyvtáraknak. Abszolút útvonalak használata egyértelmű, a relatív útvonalak keresési sorrendje az első találatig: --datadir/; $(NMAPDIR)/; ~user/nmap/ (Windows alatt nem); NMAPDATADIR/ vagy ./. Ezen könyvtárak mindegyikében a scripts/ alkönyvtár is ki lesz próbálva. Az all paraméter megadásával az Nmap adatbázisában lévő valamennyi parancsfájl végrehajtódik.

Ha egy megadott könyvtárat megtalál, az Nmap betölti az összes NSE parancsfájlt (minden nse kiterjesztésű fájlt) a könyvtárból. A fájloknak nse kiterjesztéssel kell rendelkezniük. Az Nmap a parancsfájlok keresésekor nem vizsgálja meg az alkönyvtárakat. Ha egyedi fájlnevet adott meg, akkor nem kötelező a fájlnak nse kiterjesztéssel rendelkeznie.

Alaphelyzetben az Nmap parancsfájlok az Nmap adatkönyvtárának scripts alkönyvtárában találhatóak. A scripts/script.db adatbázisban tárolt paranscfájlok indexeltek. Az adatbázis tartalmazza az összes kategóriához tartozó összes parancsfájlt. Egy parancsfájl több kategóriához is tartozhat.

--script-args=<név1=érték1,név2={név3=érték3},név4=érték4>

Paramétereket adhat át az NSE parancsfájloknak. A paraméterek név=érték párokban kerülnek át a parancsfájlokhoz. Az átadott paraméterek egy Lua táblázatban lesznek tárolva és feldolgozva, melyhez valamennyi parancsfájl hozzáfér. A nevek karakterláncként lesznek kezelve (melyeknek alfanumerikus értékeknek kell lenniük) és a paraméter táblában kulcsként lesznek használva. Az értékek lehetnek karakterláncok vagy maguk is táblázatok (‘{’ és ‘}’ közé zárva. Az altáblázatok segítségével egyes parancsfájloknál felülbírálhatók a paraméterek (mondjuk ha minden parancsfájlhoz más felhasználói név/jelszó párost akar használni). Például átadhatók a következő, vesszővel elválasztott paraméterek: user=bar,password=foo, és anonFTP={password=nobody@foobar.com}. Ha egy parancsfájl paramétereit felül akarja bírálni, használja az altáblázat indexelésére a parancsfájl azonosítóját (id), mivel a parancsfájlok csak így szerezhetnek tudomást a különleges paramétereikről.

--script-trace

Ez a paraméter ugyanazt teszi, mint a --packet-trace, csak egy ISO szinttel feljebb. Ha megadja ezt a aparamétert, akkor az összes, parancsfájl által generált kimenő és bejövő forgalom nyomtatásra kerül. A megjelenített információ tartalmazza a kommunikációs protokollt, a forrást, a célt és az átvitt adatot. Ha az átvitt adatok több, mint 5%-a nem nyomtatható, akkor a kimenet hexadecimális alakban jelenik meg.

--script-updatedb

Frissíti a parancsfájl adatbázist, mely a kategória-cimkék és a fájlnevek közti kapcsolatokat tárolja. Az adatbázis egy Lua parancsfájl, mely akkor lesz értelmezve, amikor a --script paraméterben megadott kategóriák közül ki kell választani a szükséges parancsfájl készletet. Akkor kell lefutatni, amikor megváltozik egy parancsfájl kategória mezője, ha új parancsfájlokat adott hozzá a készlethez, vagy ha eltávolított néhány parancsfájlt a scripts/ könyvtárból.