Vyhledávání na webu

Jak používat skripty Nmap Script Engine (NSE) v Linuxu


Nmap je populární, výkonný a multiplatformní síťový bezpečnostní skener s příkazovým řádkem a nástroj pro průzkum. Může vám také pomoci získat přehled o systémech, které propojily vaši síť; můžete jej použít ke zjištění všech IP adres živých hostitelů, skenování otevřených portů a služeb běžících na těchto hostitelích a mnoho dalšího.

Jednou ze zajímavých funkcí Nmap je Nmap Script Engine (NSE), který do něj přináší ještě větší flexibilitu a efektivitu. Umožňuje vám psát vlastní skripty v programovacím jazyce Lua a případně tyto skripty sdílet s ostatními uživateli Nmap.

Přečtěte si také: 29 praktických příkladů příkazů Nmap pro Linux

Existují čtyři typy skriptů NSE, a to:

  • Skripty prerule – jsou skripty, které se spouštějí před jakoukoli operací skenování Nmap, jsou spuštěny, když Nmap ještě neshromáždil žádné informace o cíli.
  • Hostitelské skripty – jsou skripty spouštěné poté, co Nmap provedl normální operace, jako je zjišťování hostitele, skenování portů, zjišťování verzí a detekce OS vůči cílovému hostiteli.
  • Skripty služeb – jsou skripty spouštěné proti konkrétním službám naslouchajícím na cílovém hostiteli.
  • Postrule skripty – jsou skripty spouštěné poté, co Nmap zkontroloval všechny své cílové hostitele.

Poté jsou tyto skripty seskupeny do různých kategorií, včetně těch pro autentizaci (auth), zjišťování hostitelů (vysílání), útoky hrubou silou za účelem uhodnutí ověřovacích pověření (brute<), zjišťování dalších informací o síti (objevování), způsobující odmítnutí služby (dos), využívání určité zranitelnosti (zneužití) , atd. Řada skriptů patří do výchozí kategorie.

Poznámka: Než přejdeme dále, měli byste si poznamenat tyto klíčové body:

  • Nespouštějte skripty od třetích stran, aniž byste si je kriticky prohlédli, nebo pouze pokud důvěřujete autorům. Je to proto, že tyto skripty nejsou spouštěny v karanténě, a tak by mohly neočekávaně nebo úmyslně poškodit váš systém nebo narušit vaše soukromí.
  • Za druhé, mnoho z těchto skriptů může běžet buď jako předpravidlo nebo postrule. Vzhledem k tomu se pro účely konzistence doporučuje použít předběžné pravidlo.
  • Nmap používá databázi scripts/script.db ke zjištění dostupných výchozích skriptů a kategorií.

Chcete-li zobrazit umístění všech dostupných skriptů NSE, spusťte na terminálu vyhledávací nástroj takto:

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

Skripty NSE se načítají pomocí příznaku --script, který vám také umožňuje spouštět vaše vlastní skripty poskytnutím kategorií, názvů souborů skriptů nebo názvů adresářů, kde jsou vaše skripty umístěny.

Syntaxe pro povolení skriptů je následující:

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

Popis skriptu můžete zobrazit pomocí volby --script-help. Kromě toho můžete některým skriptům předat argumenty pomocí voleb --script-args a --script-args-file, pozdější se používá k zadání názvu souboru, nikoli arg příkazového řádku.

Chcete-li provést kontrolu s většinou výchozích skriptů, použijte příznak -sC nebo alternativně použijte --script=default, jak je uvedeno na obrázku.

nmap -sC scanme.nmap.org
OR
nmap --script=default scanme.nmap.org
OR
nmap --script default scanme.nmap.org
Ukázkový výstup
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

Chcete-li použít skript pro příslušný účel, můžete nejprve získat stručný popis toho, co vlastně dělá, například http-hlavičky.

nmap --script-help http-headers scanme.nmap.org
Ukázkový výstup
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.

Načítání skriptů NSE pro provádění skenování Nmap

Můžete vybrat nebo načíst skripty k provedení kontroly různými způsoby vysvětlenými níže.

Použití názvu skriptu

Jakmile víte, co skript dělá, můžete pomocí něj provést kontrolu. Můžete použít jeden skript nebo zadat seznam názvů skriptů oddělených čárkami. Níže uvedený příkaz vám umožní zobrazit hlavičky HTTP nakonfigurované na webovém serveru na cílovém hostiteli.

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

Použití kategorií

Můžete také načíst skripty z jedné kategorie nebo ze seznamu kategorií oddělených čárkami. V tomto příkladu používáme všechny skripty ve výchozí kategorii a kategorii vysílání k provedení kontroly na hostiteli 192.168.56.1.

nmap --script default,broadcast 192.168.56.1

Použití * zástupných znaků

To je užitečné, když chcete vybrat skripty s daným vzorem názvu. Chcete-li například načíst všechny skripty se jmény začínajícími ssh, spusťte na terminálu níže uvedený příkaz:

nmap --script "ssh-*" 192.168.56.1

Použití booleovských výrazů

Můžete také vybrat skripty pomocí booleovských výrazů, které můžete vytvořit pomocí operátorů and, or a not. A názvy v booleovských výrazech mohou být kategorie, název souboru z script.db nebo všechny.

Následující příkaz načte skripty z výchozích kategorií nebo kategorií vysílání.

nmap --script "default or broadcast" 192.168.56.10

Což je ekvivalentní:

nmap --script default,broadcast 192.168.56.10

Chcete-li načíst všechny skripty s vynecháním skriptů v kategorii vuln, spusťte tento příkaz na terminálu.

nmap --script "not vuln" 192.168.56.10

Další příkaz vypadá trochu složitě, ale je snadno pochopitelný, vybírá skripty ve výchozích nebo vysílacích kategoriích, přičemž vynechává ty, jejichž názvy začínají na ssh-:

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

Důležité je, že pro načtení skriptů je možné kombinovat kategorie, názvy skriptů, adresář obsahující vaše vlastní skripty nebo booleovský výraz, jako je tento:

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

Předávání argumentů skriptům NSE

Níže je příklad ukazující, jak předat argumenty skriptům pomocí možnosti –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'"

Chcete-li předat číslo portu, použijte možnost -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'"

Výše uvedený příkaz spustí audit konfigurace zabezpečení databázového serveru MySQL proti částem benchmarku CIS MySQL v1.0.2. Můžete také vytvořit své vlastní užitečné soubory auditu pro jiné audity MySQL.

To je prozatím vše. Více informací najdete na manuálové stránce Nmap nebo se podívejte na NSE Usage.

Chcete-li začít s psaním vlastních skriptů NSE, podívejte se na tuto příručku: https://nmap.org/book/nse-tutorial.html

Závěr

Nmap je opravdu mocný a užitečný nástroj, který potřebuje každý správce systému nebo sítě ve svém bezpečnostním arzenálu – NSE mu jednoduše přidává větší efektivitu.

V tomto článku jsme vám představili Nmap Script Engine a podívali jsme se na to, jak najít a používat různé dostupné skripty v různých kategoriích. Máte-li jakékoli dotazy, neváhejte nám napsat prostřednictvím formuláře pro komentáře níže.