Zistovanie hostitelskych stanic

Jednym z uplne prvych krokov pri prieskume siete je zuzit niekedy obrovsku mnozinu rozsahov IP adries na zoznam aktivnych alebo zaujimavych hostitelskych stanic. Scanovanie kazdeho portu kazdej jednej adresy nie je obycajne nevyhnutne. Samozrejme, ze ciel scanovania zavisi od typu scanu. Sietovych administratorov mozu zaujimat len hostitelske stanice, na ktorych bezi urcita sluzba, kym spravcov bezpecnosti mozu dbat o kazde zariadenie s IP adresou. Administratorovi moze stacit ICMP ping, aby nasiel hostitelske stanice vo vnutornej sieti, kym tester moznosti vonkajsieho preniknutia do siete moze pouzit mnozinu testov pri pokuse vyhnut sa obmedzeniam firewallu.

Pretoze potreby pri zistovanie hostitelskych stanic su rozmanite, Nmap ponuka siroku paletu moznosti prisposobenia pouzitych technik. Zistovanie hostitelskej stanice sa niekedy nazyva ping scan, zachadza vsak daleko za jednoduchym ICMP echo request spojenou so vsadepritomnym ping nastrojom. Pouzivatelia mozu krok pingovania vynechat uplne pouzitim parametra (-sL) alebo zakazanim pingu parametrom (-P0), ci pouzit v sieti nahodne kombinacie multi-portovych testov TCP SYN/ACK, UDP, a ICMP. Cielom tychto testov je pokusit sa ziskat odpovede, ktore ukazuju, ze IP adresa je vlastne aktivna (je pouzivana hostitelskou stanicou alebo sietovym zariadenim). Vo viacerych sietach je aktivne len male percento IP adries v rovnakom momente, co je obvykle hlavne pre rozsah privatnych adries, napr. 10.0.0.0/8 podla standardu RFC1918. Tato siet obsahuje 16 milionov IP adries, ale videl som, ze ich pouzivali spolocnosti s menej ako tisic pocitacmi. Zistovanie hostitelskych stanic dokaze najst tieto pocitace v riedko alokovanom oceane IP adries.

Ak nie su zadane ziadne parametre pre zistovanie hostitelskych stanic, Nmap odosle kazdej cielovej stanici TCP ACK paket urceny pre port 80 a poziadavku ICMP Echo Request. Vynimkou je je ARP scan pouzivany pre vsetky cielove stanice v lokalnej ethernetovej sieti. Pri neprivelegovanych pouzivateloch UNIXoveho shellu sa namiesto typu ACK odosle paket typu SYN pouzitim systemoveho volaniaconnect() Tieto predvolene nastavenia odpovedaju parametrom -PA -PE. Taketo zistovanie hostitelskych stanic je sice casto postacujuce pri scanovani lokalnych sieti, ale pri testovani bezpecnosti sa odporuca pouzit rozsiahlejsiu mnozinu testov na zistovanie.

Parametre-P* (vyberajuce typy pingu) sa mozu kombinovat. Vyhliadky preniknutia nekompromisnymi firewallmi sa mozu zvysit odoslanim viacerych typov testov vyuzivajuc rozlicne typy portov a priznakov TCP a ICMP sprav. Je dolezite vsimnut si, ze zistovanie ARP (-PR) sa normalne vykonava na cielovych staniciach v lokalnej ethernetovej sieti, aj pri zadani dalsich parametrov -P*, pretoze je to takmer vzdy rychlejsie a efektivnejsie.

Nasledujuce parametre sluzia na ovladanie zistovania hostitelskych stanic.

-sL (List scan)

List scan je neupravena podoba zistovania hostitelskych stanic, ktora jednoducho zobrazi zoznam kazdej hostitelskej stanice specifikovanej sieti bez odoslania paketov cielovym staniciam. V predvolenom nastaveni vykonava Nmap reverzny preklad DNS hostitelskych stanic kvoli ziskaniu nazvov. Je casto prekvapujuce, kolko uzitocnych informacii vydaju jednoduche hostitelske nazvy. Napriklad nazov fw.chi.playboy.com je firewallom spolocnosti Playboy Enterprises kancelarie v Chicagu. Nmap na konci takisto oznami celkovy pocet IP adries. Zoznam scanovania je dobrou kontrolou spravnosti, ze su vybrate nalezite IP adresy. Ak hostitelske stanice vykazuju nazvy domen, ktore nerozponavate, je ich vhodne preskumat hlbsie, aby sa predislo scanovaniu siete nespravnej spolocnosti.

Kedze myslienkou je len jednoduchy vypis zoznamu hostitelskych stanic, parametre funkcionality vyssieho stupna ako scanovanie portov, detekcia OS alebo scanovanie pouzitim pingu nemoze byt kombinovane. Ak chcete zakazat vykonat tieto vyssie funkcie a zakazat scanovanie pouzitim pingu, dalsie informacie su uvedene pri parametri -P0.

-sP (Ping scan)

Tento parameter zabezpeci, ze sa vykona len ping scan (zistovanie hostitelskych stanic) a potom sa zobrazia dostupne hostitelske stanice, ktore odpovedali na scan. Ziadne dalsie testovanie ako scan portov alebo detekcia OS, sa nevykona. Je to o krok dotieravejsie ako list scan a casto sa moze pouzit pre rovnake ucely. Dovoluje jemne preskumanie cielovej siete bez vzbudenia velkej pozornosti. Poznatok o pocte aktivnych hostitelskych stanic je pre utocnikov cennejsi ako zoznam poskytnuty list scanom kazdej IP adresy a nazvu host. stanice.

Systemovi administratori tiez casto ocenia tento parameter. Moze sa pouzit jednoducho na zistenie poctu dostupnych pocitacov v sieti alebo monitorovanie dostupnosti servera. Casto sa to nazyva ping sweep a je spolahlivejsie ako vysielanie pingu broadcastovej adrese, pretoze mnoho hostitelskych stanic neodpoveda na broadcastove poziadavky.

Parameter-sP normalne vysle ICMP echo request a TCP paket na port 80. Ak je prikaz spusteny neprivilegovanym pouzivatelom, vysle sa na port 80 cielovej stanice SYN paket (pouzitim volania funkcie connect()). Ak sa privilegovany pouzivatel pokusa scanovat cielove stanice na lokalnej ethernetovej sieti, pouzivaju sa spravy ARP request (-PR) , ak nie je explicitne zadany parameter --send-ip. Parameter-sP sa moze kombinovat s akymkolvek z testov zistovania ( parametre -P*, s vynimkou -P0) kvoli vacsej flexibilite. Ak sa pouziju nejake z tychto typov testov a parametrov cisel portov, prepisu sa tym predvolene testy (ACK a echo request). Ak sa medzi zdrojovou host. stanicou so spustenym Nmapom a cielovou sietou nachadza nekompromisny firewall, odporuca sa pouzitie tychto pokrocilych technik, inac by mohli hostitelske stanice chybat v pripade, ze firewall vyluci spusteny test alebo odpovede hostitelskych stanic.

-P0 (Bez pingu)

Tento parameter kompletne preskoci fazu zistovania. Nmap obvykle pouziva tuto fazu na zistenie aktivnych pocitacov pred rozsiahlejsim scanovanim. V predvolenom nastaveni vykonava Nmap len intenzivne testovanie ako scanovania portov, detekciu verzie alebo detekciu OS pri zistenych aktivnych hostitelskych staniciach. Zakazanie zistovania hostitelskych stanic parametrom -P0 sposobi, ze Nmap vykona pozadovanie funkcie scanovania na kazdej specifikovanej IP adrese. Takze ak je v prikazovom riadku zadany adresovy priestor triedy B (/16), bude sa scanovat vsetkych 65 536 IP adries. Druhy znak v parametri -P0 je nula a nie pismeno O. Riadne zistovanie hostitelskych stanic sa vynecha ako pri list scane, ale namiesto zastavenia a zobrazenia cieloveho zoznamu, Nmap pokracuje vo vykonavani pozadovanych funkcii ako keby bola kazda cielova IP adresa aktivna.

-PS [portlist] (Ping TCP SYN )

Tento parameter vysiela prazdny TCP paket s nastavenym flagom SYN. Predvoleny cielovy port je 80 (konfigurovatelny v case kompilacie zmenou hodnoty premennej DEFAULT_TCP_PROBE_PORT v subore nmap.h), no alternativny port moze byt specifikovany ako parameter. Zoznam portov oddeleny ciarkou moze byt dokonca specifikovany za parametrom (napriklad -PS22,23,25,80,113,1050,35000), a v tomto pripade sa testy budu vykonavat paralelne pre kazdy port.

SYN flag vyjadruje pre vzdialeny system pokus o nadviazanie spojenia. Za normalnych podmienok by bol cielovy port zatvoreny a spat by bol odoslany RST(reset) paket. Ak sa port zda byt otvoreny, ciel vysle druhy stupen mechanizmu TCP 3-way handshake, a teda odpovie SYN/ACK TCP paketom. Pocitac so spustenym Nmapom potom zrusi vznikajuce spojenie odpovedanim RST paketom namiesto ACK paketom, ktory by dokoncil uplny mechanizmus 3-way-handshake a nadviazal plne spojenie. RST paket nie je odoslany Nmapom, ale kernelom pocitaca, na ktorom je spusteny Nmap, ako odpoved na neocakavany paket SYN/ACK.

Nmap sa nestara o to, ci je port otvoreny alebo zatvoreny. Odpoved s flagom RST alebo SYN/ACK opisana vyssie prezradi Nmapu, ci je hostitelska stanica dostupna a ci odpoveda.

Na pocitacoch s UNIXom moze vseobecne len privilegovany pouzivatel root posielat a prijimat neupravene TCP pakety. Pri neprivilegovanych pouzivateloch sa automaticky pouzije systemove volanie funkcie connect() na kazdy cielovy port. Ma to za efekt odoslanie SYN paketu cielovej stanici ako pokusu o nadviazanie spojenia. Ak funkcia connect() vrati rychlo uspesny vysledok alebo chybu ECONNREFUSED, zakladny TCP stack musel prijat SYN/ACK alebo RST paket a hostitelska stanica je oznacena ako dostupna. Ak je pokus o spojenie neukonceny az do dosiahnutia casoveho limitu, hostitelska stanica je oznacena ako nedostupna. To sa pouziva aj pre spojenia pre protokol IPv6, kedze podpora neupravenych IPv6 paketov v Nmape este nie je dostupna.

-PA [portlist] (Ping TCP ACK)

Ping TCP ACK je dost podoba na prave rozobraty SYN ping. Rozdiel je v tom, ze namiesto SYN flagu je nastaveny ACK flag. Takyto ACK paket znaci potvrdenie dat nad vybudovanym TCP spojenim, ale pritom ziadne taketo spojenie neexistuje, takze vzdialene hostitelske stanice by mali vzdy odpovedat RST paketom, cim v tomto procese prezradia svoju existenciu.

Parameter-PA pouziva rovnaky predvoleny port ako test SYN (80) a takisto moze spracovat zoznam cielovych portov v rovnakom formate. Ak sa o to pokusa neprivilegovany pouzivatel alebo je specifikovany cielova stanica s protokolom IPv6, pouzije sa obvykle systemove volanie funkcie connect(), co nie je bezchybne, pretoze connect() vysiela SYN paket a nie ACK paket.

Pricinou moznosti zvolenia medzi testami SYN a ACK ping je maximalizovat sancu obidenia firewallov. Vela administratorov nastavi router a dalsie jednoduche firewally tak, ze blokuju prichadzajuce SYN pakety okrem tych, ktore su urcene pre verejne sluzby ako napr. webova stranka spolocnosti alebo postovy server. Toto brani pred dalsimi prichodzimi spojeniami k organizacii, zatial co pouzivatelia mozu nadvazovat neobmedzene vychadzajuce spojenia na internet. Tento bezstavovy pristup zabera malo systemovych prostriedkov na firewalle alebo routeri a je siroko podporovany v hardwarovych a softwarovych filtroch. Linuxovsky firewallovy software Netfilter/iptables ponuka parameter --syn na realizaciu tejto bezstavovej metody. Ak su zavedene taketo bezstavove pravidla, je mozne, ze testy SYN ping (-PS) pri zatvorenych cielovych portoch budu blokovane. V takychto pripadoch sa velmi zide test ACK, pretoze je schopny prejst tymito pravidlami.

Dalsi bezny typ firewallu pouziva stavove pravidla, ktore odhadzuju neocakavane pakety. Tato funkcia bola spociatku implementovana hlavne na high-endovych firewalloch, hoci sa v poslednych rokoch stala beznejsou. Linuxovsky system Netfilter/iptables podporuje tuto funkciu cez parameter --state, ktory triedi pakety na zaklade stavu spojenia. Test SYN bude v takychto podmienkach pravdepodobne fungovat, zatial co ACK pakety budu vseobecne povazovane za falosne a budu zahodene. Riesenim tohoto problemu je vykonat oba testy SYN a ACK zadanim parametrov. -PS a -PA.

-PU [portlist] (Ping UDP)

Dalsou moznostou zistenia hostitelskych stanic je UDP ping, ktory vysiela prazdny UDP paket (v pripade, ze nie je specifikovany parameter --data-length ) na dane cielove porty. Zoznam portov ma rovnaky format ako pri predtym rozoberanych parametroch -PS a -PA. Ak nie je specifikovane inac, predvoleny port je 31338, co je mozne zmenit v case kompilacie zmenou premennej DEFAULT_UDP_PROBE_PORT v suborenmap.h. V predvolenom nastaveni sa pouziva velmi neobvykly port, pretoze odosielanie na otvorene porty je casto nevyziadane v tomto specialnom type scanovania.

Po zisteni zatvoreneho portu na cielovej stanici by mal UDP test vratit spravu ICMP Port unreachable. To indikuje Nmapu, ze pocitac je aktivny a dostupny. Mnoho dalsich chybovych sprav ICMP ako host/network unreachable alebo TTL exceeeded indikuje neaktivnu alebo nedosiahnutelnu hostitelsku stanicu. Touto cestou sa interpretuje aj neobdrzanie ziadnej odpovede. Ak sa dosiahne otvoreny port, vacsina sluzieb jednoducho ignoruje prazdny paket a nevratia ziadnu odpoved. To je dovod, preco je predvolenym portom testu port 31338, u ktoreho je vysoka pravdepodobnost, ze sa nebude pouzivat. Niekolko sluzieb, napr. sluzba chargen, odpovie na prazdny UDP paket a takto prezradi Nmapu, ze pocitac je dostupny.

Hlavna vyhoda tohoto typu scanu je, ze obchadza tie firewally a filtre, ktore presetruju len TCP protokol. Niekedy som napriklad vlastnil bezdratovy broadbandovy router Linksys BEFW11S4. Externe rozhranie tohoto zariadenia filtrovalo vsetky TCP porty v predvolenom nastaveni. ale UDP testy stale dokazali zistit spravy port unreachable a takto prezradit zariadenie.

-PE; -PP; -PM (Typy ICMP Pingu )

Okrem neobvyklych, predtym rozoberanych typov TCP a UDP testov, Nmap dokaze odoslat normalne pakety odoslane vsade sa vyskytujucim programom ping. Nmap odosiela paket typu 8(echo request) na cielove IP adresy stanic, ocakavajuc, ze dostupne hostitelske stanice odpovedia spravou typu 0 (Echo Reply). Nanestastie pre sietovych badatelov, mnoho hostitelskych stanic a firewallov v sucasnosti blokuje tieto pakety namiesto odpovede podla normy RFC 1122. Z tohoto dovodu su samotne ICMP scany zriedkavo spolahlive pri nasadeni proti neznamym cielovym staniciam na internete, no pre systemovych administratorov monitorujucich vnutornu siet mozu byt praktickou a efektivnou metodou. Tato moznost sa povoli zadanim parametra -PE.

Aj ked echo request je standardnou poziadavkou ICMP pingu, Nmap pokracuje dalej. Standard ICMP (RFC 792) takisto specifikuje poziadavky timestamp request, information request a address mask request ako spravy s kodmi 13, 15, a 17. Aj ked zdanlivy ucel pre tieto dotazy moze byt ziskanie informacii ako napr. masky adresy alebo momentalny cas, mozu byt lahko pouzite na zistovanie hostitelskych stanic. System, ktory odpovie, je aktivny a dostupny. Nmap v sucanosti neimplementuje poziadavky information request, pretoze nie su siroko podporovane. RFC 1122 trva na tom, ze hostitelska stanica by NEMALA implementovat tieto spravy. Dotazy na casove razitko a masku adresy mozu byt odoslane parametrami -PP a -PM. Odpoved timestamp reply (ICMP kod 14) alebo odpoved mask reply (kod 18) prezradi to, ze hostitelska stanica je dostupna. Tieto dve dotazy mozu byt cenne, ked administrator specificky zablokuje pakety poziadavky echo request a zabudne pritom, ze na tento ucel sa daju pouzit dalsie ICMP dotazy.

-PR (Ping ARP )

Jeden z najbeznejsich pouzivatelskych scenarov pouzitia Nmapu je scanovanie lokalnej ethernetovej siete. Vo vacsine takychto sieti, hlavne tych pouzivajucich privatne adresove rozsahy podla RFC1918, je vacsina IP adries nepouzivana v lubovolnom casovom okamihu. Ak sa Nmap pokusi o odoslanie neupraveneho IP paketu ako napr. ICMP echo request, operacny system musi urcit adresu cieloveho zariadenia (ARP) oodpovedajucu cielovej IP adrese, aby sa mohol odoslat ethernetovy ramec s prislusnou adresou. Tento proces je casto pomaly a problematicky, pretoze operacne systemy neboli vytvorene s ocakavanim, ze budu musiet v kratkom casovom intervale vykonat miliony ARP dotazov na nedostupne hostitelske stanice.

ARP scan prenechava zodpovednost pri poziadavkach ARP request na Nmap a jeho optimalizovane algoritmy a ak je ziskana spiatocna odpoved, Nmap sa nezaujima o IP ping pakety, pretoze uz vie, ze prislusna hostitelska stanica je aktivna. Preto je ARP scan omnoho rychlejsi a spolahlivejsi ako scany zalozene na IP. Takto sa to aj bezne vykonava, ked sa scanuju ethernetove hostitelske stanice, ktore Nmap detekuje v lokalnej ethernetovej sieti, a to aj ked su pouzite odlisne typy pingov(napriklad -PE alebo -PS). Ak sa chcete predsa vyhnut ARP scanu, pouzite parameter --send-ip.

-n (Bez prekladu DNS)

Indikuje Nmapu, aby nikdy nevykonaval reverzny preklad DNS aktivnych IP adries, ktore najde. Kedze DNS je casto pomale, proces sa urychli.

-R (DNS preklad pre vsetky cielove stanice)

Indikuje Nmapu, aby vzdy vykonaval reverzny preklad cielovych IP adries. Za normalnych podmienok sa to vykonava len ak je pocitac povazovany za aktivny.

--system-dns (Pouzit systemovy prekladac DNS)

V predvolenom nastaveni preklada Nmap IP adresy tak, ze odosiela dotazy priamo DNS serverom nastavenym v lokalnej host. stanici a potom caka na odpovede. Vela dotazov (casto tucty) sa vykonava paralelne kvoli vykonu. Specifikovanim toho parametra sa namiesto toho pouzije systemovy prekladac. (jedna IP adresa sucasne prostrednictvom volania getnameinfo()). Je to pomalsie a malokedy pouzivane -- v pripade, ze sa v DNS kode Nmapu vyskytuje chyba, kontaktujte nas prosim. Systemovy prekladac sa vzdy pouziva pre scany IPv6 protokolu.

--dns-servers <server1[,server2],...> (Servery, ktore sa maju pouzit pre reverzne DNS dotazy)

Za normalnych okolnosti sa Nmap pokusi urcit DNS servery z konfiguracneho suboru (UNIX) alebo registrov (Win32) lokalneho pocitaca, avsak alternativne je mozne pouzit tuto moznost na zadanie vlastnych serverov. Tento parameter sa nedodrzuje, pri pouziti parametra --system-dns alebo scanu protokolu IPv6. Pouzitie viacerych DNS serverov je casto rychlejsie ako odoslanie dotazov na jeden server.