Računala Windows Internet

Nmap Referentni priručnik (Stranica priručnika). Kako koristiti Nmap za skeniranje mreže Skeniranje jednog hosta ili IP adrese

Za mnoge od nas čiji su radni zadaci barem neko vrijeme usko povezani s informacijskom sigurnošću, Nmap je odavno poznat i koristan alat. Neizostavna je kao topla dekica u hladnoj zimskoj noći. Osim što je Nmap vraški učinkovit pokrivač.

Nmap je popularan i moćan skener mrežne sigurnosti na različitim platformama naredbenog retka koji se može koristiti za iznimno učinkovito istraživanje bilo koje mreže. Također vam može pomoći da dobijete pregled sustava koji su se spojili na vašu mrežu; možete ga koristiti da saznate IP adrese svih živih hostova, skenirate otvorene portove i usluge koje rade na tim hostovima i još mnogo, puno više.

Bez sumnje, Nmap je najsvestraniji skener portova koji danas postoji. Da, možete pronaći brže skenere, ali ne postoji nijedan tako koristan i jednostavno neophodan za rješavanje mnogih, mnogih vaših zadataka. I velika većina stručnjaka u području informacijske sigurnosti kategorički će se složiti s ovom izjavom.

Međutim, mnogo manje ljudi zna da je jedna od najzanimljivijih značajki Nmapa mogućnost korištenja NSE skripti, što će vašem omiljenom mrežnom sigurnosnom alatu dati još veću fleksibilnost i učinkovitost. Uz njihovu pomoć možete raditi stvari koje čak i od tako naprednog skenera portova kao što je Nmap ne biste očekivali.

Pogledajmo pobliže NSE skripte i možda će vas njihov potencijal ugodno iznenaditi.

Drugim riječima, osim standardne provjere otvorenih portova od strane Nmap skenera, korištenjem NSE-a također imate priliku dobiti proširene informacije o servisima koji se na njemu pokreću. Tako, na primjer, s NSE skriptama možete dublje pogledati svoje mrežne usluge i vidjeti koliko su dobro konfigurirane, koje su informacije dostupne, koriste li se slabe vjerodajnice itd. Zapravo, NSE skripte čine Nmap fleksibilnim platforma za interakciju s mrežnim uslugama.

Nmap Scripting Engine Scripting mogućnosti

Razvojni tim Nmap port skenera osmislio je i stvorio motor za skriptiranje prvenstveno za rješavanje problema kao što su:

1. Istraživanje mreže

Ovo je glavna praktična primjena Nmapa. Neke su skripte dizajnirane da olakšaju, optimiziraju i ubrzaju rad vašeg omiljenog skenera portova. Neki primjeri njihove upotrebe uključuju izvođenje zadataka kao što su:

  • traženje WHOIS podataka (mrežni protokol aplikacijskog sloja temeljen na TCP protokolu; njegova glavna primjena je dobivanje registracijskih podataka o vlasnicima naziva domena, IP adresa i autonomnih sustava u tekstualnom obliku) za odgovarajuće domene;
  • slanje upita glavnim regionalnim WHOIS poslužiteljima ARIN (Sjeverna Amerika), RIPE (Europa i Bliski istok) ili APNIC (Azija i Pacifik) za određivanje vlasnika određene IP adrese;
  • identd-search na otvorenim portovima (omogućuje vam identificiranje korisnika povezanih s njima);
  • izrada zahtjeva putem SNMP protokola (Internet protokol za upravljanje uređajima u IP mrežama baziran na TCP/UDP arhitekturi);
  • sastavljanje popisa dostupnih resursa i usluga putem mrežnih protokola za daljinski pristup NFS, SMB ili RPC.

2. Sofisticiranije verzije

Nmapov sustav za određivanje verzija za usluge i aplikacije sposoban je prepoznati tisuće različitih usluga pomoću probe i podudaranja potpisa regularnog izraza, ali nije ni svemoćan. Na primjer, identifikacija usluge Skype v2 zahtijeva dvije neovisno djelujuće sonde čije mogućnosti upravljanja verzijama nisu baš fleksibilne. Nmap također može prepoznati neke od SNMP usluga ako pokuša nabrojati nekoliko stotina imena zajednica koristeći grubu silu. Oba gornja zadatka nisu baš prikladna za korištenje standardnih metoda Nmap-a, ali se oba lako izvode pomoću NSE-a. Iz tog razloga, sustav za upravljanje verzijama sada prema zadanim postavkama poziva NSE kako bi riješio zadatak upravljanja verzijama prilikom obrade nekih složenih usluga.

3. Potražite ranjivosti

Kada se otkrije nova ranjivost, ona postaje javno poznata, a stručnjaci za mrežnu sigurnost hitno moraju skenirati svoje mreže kako bi brzo identificirali ranjive sustave prije nego što zločesti to učine umjesto njih. Iako Nmap nije potpuni skener ranjivosti, snažne mogućnosti NSE-a omogućuju mu da obavlja provjere ranjivosti čak i uz vrlo stroge zahtjeve. Na primjer, kada je greška Heartbleed u OpenSSL kriptografskom softveru kompromitirala stotine tisuća sustava diljem svijeta, Nmap programeri su odgovorili pisanjem ssl-heartbleed skripte za otkrivanje u roku od dva dana.

4. Otkrivanje stražnjih vrata

Mnogi cyber napadači, kao i neki automatizirani crvi, ostavljaju iza sebe backdoor kako bi si u budućnosti osigurali rupu za lakši prodor u vaš sustav. Neki od ovih backdoor-a mogu se otkriti korištenjem standardnog Nmap verzija na temelju podudaranja potpisa regularnog izraza, ali mnogi složeniji crvi i backdoor zahtijevaju napredne NSE mogućnosti za pouzdano otkrivanje. Konkretno, NSE se koristi za otkrivanje DoublePulsar backdoor-a koji iskorištava ranjivost u implementaciji SMB protokola, backdoor verzije za UnrealIRCd IRC poslužitelj i vsftpd i ProFTPd FTP poslužitelje.

5. Otkrivanje ranjivosti

Implementiran na skriptnom jeziku opće namjene, NSE se čak može koristiti za stvaranje exploit-a koji vam mogu pomoći da otkrijete ranjivosti prije nego što postanu poznate javnosti. Ova mogućnost dodavanja prilagođenih skriptiranih exploita može biti iznimno korisna nekim ljudima (prvenstveno ispitivačima penetracije). Međutim, NSE još uvijek nije punopravna platforma za stvaranje potpisa i eksploatacije, poput Metasploita.

Koje kategorije NSE skripti postoje?

Trenutno postoji 598 NSE skripti koje možete pronaći u mapi "scripts", poddirektoriju glavnog Nmap direktorija. Za bolju izvedbu, sve skripte se indeksiraju u bazi podataka "scripts/script.db", što pokazuje kojoj kategoriji ili kategorijama pripada svaka skripta.

Ovisno o namjeni i kako bi se pojednostavila njihova uporaba, NSE skripte grupirane su u različite kategorije. Trenutno su definirane sljedeće kategorije NSE skripti: auth, emitiranje, brute, default. discovery, dos, exploit, external, fuzzer, intrusive, malware, safe, version i vuln (nazivi kategorija ne razlikuju velika i mala slova). Ispod je detaljniji prikaz svake kategorije:

  • auth- Ova kategorija skripti bavi se vjerodajnicama za provjeru autentičnosti (ili ih zaobilazi) na ciljnom sustavu. Primjeri takvih skripti su "x11-access", "ftp-anon" i "oracle-enum-users". Imajte na umu da su skripte koje koriste grubi napad za pokušaj utvrđivanja vjerodajnica kategorizirane kao grube.
  • emitirati- Skripte u ovoj kategoriji obično se koriste za otkrivanje hostova koji nisu navedeni u naredbenom retku putem širokopojasne komunikacije s lokalnom mrežom. Kada koriste argument skripte "newtargets", oni će automatski dodati hostove koje pronađu u red skeniranja.
  • grubijan- Ova kategorija skripti koristi se za izvođenje grubih napada radi dobivanja vjerodajnica za autentifikaciju udaljenog poslužitelja. Nmap nudi skripte za brute-force napade na desetke protokola. To uključuje sljedeće skripte: "http-brute", "oracle-brute", "snmp-brute" itd.
  • zadano- ova kategorija skripti definira one skripte koje su Nmap programeri odabrali kao korisne za proširenje funkcionalnosti skenera ili optimizaciju njegovog rada, a dodijeljene su osnovnom "zadanom" skupu. Pokreću se kada se koriste opcije "-sC" ili "-A", a ne navođenjem određenog popisa skripti putem opcije "--script". Ovu kategoriju skripti moguće je eksplicitno navesti, kao i ostale, koristeći "--script=default". Nmap tim, kada utvrđuje treba li se određena skripta kategorizirati kao zadana, pokušava se osloniti na sljedeće zahtjeve:
    • ubrzati- standardno skeniranje treba završiti brzo, što isključuje uvrštavanje u ovu kategoriju krekera za autentifikaciju metodom brute sile, web spidera, kao i svih drugih skripti čije se vrijeme skeniranja za jednu uslugu računa u minutama ili čak satima.
    • korisnost- Izvođenje skeniranja u zadanoj kategoriji zahtijeva dobivanje vrijednih i ažuriranih informacija. Drugim riječima, rezultat skeniranja takve skripte trebao bi biti razumljiv i koristan prosječnom stručnjaku za mrežnu sigurnost. Inače, nema smisla pokretati ga prema zadanim postavkama.
    • kratkoća- izlaz informacija koje prima Nmap skener koristi se za razne svrhe i potrebe, tako da te informacije trebaju biti čitljive i sažete. Skripte koje često stvaraju mnogo stranica s punim izlazom svih primljenih informacija također ne pripadaju kategoriji zadanih skripti. Drugim riječima, NSE skripte koje su kategorizirane kao zadane kada ne pronađu nikakve važne informacije ne prikazuju ništa u izvješću. To se također odnosi na zadane skripte koje traže skrivene ranjivosti - one daju rezultat samo kada se te ranjivosti pronađu.
    • pouzdanost- mnoge se skripte u svom radu mogu osloniti na heurističku analizu i podatke o nejasnom podudaranju potpisa kako bi izvukli određene zaključke o ciljnom hostu ili usluzi. Primjeri takvih skripti su "sniffer-detect" i "sql-injection". Takve skripte neće biti uključene u zadanu kategoriju, jer su rezultati njihova rada često pogrešni i mogu dovesti u zabludu korisnika koji ne razumije jasno sve specifičnosti njihovog rada.
    • nenametljivost- neke skripte su pretjerano nametljive kada koriste značajne resurse udaljenog sustava, što može dovesti do kvara ovog sustava ili usluge, ili se njihove radnje mogu smatrati napadom udaljenih administratora. Takve skripte također nisu uključene u zadanu kategoriju. Međutim, neke "umjereno agresivne" skripte Nmap tim je kategorizirao kao zadane na temelju njihove korisnosti i koliko se dobro mogu ponašati, s obzirom na druge čimbenike.
    • povjerljivost- mnoge skripte mogu otkriti povjerljive informacije trećim stranama, na temelju samih specifičnosti njihovog rada. Na primjer, skripte za traženje WHOIS podataka moraju prijaviti ciljnu IP adresu regionalnim registratorima. Drugim riječima, u zadanoj kategoriji NSE skripti, Nmap tim pokušava ne dodavati skripte koje mogu narušiti privatnost.
  • otkriće- Ova kategorija skripti aktivno pokušava saznati više o mreži slanjem javnih zahtjeva registraru, uređajima s omogućenim SNMP-om, servisu imenika itd. Primjeri takvih skripti su "html-title" (dobije naslov korijenskog puta web-mjesta), "smb-enum-shares" (navodi dionice sustava Windows) i "snmp-sysdescr" (dohvaća detaljne informacije o sustavu putem standardnog interneta protokol za upravljanje SNMP uređajima).
  • dos- Skripte u ovoj kategoriji treba koristiti s krajnjim oprezom, jer mogu dovesti do uskraćivanja usluge. Testeri sigurnosti ih ponekad koriste za testiranje ranjivosti sustava na napade uskraćivanja usluge, ali takvo testiranje može dovesti do neželjenih nuspojava, kao što je rušenje nekih ranjivih usluga.
  • iskorištavati- Ove skripte imaju za cilj aktivno iskorištavanje određene ranjivosti. Primjeri ove kategorije skripti su "jdwp-exec" i "http-shellshock".
  • vanjski- skripte u ovoj kategoriji mogu slati podatke trećim stranama koje kontroliraju baze podataka ili druge mrežne resurse. Primjer takve skripte je "whois-ip", koja se povezuje s WHOIS poslužiteljima radi dobivanja informacija o IP adresi cilja. Uvijek postoji mogućnost da će operateri baze podataka trećih strana zabilježiti sve što im pošaljete, što će u mnogim slučajevima uključivati ​​informacije o vašoj IP adresi i IP adresi vašeg cilja. Većina skripti koje se bave isključivo prometom između računala za skeniranje i klijenta ne spada u ovu kategoriju.
  • fuzzer je kategorija skripti koja je dizajnirana za slanje neočekivanih ili nasumičnih polja poslužiteljskom softveru u svakoj seriji. Iako ova metoda može biti korisna za pronalaženje nepoznatih grešaka i ranjivosti u softveru, to je spor proces koji također zahtijeva propusnost. Primjer ove kategorije skripti je "dns-fuzz", koji bombardira DNS poslužitelj djelomično modificiranim upitima domene dok se poslužitelj ne pokvari ili ne istekne vremensko ograničenje koje je postavilo korisnik.
  • nametljiv- ova kategorija skripti uključuje one koje se ne mogu klasificirati kao sigurne (sigurne), budući da su rizici previsoki da će se ciljni sustav srušiti pod njihovim pritiskom, bit će potrebni značajni resursi na ciljnom hostu (na primjer, propusnost ili vrijeme procesora ), ili na neki drugi način, njihovo će izvršenje administratori ciljnog sustava percipirati kao zlonamjernu aktivnost. Primjeri takvih skripti su "http-open-proxy" (koji pokušava koristiti ciljni poslužitelj kao HTTP proxy) i "snmp-brute" (koji pokušava pogoditi takozvani "string zajednice" SNMP uređaja slanjem popularnih vrijednosti kao što su javne, privatne i cisco). Ako skripta ne pripada kategoriji posebne verzije, mora se klasificirati kao sigurna ili nametljiva.
  • zlonamjernog softvera- ove skripte provjeravaju je li ciljna platforma zaražena zlonamjernim softverom ili backdoorima. Primjeri skripti u ovoj kategoriji skripti su "smtp-strangeport", koji nadzire SMTP poslužitelje koji rade na neuobičajenim brojevima portova, i "auth-spoof", koji otkriva lažne identd demone (implementirajući podršku protokola korisničkog identiteta) koji još uvijek pružaju lažni odgovor prije nego što prime zahtjev. Bilo za prvi ili drugi primjer, takvo ponašanje, ako se otkrije, obično je znak zaraze zlonamjernim softverom u sustavu.
  • sef- sve skripte koje nisu stvorene da uzrokuju kvar usluge, koriste velike količine mrežnog pojasa ili drugih resursa i nisu bile usmjerene na iskorištavanje sigurnosnih rupa, kategorizirane su kao sigurne. Mnogo je manje vjerojatno da će privući pozornost udaljenih administratora, iako (kao i kod bilo koje druge Nmap funkcionalnosti) ne može biti 100% zajamčeno da nikada neće privući kolateralnu pozornost. Većina ovih skripti obavlja zadatke vezane uz opće istraživanje mreže. Primjeri skripti u ovoj kategoriji su "ssh-hostkey" (dobije SSH ključ domaćina) i "html-title" (hvata naslov s web stranice). Skripte u kategoriji verzija nisu kategorizirane kao sigurne, ali druge nesigurne skripte moraju se definirati kao nametljive.
  • verzija- skripte iz ove posebne kategorije proširenje su funkcionalnosti otkrivanja verzije i ne mogu se eksplicitno odabrati. Odabiru se za pokretanje samo kada se od njih zatraži određivanje verzije Nmapa ("-sV"). Njihov se izlaz ne može odvojiti od izlaza funkcije upravljanja verzijama i ne rade kao skripte hosta ili usluge. Primjeri takvih skripti su "skypev2-version", "pptp-version" i "iax2-version".
  • vuln- skripte u ovoj kategoriji vrše provjere prisutnosti određene poznate ranjivosti i obično daju samo one rezultate koji potvrđuju da je takva ranjivost pronađena. Primjeri takvih skripti su "realvnc-auth-bypass" i "afp-path-vuln".

Skripte, ovisno o njihovoj funkcionalnoj orijentaciji, kao i fazi skeniranja tijekom koje se izvršavaju, podijeljene su u četiri vrste (neke skripte mogu podržavati nekoliko vrsta operacija odjednom):

  • Prerule skripte - Ova vrsta skripte se pokreće prije nego što se izvedu bilo kakve Nmap operacije, tako da se izvršavaju prije faze skeniranja, kada Nmap još nije prikupio nikakve informacije o cilju. Ove skripte mogu biti korisne za izvođenje zadataka koji su neovisni o specifičnim ciljevima skeniranja, kao što je postavljanje zahtjeva za emitiranje za ispitivanje DHCP i DNS SD poslužitelja. Neke od ovih skripti mogu stvoriti nove ciljeve za Nmap skeniranje (samo ako unesete NSE argument "newtargets"). Tako, na primjer, skripta "dns-zone-transfer" može dobiti popis IP adresa u domeni pomoću zahtjeva za prijenos zone, a zatim ih automatski dodati na popis ciljeva za Nmap skeniranje. Prerule skripte identificiraju se pomoću funkcije prerule.
  • Host skripte - Ove se skripte pokreću tijekom standardnog procesa Nmap skeniranja, nakon što je Nmap skener izvršio normalne operacije kao što su otkrivanje hosta, skeniranje portova, određivanje verzija i otkrivanje OS-a na ciljnom hostu. Ova vrsta skripte poziva se jednom za svaki ciljni host koji odgovara njegovoj funkciji hostrule. Primjeri uključuju "whois-ip" koji traži podatke o vlasniku za ciljnu IP adresu i "path-mtu" koji pokušava odrediti maksimalnu veličinu IP paketa koji može doći do cilja bez potrebe za fragmentacijom.
  • Skripte usluge - Ova vrsta skripte se pokreće kada se određene usluge pronađu na ciljnom hostu. Na primjer, Nmap uključuje više od 15 http servisnih skripti koje se pokreću za rad s web poslužiteljima. Ako host ima web poslužitelje koji rade na više portova, te se skripte mogu pokrenuti više puta (po jedna za svaki port). Ovo je najčešća vrsta skripte u Nmapu, a razlikuju se po tome što sadrže portrule funkciju za određivanje na kojoj bi se od otkrivenih usluga skripta trebala pokrenuti.
  • Postrule skripte - Ova vrsta skripte se pokreće jednom, nakon što Nmap skenira sve predviđene ciljeve. Mogu biti korisni za formatiranje i predstavljanje izlaza informacija koje prima Nmap skener. Na primjer, "ssh-hostkey" skripta je poznatija kao servisna skripta (s definiranim portrulom) koja se povezuje sa SSH poslužiteljima, otkriva njihove javne ključeve i ispisuje ih. Ali također uključuje funkciju postrule koja provjerava duplikate ključeva među svim provjerenim hostovima i zatim ispisuje sve pronađene. Drugi mogući slučaj upotrebe skripti ovog tipa je obrnuti ispis izlaza Nmap skenera - na primjer, popis svih hostova koji pokreću određenu uslugu, umjesto jednostavnog popisa svih hostova koji na njima pokreću usluge. Postrule skripte identificiraju se pomoću funkcije postrule.

Bilješka: mnoge skripte mogu se izvoditi kao skripta prije pravila kao i kao poststrule skripta. U tim slučajevima preporuča se korištenje funkcije prerule kako bi se izbjegle nedosljednosti.

Vječni paranoik, Anton Kočukov.


Vidi također:

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

Opis

nmap(" Network Mapper ») je program otvorenog koda za istraživanje i sigurnost mreže. Dizajniran je za brzo skeniranje velikih mreža, iako dobro radi i za pojedinačne mete. Nmap koristi sirove IP pakete na originalan način kako bi odredio koji su hostovi dostupni na mreži, koje usluge (naziv aplikacije i verzija) nude, koje operacijske sustave (i verzije OS-a) koriste, koje vrste paketnih filtera/vatrozida se koriste , i još mnogo drugih karakteristika. Dok se Nmap obično koristi za sigurnosne provjere, mnogi administratori sustava ga smatraju korisnim za uobičajene zadatke kao što su praćenje strukture mreže, upravljanje rasporedima pokretanja usluge i praćenje vremena rada hosta ili usluge.

Izlaz Nmapa je popis skeniranih ciljeva, s dodatnim informacijama o svakoj meti ovisno o danim opcijama. Ključna informacija je « tablica važnih portova» . Ova tablica sadrži broj porta, protokol, naziv usluge i status. Status može biti otvoren (otvoren), filtriran (filtriran), zatvoren (zatvoren) ili nefiltriran (nije filtriran). Otvoreno znači da je aplikacija na ciljnom stroju spremna za povezivanje/primanje paketa na ovom portu. Filtrirano znači da vatrozid, mrežni filtar ili neka druga mrežna smetnja blokiraju port, a Nmap ne može odrediti je li port otvoren ili zatvoren. Zatvoreni portovi nisu povezani ni s jednom aplikacijom, ali se mogu otvoriti u bilo kojem trenutku. Portovi se smatraju nefiltriranim kada odgovaraju na zahtjeve Nmapa, ali Nmap ne može odrediti jesu li otvoreni ili zatvoreni. Nmap izdaje otvorene|filtrirane i zatvorene|filtrirane kombinacije kada ne može odrediti koje od dva stanja port opisuje. Ova tablica također može sadržavati pojedinosti o verziji softvera ako se to zatraži. Prilikom skeniranja preko IP protokola (-sO), Nmap daje informacije o podržanim protokolima, a ne o otvorenim portovima.

Uz tablicu važnih portova, Nmap može pružiti dodatne informacije o ciljanju: riješena DNS imena, nagađanje operacijskog sustava, vrste uređaja i MAC adrese.

Tipično skeniranje pomoću Nmapa prikazano je u primjeru 1. Jedini argumenti koji se koriste u ovom primjeru su -A , za verziju OS-a, skeniranje skriptama i praćenje; -T4 za brže izvođenje; zatim dva ciljana domaćina.

Primjer 1. Tipičan primjer skeniranja pomoću Nmapa

# nmap -A -T4 scanme..org) Zanimljivi portovi na stranici scanme. (protokol 1.99) 53/tcp otvorena domena 70/tcp zatvoreni gopher 80/tcp otvoreni http Apache httpd 2.0.52 ((Fedora)) 113/tcp zatvorena auth Vrsta uređaja: opće namjene Pokreće se: Linux 2.4.X|2.5.X| 2.6.X OS detalji: Linux 2.4.7 - 2.6.11, Linux 2.6.0 - 2.6.11 Zanimljivi portovi na igralištu..168.0.40): (1659 portova skeniranih, ali nije prikazano u nastavku su u stanju: zatvoreno) PORT VERZIJA DRŽAVNE USLUGE 135/tcp otvoriti msrpc Microsoft Windows RPC 139/tcp otvoriti netbios-ssn 389/tcp otvoriti ldap? 445/tcp otvoriti microsoft-ds Microsoft Windows XP microsoft-ds 1002/tcp otvoriti windows-icfw? 1025/tcp otvoreni msrpc Microsoft Windows RPC 1720/tcp otvoreni H.323/Q.931 CompTek AquaGateKeeper 5800/tcp otvoreni vnc-http RealVNC 4.0 (rezolucija 400x250; VNC port: 5900/tcp otvoren: 5900/tcp 58ncl) v. Adresa: 00:A0:CC:63:85:4B (Lite-on Communications) Vrsta uređaja: opće namjene Pokreće: Microsoft Windows NT/2K/XP Detalji OS: Microsoft Windows XP Pro RC1+ do konačnog izdanja Informacije o usluzi: OS: Windows , Windows XP Nmap završen: 2 IP adrese (2 hosta gore) skenirane za 88,392 sekunde


Najnoviju verziju Nmapa možete preuzeti s

Nmap je kultni skener bez kojeg gotovo nijedan haker ne može, pa tema proširenja njegovih mogućnosti, mislim, zanima mnoge. Korištenje drugih alata u kombinaciji s Nmapom uobičajena je praksa. Ovaj će članak govoriti o tome kako jednostavno automatizirati Nmap s vašim omiljenim alatima. Prikladnije je "pritisnuti jedan gumb" i dobiti rezultat nego stalno raditi isti slijed radnji. Korištenje skripti u Nmapu može pomoći hakerima da automatski hakiraju sustave, a administratori sustava mogu provjeriti ima li u sustavima zadanih rupa i popraviti ih na vrijeme.

Nekoliko riječi o Nmapu

Siguran sam da većina čitatelja časopisa Hacker zna što je Nmap i vjerojatno su ga više puta koristili za istraživanje mreže i prikupljanje informacija. Za one koji su zaboravili ili ne znaju, za svaki slučaj da podsjetim:

  • Nmap je višeplatformski alat za skeniranje mreže, provjeru njezine sigurnosti, određivanje verzija OS-a i raznih usluga i još mnogo toga. Ovo je vrlo fleksibilan i lako proširiv uslužni program, a motor za skriptiranje NSE ga čini takvim;
  • NSE (Nmap Scripting Engine) moćna je komponenta Nmapa koja korisnicima omogućuje pisanje skripti za automatizaciju širokog spektra mrežnih zadataka: fleksibilnija interakcija s postojećim Nmap mogućnostima, otkrivanje i iskorištavanje ranjivosti i još mnogo toga. NSE se temelji na tumaču jezika Lua;
  • Lua je skriptni jezik sličan JavaScriptu.

Formulacija problema

Kao što je već spomenuto, danas ćemo proširiti funkcionalnost Nmapa pisanjem vlastitih skripti. Svaki hack/pentest obično počinje s izviđanjem i prikupljanjem podataka. Jedna od prvih provjera je prisutnost otvorenih portova na hostu koji se proučava i identifikacija pokrenutih usluga. Vjerojatno ne postoji bolji alat za prikupljanje takvih informacija od Nmapa. Sljedeći korak nakon skeniranja obično je ili traženje sploita za pronađenu ranjivu uslugu ili odabir para login:password metodom grube sile.

Recimo da aktivno koristite THC-Hydra brute-forcer za pogađanje lozinki nekoliko usluga (na primjer, HTTP-Basic, SSH, MySQL). U tom slučaju morate postaviti hydru na svaku uslugu zasebno, morate zapamtiti značajke usluga i zastavice potrebne za pokretanje hydre. A ako bude potrebno brutirati mnogo više od pet usluga?.. Zašto to ne automatizirati?

Stoga, napišimo jednostavnu skriptu koja će automatizirati proces pokretanja Hydre za odabir prijava / lozinki za jednu uslugu (na primjer, PostgreSQL). Za to su nam potrebni sljedeći alati:

  • nmap;
  • THC-Hydra;
  • bilo koji uređivač teksta.

Ako još nemate instaliran Nmap i/ili Hydra, popravite to odmah:

$ sudo apt-get install nmap hydra

Ok, počnimo. Skripte za Nmap su obične tekstualne datoteke s nastavkom *.nse. Stoga otvorite svoj omiljeni uređivač teksta i stvorite novu datoteku. Koristit ću Vim:

$ vim hydra.nse

NSE struktura skripte

Prije nego što prijeđemo na pisanje, mora se reći da sve skripte imaju određenu strukturu. Osim samog koda koji automatizira određene radnje, sadrži opis skripte (čemu je namijenjena i kako se koristi), podatke o autoru, licencama, ovisnosti o drugim skriptama, kategorijama kojima skripta pripada. , i tako dalje. Pogledajmo pobliže svaki od ovih dijelova.

Opis skripte (opis)

Ovaj odjeljak sadrži opis skripte, komentare autora, primjer prikaza rezultata izvršavanja skripte na ekranu i dodatne značajke.

Za našu skriptu koja odabire prijave/lozinke za PostgeSQL, opis će izgledati ovako:

Opis = [[ Brute force sve usluge koje se izvode na ciljnom hostu. Rezultati se vraćaju u tablici sa svakim putem, otkrivenom metodom, prijavom i/ili lozinkom. ]] --- -- @usage -- nmap --script hydra [--script-args "lpath= , ppath= "] -- -- @izlaz -- SLUŽBA DRŽAVNE LUKE -- 80/tcp otvoren http -- | hidra: -- | put metoda lozinka za prijavu -- | 127.0.0.1/private/index.html Digest log pass -- |_ 127.0.0.1/simple/index.txt Osnovni korisnik qwerty -- -- @args hydra.lpath: put do datoteke s prijavama. Na primjer, -- nmap --script hydra --script-args="lpath=/home/my_logins.txt" -- @args hydra.ppath: put do datoteke s lozinkama. Na primjer, -- nmap --script hydra --script-args="ppath=/home/my_pass.txt"

Komentar; -- - višeredni komentar; @usage, @output, @args - primjer pozivanja skripte, prikazivanje rezultata na ekranu, potrebni argumenti prilikom poziva.

Gore u @usage vidimo format pokretanja skripte. U ovom slučaju navodi se samo naziv skripte (hidra). To postaje moguće ako se skripta smjesti u direktorij / /nmap/scripts/ , inače ćete morati navesti apsolutni ili relativni put do njega. U budućnosti ćemo omogućiti postavljanje argumenata pri pokretanju skripte. Argumenti se postavljaju pomoću oznake --script-args " " . U našem slučaju postavit ćemo put do datoteke za prijavu (lpath) i do datoteke lozinke (ppath). Argumenti su izborni: prema zadanim postavkama tražit ćemo datoteke pod nazivom login.txt i password.txt u trenutni imenik.

Kategorije u kojima se nalazi skripta (kategorije)

Kada pišete NSE skriptu, možete odrediti njezinu kategoriju (ili nekoliko kategorija). Ovo je korisno kada korisnik Nmapa ne želi koristiti određenu skriptu, već skup skripti koje su u istoj kategoriji. Primjeri nekih kategorija:

  • auth - kategorija u kojoj skripte definiraju autentifikacijske podatke ciljnog hosta;
  • brute - kategorija čije skripte pomažu u određivanju prijava i lozinki za različite usluge;
  • default - kategorija koja sadrži glavne skripte. Postoje neki kriteriji koji određuju pripada li skripta ovoj kategoriji: brzina skeniranja, korisnost, pouzdanost, povjerljivost, vizualni izlaz;
  • zlonamjerni softver - kategorija koja pomaže identificirati zlonamjerni softver.

Na primjer, ako trebate pokrenuti sve skripte iz kategorije auth, tada će naredba izgledati ovako:

$ nmap --script=auth example.com

U ovom slučaju, skripte ove kategorije će se izvoditi naizmjenično za navedeni host. Naša skripta spada u brut kategoriju. Dodajmo sljedeći redak u datoteku:

Kategorije = ("grub")

Podaci o autoru (autoru)

Svaka skripta sadrži podatke o svom autoru. U mom slučaju:

Autor = "Olga Barinova"

Podaci o licenci u uporabi (licenca)

Nmap pozdravlja svaki razvoj korisnika i potiče dijeljenje, uključujući NSE skripte. Prilikom navođenja licence potvrđujete pravo dijeljenja skripte sa zajednicom. Standardna Nmap licenca izgleda ovako:

Licenca = "Isto kao Nmap - Vidi http://nmap.org/book/man-legal.html"

Dodajmo i ovaj redak našoj skripti.

Ovisnosti o drugim skriptama (ovisnosti)

Ovo područje sadrži nazive NSE skripti koje se moraju izvršiti prije nego što se ova skripta može pokrenuti kako bi se dobile potrebne informacije. Na primjer,

Ovisnosti = ("smb-brute").

U našem slučaju ova značajka neće biti potrebna, pa nećemo dodavati ovisnosti.

Host i port (host & port)

Nmap mora znati za koje usluge i na kojim portovima će pokrenuti skriptu. Za to postoje posebna pravila:

  • prerule() - skripta se izvršava jednom prije skeniranja bilo kojeg hosta, koristi se za neke mrežne operacije;
  • hostrule(host) - skripta se izvršava za svaki host iz tablice, što uzima kao argument;
  • portrule(host, port) - skripta se izvršava za svaki host i za svaki port iz tablica koje uzima kao argumente;
  • postrule() - skripta se izvršava jednom nakon skeniranja bilo kojeg hosta. Uglavnom se koristi za obradu rezultata, sažimanje statistike i slično.

Postoje knjižnice za formiranje takvih pravila. Naša skripta treba samo navesti broj porta (5432) i naziv usluge (postgresql), a onda će raditi samo za ovaj port i uslugu. Postoji prilično popularna knjižnica kratkih portova ugrađena u NSE koja uključuje različite metode. Koristit ćemo metodu

Port_or_service (luke, usluge, protos, stanja)

gdje su portovi brojevi portova, usluge su nazivi usluga, proto su nazivi protokola (na primjer, udp), stanja su stanja.

Ova metoda vraća true ako je usluga koja se trenutno analizira na jednom od portova na popisu portova ili se podudara s bilo kojom uslugom na popisu usluga, a protokol i status se provjeravaju za podudaranje, inače se vraća false.
Da bi naša skripta radila s PostgreSQL-om, moramo dodati broj porta i naziv usluge:

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

Povezivanje knjižnica

Odmaknimo se na sekundu od strukture skripte i razmotrimo kako su povezane vanjske knjižnice čijoj funkcionalnosti trebamo pristupiti.

I dalje dostupno samo članovima

Opcija 1. Pridružite se zajednici "site" kako biste pročitali sve materijale na stranici

Članstvo u zajednici tijekom navedenog razdoblja omogućit će vam pristup SVIM Hacker materijalima, povećati vaš osobni kumulativni popust i omogućiti vam da prikupite profesionalnu ocjenu Xakep Score!

Ispod ćete pronaći 20 osnovnih primjeri korištenja naredbe Nmap.

Naučit ćete kako koristiti Nmap iz naredbeni redak u linuxu za traženje aktivnih hostova na mreži i skeniranje otvorenih portova.

Vidjet ćete kako daljinski otkriti operativni sustav koristeći otiske prstiju TCP/IP stoga i kako provjerite verziju softvera radi na udaljenom poslužitelju.

Također ću vam pokazati kako koristiti Nmap za implementaciju tajno skeniranje, kako definirati vatrozid I kako promijeniti MAC adresu.

1. Skenirajte pojedinačni host ili IP adresu

Skenirati Odvojena IP adresa:

$ nmap 192.168.1.1

Skeniraj poslužitelj po Ime domaćina:

$ nmap server.site

Povećati Nivo detalja rezultati skeniranja:

$ nmap -v poslužitelj.. stranica

2. Skeniranje više IP adresa

Skenirati Više IP adresa:

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

Skenirati Podmreža:

$ nmap 192.168.1.0/24 $ nmap 192.168.1.*

Skenirati Raspon IP adresa (192.168.1.0 — 192.168.1.200):

$ nmap 192.168.1.0-200

3. Potražite aktivna računala na mreži

Koristan savjet: Skenirajte mrežu samo jednom ping naredbom! Izračunajte sva aktivna računala!

Skenirajte mrežu u potrazi Aktivni domaćini:

$ nmap -sn 192.168.1.0/24

4. Skeniranje popisa hostova iz datoteke

Skenirajte popis hostova/mreža iz Datoteka:

$ nmap -iL input.txt

Format datoteke:

# Unosi mogu biti u bilo kojem od formata s kojima # Nmap radi iz naredbenog retka (IP adrese, imena hostova, CIDR, IPv6 ili oktet # rasponi). Unosi moraju biti odvojeni jednim ili više razmaka, tabulatorima # ili novim redcima. $ cat input.txt server.site 192.168.1.0/24 192.168.2.1,2,3 192.168.3.0-200

5. Isključujući IP/Hostove/mreže iz skeniranja

Isključi ciljeve iz Nmap skeniranja:

$ nmap 192.168.1.0/24 --isključi 192.168.1.1 $ nmap 192.168.1.0/24 --isključi 192.168.1.1 192.168.1.5 $ nmap 192.168.1.1 --isključi 192.168.1.1.

Popis izuzetaka hostovi preuzeti iz datoteke:

$ nmap 192.168.1.0/24 --excludefile exclude.txt

Format datoteke s isključenim hostovima isti je kao gore.

6. Skenirajte određene portove

Skenirati Jedna luka:

$ nmap -p 80 192.168.1.1

Skenirati Više portova:

$ nmap -p 80,443 192.168.1.1

Skenirati Port Range:

$ nmap -p 80-1000 192.168.1.1

Skenirati Sve luke:

$ nmap -p "*" 192.168.1.1

Skenirajte neke od njih Zajedničke luke:

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

7. Definicija podržanih IP protokola

Odredite koje IP protokoli(TCP, UDP, ICMP, itd.) podržava skenirani host:

$ nmap -sO 192.168.1.1

8. Skenirajte TCP/UDP portove

Skenirati sve TCP portove:

$ nmap -sT 192.168.1.1

Skenirati određene TCP portove:

$ nmap -p T:80 192.168.1.1

Skenirati svi UDP portovi:

$ nmap -sU 192.168.1.1

Skenirati specifični UDP portovi:

$ nmap -p U:53 192.168.1.1

Kombiniranje skeniranja različitih portova:

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

9. Brzo skeniranje

Aktivirati Brzi način rada skeniranje:

$ nmap -F 192.168.1.1

* Skenira manje portova od običnog skeniranja.

10. Prikaži razlog statusa porta

Pokazati razlog, čime Nmap smatra da je luka u određenom stanju:

$ nmap -- razlog 192.168.1.1

11. Prikaži samo otvorene portove

Pokazati Samo otvoreni portovi(ili eventualno otvoren):

$ nmap --open 192.168.1.1

12. Definicija OS-a

Jedna od najpoznatijih značajki Nmapa je daljinsko otkrivanje OS-a na temelju analize TCP/IP stoga.

Nmap šalje niz TCP i UDP paketa udaljenom hostu i ispituje odgovore.

Nakon što je pokrenuo mnogo testova, Nmap uspoređuje rezultate sa svojom bazom podataka i, ako pronađe podudaranje, prikazuje informacije o OS-u.

Upaliti Definicija OS-a:

$ nmap -O 192.168.1.1

13. Određivanje verzije usluga

Upaliti Određivanje verzije usluga:

$ nmap -sV 192.168.1.1

* Određuje verzije programa koji se izvode na udaljenom poslužitelju.

14. Detekcija vatrozida

Saznajte je li vaše računalo bilo zaštićeno Filteri paketa ili vatrozida:

$ nmap -sA 192.168.1.1

15. Lažnjavanje MAC adrese

Promijeniti MAC adrese:

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

Promijenite MAC adresu Nasumični MAC:

$ nmap --spoof-mac 0 192.168.1.1

16. Skeniranje vatrozida za ranjivosti

Ove tri vrste skeniranja koriste suptilnu rupu u TCP RFC-u za razdvajanje otvorenih i zatvorenih portova.

Kada se skenira sustav usklađen s RFC-om, svaki paket koji ne sadrži set bitova SYN, RST ili ACK rezultirat će slanjem RST-a kao odgovor ako je port zatvoren, ili će rezultirati bez odgovora ako je port otvoren .

Jer nijedan od ovih bitova nije postavljen, tada će bilo koja kombinacija preostala tri (FIN, PSH i URG) biti važeća.

TCP Null skeniranje:

$ nmap -sN 192.168.1.1

* Nisu postavljeni bitovi (zastavice u TCP zaglavlju 0).

TCP Fin skeniranje:

$ nmap -sF 192.168.1.1

* Postavljen je samo TCP FIN bit.

TCP Božić skeniranje:

$ nmap -sX 192.168.1.1

* Postavljene su zastavice FIN, PSH i URG (paket svijetli kao božićno drvce).

17. Skriveno skeniranje

Koristan savjet: Ostanite anonimni tijekom skeniranja portova! Koristite Nmap + Tor + ProxyChains! Sigurno i jednostavno ispitivanje penetracije!

TCP SYN skeniranje:

$ nmap -sS 192.168.0.1

* Poznato kao skeniranje poluotvorenih veza, jer ne otvara pune TCP veze.

18. Onemogućite otkrivanje hosta (bez Pinga)

Nemojte pingati hostove prije skeniranja:

$ nmap -Pn 192.168.1.1

19. Onemogućite korištenje DNS-a

Koristan savjet: Trebate li pojačati sigurnost na Linuxu? Šifrirajte DNS promet za zaštitu od lažiranja!

Nikada nemojte izvoditi obrnuto DNS razlučivanje za svaku pronađenu aktivnu IP adresu.