Računalniki Windows internet

Nmap Referenčni priročnik (Stran Man). Kako uporabljati Nmap za skeniranje omrežja Skeniranje enega gostitelja ali naslova IP

Za mnoge od nas, katerih delovne naloge so že vsaj nekaj časa tesno povezane z informacijsko varnostjo, je Nmap že dolgo znano in uporabno orodje. Nepogrešljiv je kot topla odeja v mrzli zimski noči. Razen tega, da je Nmap presneto učinkovita odeja.

Nmap je priljubljen in zmogljiv medplatformski skener omrežne varnosti v ukazni vrstici, ki se lahko uporablja za izvajanje izjemno učinkovitega pregleda katerega koli omrežja. Pomaga vam lahko tudi pri pregledu sistemov, ki so povezani z vašim omrežjem; z njim lahko poiščete naslove IP vseh gostiteljev v živo, skenirate odprta vrata in storitve, ki se izvajajo na teh gostiteljih, in še veliko, veliko več.

Brez dvoma je Nmap najbolj vsestranski skener vrat, ki danes obstaja. Da, lahko najdete hitrejše optične bralnike, vendar ni nobenega tako uporabnega in preprosto nepogrešljivega za reševanje mnogih, mnogih vaših nalog. In velika večina strokovnjakov na področju informacijske varnosti se bo kategorično strinjala s to izjavo.

Vendar pa veliko manj ljudi ve, da je ena najbolj zanimivih lastnosti Nmapa možnost uporabe skriptov NSE, ki bodo vašemu najljubšemu orodju za varnost omrežja dali še večjo prilagodljivost in učinkovitost. Z njihovo pomočjo lahko počnete stvari, ki jih niti od tako zelo naprednega skenerja vrat, kot je Nmap, ne bi pričakovali.

Oglejmo si podrobneje skripte NSE in morda vas bo njihov potencial prijetno presenetil.

Z drugimi besedami, poleg standardnega preverjanja odprtih vrat s skenerjem Nmap, imate z uporabo NSE tudi možnost pridobiti razširjene informacije o storitvah, ki se izvajajo na njem. Tako si lahko na primer s skripti NSE globlje ogledate svoje omrežne storitve in vidite, kako dobro so konfigurirane, katere informacije so na voljo, ali se uporabljajo šibke poverilnice itd. Pravzaprav skripti NSE naredijo Nmap prilagodljiv platforma za interakcijo z omrežnimi storitvami.

Zmogljivosti skriptnega motorja Nmap

Ekipa za razvoj skenerja vrat Nmap je zasnovala in ustvarila skriptni mehanizem predvsem za reševanje težav, kot so:

1. Raziskovanje omrežja

To je glavna praktična uporaba Nmapa. Nekateri skripti so zasnovani tako, da olajšajo, optimizirajo in pospešijo delo vašega najljubšega skenerja vrat. Nekateri primeri njihove uporabe vključujejo izvajanje nalog, kot so:

  • iskanje podatkov WHOIS (omrežni protokol aplikacijskega sloja, ki temelji na protokolu TCP; njegova glavna aplikacija je pridobivanje registracijskih podatkov o lastnikih domenskih imen, IP naslovov in avtonomnih sistemov v besedilni obliki) za ustrezne domene;
  • pošiljanje poizvedb na glavne regionalne strežnike WHOIS ARIN (Severna Amerika), RIPE (Evropa in Bližnji vzhod) ali APNIC (Azija in Pacifik), da se določi lastnik določenega naslova IP;
  • identd-search na odprtih vratih (omogoča identifikacijo uporabnikov, povezanih z njimi);
  • izdelava zahtev po protokolu SNMP (internetni protokol za upravljanje naprav v IP omrežjih, ki temelji na arhitekturi TCP/UDP);
  • sestavljanje seznamov razpoložljivih virov in storitev prek omrežnih protokolov za oddaljeni dostop NFS, SMB ali RPC.

2. Bolj prefinjene različice

Sistem za preverjanje različic Nmap za storitve in aplikacije lahko prepozna na tisoče različnih storitev s pomočjo sond in ujemanja podpisov regularnega izraza, vendar ni vsemogočen. Na primer, identifikacija storitve Skype v2 zahteva dve neodvisno delujoči sondi, katerih zmožnosti oblikovanja različic niso zelo prilagodljive. Nmap lahko prepozna tudi nekatere storitve SNMP, če poskuša našteti več sto imen skupnosti z uporabo grobe sile. Obe zgornji nalogi nista zelo priročni za uporabo standardnih metod za urejanje različic Nmap, vendar se obe zlahka opravita z uporabo NSE. Iz tega razloga sistem za urejanje različic zdaj privzeto pokliče NSE, da reši nalogo preverjanja različic pri obdelavi nekaterih zapletenih storitev.

3. Iskanje ranljivosti

Ko se odkrije nova ranljivost, postane javna znana in strokovnjaki za omrežno varnost morajo nujno skenirati svoja omrežja, da hitro prepoznajo ranljive sisteme, preden to storijo slabi fantje namesto njih. Čeprav Nmap ni popoln pregledovalnik ranljivosti, mu zmogljive zmogljivosti NSE omogočajo preverjanje ranljivosti tudi pri zelo strogih zahtevah. Na primer, ko je napaka Heartbleed v kriptografski programski opremi OpenSSL ogrozila na stotine tisoč sistemov po vsem svetu, so se razvijalci Nmapa odzvali s pisanjem skripta za zaznavanje ssl-heartbleed v dveh dneh.

4. Zaznavanje zalednih vrat

Številni kibernetski napadalci, pa tudi nekateri avtomatizirani črvi, puščajo za seboj zadnja vrata, da si v prihodnosti zagotovijo vrzel za lažji prodor v vaš sistem. Nekatera od teh zalednih vrat je mogoče zaznati z uporabo standardne različice Nmap na podlagi ujemanja podpisov regularnega izraza, vendar mnogi bolj zapleteni črvi in ​​zaledna vrata za zanesljivo odkrivanje zahtevajo napredne zmogljivosti NSE. Zlasti NSE se uporablja za odkrivanje backdoor DoublePulsar, ki uporablja ranljivost pri implementaciji protokola SMB, različice backdoor za strežnik UnrealIRCd IRC, pa tudi strežnika vsftpd in ProFTPd FTP.

5. Odkrivanje ranljivosti

NSE, ki je implementiran v skriptnem jeziku splošnega namena, se lahko uporablja celo za ustvarjanje podvigov, ki vam lahko pomagajo odkriti ranljivosti, preden postanejo znane javnosti. Ta zmožnost dodajanja izkoriščanja skriptov po meri je lahko nekaterim ljudem (predvsem preizkuševalcem penetracije) izjemno koristna. Vendar NSE še vedno ni popolna platforma za ustvarjanje podpisov in izkoriščanja, kot je Metasploit.

Katere kategorije skriptov NSE obstajajo?

Trenutno je 598 skriptov NSE, ki jih lahko najdete v mapi "scripts", podimeniku glavnega imenika Nmap. Za boljše delovanje so vsi skripti indeksirani v bazi podatkov "scripts/script.db", ki označuje, kateri kategoriji ali kategorijam pripada posamezen skript.

Glede na namen uporabe in za poenostavitev njihove uporabe so skripte NSE razvrščene v različne kategorije. Trenutno so definirane naslednje kategorije skriptov NSE: auth, broadcast, brute, default. discovery, dos, exploit, external, fuzzer, vsiljiv, malware, safe, version in vuln (imena kategorij niso občutljiva na velike in male črke). Spodaj je podrobnejši pogled na vsako kategorijo:

  • prist- Ta kategorija skriptov se ukvarja s poverilnicami za preverjanje pristnosti (ali jih obide) v ciljnem sistemu. Primeri takšnih skriptov so "x11-access", "ftp-anon" in "oracle-enum-users". Upoštevajte, da so skripti, ki uporabljajo napad grobe sile, da bi poskušali določiti poverilnice, kategorizirani kot nasilni.
  • oddaja- Skripti v tej kategoriji se običajno uporabljajo za odkrivanje gostiteljev, ki niso navedeni v ukazni vrstici, prek širokopasovne komunikacije z lokalnim omrežjem. Pri uporabi argumenta skripta "newtargets" bodo samodejno dodali gostitelje, ki jih najdejo, v čakalno vrsto za skeniranje.
  • surovo- Ta kategorija skriptov se uporablja za izvajanje napadov s surovo silo za pridobitev poverilnic za preverjanje pristnosti oddaljenega strežnika. Nmap ponuja skripte za brute force napade na desetine protokolov. Ti vključujejo naslednje skripte: "http-brute", "oracle-brute", "snmp-brute" itd.
  • privzeto- ta kategorija skriptov opredeljuje tiste skripte, ki jih razvijalci Nmapa izberejo kot uporabne za razširitev funkcionalnosti skenerja ali optimizacijo njegovega delovanja in so dodeljene osnovnemu "privzetemu" naboru. Zaženejo se pri uporabi možnosti "-sC" ali "-A" in ne z določitvijo posebnega seznama skriptov prek možnosti "--script". To kategorijo skriptov je mogoče izrecno določiti, tako kot druge, z uporabo "--script=default". Ekipa Nmap se pri ugotavljanju, ali je treba določen skript razvrstiti kot privzeto, poskuša zanesti na naslednje zahteve:
    • hitrost- privzeto skeniranje je treba zaključiti hitro, kar izključuje vključitev v to kategorijo krekerjev za preverjanje pristnosti z metodo brute sile, spletnih pajkov, pa tudi vseh drugih skriptov, katerih čas skeniranja za eno storitev se izračuna v minutah ali celo urah.
    • uporabnost- Izvajanje skeniranja v privzeti kategoriji zahteva pridobitev dragocenih in posodobljenih informacij. Z drugimi besedami, rezultat skeniranja takšnega skripta bi moral biti razumljiv in uporaben za povprečnega strokovnjaka za varnost omrežja. V nasprotnem primeru ga ni smiselno izvajati privzeto.
    • kratkost- izhod informacij, ki jih prejme skener Nmap, se uporablja za različne namene in potrebe, zato morajo biti te informacije berljive in jedrnate. Skripti, ki pogosto ustvarijo veliko strani s popolnim izpisom vseh prejetih informacij, prav tako ne spadajo v kategorijo privzetih skriptov. Z drugimi besedami, skripti NSE, ki so kategorizirani kot privzeti, ko ne najdejo pomembnih informacij, v poročilu ne prikazujejo ničesar. To velja tudi za privzete skripte, ki iščejo skrite ranljivosti – rezultat prikažejo šele, ko se te ranljivosti najdejo.
    • zanesljivost- mnogi skripti se pri svojem delu lahko zanesejo na hevristično analizo in podatke o mehkem ujemanju podpisov, da naredijo določene zaključke o ciljnem gostitelju ali storitvi. Primera takšnih skriptov sta "sniffer-detect" in "sql-injection". Takšni skripti ne bodo vključeni v privzeto kategorijo, saj so rezultati njihovega dela pogosto napačni in lahko zavedejo uporabnika, ki ne razume jasno vseh posebnosti njihovega dela.
    • nevsiljivost- nekateri skripti so preveč vsiljivi, ko uporabljajo pomembne vire oddaljenega sistema, kar lahko privede do okvare tega sistema ali storitve, ali pa se njihova dejanja lahko obravnavajo kot napad oddaljenih skrbnikov. Takšni skripti tudi niso vključeni v privzeto kategorijo. Vendar pa je skupina Nmap nekatere "zmerno agresivne" skripte kategorizirala kot privzete glede na njihovo uporabnost in kako dobro se lahko obnašajo glede na druge dejavnike.
    • zaupnost- številni skripti lahko razkrijejo zaupne informacije tretjim osebam glede na posebnosti njihovega dela. Na primer, skripti za iskanje podatkov WHOIS morajo regionalnim registrarjem sporočiti ciljni naslov IP. Z drugimi besedami, v privzeti kategoriji skriptov NSE ekipa Nmap poskuša ne dodajati skriptov, ki lahko kršijo zasebnost.
  • odkritje- Ta kategorija skriptov aktivno poskuša izvedeti več o omrežju s pošiljanjem javnih zahtev registrarju, napravam, ki podpirajo SNMP, imeniškim storitvam itd. Primeri takšnih skriptov so "html-title" (dobi naslov korenske poti spletnih mest), "smb-enum-shares" (navede seznam delnic Windows) in "snmp-sysdescr" (pridobi podrobne sistemske informacije prek standardnega interneta protokol za upravljanje naprav SNMP).
  • dos- Skripte v tej kategoriji je treba uporabljati zelo previdno, saj lahko povzročijo zavrnitev storitve. Preizkuševalci varnosti jih včasih uporabljajo za testiranje ranljivosti sistema za napade zavrnitve storitve, vendar lahko takšno testiranje povzroči neželene stranske učinke, kot je zrušitev nekaterih ranljivih storitev.
  • izkoriščati- Ti skripti so namenjeni aktivnemu izkoriščanju določene ranljivosti. Primera te kategorije skriptov sta "jdwp-exec" in "http-shellshock".
  • zunanji- skripti v tej kategoriji lahko pošiljajo podatke tretjim osebam, ki nadzorujejo baze podatkov ali druge omrežne vire. Primer takega skripta je "whois-ip", ki se poveže s strežniki WHOIS, da pridobi informacije o naslovu IP cilja. Vedno obstaja možnost, da bodo operaterji baz podatkov tretjih oseb zabeležili vse, kar jim pošljete, kar bo v mnogih primerih vključevalo podatke o vašem naslovu IP in naslovu IP vašega cilja. Večina skriptov, ki se ukvarjajo izključno s prometom med računalnikom za skeniranje in odjemalcem, ne spada v to kategorijo.
  • fuzzer je kategorija skriptov, ki je zasnovana za pošiljanje nepričakovanih ali naključnih polj v strežniško programsko opremo v vsakem paketu. Čeprav je ta metoda lahko uporabna za iskanje neznanih hroščev in ranljivosti v programski opremi, je počasen proces, ki zahteva tudi pasovno širino. Primer te kategorije skriptov je "dns-fuzz", ki bombardira strežnik DNS z delno spremenjenimi domenskimi poizvedbami, dokler se strežnik ne izklopi ali ne poteče uporabniško nastavljena časovna omejitev.
  • vsiljiv- ta kategorija skriptov vključuje tiste, ki jih ni mogoče razvrstiti kot varne (varne), ker so tveganja previsoka, da se bo ciljni sistem pod njihovim pritiskom zrušil, bodo na ciljnem gostitelju potrebna znatna sredstva (na primer pasovna širina ali procesorski čas ), ali kako drugače, bodo skrbniki ciljnega sistema njihovo izvedbo zaznali kot zlonamerno dejavnost. Primera takšnih skriptov sta "http-open-proxy" (ki poskuša uporabiti ciljni strežnik kot proxy HTTP) in "snmp-brute" (ki poskuša uganiti tako imenovani "skupnostni niz" naprav SNMP s pošiljanjem priljubljenih vrednote, kot so javne, zasebne in cisco). Če skript ne spada v kategorijo posebne različice, ga je treba razvrstiti kot varnega ali vsiljivega.
  • zlonamerna programska oprema- ti skripti preverijo, ali je ciljna platforma okužena z zlonamerno programsko opremo ali zalednimi vrati. Primera skriptov v tej kategoriji skriptov sta "smtp-strangeport", ki spremlja strežnike SMTP, ki tečejo na nenavadnih številkah vrat, in "auth-spoof", ki zazna lažne demone identd (izvaja podporo protokola uporabniške identitete), ki še vedno zagotavljajo lažen odgovor. preden prejmejo zahtevo. Ne glede na to, ali gre za prvi ali drugi primer, je to vedenje, če ga zaznamo, običajno znak okužbe z zlonamerno programsko opremo v sistemu.
  • varno- vsi skripti, ki niso bili ustvarjeni, da bi povzročili okvaro storitve, uporabili velike količine omrežne pasovne širine ali drugih virov in niso bili namenjeni izkoriščanju varnostnih lukenj, so kategorizirani kot varni. Veliko manj verjetno je, da bodo pritegnili pozornost oddaljenih skrbnikov, čeprav (kot pri vseh drugih funkcijah Nmapa) ni mogoče 100 % zagotoviti, da nikoli ne bodo pritegnili stranske pozornosti. Večina teh skriptov izvaja naloge, povezane s splošnim raziskovanjem omrežja. Primera skriptov v tej kategoriji sta "ssh-hostkey" (dobi ključ SSH gostitelja) in "html-title" (zgrabi naslov s spletne strani). Skripti v kategoriji različice niso kategorizirani kot varni, drugi nevarni skripti pa morajo biti opredeljeni kot vsiljivi.
  • različica- skripti iz te posebne kategorije so razširitev funkcionalnosti zaznavanja različic in jih ni mogoče izrecno izbrati. Izbrani so za zagon samo, ko so pozvani, da določijo različico Nmap ("-sV"). Njihovega izhoda ni mogoče ločiti od izhoda funkcije upravljanja različic in ne delujejo kot skripti gostitelja ali storitve. Primeri takšnih skriptov so "skypev2-version", "pptp-version" in "iax2-version".
  • vuln- skripti v tej kategoriji izvajajo preverjanja prisotnosti določene znane ranljivosti in običajno dajejo le tiste rezultate, ki potrjujejo, da je bila takšna ranljivost najdena. Primera takšnih skriptov sta "realvnc-auth-bypass" in "afp-path-vuln".

Skripti so glede na njihovo funkcionalno usmerjenost in fazo skeniranja, v kateri se izvajajo, razdeljeni na štiri vrste (nekateri skripti lahko podpirajo več vrst operacij hkrati):

  • Predpravilni skripti – Ta vrsta skripta se zažene, preden se izvede katera koli operacija Nmap, torej se izvede pred fazo skeniranja, ko Nmap še ni zbral nobenih informacij o cilju. Ti skripti so lahko uporabni za izvajanje nalog, ki so neodvisne od določenih ciljev skeniranja, na primer za oddajanje zahtev za anketiranje strežnikov DHCP in DNS SD. Nekateri od teh skriptov lahko ustvarijo nove cilje za skeniranje Nmap (samo če vnesete argument NSE "newtargets"). Tako lahko na primer skript "dns-zone-transfer" pridobi seznam naslovov IP v domeni z uporabo zahteve za prenos cone in jih nato samodejno doda na seznam ciljev za skeniranje Nmap. Skripte predpravila se identificirajo s funkcijo predpravila.
  • Skripti gostitelja – Ti skripti se izvajajo med standardnim postopkom skeniranja Nmap, potem ko je skener Nmap izvedel običajne operacije, kot so odkrivanje gostitelja, skeniranje vrat, preverjanje različic in zaznavanje OS na ciljnem gostitelju. Ta vrsta skripta se kliče enkrat za vsakega ciljnega gostitelja, ki se ujema z njegovo funkcijo gostitelja. Primeri vključujejo "whois-ip", ki išče podatke o lastniku za ciljni naslov IP, in "path-mtu", ki poskuša določiti največjo velikost paketa IP, ki lahko doseže cilj, ne da bi bila potrebna fragmentacija.
  • Skripti storitev – Ta vrsta skripta se zažene, ko so določene storitve najdene na ciljnem gostitelju. Nmap na primer vključuje več kot 15 skriptov storitev http, ki se izvajajo za delo s spletnimi strežniki. Če ima gostitelj spletne strežnike, ki delujejo na več vratih, se lahko te skripte zaženejo večkrat (po en za vsako vrata). To je najpogostejši tip skripta v Nmapu, razlikujejo pa se po tem, da vsebujejo funkcijo portrule, ki določa, s katero od odkritih storitev naj se skript izvaja.
  • Skripti Postrule - Ta vrsta skripta se zažene enkrat, potem ko Nmap skenira vse predvidene cilje. Lahko so uporabni za oblikovanje in predstavitev izhodnih informacij, ki jih prejme skener Nmap. Na primer, skript "ssh-hostkey" je bolj znan kot skript storitve (z definiranim portrulom), ki se poveže s strežniki SSH, odkrije njihove javne ključe in jih natisne. Vključuje pa tudi funkcijo postrule, ki preveri podvojene ključe med vsemi preverjenimi gostitelji in nato natisne vse najdene. Drug možni primer uporabe skriptov te vrste je obratno tiskanje izhoda optičnega bralnika Nmap – na primer seznam vseh gostiteljev, ki izvajajo določeno storitev, namesto da bi preprosto navedli vse gostitelje, ki na njih izvajajo storitve. Postrule skripte se identificirajo s funkcijo postrule.

Opomba: številni skripti se lahko izvajajo kot predpravilni skript in skript postrule. V teh primerih je priporočljivo uporabiti funkcijo predpravila, da se izognete nedoslednostim.

Večni paranoik, Anton Kočukov.


Poglej tudi:

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

Opis

nmap(" Network Mapper ») je odprtokodni pripomoček za raziskovanje in varnost omrežja. Zasnovan je bil za hitro skeniranje velikih omrežij, čeprav dobro deluje tudi za posamezne cilje. Nmap uporablja neobdelane pakete IP na izviren način, da ugotovi, kateri gostitelji so na voljo v omrežju, katere storitve (ime in različica aplikacije) ponujajo, katere operacijske sisteme (in različice OS) uporabljajo, katere vrste paketnih filtrov/požarni zidov se uporabljajo , in še veliko več drugih značilnosti. Medtem ko se Nmap običajno uporablja za varnostna preverjanja, se številnim sistemskim skrbnikom zdi uporaben za običajna opravila, kot so spremljanje strukture omrežja, upravljanje urnikov zagona storitev in spremljanje delovanja gostitelja ali storitve.

Izhod Nmapa je seznam skeniranih ciljev z dodatnimi informacijami o vsakem cilju, odvisno od danih možnosti. Ključna informacija je « tabela pomembnih vrat» . Ta tabela vsebuje številko vrat, protokol, ime storitve in status. Stanje je lahko odprto (odprto), filtrirano (filtrirano), zaprto (zaprto) ali nefiltrirano (nefiltrirano). Odprto pomeni, da je aplikacija na ciljni napravi pripravljena za povezovanje/prejemanje paketov na ta vrata. Filtriran pomeni, da požarni zid, omrežni filter ali kakšna druga omrežna motnja blokira vrata in Nmap ne more ugotoviti, ali so vrata odprta ali zaprta. Zaprta vrata niso povezana z nobeno aplikacijo, vendar jih je mogoče odpreti kadar koli. Vrata se štejejo za nefiltrirana, ko se odzovejo na zahteve Nmapa, vendar Nmap ne more ugotoviti, ali so odprta ali zaprta. Nmap izdaja odprte|filtrirane in zaprte|filtrirane kombinacije, ko ne more določiti, katero od dveh stanj opisuje vrata. Ta tabela lahko na zahtevo vsebuje tudi podrobnosti o različici programske opreme. Pri skeniranju prek protokola IP (-sO) Nmap zagotavlja informacije o podprtih protokolih, ne pa o odprtih vratih.

Poleg tabele pomembnih vrat lahko Nmap zagotovi dodatne ciljne informacije: razrešena imena DNS, ugibanja operacijskega sistema, vrste naprav in naslove MAC.

Tipično skeniranje z uporabo Nmapa je prikazano v primeru 1. Edini argumenti, uporabljeni v tem primeru, so -A , za različico OS, skeniranje skriptov in sledenje; -T4 za hitrejšo izvedbo; nato dva ciljna gostitelja.

Primer 1. Tipičen primer skeniranja z Nmap

# nmap -A -T4 scanme..org) Zanimiva vrata na spletnem mestu scanme. (protokol 1.99) 53/tcp odprta domena 70/tcp zaprt gopher 80/tcp odprt http Apache httpd 2.0.52 ((Fedora)) 113/tcp zaprta auth Vrsta naprave: splošni namen Deluje: Linux 2.4.X|2.5.X| Podrobnosti o OS 2.6.X: Linux 2.4.7 - 2.6.11, Linux 2.6.0 - 2.6.11 Zanimiva vrata na igrišču..168.0.40): (1659 vrat, ki so skenirana, vendar niso prikazana spodaj, so v stanju: zaprta) PORT DRŽAVNA RAZLIČICA 135/tcp odprt msrpc Microsoft Windows RPC 139/tcp odprt netbios-ssn 389/tcp odprt ldap? 445/tcp odpreti microsoft-ds Microsoft Windows XP microsoft-ds 1002/tcp odpreti windows-icfw? 1025/tcp odprto msrpc Microsoft Windows RPC 1720/tcp odprto H.323/Q.931 CompTek AquaGateKeeper 5800/tcp odprto vnc-http RealVNC 4.0 (ločljivost 400x250; vrata VNC: 5900/tcp odprta: 5900/tcp ncl) Naslov: 00:A0:CC:63:85:4B (Lite-on Communications) Vrsta naprave: splošni namen Deluje: Microsoft Windows NT/2K/XP Podrobnosti OS: Microsoft Windows XP Pro RC1+ do končne izdaje Informacije o storitvi: OS: Windows , Windows XP Nmap končan: 2 naslova IP (2 gostitelja navzgor) skenirana v 88,392 sekundah


Najnovejšo različico Nmapa lahko prenesete iz

Nmap je kultni skener, brez katerega ne more skoraj noben heker, zato tema širitve njegovih zmogljivosti menim, da zanima marsikoga. Uporaba drugih orodij v povezavi z Nmap je običajna praksa. Ta članek bo govoril o tem, kako enostavno avtomatizirati Nmap z vašimi najljubšimi orodji. Bolj priročno je "pritisniti en gumb" in dobiti rezultat kot nenehno izvajati isto zaporedje dejanj. Uporaba skriptov v Nmapu lahko pomaga hekerjem bolj samodejno vdreti sisteme, sistemski administratorji pa lahko preverijo sisteme, ali so privzete luknje, in jih pravočasno popravijo.

Nekaj ​​besed o Nmapu

Prepričan sem, da večina bralcev revije Hacker ve, kaj je Nmap, in so ga verjetno že večkrat uporabili za raziskovanje omrežja in zbiranje informacij. Za tiste, ki ste pozabili ali ne veste, naj vas za vsak slučaj spomnim:

  • Nmap je večplatformsko orodje za skeniranje omrežja, preverjanje njegove varnosti, določanje različic operacijskega sistema in različnih storitev in še veliko več. To je zelo prilagodljiv in zlahka razširljiv pripomoček, ki ga omogoča skriptni mehanizem NSE;
  • NSE (Nmap Scripting Engine) je zmogljiva komponenta Nmapa, ki uporabnikom omogoča pisanje skriptov za avtomatizacijo širokega nabora omrežnih nalog: bolj prilagodljiva interakcija z obstoječimi zmogljivostmi Nmapa, odkrivanje in izkoriščanje ranljivosti in še več. NSE temelji na jezikovnem tolmaču Lua;
  • Lua je skriptni jezik, podoben JavaScriptu.

Formulacija problema

Kot smo že omenili, bomo danes razširili funkcionalnost Nmapa s pisanjem lastnih skriptov. Vsak hack/pentest se običajno začne z izvidništvom in zbiranjem podatkov. Eden od prvih preverjanj je prisotnost odprtih vrat na preučevanem gostitelju in identifikacija delujočih storitev. Verjetno ni boljšega orodja za zbiranje takšnih informacij kot Nmap. Naslednji korak po skeniranju je običajno bodisi iskanje sploita za najdeno ranljivo storitev ali izbira para prijava:geslo z metodo grobe sile.

Recimo, da aktivno uporabljate brute-forcer THC-Hydra za ugibanje gesel več storitev (na primer HTTP-Basic, SSH, MySQL). V tem primeru morate nastaviti hidro za vsako storitev posebej, zapomniti si morate značilnosti storitev in zastave, potrebne za zagon hidre. In če je potrebno izvesti veliko več kot pet storitev? .. Zakaj tega ne bi avtomatizirali?

Zato napišimo preprost skript, ki bo avtomatiziral postopek zagona Hydre za izbiro prijav / gesel za eno storitev (na primer PostgreSQL). Za to potrebujemo naslednja orodja:

  • nmap;
  • THC-Hydra;
  • kateri koli urejevalnik besedil.

Če še nimate nameščenega Nmapa in/ali Hydre, to takoj popravite:

$ sudo apt-get namestite nmap hydra

V redu, začnimo. Skripti za Nmap so navadne besedilne datoteke s pripono *.nse. Zato odprite svoj najljubši urejevalnik besedil in ustvarite novo datoteko. Uporabil bom Vim:

$ vim hydra.nse

Struktura skripta NSE

Preden nadaljujemo s pisanjem, je treba povedati, da imajo vsi skripti določeno strukturo. Poleg same kode, ki avtomatizira določena dejanja, vsebuje opis skripta (čemu je namenjen in kako ga uporabljati), podatke o avtorju, licence, odvisnost od drugih skript, kategorije, v katere spada skript. , in tako naprej. Oglejmo si podrobneje vsakega od teh delov.

Opis scenarija (opis)

Ta razdelek vsebuje opis skripta, komentarje avtorja, primer prikaza rezultata izvedbe skripta na zaslonu in dodatne funkcije.

Za naš skript, ki izbira prijave/gesla za PostgeSQL, bo opis videti takole:

Opis = [[ Brute force vse storitve, ki se izvajajo na ciljnem gostitelju. Rezultati se vrnejo v tabeli z vsako potjo, zaznano metodo, prijavo in/ali geslom. ]] --- -- @usage -- nmap --script hydra [--script-args "lpath= , ppath= "] -- -- @output -- STORITEV PRISTANIŠČA -- 80/tcp odprt http -- | hidra: -- | pot metoda prijavno geslo -- | 127.0.0.1/private/index.html Digest log pass -- |_ 127.0.0.1/simple/index.txt Osnovni uporabnik qwerty -- -- @args hydra.lpath: pot do datoteke s prijavami. Na primer, -- nmap --script hydra --script-args="lpath=/home/my_logins.txt" -- @args hydra.ppath: pot do datoteke z gesli. Na primer, -- nmap --script hydra --script-args="ppath=/home/my_pass.txt"

Komentar; -- - večvrstični komentar; @usage, @output, @args - primer klica skripta, prikaz rezultata na zaslonu, potrebni argumenti pri klicu.

Zgoraj v @usage vidimo obliko zagona skripta. V tem primeru je navedeno samo ime skripte (hidra). To postane mogoče, če je skript postavljen v imenik / /nmap/scripts/ , sicer boste morali določiti absolutno ali relativno pot do njega. V prihodnosti bomo omogočili nastavitev argumentov ob zagonu skripta. Argumenti so nastavljeni z zastavo --script-args " " . V našem primeru bomo nastavili pot do datoteke za prijavo (lpath) in do datoteke z gesli (ppath). Argumenti so izbirni: privzeto bomo iskali datoteki z imenom login.txt in password.txt v trenutni imenik.

Kategorije, kjer se nahaja skript (kategorije)

Ko pišete skript NSE, lahko določite njegovo kategorijo (ali več kategorij). To je uporabno, če uporabnik Nmapa ne želi uporabiti določenega skripta, temveč nabor skriptov, ki so v isti kategoriji. Primeri nekaterih kategorij:

  • auth - kategorija, v kateri skripti definirajo podatke za preverjanje pristnosti ciljnega gostitelja;
  • brute - kategorija, katere skripti pomagajo določiti prijave in gesla za različne storitve;
  • privzeto - kategorija, ki vsebuje glavne skripte. Obstaja nekaj meril, ki določajo, ali skript spada v to kategorijo: hitrost skeniranja, uporabnost, zanesljivost, zaupnost, vizualni rezultat;
  • zlonamerna programska oprema – kategorija, ki pomaga prepoznati zlonamerno programsko opremo.

Na primer, če morate zagnati vse skripte iz kategorije auth, bo ukaz videti takole:

$ nmap --script=avth example.com

V tem primeru se bodo skripti te kategorije izvajali izmenično za določen gostitelj. Naš scenarij spada v kategorijo surovih. V datoteko dodajmo naslednjo vrstico:

Kategorije = ("surov")

Podatki o avtorju (avtorju)

Vsak skript vsebuje podatke o svojem avtorju. V mojem primeru:

Avtor = "Olga Barinova"

Informacije o licenci v uporabi (licenca)

Nmap pozdravlja vsak razvoj uporabnikov in spodbuja skupno rabo, vključno s skripti NSE. Ko določite licenco, potrdite pravico, da skript delite s skupnostjo. Standardna licenca Nmap izgleda takole:

Licenca = "Enako kot Nmap - Glejte http://nmap.org/book/man-legal.html"

Dodajmo tudi to vrstico našemu skriptu.

Odvisnosti od drugih skriptov (odvisnosti)

To področje vsebuje imena skriptov NSE, ki jih je treba izvesti, preden se ta skript lahko zažene, da se pridobijo potrebne informacije. na primer

Odvisnosti = ("smb-brute").

V našem primeru ta funkcija ne bo potrebna, zato ne bomo dodajali odvisnosti.

Gostitelj in vrata (gostitelj in vrata)

Nmap mora vedeti, za katere storitve in na katerih vratih zagnati skript. Za to obstajajo posebna pravila:

  • prerule() - skript se izvede enkrat pred skeniranjem katerega koli gostitelja, ki se uporablja za nekatere omrežne operacije;
  • hostrule(host) - skript se izvede za vsakega gostitelja iz tabele, ki ga vzame kot argument;
  • portrule(host, port) - skript se izvede za vsakega gostitelja in za vsaka vrata iz tabel, ki jih vzame kot argumente;
  • postrule() - skript se izvede enkrat po skeniranju katerega koli gostitelja. Uporablja se predvsem za obdelavo rezultatov, povzemanje statistike in podobno.

Obstajajo knjižnice za oblikovanje takšnih pravil. Naš skript mora podati samo številko vrat (5432) in ime storitve (postgresql), nato pa bo deloval samo za ta vrata in storitev. V NSE je vgrajena dokaj priljubljena knjižnica kratkih vrat, ki vključuje različne metode. Uporabili bomo metodo

Port_or_service (pristanišča, storitve, protos, stanja)

kjer so vrata številke vrat, storitve so imena storitev, proto so imena protokolov (na primer udp), stanja so stanja.

Ta metoda vrne true, če je storitev, ki se trenutno razčlenjuje, na enem od vrat na seznamu vrat ali se ujema s katero koli storitvijo na seznamu storitev, protokol in status pa se preverita za ujemanje, sicer se vrne false.
Da bo naš skript deloval s PostgreSQL, moramo dodati številko vrat in ime storitve:

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

Povezovanje knjižnic

Za trenutek se oddaljimo od strukture skripta in razmislimo, kako so povezane zunanje knjižnice, do katerih funkcionalnosti moramo dostopati.

Še naprej na voljo samo članom

Možnost 1. Pridružite se skupnosti "site" in preberite vsa gradiva na spletnem mestu

Članstvo v skupnosti v določenem obdobju vam bo omogočilo dostop do VSEGA Hackerskega gradiva, povečalo vaš osebni kumulativni popust in vam omogočilo, da pridobite profesionalno oceno Xakep Score!

Spodaj boste našli 20 osnovnih primeri uporabe ukaza Nmap.

Naučili se boste uporabljati Nmap iz ukazna vrstica v linuxu za iskanje aktivnih gostiteljev v omrežju in skeniranje odprtih vrat.

Boste videli, kako na daljavo zazna operacijski sistem z uporabo prstnih odtisov sklada TCP/IP in kako preverite različico programske opreme deluje na oddaljenem strežniku.

Pokazal vam bom tudi, kako uporabiti Nmap za implementacijo prikrito skeniranje, kako definirati požarni zid In kako spremeni naslov MAC.

1. Skenirajte enega gostitelja ali naslov IP

Skeniraj Ločen naslov IP:

$ nmap 192.168.1.1

Skeniraj strežnik po Ime gostitelja:

$ nmap server.site

Porast Raven podrobnosti rezultati skeniranja:

$ nmap -v strežnik.. mesto

2. Skeniranje več naslovov IP

Skeniraj Več naslovov IP:

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

Skeniraj podomrežje:

$ nmap 192.168.1.0/24 $ nmap 192.168.1.*

Skeniraj Obseg naslovov IP (192.168.1.0 — 192.168.1.200):

$ nmap 192.168.1.0-200

3. Poiščite aktivne računalnike v omrežju

Koristni nasveti: Skenirajte omrežje s samo enim ukazom ping! Izračunaj vse aktivne računalnike!

Skenirajte omrežje v iskanju Aktivni gostitelji:

$ nmap -sn 192.168.1.0/24

4. Skeniranje seznama gostiteljev iz datoteke

Skenirajte seznam gostiteljev/omrežij mapa:

$ nmap -iL input.txt

Format datoteke:

# Vnosi so lahko v katerem koli formatu, s katerim # Nmap deluje iz ukazne vrstice (naslovi IP, imena gostiteljev, obsegi CIDR, IPv6 ali # oktetov). Vnosi morajo biti ločeni z enim ali več presledki, zavihki # ali novimi vrsticami. $ cat input.txt server.site 192.168.1.0/24 192.168.2.1,2,3 192.168.3.0-200

5. Izključitev IP/gostiteljev/omrežij iz skeniranja

Izključi cilje iz skeniranja Nmap:

$ nmap 192.168.1.0/24 --izključi 192.168.1.1 $ nmap 192.168.1.0/24 --izključi 192.168.1.1 192.168.1.5 $ nmap 192.168.1.1 --izključi 192.168.1.1 --izključi 192.168.1.0/24

Izključi seznam gostitelji, vzeti iz datoteke:

$ nmap 192.168.1.0/24 --excludefile exclude.txt

Format datoteke z izključenimi gostitelji je enak kot zgoraj.

6. Skenirajte posebna vrata

Skeniraj Eno pristanišče:

$ nmap -p 80 192.168.1.1

Skeniraj Več vrat:

$ nmap -p 80.443 192.168.1.1

Skeniraj Razpon pristanišč:

$ nmap -p 80-1000 192.168.1.1

Skeniraj Vsa pristanišča:

$ nmap -p "*" 192.168.1.1

Skenirajte nekaj najbolj Skupna pristanišča:

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

7. Opredelitev podprtih protokolov IP

Določite katero IP protokoli(TCP, UDP, ICMP itd.) podpira skenirani gostitelj:

$ nmap -sO 192.168.1.1

8. Skenirajte vrata TCP/UDP

Skeniraj vsa vrata TCP:

$ nmap -sT 192.168.1.1

Skeniraj določena vrata TCP:

$ nmap -p T:80 192.168.1.1

Skeniraj vsa vrata UDP:

$ nmap -sU 192.168.1.1

Skeniraj določena vrata UDP:

$ nmap -p U:53 192.168.1.1

Kombinacija skeniranja različnih vrat:

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

9. Hitro skeniranje

Aktiviraj Hitri način skeniranje:

$ nmap -F 192.168.1.1

* Skenira manj vrat kot običajno skeniranje.

10. Pokaži vzrok stanja vrat

Pokaži razlog, s katerim Nmap meni, da je pristanišče v določenem stanju:

$ nmap --reason 192.168.1.1

11. Pokaži samo odprta vrata

Pokaži Samo odprta vrata(ali morda odprto):

$ nmap --odpri 192.168.1.1

12. Opredelitev OS

Ena izmed najbolj znanih funkcij Nmapa je odkrivanje operacijskega sistema na daljavo na podlagi analize sklada TCP/IP.

Nmap pošlje niz paketov TCP in UDP oddaljenemu gostitelju in preuči odgovore.

Po izvedbi številnih testov Nmap primerja rezultate s svojo bazo podatkov in, če najde ujemanje, prikaže informacije o OS.

Vklopiti Opredelitev OS:

$ nmap -O 192.168.1.1

13. Določanje različice storitev

Vklopiti Določanje različice storitev:

$ nmap -sV 192.168.1.1

* Določa različice programov, ki se izvajajo na oddaljenem strežniku.

14. Zaznavanje požarnega zidu

Ugotovite, ali je vaš računalnik zaščiten s katerim koli Paketni filtri oz požarni zid:

$ nmap -sA 192.168.1.1

15. Ponarejanje naslova MAC

Spremeni se MAC naslovi:

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

Spremenite naslov MAC Naključni MAC:

$ nmap --spoof-mac 0 192.168.1.1

16. Skeniranje požarnega zidu za ranljivosti

Te tri vrste skeniranja uporabljajo subtilno vrzel v TCP RFC za ločevanje odprtih in zaprtih vrat.

Ko se skenira sistem, ki je skladen z RFC, bo kateri koli paket, ki ne vsebuje nabora bitov SYN, RST ali ACK, povzročil odziv RST, če so vrata zaprta, ali pa ne bo odgovora, če so vrata odprta. .

Ker nobeden od teh bitov ni nastavljen, potem bo veljavna katera koli kombinacija preostalih treh (FIN, PSH in URG).

TCP Null skeniranje:

$ nmap -sN 192.168.1.1

* Noben bit (zastavice v glavi TCP 0) ni nastavljen.

TCP Fin skeniranje:

$ nmap -sF 192.168.1.1

* Nastavljen je samo bit TCP FIN.

TCP božič skeniranje:

$ nmap -sX 192.168.1.1

* Nastavljene so zastavice FIN, PSH in URG (paket zasveti kot božično drevo).

17. Skrito skeniranje

Koristni nasveti: Med skeniranjem vrat ostanite anonimni! Uporabite Nmap + Tor + ProxyChains! Varno in enostavno testiranje penetracije!

TCP SYN skeniranje:

$ nmap -sS 192.168.0.1

* Znano kot skeniranje napol odprtih povezav, saj ne odpre polnih povezav TCP.

18. Onemogoči odkrivanje gostitelja (brez pinga)

Ne pingiraj gostiteljev pred skeniranjem:

$ nmap -Pn 192.168.1.1

19. Onemogoči uporabo DNS

Koristni nasveti: Ali morate poostriti varnost v Linuxu? Šifrirajte promet DNS za zaščito pred ponarejanjem!

Nikoli ne izvajajte obratne ločljivosti DNS za vsak najdeni aktivni naslov IP.