Počítače Okna Internet

Referenční příručka Nmap (manuální stránka). Jak používat Nmap ke skenování sítě Skenování jednoho hostitele nebo IP adresy

Pro mnohé z nás, jejichž pracovní úkoly alespoň nějakou dobu úzce souvisejí s informační bezpečností, je Nmap již dlouho známým a užitečným nástrojem. Je stejně nepostradatelný jako teplá přikrývka za chladné zimní noci. Až na to, že Nmap je zatraceně účinná deka.

Nmap je populární a výkonný multiplatformní síťový bezpečnostní skener s příkazovým řádkem, který lze použít k extrémně efektivní kontrole jakékoli sítě. Může vám také pomoci získat přehled o systémech, které se připojily k vaší síti; můžete jej použít ke zjištění IP adres všech živých hostitelů, skenování otevřených portů a služeb běžících na těchto hostitelích a mnohem, mnohem více.

Nmap je bezpochyby nejuniverzálnějším skenerem portů, který dnes existuje. Ano, můžete najít rychlejší skenery, ale žádný není tak užitečný a prostě nepostradatelný pro řešení mnoha a mnoha vašich úkolů. A naprostá většina profesionálů v oblasti informační bezpečnosti bude s tímto tvrzením kategoricky souhlasit.

Mnohem méně lidí však ví, že jednou z nejzajímavějších funkcí Nmapu je možnost používat skripty NSE, což vašemu oblíbenému nástroji pro zabezpečení sítě poskytne ještě větší flexibilitu a efektivitu. S jejich pomocí můžete dělat věci, které byste ani od tak velmi pokročilého skeneru portů, jako je Nmap, nečekali.

Pojďme se na skripty NSE podívat blíže a možná vás jejich potenciál příjemně překvapí.

Jinými slovy, kromě standardní kontroly otevřených portů skenerem Nmap máte pomocí NSE také možnost získat rozšířené informace o službách, které na něm běží. Například pomocí skriptů NSE se můžete hlouběji podívat na své síťové služby a zjistit, jak dobře jsou nakonfigurovány, jaké informace jsou k dispozici, zda se používají slabé přihlašovací údaje atd. Skripty NSE ve skutečnosti činí Nmap flexibilní platforma pro interakci se síťovými službami.

Skriptovací modul Nmap Scripting Engine

Vývojový tým skeneru portů Nmap vymyslel a vytvořil skriptovací engine primárně pro řešení problémů, jako jsou:

1. Průzkum sítě

Toto je hlavní praktická aplikace Nmap. Některé skripty jsou navrženy tak, aby usnadnily, optimalizovaly a urychlily práci vašeho oblíbeného skeneru portů. Některé příklady jejich použití zahrnují provádění úkolů, jako jsou:

  • vyhledávání dat WHOIS (síťový protokol aplikační vrstvy založený na protokolu TCP; jeho hlavní aplikací je získávání registračních údajů o majitelích doménových jmen, IP adres a autonomních systémů v textové podobě) pro odpovídající domény;
  • zasílání dotazů na hlavní regionální servery WHOIS ARIN (Severní Amerika), RIPE (Evropa a Střední východ) nebo APNIC (Asie a Tichomoří) za účelem určení vlastníka konkrétní IP adresy;
  • identd-search na otevřených portech (umožňuje identifikovat uživatele, kteří jsou k nim připojeni);
  • vytváření požadavků prostřednictvím protokolu SNMP (internetový protokol pro správu zařízení v sítích IP založených na architekturách TCP/UDP);
  • sestavování seznamů dostupných zdrojů a služeb prostřednictvím síťových protokolů pro vzdálený přístup NFS, SMB nebo RPC.

2. Sofistikovanější verzování

Verzovací systém Nmap pro služby a aplikace je schopen rozpoznat tisíce různých služeb pomocí sond a shody signatur regulárních výrazů, ale není všemocný. Například identifikace služby Skype v2 vyžaduje dvě nezávisle fungující sondy, jejichž možnosti verzování nejsou příliš flexibilní. Nmap je také schopen rozpoznat některé ze služeb SNMP, pokud se pomocí hrubé síly pokusí vyjmenovat několik stovek názvů komunit. Oba výše uvedené úkoly nejsou příliš vhodné pro použití standardních metod verzování Nmap, ale oba lze snadno provést pomocí NSE. Z tohoto důvodu nyní verzovací systém standardně volá NSE, aby vyřešil úlohu verzování při zpracování některých komplexních služeb.

3. Hledejte zranitelnosti

Když je objevena nová zranitelnost, stane se veřejně známou a odborníci na síťovou bezpečnost naléhavě potřebují prohledat své sítě, aby rychle identifikovali zranitelné systémy, než to za ně udělají padouši. Přestože Nmap není plnohodnotný skener zranitelnosti, výkonné schopnosti NSE mu umožňují provádět kontroly zranitelnosti i při velmi přísných požadavcích. Když například chyba Heartbleed v kryptografickém softwaru OpenSSL ohrozila stovky tisíc systémů po celém světě, vývojáři Nmap reagovali sepsáním skriptu pro detekci ssl-heartbleed do dvou dnů.

4. Detekce zadních vrátek

Mnoho kybernetických útočníků, stejně jako někteří automatizovaní červi, za sebou zanechávají zadní vrátka, aby si v budoucnu zajistili mezeru, která jim umožní snadněji proniknout do vašeho systému. Některá z těchto zadních vrátek lze detekovat pomocí standardního verzování Nmap na základě shody signatur regulárních výrazů, ale mnoho složitějších červů a zadních vrátek vyžaduje ke spolehlivé detekci pokročilé schopnosti NSE. NSE se používá zejména k detekci backdoor DoublePulsar, který využívá zranitelnost v implementaci protokolu SMB, verze backdoor pro server UnrealIRCd IRC a také FTP servery vsftpd a ProFTPd.

5. Detekce zranitelnosti

NSE je implementován v obecném skriptovacím jazyce a lze jej dokonce použít k vytváření exploitů, které vám pomohou odhalit zranitelnosti dříve, než se stanou známými veřejnosti. Tato schopnost přidávat vlastní skriptované exploity může být pro některé lidi (především penetrační testery) extrémně užitečná. NSE však stále není plnohodnotnou platformou pro vytváření signatur a exploitů, jako je Metasploit.

Jaké kategorie skriptů NSE existují?

Aktuálně existuje 598 skriptů NSE, které můžete najít ve složce "scripts", podadresáři hlavního adresáře Nmap. Pro lepší výkon jsou všechny skripty indexovány v databázi „scripts/script.db“, která označuje, do které kategorie nebo kategorií každý skript patří.

V závislosti na zamýšleném použití a pro zjednodušení jejich použití jsou skripty NSE seskupeny do různých kategorií. V současnosti jsou definovány následující kategorie skriptů NSE: auth, broadcast, brute, default. discovery, dos, exploit, external, fuzzer, intrusive, malware, safe, version a vuln (názvy kategorií nerozlišují malá a velká písmena). Níže je podrobnější pohled na každou kategorii:

  • auth- Tato kategorie skriptů se zabývá autentizačními pověřeními (nebo je obchází) v cílovém systému. Příklady takových skriptů jsou "x11-access", "ftp-anon" a "oracle-enum-users". Všimněte si, že skripty, které používají útok hrubou silou k pokusu o určení přihlašovacích údajů, jsou kategorizovány jako brutální.
  • přenos- Skripty v této kategorii se obvykle používají k odhalování hostitelů neuvedených na příkazovém řádku prostřednictvím širokopásmové komunikace s místní sítí. Při použití argumentu skriptu „newtargets“ automaticky přidají nalezené hostitele do fronty skenování.
  • hovado- Tato kategorie skriptů se používá k provádění útoků hrubou silou za účelem získání autentizačních údajů vzdáleného serveru. Nmap nabízí skripty pro útoky hrubou silou na desítky protokolů. Patří mezi ně následující skripty: "http-brute", "oracle-brute", "snmp-brute" atd.
  • výchozí- tato kategorie skriptů definuje ty skripty, které jsou vybrány vývojáři Nmap jako užitečné pro rozšíření funkčnosti skeneru nebo optimalizaci jeho provozu a odkazují se na základní "výchozí" sadu. Spouštějí se při použití voleb "-sC" nebo "-A" a nikoli zadáním konkrétního seznamu skriptů pomocí volby "--script". Tuto kategorii skriptů je možné explicitně specifikovat, stejně jako ostatní, pomocí "--script=default". Tým Nmap se při určování, zda má být konkrétní skript kategorizován jako výchozí, snaží spoléhat na následující požadavky:
    • Rychlost- skenování ve výchozím nastavení by mělo být dokončeno rychle, což vylučuje zahrnutí do této kategorie autentizačních crackerů pomocí metody hrubé síly, webových pavouků, stejně jako jakýchkoli jiných skriptů, jejichž doba skenování pro jednu službu se počítá v minutách nebo dokonce hodinách.
    • užitečnost- Provedení kontroly ve výchozí kategorii vyžaduje získání cenných a aktuálních informací. Jinými slovy, výsledek skenování takového skriptu by měl být srozumitelný a užitečný pro průměrného odborníka na síťovou bezpečnost. Jinak to nemá smysl spouštět standardně.
    • stručnost- výstup informací přijatých skenerem Nmap se používá pro různé účely a potřeby, takže tyto informace by měly být čitelné a stručné. Skripty, které často vytvářejí mnoho stránek s úplným výstupem všech přijatých informací, také nepatří do výchozí kategorie skriptů. Jinými slovy, skripty NSE, které jsou kategorizovány jako výchozí, když nenajdou žádné důležité informace, nezobrazují v sestavě nic. To platí také pro výchozí skripty, které hledají skryté zranitelnosti – vydávají výsledek pouze tehdy, když jsou tyto zranitelnosti nalezeny.
    • spolehlivost- mnoho skriptů se ve své práci může spolehnout na heuristickou analýzu a fuzzy porovnávací data signatur k vyvození určitých závěrů o cílovém hostiteli nebo službě. Příklady takových skriptů jsou "sniffer-detect" a "sql-injection". Takové skripty nebudou zařazeny do výchozí kategorie, protože výsledky jejich práce jsou často chybné a mohou uživatele, který jasně nerozumí všem specifikům jejich práce, uvést v omyl.
    • nevtíravost- některé skripty jsou příliš rušivé, když využívají značné zdroje vzdáleného systému, což může vést k selhání tohoto systému nebo služby, nebo jejich činnost může být považována za útok vzdálených správců. Takové skripty také nejsou zahrnuty ve výchozí kategorii. Nicméně některé "středně agresivní" skripty byly týmem Nmap kategorizovány jako výchozí na základě jejich užitečnosti a toho, jak dobře se mohou chovat s ohledem na další faktory.
    • důvěrnosti- mnoho skriptů může prozradit důvěrné informace třetím stranám na základě velmi specifik jejich práce. Například skripty pro vyhledávání dat WHOIS musí hlásit cílovou IP adresu regionálním registrátorům. Jinými slovy, ve výchozí kategorii skriptů NSE se tým Nmap snaží nepřidávat skripty, které mohou porušovat soukromí.
  • objev- Tato kategorie skriptů se aktivně snaží dozvědět se více o síti odesíláním veřejných požadavků registrátorovi, zařízením s podporou SNMP, adresářové službě atd. Příklady takových skriptů jsou „html-title“ (získá název kořenové cesty webových stránek), „smb-enum-shares“ (uvádí seznam sdílených složek Windows) a „snmp-sysdescr“ (získá podrobné informace o systému přes standardní internet). protokol pro správu zařízení SNMP).
  • dos- Skripty v této kategorii by měly být používány s extrémní opatrností, protože mohou vést k odmítnutí služby. Někdy je používají bezpečnostní testeři k testování zranitelnosti systému vůči útokům odmítnutí služby, ale takové testování může vést k nežádoucím vedlejším účinkům, jako je pád některých zranitelných služeb.
  • využívat- Tyto skripty jsou zaměřeny na aktivní využívání konkrétní zranitelnosti. Příklady této kategorie skriptů jsou "jdwp-exec" a "http-shellshock".
  • externí- skripty v této kategorii mohou odesílat data třetím stranám, které řídí databáze nebo jiné síťové zdroje. Příkladem takového skriptu je „whois-ip“, který se připojuje k serverům WHOIS, aby získal informace o IP adrese cíle. Vždy existuje možnost, že provozovatelé databází třetích stran zaznamenají vše, co jim pošlete, což v mnoha případech bude obsahovat informace o vaší IP adrese a IP adrese vašeho cíle. Většina skriptů, které se zabývají pouze provozem mezi skenovacím počítačem a klientem, do této kategorie nespadá.
  • fuzzer je kategorie skriptů, která je navržena k odesílání neočekávaných nebo náhodných polí do serverového softwaru v každé dávce. I když tato metoda může být užitečná pro hledání neznámých chyb a zranitelností v softwaru, je to pomalý proces, který je také náročný na šířku pásma. Příkladem této kategorie skriptů je „dns-fuzz“, který bombarduje DNS server částečně upravenými doménovými dotazy, dokud server nevypadne nebo nevyprší uživatelsky nastavený časový limit.
  • dotěrný- tato kategorie skriptů zahrnuje ty, které nelze klasifikovat jako bezpečné (bezpečné), protože rizika jsou příliš vysoká, že se cílový systém pod jejich tlakem zhroutí, na cílovém hostiteli budou vyžadovány značné prostředky (například šířka pásma nebo čas procesoru ), nebo některé jiné, jejich spuštění bude správci cílového systému vnímáno jako škodlivá činnost. Příklady takových skriptů jsou „http-open-proxy“ (který se pokouší použít cílový server jako HTTP proxy) a „snmp-brute“ (který se snaží uhodnout takzvaný „řetězec komunity“ zařízení SNMP odesíláním populárních hodnoty jako veřejné, soukromé a cisco). Pokud skript nepatří do speciální kategorie verze, musí být klasifikován jako bezpečný nebo rušivý.
  • malware- tyto skripty kontrolují, zda není cílová platforma infikována malwarem nebo zadními vrátky. Příklady skriptů v této kategorii skriptů jsou „smtp-strangeport“, který monitoruje SMTP servery běžící na neobvyklých číslech portů, a „auth-spoof“, který zjišťuje falešné démony identd (implementující podporu protokolu pro ověřování uživatelů), kteří zatím poskytují falešnou odpověď. než obdrží žádost. Ať už jde o první nebo druhý příklad, toto chování, pokud je zjištěno, je obvykle známkou infekce malwarem v systému.
  • bezpečný- všechny skripty, které nebyly vytvořeny, aby způsobily selhání služby, využívaly velké množství šířky pásma sítě nebo jiných zdrojů a nebyly zaměřeny na zneužití bezpečnostních děr, jsou kategorizovány jako bezpečné. Je mnohem méně pravděpodobné, že přitáhnou pozornost vzdálených správců, ačkoli (stejně jako u jakékoli jiné funkce Nmap) nelze 100% zaručit, že nikdy nepřitáhnou vedlejší pozornost. Většina těchto skriptů provádí úkoly související s obecným průzkumem sítě. Příklady skriptů v této kategorii jsou "ssh-hostkey" (získá klíč SSH hostitele) a "html-title" (získá název z webové stránky). Skripty v kategorii verze nejsou kategorizovány jako bezpečné, ale ostatní skripty, které nejsou bezpečné, musí být definovány jako rušivé.
  • verze- skripty z této speciální kategorie jsou rozšířením funkce zjišťování verzí a nelze je explicitně vybrat. Jsou vybrány ke spuštění pouze při výzvě k určení verze Nmap ("-sV"). Jejich výstup nelze oddělit od výstupu funkce verzování a nefungují jako skripty hostitele nebo služby. Příklady takových skriptů jsou "skypev2-version", "pptp-version" a "iax2-version".
  • vuln- skripty v této kategorii provádějí kontroly na přítomnost nějaké konkrétní známé zranitelnosti a obvykle poskytují pouze ty výsledky, které potvrzují, že taková zranitelnost byla nalezena. Příklady takových skriptů jsou "realvnc-auth-bypass" a "afp-path-vuln".

Skripty se v závislosti na své funkční orientaci a fázi skenování, během které jsou spouštěny, dělí do čtyř typů (některé skripty mohou podporovat několik typů operací najednou):

  • Skripty prerule – Tento typ skriptu se spouští před provedením jakýchkoli operací Nmap, takže se spouštějí před fází skenování, kdy Nmap ještě neshromáždil žádné informace o cíli. Tyto skripty mohou být užitečné pro provádění úloh, které jsou nezávislé na konkrétních cílech kontroly, jako je vytváření požadavků na vysílání na servery DHCP a DNS SD. Některé z těchto skriptů mohou vytvářet nové cíle pro skenování Nmap (pouze pokud zadáte argument NSE "newtargets"). Takže například skript "dns-zone-transfer" může získat seznam IP adres v doméně pomocí požadavku na přenos zóny a pak je automaticky přidat do seznamu cílů pro skenování Nmap. Skripty prerule jsou identifikovány pomocí funkce prerule.
  • Skripty hostitele – Tyto skripty se spouštějí během standardního procesu skenování Nmap poté, co skener Nmap provedl normální operace, jako je zjištění hostitele, skenování portů, verzování a detekce OS na cílovém hostiteli. Tento typ skriptu je volán jednou pro každého cílového hostitele, který odpovídá jeho funkci hostitele. Příklady zahrnují „whois-ip“, který vyhledává informace o vlastníkovi pro cílovou IP adresu, a „path-mtu“, který se pokouší určit maximální velikost IP paketu, který může dosáhnout cíle bez nutnosti fragmentace.
  • Skripty služeb – Tento typ skriptu se spustí, když jsou na cílovém hostiteli nalezeny určité služby. Například Nmap obsahuje více než 15 skriptů služby http, které se spouštějí pro práci s webovými servery. Pokud má hostitel webové servery spuštěné na více portech, lze tyto skripty spustit vícekrát (jeden pro každý port). Toto je nejběžnější typ skriptů v Nmapu a liší se tím, že obsahují funkci portrule, která určuje, proti které z objevených služeb má skript běžet.
  • Postrule skripty – Tento typ skriptu se spustí jednou, poté, co Nmap zkontroluje všechny zamýšlené cíle. Mohou být užitečné pro formátování a prezentaci výstupu informací přijatých skenerem Nmap. Například skript "ssh-hostkey" je běžněji známý jako servisní skript (s definovaným portrem), který se připojuje k serverům SSH, objevuje jejich veřejné klíče a vytiskne je. Ale také obsahuje funkci postrule, která kontroluje duplicitní klíče mezi všemi ověřenými hostiteli a poté vytiskne všechny nalezené. Dalším potenciálním případem použití skriptů tohoto typu je zpětný tisk výstupu skeneru Nmap – například vypsání seznamu všech hostitelů, na kterých běží určitá služba, místo prostého vypsání všech hostitelů, na kterých běží služby. Postrule skripty jsou identifikovány pomocí funkce postrule.

Poznámka: Mnoho skriptů může běžet jako skript předběžného pravidla i jako skript postrule. V těchto případech se doporučuje použít funkci předběžného pravidla, aby se předešlo nesrovnalostem.

Věčný paranoik, Anton Kočukov.


Viz také:

nmap[ <Тип сканирования> ...] [ <Опции> ] { <цель сканирования> }

Popis

nmap(" Síťový mapovač ») je nástroj pro průzkum a zabezpečení sítě s otevřeným zdrojovým kódem. Byl navržen pro rychlé skenování velkých sítí, i když dobře funguje i pro jednotlivé cíle. Nmap originálním způsobem používá raw IP pakety k určení toho, kteří hostitelé jsou v síti k dispozici, jaké služby (název a verze aplikace) nabízejí, jaké operační systémy (a verze OS) používají, jaké typy paketových filtrů/firewallů se používají a mnoho dalších.dalších charakteristik. I když se Nmap běžně používá pro bezpečnostní kontroly, mnoho systémových administrátorů jej považuje za užitečné pro běžné úkoly, jako je monitorování struktury sítě, správa plánů spouštění služeb a sledování doby provozu hostitele nebo služby.

Výstupem Nmap je seznam naskenovaných cílů s dalšími informacemi o každém cíli v závislosti na daných možnostech. Klíčová informace je « tabulka důležitých portů» . Tato tabulka obsahuje číslo portu, protokol, název služby a stav. Stav může být otevřený (otevřený), filtrovaný (filtrovaný), uzavřený (zavřený) nebo nefiltrovaný (nefiltrovaný). Open znamená, že aplikace na cílovém počítači je připravena připojit se/přijímat pakety na tomto portu. Filtrovaný znamená, že port blokuje brána firewall, síťový filtr nebo jiné síťové rušení a Nmap nemůže určit, zda je port otevřený nebo zavřený. Uzavřené porty nejsou spojeny s žádnou aplikací, ale lze je kdykoli otevřít. Porty jsou považovány za nefiltrované, když reagují na požadavky Nmap, ale Nmap nedokáže zjistit, zda jsou otevřené nebo zavřené. Nmap vydává otevřené|filtrované a uzavřené|filtrované kombinace, když nemůže určit, který ze dvou stavů port popisuje. Tato tabulka může na vyžádání také obsahovat podrobnosti o verzi softwaru. Při skenování přes protokol IP (-sO) poskytuje Nmap informace o podporovaných protokolech, nikoli o otevřených portech.

Kromě tabulky důležitých portů může Nmap poskytnout další cílové informace: vyřešená jména DNS, odhad operačního systému, typy zařízení a adresy MAC.

Typické skenování pomocí Nmap je znázorněno v příkladu 1. Jediné argumenty použité v tomto příkladu jsou -A , pro verzi OS, skriptované skenování a trasování; -T4 pro rychlejší provádění; pak dva cílové hostitele.

Příklad 1. Typický příklad skenování pomocí Nmap

# nmap -A -T4 scanme..org) Zajímavé porty na scanme.site (64.13.134.52): (1663 naskenovaných, ale nezobrazených portů je ve stavu: filtrováno) STAV PORTU SERVISNÍ VERZE 22/tcp otevřít ssh OpenSSH 3.9p1 (protokol 1.99) 53/tcp otevřená doména 70/tcp uzavřený gopher 80/tcp otevřený http Apache httpd 2.0.52 ((Fedora)) 113/tcp uzavřený auth Typ zařízení: obecný účel Spuštění: Linux 2.4.X|2.5.X| Podrobnosti 2.6.X OS: Linux 2.4.7 - 2.6.11, Linux 2.6.0 - 2.6.11 Zajímavé porty na hřišti..168.0.40): (1659 naskenovaných portů, které nejsou zobrazeny níže, je ve stavu: uzavřeno) PORT STATE SERVIS VERZE 135/tcp otevřít msrpc Microsoft Windows RPC 139/tcp otevřít netbios-ssn 389/tcp otevřít ldap? 445/tcp otevřít microsoft-ds Microsoft Windows XP microsoft-ds 1002/tcp otevřít windows-icfw? 1025/tcp otevřený msrpc Microsoft Windows RPC 1720/tcp otevřený H.323/Q.931 CompTek AquaGateKeeper 5800/tcp otevřený vnc-http RealVNC 4.0 (Rozlišení 400x250; port VNC: 5900 MAC/Tc.nc.otevřený) 5900 VNC0nc vNC. Adresa: 00:A0:CC:63:85:4B (Lite-on Communications) Typ zařízení: obecné použití Běh: Microsoft Windows NT/2K/XP Podrobnosti OS: Microsoft Windows XP Pro RC1+ do konečné verze Servisní informace: OS: Windows , Windows XP Nmap dokončen: 2 IP adresy (2 hostitelé nahoře) naskenované za 88,392 sekund


Nejnovější verzi Nmap lze stáhnout z

Nmap je kultovní skener, bez kterého se neobejde téměř žádný hacker, takže téma rozšiřování jeho schopností, myslím, zajímá mnohé. Používání dalších nástrojů ve spojení s Nmap je běžnou praxí. Tento článek bude hovořit o tom, jak snadno automatizovat Nmap pomocí vašich oblíbených nástrojů. Je pohodlnější „stisknout jedno tlačítko“ a získat výsledek, než neustále provádět stejnou sekvenci akcí. Používání skriptů v Nmapu může pomoci hackerům hackovat systémy automatickyji a správci systému mohou zkontrolovat, zda v systémech nejsou výchozí díry a včas je opravit.

Pár slov o Nmapu

Jsem si jistý, že většina čtenářů magazínu Hacker ví, co je Nmap, a pravděpodobně jej více než jednou použila k prozkoumání sítě a sběru informací. Pro ty, kteří zapomněli nebo nevědí, pro jistotu připomenu:

  • Nmap je multiplatformní nástroj pro skenování sítě, kontrolu její bezpečnosti, určování verzí OS a různých služeb a mnoho dalšího. Jedná se o velmi flexibilní a snadno rozšiřitelný nástroj a skriptovací stroj NSE to umožňuje;
  • NSE (Nmap Scripting Engine) je výkonná komponenta Nmap, která uživatelům umožňuje psát skripty pro automatizaci široké škály síťových úloh: flexibilnější interakce se stávajícími schopnostmi Nmap, detekce a zneužití zranitelností a další. NSE je založen na překladači jazyka Lua;
  • Lua je skriptovací jazyk podobný JavaScriptu.

Formulace problému

Jak již bylo zmíněno, dnes budeme rozšiřovat funkčnost Nmap psaním vlastních skriptů. Jakýkoli hack/pentest obvykle začíná průzkumem a sběrem dat. Jednou z prvních kontrol je přítomnost otevřených portů na studovaném hostiteli a identifikace běžících služeb. Pravděpodobně neexistuje lepší nástroj pro sběr takových informací než Nmap. Dalším krokem po skenování je obvykle buď vyhledání sploitu pro nalezenou zranitelnou službu, nebo výběr dvojice login:heslo pomocí metody hrubé síly.

Řekněme, že aktivně používáte THC-Hydra brute-forcer k uhodnutí hesel několika služeb (například HTTP-Basic, SSH, MySQL). V tomto případě musíte nastavit hydru na každé službě zvlášť, musíte si zapamatovat vlastnosti služeb a příznaky nutné ke spuštění hydry. A pokud bude nutné brutálně zlikvidovat mnohem více než pět služeb? .. Proč to nezautomatizovat?

Pojďme si proto napsat jednoduchý skript, který zautomatizuje proces spouštění Hydry pro výběr loginů / hesel pro jednu službu (například PostgreSQL). K tomu potřebujeme následující nástroje:

  • nmap;
  • THC-Hydra;
  • jakýkoli textový editor.

Pokud ještě nemáte nainstalovaný Nmap a/nebo Hydra, okamžitě to opravte:

$ sudo apt-get install nmap hydra

Dobře, začněme. Skripty pro Nmap jsou prosté textové soubory s příponou *.nse. Otevřete tedy svůj oblíbený textový editor a vytvořte nový soubor. Použiji Vim:

$ vim hydra.nse

Struktura skriptu NSE

Než přejdeme k psaní, je třeba říci, že všechny skripty mají určitou strukturu. Kromě samotného kódu, který automatizuje určité akce, obsahuje popis skriptu (k čemu je určen a jak jej používat), informace o autorovi, licencích, závislosti na jiných skriptech, kategoriích, do kterých skript patří. , a tak dále. Pojďme se blíže podívat na každou z těchto částí.

Popis skriptu (popis)

Tato část obsahuje popis skriptu, komentáře autora, příklad zobrazení výsledku provádění skriptu na obrazovce a další funkce.

Pro náš skript, který vybírá přihlašovací jména / hesla pro PostgeSQL, bude popis vypadat takto:

Popis = [[ Hrubá síla všech služeb spuštěných na cílovém hostiteli. Výsledky jsou vráceny v tabulce s každou cestou, detekovanou metodou, přihlašovacím jménem a/nebo heslem. ]] --- -- @usage -- nmap --script hydra [--script-args "lpath= , ppath= "] -- -- @output -- SLUŽBA STÁTNÍHO PORTU -- 80/tcp otevřený http -- | hydra: -- | cesta metoda přihlašovací heslo -- | 127.0.0.1/private/index.html Průchod protokolu Digest -- |_ 127.0.0.1/simple/index.txt Základní uživatel qwerty -- -- @args hydra.lpath: cesta k souboru s přihlášeními. Například -- nmap --script hydra --script-args="lpath=/home/my_logins.txt" -- @args hydra.ppath: cesta k souboru s hesly. Například -- nmap --script hydra --script-args="ppath=/home/my_pass.txt"

Komentář; -- - víceřádkový komentář; @usage, @output, @args - příklad volání skriptu, zobrazení výsledku na obrazovce, potřebné argumenty při volání.

Nahoře v @usage vidíme formát spuštění skriptu. V tomto případě je určen pouze název skriptu (hydra). To je možné, pokud je skript umístěn v adresáři / /nmap/scripts/ , jinak k němu budete muset zadat absolutní nebo relativní cestu. V budoucnu umožníme nastavení argumentů při spouštění skriptu. Argumenty se nastavují pomocí parametru --script-args " " . V našem případě nastavíme cestu k přihlašovacímu souboru (lpath) a k souboru s hesly (ppath). Argumenty jsou volitelné: ve výchozím nastavení budeme hledat soubory s názvem login.txt a password.txt v aktuální adresář.

Kategorie, kde se skript nachází (kategorie)

Při psaní skriptu NSE můžete určit jeho kategorii (nebo několik kategorií). To je užitečné, když uživatel Nmap nechce použít konkrétní skript, ale sadu skriptů, které jsou ve stejné kategorii. Příklady některých kategorií:

  • auth - kategorie, ve které skripty definují autentizační data cílového hostitele;
  • brute - kategorie, jejíž skripty pomáhají určovat přihlašovací jména a hesla pro různé služby;
  • default - kategorie, která obsahuje hlavní skripty. Existují některá kritéria, která určují, zda skript patří do této kategorie: rychlost skenování, užitečnost, spolehlivost, důvěrnost, vizuální výstup;
  • malware – kategorie, která pomáhá identifikovat malware.

Pokud například potřebujete spustit všechny skripty z kategorie auth, příkaz bude vypadat takto:

$ nmap --script=auth example.com

V tomto případě budou skripty této kategorie spouštěny postupně pro zadaného hostitele. Náš scénář patří do kategorie brute. Do souboru přidáme následující řádek:

Kategorie = ("brute")

Údaje o autorovi (autor)

Každý skript obsahuje informace o jeho autorovi. V mém případě:

Autor = "Olga Barinová"

Informace o používané licenci (licence)

Nmap vítá veškerý vývoj uživatelů a podporuje sdílení, včetně skriptů NSE. Při zadávání licence potvrzujete právo sdílet skript s komunitou. Standardní licence Nmap vypadá takto:

Licence = "Stejné jako Nmap – viz http://nmap.org/book/man-legal.html"

Přidejme tento řádek také do našeho skriptu.

Závislosti na jiných skriptech (závislosti)

Tato oblast obsahuje názvy skriptů NSE, které musí být provedeny před spuštěním tohoto skriptu, aby bylo možné získat potřebné informace. Například,

Závislosti = ("smb-brute").

V našem případě tato funkce nebude potřeba, takže nebudeme přidávat závislosti.

Hostitel a port (hostitel a port)

Nmap potřebuje vědět, pro které služby a na kterých portech má skript spustit. Pro to platí speciální pravidla:

  • prerule() - skript se provede jednou před skenováním jakéhokoli hostitele, používá se pro některé síťové operace;
  • hostrule(host) - skript je spuštěn pro každého hostitele z tabulky, kterou bere jako argument;
  • portrule(host, port) - skript se spustí pro každého hostitele a pro každý port z tabulek, které bere jako argumenty;
  • postrule() - skript se spustí jednou po skenování libovolného hostitele. Slouží především ke zpracování výsledků, shrnutí statistik a podobně.

Pro tvorbu takových pravidel existují knihovny. Náš skript potřebuje pouze zadat číslo portu (5432) a název služby (postgresql), a pak bude fungovat pouze pro tento port a službu. V NSE je poměrně populární knihovna shortport, která obsahuje různé metody. Použijeme metodu

Port_or_service (porty, služby, protokoly, stavy)

kde porty jsou čísla portů, služby jsou názvy služeb, protos jsou názvy protokolů (například udp), stavy jsou stavy.

Tato metoda vrací hodnotu true, pokud je aktuálně analyzovaná služba na jednom z portů v seznamu portů nebo odpovídá jakékoli službě v seznamu služeb a protokol a stav jsou zkontrolovány na shodu, jinak je vrácena hodnota false.
Aby náš skript fungoval s PostgreSQL, musíme přidat číslo portu a název služby:

Portrule = shortport.port_or_service((5432), ("postgresql"))

Připojení knihoven

Odbočme na chvíli od struktury skriptu a zamysleme se nad tím, jak jsou propojeny externí knihovny, k jejichž funkčnosti potřebujeme mít přístup.

Pokračování dostupné pouze pro členy

Možnost 1. Připojte se ke komunitě „stránky“ a přečtěte si všechny materiály na stránce

Členství v komunitě během stanoveného období vám umožní přístup ke VŠEM materiálům Hacker, zvýší vaši osobní kumulativní slevu a umožní vám nashromáždit profesionální hodnocení Xakep Score!

Níže najdete 20 základních příklady použití příkazu Nmap.

Naučíte se používat Nmap z příkazový řádek v linuxu hledat aktivní hostitele v síti a skenovat otevřené porty.

Uvidíte jak vzdáleně detekovat operační systém pomocí otisků prstů zásobníku TCP/IP a jak zkontrolujte verzi softwaru běžící na vzdáleném serveru.

Také vám ukážu, jak použít Nmap k implementaci skryté skenování, jak definovat firewall A jak změnit MAC adresu.

1. Naskenujte jednoho hostitele nebo adresu IP

Skenovat Samostatná IP adresa:

$ nmap 192.168.1.1

Skenovat server podle Název hostitele:

$ nmap server.site

Zvýšit Úroveň detailu výsledky skenování:

$ nmap -v server..site

2. Skenování více IP adres

Skenovat Více IP adres:

$ nmap 192.168.1.1 192.168.1.2 192.168.1.3 $ namp 192.168.1.1,2,3

Skenovat Podsíť:

$ nmap 192.168.1.0/24 $ nmap 192.168.1.*

Skenovat Rozsah IP adres (192.168.1.0 — 192.168.1.200):

$ nmap 192.168.1.0-200

3. Vyhledejte aktivní počítače v síti

Užitečná rada: Prohledejte síť jediným příkazem ping! Spočítejte všechny aktivní počítače!

Prohledejte síť ve vyhledávání Aktivní hostitelé:

$ nmap -sn 192.168.1.0/24

4. Skenování seznamu hostitelů ze souboru

Naskenujte seznam hostitelů/sítí z Soubor:

$ nmap -iL input.txt

Formát souboru:

# Záznamy mohou být v jakémkoli z formátů, se kterými # Nmap pracuje z příkazového řádku (IP adresy, názvy hostitelů, CIDR, IPv6 nebo oktet # rozsahy). Záznamy musí být odděleny jednou nebo více mezerami, tabulátory # nebo novými řádky. $ cat input.txt server.site 192.168.1.0/24 192.168.2.1,2,3 192.168.3.0-200

5. Vyloučení IP/hostitelů/sítí ze skenování

Vyloučit cíle ze skenování Nmap:

$ nmap 192.168.1.0/24 --vyloučit 192.168.1.1 $ nmap 192.168.1.0/24 --vyloučit 192.168.1.1 192.168.1.5 $ nmap 192.02.1,1281.192,1281.1.1.

Seznam vyloučení hostitelé převzaté ze souboru:

$ nmap 192.168.1.0/24 --excludefile exclusive.txt

Formát souboru s vyloučenými hostiteli je stejný jako výše.

6. Prohledejte konkrétní porty

Skenovat Jeden Port:

$ nmap -p 80 192.168.1.1

Skenovat Více portů:

$ nmap -p 80 443 192.168.1.1

Skenovat Port Range:

$ nmap -p 80-1000 192.168.1.1

Skenovat Všechny porty:

$ nmap -p "*" 192.168.1.1

Naskenujte několik z nich Společné porty:

$ nmap --top-ports 5 192.168.1.1 $ nmap --top-ports 10 192.168.1.1

7. Definice podporovaných IP protokolů

Určete které IP protokoly(TCP, UDP, ICMP atd.) podporuje skenovaný hostitel:

$ nmap -sO 192.168.1.1

8. Prohledejte porty TCP/UDP

Skenovat všechny TCP porty:

$ nmap -sT 192.168.1.1

Skenovat určité TCP porty:

$ nmap -p T:80 192.168.1.1

Skenovat všechny UDP porty:

$ nmap -sU 192.168.1.1

Skenovat konkrétní UDP porty:

$ nmap -p U:53 192.168.1.1

Kombinace skenů různých portů:

$ nmap -p U:53,79,113,T:21-25,80,443,8080 192.168.1.1

9. Rychlé skenování

aktivovat Rychlý režim snímání:

$ nmap -F 192.168.1.1

* Skenuje méně portů než běžné skenování.

10. Zobrazit důvod stavu portu

Ukázat důvod, podle kterého Nmap zvažuje, že port je v určitém stavu:

$ nmap --důvod 192.168.1.1

11. Zobrazit pouze otevřené porty

Ukázat Pouze otevřené porty(nebo případně otevřít):

$ nmap --otevřít 192.168.1.1

12. Definice OS

Jednou z nejznámějších funkcí Nmap je vzdálená detekce OS na základě analýzy TCP/IP stacku.

Nmap posílá sérii TCP a UDP paketů na vzdálený hostitel a zkoumá odpovědi.

Po spoustě testů Nmap porovná výsledky se svou databází a pokud najde shodu, zobrazí informace o OS.

Zapnout Definice OS:

$ nmap -O 192.168.1.1

13. Určení verze Služeb

Zapnout Určení verze služeb:

$ nmap -sV 192.168.1.1

* Určuje verze programů spuštěných na vzdáleném serveru.

14. Detekce firewallu

Zjistěte, zda je váš počítač nějakým chráněn Paketové filtry nebo firewall:

$ nmap -sA 192.168.1.1

15. Spoofing MAC adresy

Změna MAC adresy:

$ nmap --spoof-mac 00:11:22:33:44:55 192.168.1.1

Změňte MAC adresu Náhodný MAC:

$ nmap --spoof-mac 0 192.168.1.1

16. Kontrola firewallu na zranitelnosti

Tyto tři typy skenování používají jemnou mezeru v TCP RFC k oddělení otevřených a uzavřených portů.

Když je skenován systém kompatibilní s RFC, jakýkoli paket, který neobsahuje sadu bitů SYN, RST nebo ACK, bude mít za následek odeslání RST v odpovědi, pokud je port uzavřen, nebo nebude mít za následek žádnou odpověď, pokud je port otevřený. .

Protože není nastaven žádný z těchto bitů, pak bude platná jakákoli kombinace zbývajících tří (FIN, PSH a URG).

TCP Null snímání:

$ nmap -sN 192.168.1.1

* Nejsou nastaveny žádné bity (příznaky v záhlaví TCP 0).

TCP Fin snímání:

$ nmap -sF 192.168.1.1

* Je nastaven pouze bit TCP FIN.

TCP Vánoce snímání:

$ nmap -sX 192.168.1.1

* Jsou nastaveny příznaky FIN, PSH a URG (balíček svítí jako vánoční stromeček).

17. Skryté skenování

Užitečná rada: Zůstaňte v anonymitě během skenování portů! Použijte Nmap + Tor + ProxyChains! Bezpečné a snadné penetrační testování!

TCP SYN snímání:

$ nmap -sS 192.168.0.1

* Známé jako polootevřené skenování připojení, protože neotevírá úplná připojení TCP.

18. Zakázat zjišťování hostitele (žádný ping)

Před skenováním neprovádějte ping na hostitele:

$ nmap -Pn 192.168.1.1

19. Zakažte použití DNS

Užitečná rada: Potřebujete zpřísnit zabezpečení na Linuxu? Zašifrujte provoz DNS pro ochranu před spoofingem!

Nikdy neprovádějte reverzní překlad DNS pro každou nalezenou aktivní IP adresu.