Nmap.Nmap scripting engine
Sadržaj |
Nmap
Nmap (eng. Network mapper) je besplatan program otvorenog koda za ispitivanje mreže i provjeru sigurnosti. Program omogućuje pregledavanje TCP i UDP portova na ciljanom računalu, otkrivanje servisa koji slušaju na otvorenim portovima, prepoznavanje operacijskog sustava i sl. Iako je Nmap najčešće korišten u sigurnosti, mnogi sistemski i mrežni administratori koriste ga i kao alat za rutinske zadatke poput sastavljanja popisa mrežnog inventara, upravljanja vremenima nadogradnje servisa i nadgledanja uptime-a računala ili servisa. Program je podržan na velikom broju operacijskih sustava (Linux, Microsoft Windows, FreeBSD, OpenBSD, Solaris, IRIX, Mac OS X, Amiga...) Tijekom godina doživio mnoga poboljšanja od kojih su samo neka: manja potrošnja memorije prilikom skeniranja portova, potpuno novi engine za skeniranje portova, interaktivnost za vrijeme izvršavanja i procjena vremena potrebnog za skeniranje. Program je objavljen pod GPL (eng. General Public License) licencom i trenutno se smatra najkvalitetnijim i najnaprednijim programom ove namjene. Iako je program primarno razvijen za Linux/Unix operacijske sustave, zbog njegove kvalitete razvijena je i Windows inačica. Posljednja verzija programa je 6.25, a objavljena je u studenom 2012.
Funkcionalnost alata
Nmap omogućava niz različitih načina pregleda portova i cijelog računala kroz mrežu - omogućavajući nevidljivost te lažiranje izvorišne adrese. Koristi IP pakete sa posebnim sadržajem i omogućava otkrivanje aktivnih/neakitvnih računala; skeniranje portova; detekcija verzije mrežnih servisa tj koji su tipovi aplikacije aktivni; koja im je radna verzija te detekciju verzije operacijskog sustava i vrste uređaja.
Razlikuje 6 različitih stanja portova:
- otvoren (eng. open) – Postoji program koji aktivno sluša na portu i prima TCP ili UDP pakete, što je ujedno jedan od najčešćih razloga skeniranja jer time otkrivamo potencijalne slabosti sustava te koji su servisi u mreži dostupni.
- zatvoren (eng. closed) – Nijedan program ne sluša na portu, on je dostupan i odgovara na upit poslan od strane nmap-a.
- filtriran (eng. filtered) – Nmap ne može odrediti da li je port otvoren ili zatvoren, zato što filtriranje paketa spriječava njegove upite da stignu do željenog porta. U većini slučajeva filtri samo odbacuju pakete koji stižu na ovakve portove i ne vraćaju nikakvu informaciju izvoru paketa, pa se na ovakve portove ponovno šalju upiti što produžuje trajanje pregleda računala.
- nefiltriran (eng. unfiltered) – Port je u potpunosti dostupan, ali ne može ustanoviti da li je port otvoren ili zatvoren.
- otvoren|filtriran (eng. open|filtered) – Nmap klasificira port u ovakvo stanje kad ne može sa sigurnošću utvrditi da li je port otvoren ili filtriran, a događa se kod otvorenih portova koji ne daju nikakav odgovor. Razlog tome može biti odbacivanje paketa od strane programa za filtriranje paketa.
- zatvoren|filtriran (eng. closed|filtered) – ovo se javlja u slučaju kad nmap ne može ustanoviti da li je port zatvoren ili filtriran.
Na stranici insecure.org stoji kako je Nmap:
- fleksibilan: Podržava desetke naprednih tehnika za mapiranje mreže s mnoštvo IP filtera, vatrozidova, rutera i drugih prepreka.
- snažan: Koristi se za skeniranje ogromnih mreža u koje su uključene tisuće računala.
- prenosiv: Podržava većinu operacijskih sustava: Linux, Windows, FreeBSD, OpenBSD, Solaris, IRIX Mac OSX, Sun OS, Amiga itd.
- jednostavan: Iako Nmap nudi bogat set naprednih mogućnosti za napredne pojedince, lako ga koriste i "laici".
- besplatan: Primarni cilj Nmap projekta je učiniti Internet sigurnijim te omogućiti napredan alat za pretraživanje mreže administratorima/sigurnjacima/hakerima. Besplatan je i dolazi sa punim izvornim kodom koji se može modificirati redistribuirati pod istom licencom.
- dobro dokumentiran: Velik trud je uložen za pisanje dokumentacije, tutorijala i knjiga koji su tiskani na nekoliko jezika.
- podržan: Iako dolazi bez garancije, dobro je podržan od strane developera i korisnika.
- nagrađivan: Ostvario je brojne nagrade, uključujući "Proizvod godine za informacijsku sigurnost", predložen u tisućama članaka, nekoliko filmova, desetke knjiga i jednom stripu.
- popularan: Tisuće ljudi preuzimaju Nmap svaki dan za različite operacijske sustave.
Skeniranje pomoću Nmap alata
Nmap šalje „sirove“ (eng. row) TCP pakete radi čega su nam većinom potrebne administratorske ovlasti. Točnost samih podataka ovisi isključivo o povratnim informacijima koje dobiju od ciljanih računala ili vatrozida iza kojih se ta računala nalaze, a oni mogu biti i lažni kako bi zavarali Nmap i slične programe.
-sS odnosno TCP SYN pregled
Najčešće korišten tip pregleda poradi brzine, ali i zbog toga što ga je teško opaziti budući da nikad u potpunosti neuspostavlja TCP vezu, drugim riječima, ne ostvaruje se potpuno rukovanje nego se veza prekida čim se ustvrdi otvoreni port. Nmap šalje SYN paket na ciljano računalo, kao da želi uspostaviti vezu, ukoliko je port otvoren računalo će odgovoriti sa SYN/ACK paketom, a ako nije sa RST paketom. Nakon određenog vremena, ukoliko Nmap ne primi nikakav odgovor ili da primi da je nedostupan, označit će takav port kao filtriran.
-sT TCP connect pregled
Ako korisniku nije dostupan SYN pregled, koristiti će TCP connect pregled, odnosno connect () funkciju koju pozivaju aplikacije kao što su web preglednici, P2P i sl. Manje je učinkovit nego SYN pregled, ali ako je port otvoren uvijek će uspostaviti vezu u postpunosti. Zbog toga se šalje veći broj paketa pa pregled traje duže. Ovakav tip skeniranja koristi se kada korisnik nema administratorske ovlasti.
-sU UDP pregled
Prilično jedostavno skeniranje budući da nema potrebe za rukovanjem, paketi se šalju i primaju ili odbacuju. Problem ovog tipa skeniranje jest da većina TCP/IP stogova ima implementiranu kontrolu brzine primanja/slanja ICMP poruka, pa će poruke o neaktivnim portovima uzrokovati sporiji rad programa. Dakle, ako Nmap kao odgovor primi ICMP poruku „port unreachable error“ znači da je port zatvoren, ako primi „port unreachable“ grešku port je filtiran, no ako port odgovori UDP paketom – otvoren je. Da bi port bio otvoren također ne mora biti nikakvog odgovora te ga Nmap označava kao otvoren|filtriran. Za precizniji pregled koristimo –sV.
-sN, -sF, -sX TCP null, FIN i Xmas pregled
Ovi tipovi pregleda omogućuje identifikaciju samo TCP portova i pritom zahtjevaju administratorske ovlasti. Može se reći da se ovdje radi o skrivenom skeniranju jer se koriste posebno generirani paketi koji uzrokuju paket s RST zastavicom kao odgovor kada je port zatvoren ili nikakav odgovor ako na njemu postoji aktivni servis, drugim riječima ako nema odgovora port je otvoren|filtriran, a u slučaju primljenog ICMP "port unreachable" greške port je filtriran. Ovdje je gotovo nemoguće razlikovati stanje između otvorenog porta i namjerno odbačenih paketa koristeći vatrozid.
-sA TCP ACK pregled
Ova vrsta pregleda služi isključivo za mapiranje pravila vatrozida i za otkrivanje koji su portovi filtrirani. ACK pregled šalje samo ACK paket, a otvoreni i zatvoreni portovi kao odgovor šalju RST paket te ih Nmap označava kao nefiltrirane. Portovi koji ne odgovore ili odgovore nekom ICMP „port unreachable“ greškom se označavaju kao filtrirani.
-sP Ping skeniranje
Jedan od najjednostavniji tipova pregleda. Postoje samo dva razmijenjena paketa po pojedinom računalu, a oni ne služe identifikaciji portova, nego pronalaženju aktivnih računala ili uređaja po pojedinim IP adresama.
Za skeniranje portova koriste se naredbe oblika Nmap [tip skeniranja] [opcije][specifikacija mete]. Tipovi skeniranja su npr: -sP tzv ping skeniranje, -sS SYN skeniranje, -sT connect skeniranje. Opcije koje želimo skenirati mogu se odnositi samo na određeni port (-pX), različite portove (–pX-Y), najpopularnije portove (--top-portsX), da se testiraju sve moguće metode identifikacije (--version-all), detektiranje tipa operacijskog sustava (-osscan-guess), brzinu skeniranje (-TX), detekciju verzija (-a)... Mete mogu biti po hostnameu, CIDR maski, rasponu ili preko datoteke. Postoji još mnoštvo naprednijih tipova pregleda koji zahtijevaju višu razinu poznavanja TCP/IP protokola, implementacije mrežnih stogova i sl. Nedostaci ovog alata su da ga pojedini antivirusni programi smatraju malicioznim te prema tome i blokiraju ga kao npr McAfee antivirusni program; drugi nedostatak je da se prilikom SYN skeniranja mogu srušiti pojedini sustavi.
Online skener
Ukoliko netko ne želi instalirati ili analizira mrežu preko posredničkog računala ne mora preuzeti Nmap s weba nego jednostavno otići na http://nmap.online-domain-tools.com/. Nmap online skener podržava većinu funkcionalnosti Nmap sigurnosnog skenera. Može se koristiti kao jednostavan i brz port skener da se dobije informacija o servisima koji rade na računalu u mreži. Korsteći Nmap online skener, mogu se otkriti računala u mreži i detektirati na kojim operacijskim sustavima rade. Kako je Nmap sam po sebi složen alat, u online verziji postoje 3 različita načina rada. Prva dva su jednostavna za korištenje i mogu ih koristiti početnici. „Brzo“ (eng. quick) skeniranje računala brzo skenira poznate portove i daje brze informacije o portovima i uslugama dostupnih na računalu s interneta. „Cijelokupno“ (eng. full) skeniranje računala je način u kojem Nmap online skener skenira niz portova koji su navedeni u ovom načinu, a to može potrajati ukoliko se želi skenirati više od 10.000 portova. U slučaju velikog broja portova i ograničenja usluge potrebno je podijeliti skeniranje u manje opsežne zahtjeve jer online skener će pretraživati mrežu maksimalno 45 minuta. Posljednja verzija jest prilagođeni (eng. custom) način skeniranja i tu se mogu iskoristiti sve čari Nmap alata. Iako tu postoje određene granice zbog sigurnosih razloga, ukoliko su nam namjere dobre, uvjerava nas autor, trebali bi biti u mogućnosti koristiti Nmap skener za bilo što. U prilagođenom načinu rada skenera korisnik sam određuje način na koji nešto želi skenirati - slično kao da se koristi konzola. S jedne IP adrese moguće je dnevno napraviti 10 upita.
Zanimljive činjenice
Nmap je alat koji nije poznat samo u IT svijetu nego također je uvelike prepoznat i korišten u Hollywoodu za prikaz scena hakiranja. Kako piše na stranici nmap.org korištenje Nmapa u svrhu hakiranja je puno realističnije nego u poznatim „hakerskim“ filmovima gdje se probije mreža unutar 5 sekundi neprekidno udarajući po tastaturi. Jedna od takvih banalnih scena, i moj osobni favorit može se pogledati na [1]. Korištenje Nmapa prikazano je u filmovima kao što je „The Matrix Reloaded“, "Dreddu", "Bourn Ultimatumu", "Die Hard 4", te u „The Girl with the Dragon Tatto“. [2]
--Marina Grubeša 19:15, 12. siječnja 2013. (CET) 19:14, 12. siječnja 2013. (CET)
Zenmap
Zenmap je grafičko korisničko sučelje nmapa koje nudi pojednostavljene opcije mrežnog skeniranja, za razliku od nmap naredba, ponuđeni su profili skeniranja.
Preuzimanje i instalacija alata
Softver je najbolje preuzeti sa službenih stranica nmapa u .exe formatu, te uz par jednostavnih klikova program će se instalirati, ali to nije kraj. Da bi ste se mogli služiti ovim softverom na Windowsima, potrebno je instalirati WinPcap, ukoliko ga nemate, zenmap će upozoriti da ga trebate instalirati. WinPcap je alat namijenjen pristupu mrežnim uslugama na niskoj razini i u realnom vremenu te je namijenjen Windows operacijskim sustavima.
Pokretanje softvera
Kada se pokrene softver prikaže se glavna forma kao na slici. Iz slike možemo vidjeti da je zenmap dostupan na i hrvatskom jeziku, no koliko je to zapravo korisno ovisi o svakom korisniku indvidualno. Skeniranje obavljamo na način da unesemo metu ili IP adresu i pokrenemo skeniranje. Kao u konzoli, možemo odabrati specifični rang IP adresa, bitno je samo ne ostavljati nikakav razmak, ispravno bi bilo npr. 192.168.1.36-80. Po tom je potrebno odabrati tip skeniranja, zadani (eng. defaultni) jest intezivni tip skeniranja koji daje većinu informacija o meti koju pretražujemo. Nakon što odaberemo odredišni mrežni čvor i profil skeniranja, ono se pokreće te se prikazuju rezultati. Tijekom skeniranja zenmap nam daje uvid u trenutno stanje mreže te prikazuje odgovore odredišnog računala Postoji 10 različitih načina skeniranja: intezivno skeniranje, intezivno s UDP-om, intezivno sa svim TCP portovima, intezivno bez ping skeniranja, ping skeniranje, brzo skeniranje, brzo skeniranje s detaljnijim informacijama, brzo skreniranje s traceroutom, regularno skeniranje i sporo opsežno skeniranje.
Rezultati skeniranja
Nakon što je skeniranje završeno podaci se prikazuju u obliku otvorenih servisa i njihovog stanja. U alatu postoji pet kartica koje nam daju uvid na različite ispise rezultata: nmap ispis, portovi/računala, toplogija, detalji skeniranja, te prikaz svih skeniranja koje smo napravili dosada. Nmap pomoću tracerouta broji mrežne skokove do odredišnog računala, pritom gradi sliku topologije mreže te prikazuje brzine između pojednih čvorova. S tim rezultatimo naravno možemo manipulirati. Alat dopušta pohranu na medij, ispis, usporedbu s drugim rezultatima, filtiranje i slično.
Ostale mogućnosti
Osim navedenih, nmap pruža i neke naprednije mogućnosti. Jedna od takvih je pokretanje skripti u programskom jeziku Lua tijekom postupka mapiranja mreže i analize čvorova. Alat nudi, ovisno o vrsti mapiranja (port scanning / host discovery), pokretanje skripti koje izvršavaju dodatne upite o sustavu, ili testiraju njegovu sigurnost. Kategorije skripti i njihov opis dao je kolega Turić. Alat uz navedene mogućnosti nudi još i usporedbu rezultata skeniranja pomoću alata ndiff - u svrhu praćenja stanja nekog mrežnog čvora, te mogućnost otkrivanja greški u mreži pomoću alata ncat (napredna implementacija alata netcat). Nmap je kreiran prije 16 godina te se konstantno razvija, od jednog običnog skenera portova prerastao je u cjelovit skup alata za ispitivanje sigurnosti te za njega ne postoji adekvatna zamjena.
--Marina Grubeša 19:16, 12. siječnja 2013. (CET)
Nmap Scripting engine (NSE)
Nmap scritpting engine (NSE) je jedna od najvažnijih i najfleksibilnijih mogućnosti Nmap-a. Spomenuta mogućnost dozvoljava svojim korisnicima da pišu svoje vlastite skripte kako bi automatizirali veliki broj mrežnih zadataka i tako pojednostavili određene zadatke za krajnje korisnike. Jedna od važnijih činjenica je ta da broj skripi neprestano raste. NSE je dizajniran tako da je u mogućnosti izvršiti razne zadatke koje su tipa:
- Network discovery – glavna značajka Nmap-a. Uz pomoć raznih upita Nmap omogućava istraživanje mreže.
- More sophisticated version detection – Nmap ima mogućnost prepoznavanja velikog broja različitih servisa.
- Vulnerability detection – NSE ima velik broj skripi koje omogućavaju detekciju ranjivost vašeg sustava.
- Backdoor detection – omogućava detekciju backdooring-a.
- Vulnerability exploitation – osim pronalaženja omogućava i eksploatacija pronađenih ranjivosti u sustavu.
--Mario.orsolic 12:17, 10. siječnja 2013. (CET)
--Renato Turić 17:31, 10. siječnja 2013. (CET)
Jezgra NSE-a
NMap Scripting Engine (NSE) se smatra jednom od najačih i fleksibilnijih svojstava Nmapa. Uz pomoć NSEa korisnici mogu pisati i dijeliti skripte da automatiziraju razne mrežne zadatke. Prema službenoj dokumentaciji NSE je dizajniran da bude prilagodljiv sa fokusom na sljedeće zadatke:
- Skeniranje mreže
- Otkrivanje operativnih sustava
- Otkrivanje ranjivosti
- Otkrivanje backdoora
- Iskorištavanje ranjivosti
Jezgra NSEa se sastoji od:
- ugrađenog Lua interpretera
- NSE biblioteka
--Mario.orsolic 12:17, 10. siječnja 2013. (CET)
Lua interpreter
Između raznih skriptnih jezika, Lua je izabrana iz više razloga. Prva stvar koju je tvorac NMapa htio postići jest usklađenost licenci, nakon toga lakoća samog interpretera. Pod ovim se misli na količinu resursa koje će interpreter zauzeti, te lako usklađivanje sa višedretvenosti i mutex isključivanjem pokrenutih skripti. Od svih skriptih jezika tvorcima NMapa Lua je najviše odgovarala, te uz to ima veliku zajednicu koja je konstantno održava.
Nmap API se nalazi unutar Lua namespacea nmap (što znači da pozivi prema nmap resursima sadrže nmap prefix npr. nmap.new_socket()
--Mario.orsolic 12:17, 10. siječnja 2013. (CET)
NSE biblioteke
NSE biblioteke povezuju Lua jezik i Nmap. Ovaj sloj je zadužen za inicijalizaciju interpretera, izvođenje paralelnih skripti, dohvaćanje skripti i sl. U srži on predstavlja skup biblioteka koje olakšavaju i proširuju mogućnosti Nmapa. Većina ovih biblioteka pisana je u Lua jeziku dok su neke pisane u C i C++ jeziku zbog preformansi (bit, pcre biblioteke i sl.)
--Mario.orsolic 12:17, 10. siječnja 2013. (CET)
Kategorije skripti
NSE definira nekoliko kategorija skripti, trenutačne kategorije su sljedeće:
- auth – tip skripti koje pokušavaju odrediti podatke za autorizaciju. Poistovjećuje se sa brute-force napadom.
- default – set standardnih skripti koje se pokreću sa zastavicama –sC ili –A. Neke od standardnih skripti su sljedeće
- Speed
- Usefulness
- Verbosity
- Privacy i dr
- discovery – skripte koje pokušavaju otkriti više o samoj mreži koristeći upite na javne registre, uređaje na kojima je omogućen SNMP, servisne direktorije i slično.
- external – skripte koje mogu poslati podatke nekoj određenoj bazi podataka ili drugim mrežnim resursima. Postoji mogućnost da će vlasnici dotičnih baza podataka snimati podatke koje skripta šalje i na taj način iz tih podataka saznati IP adresu pošiljatelja i primatelja.
- fuzzer – kategorija skripti koje se koriste za pronalaženje bug-ova i raznih drugih ranjivosti softvera.
- intrusive – skripte koje se ne mogu klasificirati u kategoriju sigurnih skripti jer je rizik rušenja ciljanog sustava prevelik te koriste velike količine resursa.
- malware – skripte koje testiraju da li je ciljana platforma zaražena sa određenim malicioznim kodom ili backdoor-om.
- safe – skripte koje nisu dizajnirane za rušenje sustava, ne koriste velike količine bandwith-a ili drugih resursa te ne eksploatiraju „rupe“ u sigurnosti sustava.
- version – posebna kategorija skripti koje se ne mogu eksplicitno izabrati, već se odabiru na taj način da se pokrene zastavica -sV.
- vuln –skripte koje provjeravaju da li postoje specifične ranjivosti i samim time daju rezultat ako su pronađene određene ranjivosti sustava.
--Renato Turić 17:31, 10. siječnja 2013. (CET)
Format skripte
Svaka NSE skripta bi trebala imat format koji je zadan po NSE standardu. Taj format se sastoji od 2 do 5 polja zajedno sa port ili host pravilom te blokom koji se naziva action. Blok action sadrži stvarne instrukcije skripte.
Polje description predstavlja polje koje sadrži opis što točno skripta testira te razna upozorenja i upute za korisnika. Ovisno o kompleksnosti skripte ovo polje može se sastojati od par rečenica ili od nekoliko paragrafa.
Polje categories definira jednu ili više kategorija u koju pripada dotična skripta. Primjer: categories = {„default“,“discovery“,“safe“}
Sljedeće polje predstavlja polje naziva author. Kao što i sama riječ kaže ovo polje sadrži naziv autora skripte. Ovo polje također može sadržavati određene kontaktne informacije.
Polje license, koje je opcionalno, omogućava da Nmap ima legalna prava da distribuira dotičnu skriptu. Kako bi to učinili morate dodati ovu liniju koda:
license = "Same as Nmap--See http://nmap.org/book/man-legal.html"
Polje dependencies sadrži niz imena skripti koje se trebaju pokrenuti rije nego se pokrene skripta. Primjer zadavanje skripti koje se trebaju pokrenuti prije dotične skripte: dependencies = {"smb-brute"}
--Renato Turić 17:31, 10. siječnja 2013. (CET)
Port i host pravila
Skripta sadrži ili port pravilo ili host pravilo. Port pravilo govori o tome koji porotvi se mogu susresti sa skripom. Host pravilo govori o tome da određena skripta može biti pokrenuta samo jednom za određenu IP adresu i to samo onda ako su zadovoljeni svi postavljeni uvjeti. Pravila su funkcije koje vračaju ili true ili false vrijednost.
--Renato Turić 17:31, 10. siječnja 2013. (CET)
Action
Actions predstavljaju srce određene NSE skripte. Actions sadrže sve instrukcije koje se trebaju izvršiti kada se aktivira port ili host pravilo. Actions su također funkcije koje vračaju vrijednosti nil (u Lua jeziku nil vrijednost predstavlja vrijednost koja obično označava da je neka važna vrijednost odsutna) ili određeni string.
--Renato Turić 17:31, 10. siječnja 2013. (CET)
Nmap API
Nmap API sprema razne informacije o stanjima portova, verzijama sustava i ostalim informacijama koje korisnik zahtjeva prilikom izvršavanja skripti. Uz to također omogućava sučelje prema Nsock biblioteci za efikasnije mrežne ulaze/izlaze.
Efikasan NSE zahtjeva više od samog Lua interpretera. Korisnici trebaju jednostavan pristup podacima koje je Nmap prikupio o ciljanim hostovima. Podaci su proslijeđeni kao argumenti za metodu action. Argumenti su port i host. Spomenuti argumenti su tablice iz programskog jezika Lua. Ako skripta odgovara određenom host pravilu onda dobiva samo host tablicu, u slučaju da odgovara port pravilu onda dobiva i host i port tablicu. Vrijednosti koje se nalaze u tim tablicama su spremljene u raznim varijablama, te varijable su sljedeće: host, host.os, host.name, host.targetname, host.directly_connected, host.mac_addr, host.mac_addr_next_hop, host.mac_addr_src, host.interface, host.bin_ip, host.bin_ip_src, host.ip, port, port.number, port.protocol, port.service, port.version
Kako bi se dopustila efikasna i paralelna mreža I/O, NSE osigurava sučelje prema Nsock-u. Nsock je Nmap biblioteka za sockete.
NSE također osigurava mehanizam za obrađivanje iznimaka koji nije zastupljen u Lua programskom jeziku.
Registri u NSE-u je prikazan kao Lua tablica (nmap.registry). Ono što treba naglasiti je to da su registri vidljivi za sve skripte. Svaka skripta može čitati i pisati u registru.
--Renato Turić 17:31, 10. siječnja 2013. (CET)
Primjeri
- nmap --script default [targetIP]
Kategorija default skripti će vratiti rezultate o operativnom sustavu, workgruop nazivu, informacije o netbiosu
- nmap --script external [targetIP]
Skripte koje vraćaju rezultate tipa geografskog položaja , naziv organizacije i dometu mreže.
- nmap --script vuln [targetIP]
Skripte koje provjeravaju da li ciljani sustav ima određene, uobičajene, ranjivosti.
--Renato Turić 17:31, 10. siječnja 2013. (CET)
Primjer vlastite skripte
Ovo je kratka i jednostavna skripta koja će nakon skeniranja mreže ispisati koliko uređaja koristi koji operativni sustav.
Skriptu možete preuzeti ovdje.
- nmap -F -O --script os-sum.nse 192.168.1.1-25
--Renato Turić 17:31, 10. siječnja 2013. (CET)
Pisanje vlastite skripte i rješavanje problema
Kao što je već navedeno većina skripti pisana za NSE je u Lua jeziku koji je dosta direktan. No osim što je potrebno poznavanje programskog jezika i samog problema kojeg programer želi riješiti postoje određene strukture kojih se mora držati prilikom pisanja skripti. Skripta se dijeli na tri dijela head , rule i action.
Head
Glava skripte služi u svrhu određenih meta informacija za korisnike skripte, sastoji se od opisa, autora, licence, kategorije u koju skripta spada i same NSEDoc tj. dokumentacije same skripte.
description= [[ Uhvati podatke od skeniranih portova i servisa te ih vraće u obliku os.name | port.number | port.service | port.version ]]
author = "Mario Orsolic" license = "Same as Nmap--See http://nmap.org/book/man-legal.html" categories = {"default", "safe"}
Prije nastavka određene skripte još moramo uključiti potrebne module za izvršavanje koda ako je to potrebno, npr. za pristup stdnse biblioteci pišemo idući kod:
local stdnse = require("stdnse")
Rule
Svaka skripta tijekom svog izvršavanja mora imati pravilo kada će se izvršiti a kada će biti preskočena. Postoji nekoliko vrsta pravila:
- prerule
- portrule
- hostrule
- postrule
Portrule pravila se koriste ako želimo izvršavati skriptu na temelju stanja portova, npr. ako je port 80 otvoren skripta će se izvršiti. Hostrule se za razliku od portrule pravila odnosi na stanje hosta, npr ako host postoji i odgovara tijekom pinganja izvršavamo skriptu.
Action
Akcija je dio koda skripte koji se izvršava ako je zadovoljeno pravilo. Ona inače započinje sa definiranom strukturom
action = function(host,port) end
Unutar ove funkcije pišemo kod koji želimo da skripta izvršava.
Prilikom pisanja skripti korisno je iskoristiti mogućnost Nmap API sučelja koje nam omogućava. Uz pomoć njega možemo pristupiti informacijama koje je određeni scan dohvatio, primjerice port.version, host.os i sl. Više o Nmap API se može pronaći u dokumentaciji .
Za problem uzeli smo ideju sa službene stranice Nmap skripti, bilo je potrebno dohvatiti podatke verzije i fingerprinta skeniranja te ih proslijediti na stranicu exploitsearch.net, te na taj način dobiti nekakve podatke o mogućim propustima koje bi bilo potrebno zatvoriti. Za ovu svrhu koristit ćemo nekoliko modula
stdnse modul: = http://nmap.org/nsedoc/lib/stdnse.html -- Standard Nmap Scripting Engine functions json modul: http://nmap.org/nsedoc/lib/json.html -- rad sa JSON podacima http modul: http://nmap.org/nsedoc/lib/http.html -- rad sa http upitima
Detaljni source kod
https://github.com/originx/SIS_repo
Skripta može primati 3 argumenta, te strukturno ispisivati rezultate u datoteke po potrebi.
- forcedOS = "nazivOS-a"
U slučaju da nmap ne može detektirati OS da ispuni potrebne tablice, korisnik može ručno unijeti naziv sustava koji se nalazi na udaljenom serveru
- exploitsOnly =true/false
Vrati samo rezultate koji odgovaraju oznaci exploit sa stranice exploitssearch.net
- detailed = true/false
Detaljni ispis svakog exploita kojeg je skripta dohvatila Ispis zna biti velik u ovisnosti koliko je ranjivosti pronađeno pa uz upotrebu ovog argumenta poželjno je rezultate spremiti u datoteku.
Primjer rada skripte:
Naredba: nmap server_name -O -script xploitSearch.nse --script-args forcedOS="Linux 2.4.36"
Naredba: nmap server_name -O -script xploitSearch.nse --script-args=' detailed=true,forcedOS=Linux 2.4.36'
Ako želite ispisati rezultate u datoteku, primjerice XML, koristite zastavicu -oX nazivDatoteke.xml.
--Mario.orsolic 17:17, 12. siječnja 2013. (CET)
Sources:
- Fyodor,Fifield. Nmap Scripting Engine. BlackHat USA 2010. Dostupno 07.01.2013 na: http://media.blackhat.com/bh-us-10/whitepapers/Vaskovitch/BlackHat-USA-2010-Fyodor-Fifield-NMAP-Scripting-Engine-wp.pdf
- Nmap NSE dokumentacija. Nmap site. Dostupno 08.01.2013 na: http://nmap.org/nsedoc/
- Nmap API dokumentacija. Nmap site. Dostupno 09.01.2013 na: http://nmap.org/book/nse-api.html
- Općenito o Nmapu: http://www.cert.hr/sites/default/files/CCERT-PUBDOC-2006-01-147.pdf
- Noob youtube tuto's:
- Nmap cheat sheet: http://elf.foi.hr/file.php/254/nmap-quick-reference.pdf
- Nmap bible: http://nmap.org/book/toc.html
- Port scanning: http://nmap.org/book/man-port-scanning-techniques.html
- Fingerprinting (detecting the fingerprint [type] of the OS ): http://nmap.org/book/osdetect.html
- Sve NSE skripte: http://nmap.org/nsedoc/
Mario Oršolić, Renato Turić, Marina Grubeša