Nmap: a „Hacker Tool“ pro bezpečnostní profesionály
Justin Hutchens
pojem „etický hacker“ byl vždy ironický. Rozvíjející se trendy etického hackování a útočné bezpečnosti přeměnily odvětví informační bezpečnosti na jedno z nejvíce sebezáchovných odvětví na světě.
software a nástroje, které se používají k zabezpečení zranitelných informačních aktiv, jsou stejné nástroje, které lze použít k jejich zneužití. Možná je to naopak. Možná, že nástroje, které byly vytvořeny pouze za účelem využití informačních aktiv, se nyní používají k jejich ochraně. Předpokládám, že se jedná o debatu, která by mohla trvat věčně a je opravdu jen dalším příkladem „co přišlo jako první…kuře nebo vejce?“
účelem této eseje není diskutovat o filozofické otázce záměru. Mé úmysly jsou skromnější. Jen se snažím ospravedlnit důležitost nástroje, který byl důsledně označen jako škodlivý hackerský software. Nástroj, na který mám na mysli, je Network Mapper nebo zkráceně nmap. Ať už jste šílený nepoctivý agent, který se snaží podněcovat globální revoluci, nebo profesionál v oblasti zabezpečení sítě (doufejme, že tento, spíše než bývalý), nmap by měl mít trvalé místo ve vaší sadě nástrojů. Možná bychom místo toho, abychom házeli kritiku na extrémně funkční síťový nástroj, měli činit jednotlivce odpovědnými za své činy a zamyslet se nad známým upozorněním Benjamina Parkera… “ s velkou mocí přichází velká odpovědnost.“Navzdory některým tvrzením o opaku není nmap škodlivý software. A myslím, že jediným důvodem, proč je často označován jako takový, je jeho velmi působivý seznam schopností. Navzdory svému potenciálu poškodit může nmap určitě hrát důležitou roli při zabezpečení síťové infrastruktury v profesionálním prostředí.
Nmap se v průběhu let neustále vyvíjel z jednoduchého skenovacího nástroje na plnohodnotnou platformu pro penetrační testování. Může být použit v každém kroku procesu auditu zabezpečení, včetně zjišťování sítě, skenování portů, výčtu služeb, mapování zranitelnosti a dokonce i vykořisťování. V celém tomto článku, budu diskutovat o schopnostech nmap, protože se týkají každého kroku v procesu penetračního testování.
instalace a příprava
je zřejmé, že před použitím nmap je důležité mít v systému, který používáte, nainstalovanou funkční verzi. Ve výchozím nastavení je nmap již nainstalován na většině operačních systémů pro penetrační testování a zabezpečení sítě, jako jsou Kali-Linux, Backtrack, DEFT, Node-Zero, Security Onion a NST. Lze jej však také načíst na téměř jakoukoli platformu podle vašeho výběru. Nmap lze snadno nainstalovat na všechny běžně používané operační systémy, které zahrnují Windows, Linux a OSX. K dispozici je také dokumentace pro instalaci na více obskurních platformách, které zahrnují BSD, Solaris, Aix a AmigaOS. Instalační balíčky a pokyny k provedení instalace na kterémkoli z těchto systémů naleznete na http://nmap.org/book/install.html.
Zenmap-grafické rozhraní
kromě tradičního rozhraní příkazového řádku pro nmap existuje také grafické rozhraní s názvem Zenmap. Zenmap je také integrován do mnoha různých dříve diskutovaných platforem pro penetrační testování. Ve výchozím nastavení však není nainstalován v Kali-Linux(platforma, kterou budu používat pro tento tutoriál). Naštěstí je v instalačním úložišti a lze jej snadno nainstalovat jediným příkazem:
apt-get install zenmap
zenmapovo rozhraní point-and-click nejen účinně zefektivňuje to, co by jinak vyžadovalo složité příkazy, ale může být také velmi užitečným nástrojem pro učení, jak používat nmap. Používá „profily“ k uložení běžně používaných konfigurací skenování pro pozdější úpravy a / nebo použití. Podívejte se na obrázek rozhraní Zenmap, který je uveden na obrázku 1, a krátce se budeme zabývat každou z komponent.
Obrázek 1. Grafické rozhraní Zenmap
první složkou je cílové pole (Obrázek 1. A). V tomto poli můžete určit vzdálené systémy, proti kterým chcete spustit skenování. 192.168.1.1), můžete zadat sekvenční rozsah IP adres (např. 192.168.1.0-255) nebo můžete použít notaci CIDR pro zadání požadované podsítě (např. 192.168.1.0 / 24). Druhou složkou je pole profilu (obrázek 1. B). Kliknutím na rozbalovací šipku napravo od tohoto pole zobrazíte několik předkonfigurovaných profilů pro skenování. Profily umožňují ukládat běžně používané konfigurace skenování pro budoucí použití. Můžete si také vytvořit vlastní profily a poté se objeví v tomto seznamu(o tom, jak to udělat, budeme diskutovat později v tomto článku). Třetí složkou je příkazové pole (Obrázek 1. D). Toto pole bude označovat příkaz, který bude odeslán do backendu. Chcete-li spustit příkaz zobrazený v tomto poli, jednoduše klikněte na tlačítko Skenovat. Hodnotu v tomto poli můžete upravit přímo; bude však automaticky vyplněna na základě hodnot cílového pole a vybraného profilu. Pokud jste v nmap nováčkem, měli byste tomuto poli věnovat velkou pozornost, protože vám poskytne lepší pochopení vhodné syntaxe a použití různých příkazů nmap. Čtvrtou složkou je seznam Host/Service (Obrázek 1. D). Jakmile provedete skenování, informace budou vyplněny v tomto seznamu. Pokud máte vybráno tlačítko Hosts, budou uvedeny všechny objevené IP adresy hostitele. A pokud máte vybráno tlačítko služby, budou uvedeny všechny objevené síťové služby. Konečná složka (Obrázek 1. E) je místo, kde můžete třídit všechny informace, které byly vytvořeny všemi skenováním, které jste provedli. Karta výstup Nmap zobrazí přesný výstup, který by byl poskytnut, pokud by byl příkaz zadán z rozhraní příkazového řádku. Obsah karty porty / hostitelé se bude lišit v závislosti na tom, zda máte pro svůj seznam vybráno tlačítko hostitelé nebo služby. Pokud je vybráno tlačítko Hosts, informace na kartě porty/hostitelé budou odrážet služby, které byly identifikovány na aktivně zvýrazněné IP adrese v seznamu. V opačném případě, pokud je vybráno tlačítko Služby, Informace na kartě porty/hostitelé identifikují všechny hostitele, u kterých bylo zjištěno, že mají konkrétní službu zvýrazněnou v seznamu. Karta topologie poskytne grafické znázornění logické topologie sítě, aby zahrnovala všechny hostitele, které byly objeveny skenováním. Použije vrácené hodnoty TTL (Time-to-Live) k zobrazení logické orientace hostitelů vůči sobě navzájem. Karta podrobnosti hostitele je místo, kde najdete většinu informací, které byly objeveny o vybraném hostiteli. Tyto informace zahrnují MAC adresy, IP adresy, otevřené porty, identifikované služby, informace o operačním systému a veškeré další informace, které byly shromážděny. Nakonec Karta Skenování poskytne historii skenů, které byly provedeny během relace.
v horní části obrazovky uvidíte několik různých rozevíracích nabídek, které obsahují skenování, nástroje, profil a nápovědu. Nabídka nápovědy je samovysvětlující. Nabídka skenování obsahuje možnosti pro vytvoření nových skenů, uložení skenů nebo otevření dříve uložených skenů. Nabídka Nástroje poskytuje některé další funkce, které lze použít k třídění a organizaci informací shromážděných během skenování. A nabídka profil nabízí možnosti vytvořit nové profily skenování nebo upravit stávající profily.
nyní krátce probereme, jak vytvořit nový profil a poté spustit skenování pomocí tohoto profilu. Začít, vyberte rozbalovací nabídku Profil a poté vyberte “ nový profil nebo příkaz.“Tím se otevře konfigurační rozhraní profilu, které lze vidět na obrázku 2.
Obrázek 2. Zenmap Profile Editor
první karta (karta profil) umožňuje vytvořit jedinečný název a popis profilu. Na všech ostatních kartách určíte různé konfigurace, které budou použity při skenování. Jak můžete vidět na kartě skenování zobrazené na obrázku 2, Vytvoření profilu skenování je stejně jednoduché jako zaškrtnutí políček pro možnosti, které chcete povolit, zadávání hodnot, aby bylo možné tyto možnosti efektivně využít, nebo výběr z předdefinovaných možností v rozbalovací nabídce. Pokud si nejste jisti funkcí nebo vhodným použitím jakékoli možnosti, můžete na ni umístit kurzor myši a sloupec nápovědy na pravé straně obrazovky bude automaticky naplněn informacemi o tom, co konkrétní volba dělá, a odpovídajícími hodnotami a syntaxí pro všechna požadovaná vstupní pole. Při každém menším nastavení, které provedete v konfiguraci skenování, se odpovídajícím způsobem upraví příkazové pole v horní části. Díky této funkci je Zenmap mimořádně účinným nástrojem při učení, jak správně používat příkazy nmap. Jakmile nakonfigurujete možnosti skenování podle svých představ, můžete buď vybrat tlačítko Skenování v pravém horním rohu obrazovky pro jedno použití, nebo můžete vybrat Uložit změny vpravo dole. Tlačítko Uložit změny uloží profil s názvem uvedeným na první kartě Konfigurace a poté jej lze použít okamžitě nebo později výběrem podle názvu z rozbalovací nabídky profil na hlavním rozhraní Zenmap. Přestože je Zenmap velmi silný, neměli byste dovolit, aby se stal berlí, která vám brání naučit se funkce příkazového řádku nmap. Přestože Zenmap může provádět mnoho stejných funkcí, stále má svá omezení a není tak silný jako nmap. Pro efektivní využití nmap a jeho plného potenciálu je důležité seznámit se s rozhraním příkazového řádku.
zjišťování sítě
prvním krokem v procesu penetračního testování, o kterém budeme diskutovat, je zjišťování sítě. Před vyhodnocením bezpečnosti informačních systémů v síti musíte nejprve zjistit, co hodnotíte. Existuje řada různých způsobů, jak můžete pomocí Nmap objevit hostitele v síti. V této části, budeme diskutovat o tom, jak používat nmap k provádění objevu hostitele ve vrstvách 2, 3 a 4 modelu OSI a budeme také diskutovat o výhodách a nevýhodách každého z nich. Příklad příkazu k provedení zjišťování vrstvy 2 lze vidět zde:
nmap-PR-sn 192.168.1.0-255
přepínač -PR
určuje ARP ping. To používá pakety layer 2 ARP (Address Resolution Protocol) k identifikaci živých hostitelů v zadaném rozsahu. Dělá to zasláním žádosti o vysílání ARP pro každou z identifikovaných IP adres. Pokud je v síti živý hostitel s jednou z těchto IP adres, tento hostitel odešle odpověď ARP do skenovacího systému s jeho IP adresou a odpovídající MAC adresou vrstvy 2. Nmap bude shromažďovat odpovědi od všech živých hostitelů a poté vrátí seznam hostitelů, kteří byli objeveni. Přepínač -sn
se používá k požadavku, aby nmap neprováděl žádné skenování portů. Tím se zabrání přenosu jakéhokoli dalšího provozu, nad rámec toho, co je nezbytné k provedení zametání host discovery layer 2. Vrstva 2 discovery je efektivní, protože je nejrychlejší ze všech tří možností. Je však omezena skutečností, že může být provedena pouze proti hostitelům, kteří jsou ve stejné místní síti jako systém, který provádí skenování.
pro vzdálené hostitele budete muset použít buď Layer 3 nebo layer 4 discovery. Příklad příkazu, který lze použít k provedení zjišťování vrstvy 3, je:
nmap-PE-sn 109.74.11.0-255
tento příkaz odešle řadu požadavků ICMP echo na každou IP adresu vrstvy 3 v seznamu. Nmap bude shromažďovat všechny ICMP echo odpovědi, které jsou přijaty a vrátí seznam všech živých hostitelů. Toto vyhledávání je pomalejší než provádění ARP ping, ale vrátí výsledky pro hostitele ve vzdálených sítích.
nakonec předpokládejme, že se pokoušíte objevit vzdálené systémy (takže nemůžete použít vrstvu 2), které jsou za bránou firewall, která snižuje veškerý příchozí provoz ICMP(takže nemůžete použít vrstvu 3). Chcete-li tento problém vyřešit, budete muset provést zjišťování na transportní vrstvě (vrstva 4). Existuje několik různých způsobů, jak můžete použít skenování vrstvy 4 k provedení zjišťování. Jednou z účinných metod je použití UDP ping. Příklad příkazu UDP ping je:
nmap-PU53-sn 109.74.11.0-255
tento příkaz generuje řadu požadavků na stav serveru DNS pro každou cílovou IP adresu. Od živých hostitelů bude přijata řada odpovědí na dotazy DNS a nmap tyto výsledky vrátí. Protože DNS je běžně používaná služba na UDP portu 53, je možné pomocí této techniky identifikovat další živé hostitele, kteří mohli být nakonfigurováni tak, aby nereagovali na provoz ICMP. Další účinnou alternativou vrstvy 4 k ICMP ping zametání je použití TCP ACK ping. Příklad toho lze vidět níže:
nmap-PA80-sn 109.74.11.0-255
tento příkaz odešle řadu nevyžádaných odpovědí ACK na zadaný port pro všechny hostitele v rozsahu IP. Protože tyto pakety ACK byly mimo kontext jakékoli zavedené komunikační linky, živí hostitelé odpoví paketem TCP RST, což znamená, že komunikace by měla být přerušena. Nmap shromáždí tyto odpovědi jako označení živých hostitelů a poté vrátí jejich seznam.
skenování portů a výčet služeb
Nyní, když jsme objevili aktivní IP adresy v síti, proti které provádíme penetrační test, musíme dále identifikovat otevřené porty v každém systému a služby běžící na těchto portech. Skenování portů TCP na vzdálených systémech je nejzákladnější funkcí nmap. Chcete-li provést TCP skenování cílového systému, použijte základní příkaz:
nmap 109.74.11.34
stejně jako ostatní příkazy nmap lze také použít k provádění skenování proti více hostitelům pomocí sekvenční řady (192.168.1-255) nebo zápis CIDR (192.168.1.0 / 24). Tento standardní příkaz nmap provádí skenování na 1000 běžně používaných portech TCP. Alternativně můžete určit jeden port, který chcete skenovat, pomocí přepínače-p následovaného číslem portu, který chcete skenovat.
nmap 109.74.11.34 – p 21
tento výše uvedený příkaz prohledá TCP port 21 na zadaném systému. Můžete také skenovat řadu portů pomocí přepínače-p a poté vypsat požadované porty a oddělit je čárkami.
nmap 109.74.11.34-p 80,443
tento příkaz prohledá porty 80 a 443 v cílovém systému. Sekvenční rozsah portů můžete skenovat pomocí přepínače -p
, po kterém následuje první hodnota v rozsahu, pomlčka a poté poslední hodnota v rozsahu.
nmap 109.74.11.34-p 0-100
výše uvedený příkaz prohledá prvních 100 portů. Chcete-li skenovat všechny 65,536 TCP porty na cíl, použijte následující příkaz:
nmap 109.74.11.34-p 0-65535
k identifikaci filtrovaných portů můžete použít skenování TCP ACK. Chcete-li to provést, použijte přepínač-sA. Poté můžete určit port nebo řadu portů. Žádná specifikace portu nebude skenovat standardní porty 1,000. Tím se vrátí seznam filtrovaných portů. Příklad tohoto příkazu je uveden níže:
nmap 109.74.11.34-sA
penetrační testeři a bezpečnostní profesionálové někdy prohledávají pouze otevřené porty TCP v cílových systémech. S výhledem na služby UDP může způsobit, že člověk zcela přehlédne do očí bijící zranitelnosti, které by mohly snadno vést ke kompromisu. Chcete-li vyhledat služby UDP v cílovém systému, použijte následující příkaz:
nmap 109.74.11.34-sU
protože služby UDP nejsou orientovány na připojení stejným způsobem jako služby TCP, bude to trvat déle než typické skenování TCP. Čas potřebný k dokončení skenování UDP lze zkrátit skenováním konkrétních portů. Porty můžete zadat stejným způsobem jako při skenování TCP.
nmap 109.74.11.34-sU-P 69
výše uvedený příkaz provede skenování portu UDP 69, běžně používaného portu pro TFTP (Trivial File Transport Protocol). Je také možné identifikovat verzi a číslo verze pro každou konkrétní službu. Chcete-li to provést, použijte přepínač-sV.
nmap 109.74.11.34-sV
tento příkaz použije kombinaci uchopení banneru a analýzy odezvy sondy, aby se pokusil identifikovat číslo služby a verze této služby pro každý naskenovaný port. Pomocí podobných technik je také možné, aby se nmap pokusil určit operační systém, který běží na cíli. Chcete-li to provést, použijte přepínač -O
.
nmap 109.74.11.34-o
po dokončení buď vrátí pozitivní identifikaci operačního systému, nebo poskytne nejlepší odhad a poté seznam dalších možných operačních systémů.
pokročilé skenovací techniky
při provádění penetračního testu proti středně velkým až velkým podnikovým sítím se často setkáte s běžným problémem. Většina společností a organizací v těchto dnech se staly více bezpečnostní smýšlející a bude pravděpodobně mít firewally nebo systémy detekce narušení stojící mezi vámi a systémy, které se pokoušíte skenovat. Pro skenování takových systémů budeme muset použít některé pokročilejší skenovací techniky. Jedním ze způsobů, jak potenciálně obejít brány firewall a / nebo systémy detekce narušení, je použití některých tradičních technik tajného skenování, které jsou integrovány do nmap. Jednou z metod, kterou lze použít, je použití pomalejší šablony časování. Šablony časování se pohybují od -T0
(paranoidní skenování) až po -T5
(šílené skenování). Čím nižší je hodnota šablony časování, tím pomalejší bude skenování. Pomalejší skenování je méně pravděpodobné, že budou označeny systémy detekce narušení. Příkladem paranoidního skenování by bylo:
nmap 109.74.11.0-255-T0
další technikou, kterou lze použít k maskování skenování, je zaplavení sítě dalším návnadovým provozem pomocí přepínače -D
. Tato funkce vám umožní určit více adres, ze kterých chcete zfalšovat provoz, nebo můžete použít možnost RND k falšování provozu z náhodných adres.
nmap 109.74.11.0-255-D RND:5
kromě provádění tradičního skenování portů TCP cílových systémů bude výše uvedený příkaz také zfalšovat provoz z 5 náhodných adres, aby zamlžil skutečný provoz skenování. Další technikou, kterou lze použít, je změna délky paketů přenášených požadavků. Některé systémy detekce narušení a brány firewall budou klesat pakety na základě délky paketů podpisu. Chcete-li tomu zabránit, můžete určit délku dat pomocí přepínače --data-length
následovaného velikostí paketu v počtu bajtů.
nmap 109.74.11.0-255 — data-length 15
tento příkaz pošle veškerý provoz skenování v paketech o délce 15 bajtů. I když by to mohlo být užitečné, aby se zabránilo některé signature based intrusion detection systems, důsledné odesílání paketů neobvyklé zadané délky paketů by mohlo označit systémy detekce narušení založené na anomáliích. Systémy detekce narušení sítě budou také označovat provoz, pokud se začnete postupně připojovat k systémům v určeném rozsahu sítě. Chcete-li se vyhnout sekvenčnímu provádění skenování, můžete použít přepínač --randomize-hosts
.
nmap 109.74.11.0-255 — randomize-hosts
tento příkaz výše náhodně prohledá každého hostitele v rozsahu místo toho, aby je provedl v pořadí (109.74.11.0, pak 109.74.11.1, pak 109.74.11.2 atd.). I když nemůžete zfalšovat svou IP adresu (protože byste nedostali odpovědi potřebné k určení otevřených portů), můžete zfalšovat svou MAC adresu. Chcete-li to provést, můžete použít přepínač –spoof-mac, následovaný identifikátorem dodavatele, konkrétní MAC adresou nebo 0.
nmap 109.74.11.0-255 –spoof-mac 0
použití 0 jako argument použije náhodnou MAC adresu na provoz skenování. Jedna poslední technika, která stojí za zmínku, je použití přepínače-f na fragment pakety.
nmap 109.74.11.0-255-f
fragmentace paketů oddělí užitečná zatížení dat vašeho provozu skenování do více paketů, což mu umožní snadněji obejít systémy detekce narušení inspekce obsahu nebo brány firewall. Zatímco všechny tyto techniky mohou být účinné pro skenování veřejně přístupných serverů za firewallem, obvykle nejsou dostatečné pro skenování hostitelů v interní síti. Zatímco některé veřejně přístupné servery budou k dispozici pro skenování, velká část vnitřní infrastruktury bude hlubší v síti a nebude tak snadno přístupná. Zvažte schéma na obrázku 3. Toto je jednoduchý příklad společné konfigurace v podnikových sítích.
obrázek 3. Běžná konfigurace sítě
problém, se kterým se zde setkáváme, je, že vnitřní síť leží za interním firewallem, který má přísnější pravidla o vniknutí provozu ve srovnání s externím firewallem. Tento interní firewall pravděpodobně blokuje příchozí provoz ze vzdálených adres na webu; je však možné, že systémy v DMZ mohou komunikovat s interními systémy. Abychom mohli tyto interní systémy skenovat, musíme zajistit, aby systémy v DMZ fungovaly naším jménem. Budeme diskutovat o několika různých způsobech, jak toho dosáhnout, včetně skenování proxy, skenování zombie a skenování FTP bounce.
pravděpodobně nejjednodušší způsob skenování interních systémů je pomocí řetězce proxy. Předpokládejme, že jsme získali přístup k proxy službě v rámci DMZ vyhledáním proxy služby s otevřeným přístupem, hrubým vynucením proxy služby s hydra nebo instalací proxy služby na již ohrožený stroj. Jakmile nakonfigurujete systém tak, aby směroval provoz prostřednictvím tohoto serveru proxy, můžete provádět skenování nmap pomocí skenování úplného připojení (-sT
).
nmap 10.1.1.0-255-sT
pokud není k dispozici žádná proxy služba, existuje několik chytrých způsobů, jak můžete využít stroje v DMZ k získání výsledků skenování na interních systémech. Jedním ze způsobů, jak toho dosáhnout, je použít skenování zombie, označované také jako nečinné skenování. Abychom mohli provést zombie skenování proti systémům na interní síti LAN, musíme najít životaschopného zombie hostitele v DMZ. Hostitel zombie je jakýkoli relativně nečinný systém, který používá inkrementální sekvenování IPID. Abychom našli hostitele zombie, můžeme pomocí skriptu nmap skenovat DMZ pro systém, který odpovídá tomuto popisu.
nmap — script ipidseq 109.74.11.0-255
tento skript pošle sérii paketů každému hostiteli a sleduje čísla IPID pro všechny přijaté odpovědi. Poté bude analyzovat tato čísla IPID a klasifikovat každý systém jako náhodnou sekvenci, všechny nuly nebo přírůstkové. Viz obrázek 4 pro příklad výstupu pro inkrementální systém.
obrázek 4. Zombie hostitel se nachází se sekvenčním skriptem IPID
jakmile jsme získali IP adresu pro náš zombie systém, jsme připraveni se pokusit o skenování zombie. Před řešením, jak provést skenování, krátce prodiskutuji, jak skenování funguje. Viz obrázek 5 pro schéma toho, co se děje, když se provádí skenování zombie proti otevřenému portu.
obrázek 5. Zombie skenování proti otevřenému portu
nejprve náš skener nmap určí aktuální hodnotu IPID systému zombie zasláním nevyžádaného paketu SYN/ACK. Protože zombie systém původně neposlal žádný paket SYN, aby navázal spojení, zombie pak odpoví na náš skener s prvním paketem. Náš skenovací systém pak použije IPID prvního paketu jako referenční bod. Náš skenovací systém na to okamžitě naváže falešným paketem SYN odeslaným do cílového systému pomocí zdrojové IP adresy zombie systému. Protože zdrojová IP adresa je jedna v DMZ, je pravděpodobné, že tento požadavek na připojení bude schopen projít bránou firewall. Pokud cíl obdrží paket a cílový port je otevřený, cíl pak vrátí paket SYN/ACK do systému zombie (kdo si myslí, že poslal původní paket SYN). Protože je tento paket SYN/ACK přijat mimo kontext, zombie systém poté odpoví na cílový systém RST paketem, čímž zvýší jeho hodnotu IPID o jednu. Nakonec náš skener pošle Poslední paket SYN / ACK do zombie systému. Následná první odpověď od zombie zvýší IPID ještě jednou. Pokud je tedy cílený port na vzdáleném systému otevřený, konečná vrácená hodnota IPID bude o dvě čísla vyšší než původní hodnota. Alternativně obrázek 6 znázorňuje, co se děje, když je port cílového systému uzavřen.
obrázek 6. Zombie scan proti uzavřenému portu
pokud je port v cílovém systému uzavřen, zombie systém neobdrží od cíle žádnou nevyžádanou odpověď, a proto není podněcován k odeslání prvního paketu do cíle. Pokud tedy hodnota IPID konečné první odpovědi vzrostla pouze o jednu, můžeme odvodit, že port je uzavřen, protože do systému zombie nebyla odeslána žádná odpověď SYN/ACK, která by vyvolala první odpověď. V opačném případě, pokud se konečná hodnota IPID zvýšila o dvě z původní hodnoty, pak můžeme odvodit, že port v cílovém systému musí být otevřen, protože musel odpovědět zombie, která podnítila odpověď, která zvýšila hodnotu IPID zombie systému.
i když to může znít velmi komplikovaně; nenechte se zastrašit popisem, protože nmap dělá téměř veškerou práci za vás. Chcete-li skutečně provést skenování zombie, stačí zadat jednoduchý příkaz.
Nmap-sI 192.168.199.132-Pn 192.168.199.130
přepínač -sI
řekne nmap, aby provedl skenování zombie pomocí následující IP adresy jako hostitele zombie (192.168.199.132). Přepínač -Pn
zabraňuje tomu, aby nmap provedl počáteční ICMP ping v cílovém systému před pokusem o skenování. Konečná adresa IP v příkazu tedy identifikuje cílový systém. Výstup pro tento příkaz je vidět na obrázku 7.
Obrázek 7. Zombie scan proti uzavřenému portu
je třeba poznamenat, že rozsah IP, který jsem použil k prokázání tohoto skenování zombie, je soukromý rozsah v mé interní síti. Aby to fungovalo efektivně proti vzdálené síti, jak je popsáno v původním scénáři, musí být systémy v DMZ i interní síti na veřejně směrovatelných rozsazích IP. Pokud je interní síť nakonfigurována na soukromém rozsahu za serverem Nat (Network Address Translation), skener nmap nebude schopen odeslat paket SYN na interní adresu ze vzdáleného umístění.
dalším způsobem, jak používat systémy v rámci DMZ k pokusu o skenování hostitelů v interní síti, je použití FTP bounce. Některé starší FTP servery podporují schopnost přenosu souborů do systému třetí strany. Pokud jste objevili FTP server v DMZ, který umožňuje anonymní přihlášení nebo že jste brute nuceni s hydra, můžete otestovat FTP server a zjistit, zda podporuje FTP bounce. Chcete-li to provést, použijte skript ftp-bounce.
nmap –script ftp-bounce — script-args
ftp-bounce.username=anonymous,
tento příkaz používá skript nmap s argumenty uživatelského jména a hesla proti FTP serveru. Po dokončení bude toto skenování indikovat, zda je možné odrazit FTP nebo ne. Pokud skript označuje, že FTP bounce funguje, můžete použít FTP server k provedení kontroly portů proti jiným systémům v síti. Obrázek 8 ukazuje, jak to funguje.
Obrázek 8. FTP bounce scan
skener se pokusí odeslat binární data pomocí funkce FTP bounce do cílového systému na určeném portu. Pokud jsou data přenášena, FTP server to nahlásí zpět do skeneru, což znamená, že port v cílovém systému je otevřený. Chcete-li provést skenování odrazu FTP, použijte přepínač -b
.
nmap-b ftpuser:: 21 10.1.1.128-255
v tomto příkazu se funkce -b
používá k provedení skenování odrazu ftp pomocí uživatelského jména „ftpuser“ a hesla PassW0rd
proti FTP serveru na 192.168.11.201 hostovaném na portu TCP 21. Akce popsané ve výše uvedeném diagramu pak budou provedeny proti každému ze společných 1000s portů na každém z cílových hostitelů od 10.1.1.128 do 10.1.1.255.
mapování a využívání zranitelností pomocí NSE
jakmile objevíte živé hostitele v cílové síti a podařilo se vám vyčíslit otevřené porty a / nebo spuštěné služby na těchto hostitelích, můžete začít testovat a využívat zranitelnosti. S nově integrovaným NSE (Nmap Scripting Engine) existuje řada předinstalovaných skriptů, které přicházejí se standardní instalací nmap. Tyto skripty mají širokou škálu různých funkcí od základního shromažďování informací (jako jsou dvě, o kterých jsme již diskutovali), mapování zranitelnosti, hrubého vynucení, odmítnutí služby a dokonce i vzdáleného vykořisťování. Všechny tyto skripty jsou umístěny v instalačním adresáři nmap. V Kali-Linuxu je lze nalézt na /usr/share/nmap/scripts/
. Chcete-li tyto skripty procházet a začít s nimi pracovat, použijte následující příkazy:
cd / usr / share / nmap / scripts /
LS
příkaz cd
změní adresář na umístění skriptů NSE a příkaz ls
zobrazí obsah adresáře. Poté můžete zobrazit některý ze skriptů pomocí příkazu cat
a poté název skriptu, který chcete zobrazit. Pro účely této demonstrace použijeme ftp-vuln-cve2010-4221.nse
. Chcete-li zobrazit obsah tohoto skriptu, použijte následující příkaz:
cat ftp-vuln-cve2010-4221.nse
obrázek 9. Obsah skriptu NSE
obrázek 9 zobrazuje obsah tohoto skriptu. Pokud přejdete na začátek obsahu skriptu, uvidíte několik užitečných informací, které obsahují popis skriptu, seznam dalších zdrojů pro referenci a vhodné použití a syntaxi skriptu. Třídění těchto skriptů v adresáři a vyhledání skriptu, který provádí určitou funkci, však může být velmi únavné. Podle mého názoru to je místo, kde Zenmap (grafické rozhraní, o kterém jsme dříve diskutovali) opravdu svítí. Chcete-li ukázat, jak užitečné může být rozhraní Zenmap při práci se skripty NSE, otevřete jej znovu z příkazového řádku příkazem:
zenmap
poté vyberte rozbalovací nabídku Profil a klikněte na „nový profil nebo příkaz.“Po otevření editoru profilu vyberte kartu skriptování v horní části obrazovky. Obrázek 10 zobrazuje obrázek skriptovacího rozhraní Zenmap.
obrázek 10. Zenmap Scripting Interface
seznam všech dostupných skriptů nmap je umístěn na levé straně obrazovky. Můžete si vybrat kterýkoli z nich, aby byl zahrnut do příkazu nmap. Některé skripty budou vyžadovat argumenty, aby bylo možné správně spustit. Post autentizační skripty budou často vyžadovat uživatelské jméno a heslo pro konkrétní síťové služby. V příkladu na obrázku 10 lze dodat argumenty pro konfiguraci útoku hrubou silou, který má být proveden proti službě MySQL. Argumenty skriptu můžete také snadno předat zadáním hodnot v okně argumenty. Tyto argumenty budou automaticky vyplněny v generovaném příkazu nmap. Okno v horním středu poskytuje popis vybraného skriptu, vhodné použití a syntaxi a dokonce i Kategorie Pro popis funkcí skriptu. Tyto kategorie mohou být zvláště užitečné, pokud se pokoušíte provést určitý typ úkolu, například analýzu zranitelnosti. Po spuštění skriptu NSE příkazem nmap uvidíte výsledky ve standardním výstupu nmap. V případě skriptů brute force se na výstupu zobrazí, zda byl útok brute force úspěšný, a pokud ano, zobrazí objevené uživatelské jméno a heslo. V případě skriptů zranitelnosti bude výstup indikovat, zda je zranitelnost přítomna v cílovém systému(systémech). A v případě exploitačních skriptů bude výstup poskytovat informace o užitečném zatížení, které bylo následně doručeno do cílového systému.
skriptování s Nmap
kromě vlastního integrovaného skriptovacího motoru podporuje nmap také několik možností výstupu, které usnadňují použití tradičních skriptovacích jazyků pro provádění výstupní analýzy. Dva výstupní formáty, které mohou být užitečné pro skriptování patří greppable výstup (-oG
) a XML výstup (-oX
). XML může být efektivní pro vyšší úroveň skriptovacích jazyků, které mají moduly, které mohou být importovány pro analýzu XML a greppable výstup může být použit ve spojení s Bash shell skriptování zefektivnit analýzu výsledků nmap. Abychom ukázali, jak lze tuto výstupní funkci použít ve spojení se skriptováním, přezkoumáme jednoduchý 4řádkový skript Bash shell, zobrazený na obrázku 11 pro analýzu výsledků skenování nmap.
obrázek 11. Nmap Result Analysis bash Script
zvažte scénář, ve kterém bylo skenování nmap již provedeno proti velmi velké síti a výstup skenování byl uložen v grepovatelném formátu do networkscan.txt soubor. A předpokládejme, že chceme použít hydra k provedení útoku hrubou silou proti všem FTP službám v síti, ale nechceme ztrácet čas, který by byl potřebný k opětovnému skenování portu 21 v celé síti. Tento jednoduchý skript extrahuje všechny systémy, které mají zadaný port otevřený. První řádek vyzve uživatele k zadání čísla portu. Druhý řádek pak přiřadí hodnotu uživatelského vstupu proměnné „port“. Třetí řádek označuje uživateli, že budou uvedeny všechny systémy s tímto otevřeným portem. A konečně, poslední příkaz je, kde jsme grep ven výsledky z Nmap greppable výstupu. Skript používá příkaz grep k extrahování všech řádků z výstupního souboru, který odkazuje na zadaný port. To bude zahrnovat řádky, které vyjmenovávají každou instanci, kde je port otevřený, uzavřený nebo filtrovaný. Pak, to potrubí, které výstup přes na jinou funkci grep, který extrahuje pouze případy, ve kterých je zadaný port otevřený. Tento výstup je poté převeden na funkci řezu, která určuje znak mezery jako oddělovač a poté vypíše druhé pole. Tímto způsobem náš skript poté odešle IP adresu pro každý systém, který má zadaný port otevřený. Obrázek 12 zobrazuje výstup skriptu.
Obrázek 12. Nmap výsledek analýzy skriptu výstup
i když se jedná o velmi jednoduchý skript, ukazuje, jak snadné může být extrahovat informace z greppable výstupního formátu. Po získání, tyto shromážděné informace by mohly být snadno použity pro další skriptování. Mohl by být použit jako výchozí bod k provedení nějakého dalšího následného úkolu proti každému systému, u kterého bylo zjištěno, že má otevřený konkrétní port.
Nástroj pro penetrační testování typu All-In-One
kombinací různých schopností lze snadno provést kompletní penetrační test pouze pomocí nmap. Nelze popřít, že nmap s působivým seznamem funkcí a schopností je skutečně výkonným nástrojem. A jak roky postupují, bude pravděpodobně ještě silnější, protože do tohoto projektu bude nadále přispívat více lidí. Stejně jako dítě s otcovou zbraní může být nmap nebezpečným nástrojem ve špatných rukou. Pokud je však používán správně, může to být neocenitelný přínos pro zajištění bezpečnosti vaší síťové infrastruktury. Takže vždy nezapomeňte ji používat moudře a dobře ji používat.
o autorovi
Justin Hutchens v současné době provádí analýzu zranitelnosti sítě, detekci narušení a digitální forenzní analýzu pro velkou podnikovou síť s více než 33 000 síťovými systémy. Naplnil řadu různých rolí v oblasti informačních technologií, včetně návrhu sítě, vývoj systému, Správa databází a zabezpečení sítě. V současné době také vyučuje kurzy penetračního testování s operačními systémy Backtrack a Kali-Linux. V současné době je držitelem bakalářského titulu v oboru informačních technologií a několika odborných certifikací, mezi něž patří CISSP (Certified Information System Security Professional), CEH (Certified Ethical Hacker), ECSA (EC-Council Certified Security Analyst) a CHFI (computer Hacking Forensic Investigator).