NMAP(1)

PAVADINIMAS
nmap - tinklo tyrinėjimo įrankis bei saugumo skeneris

SINTAKSĖ
nmap [skanavimo tipas(ai)] [opcijos] <hostas/tinklas #1 ... #n>

APIBŪDINIMAS
nmap'as yra sukurtas tam, kad leistų sistemų administratoriams bei smalsiems individams skanuoti didelius tinklus, siekiant nustatyti kokie hostai yra veikiantys ir kokias paslaugas jie siūlo. nmap'as turi be galo daug skanavimo technologijų, tai: UDP, TCP connect(), TCP SYN (pusiau atviras), ftp proxy (bounce ataka), Reverse-ident, ICMP(ping sweep), FIN, ACK sweep, Xmas Tree, SYN sweep, bei Null skan'as. Skanavimo Tipai sekcijoje rasite apie tai smulkesnės informacijos. nmap'as taip pat turi nemažai pažangių savybių, tokių kaip nutolusio kompiuterio (toliau vadinamo 'remote') (O)peracinės (S)istemos nustatymas per TCP/IP fingerprintinima, stealth (vogtinis) skanavimas, dinaminės pauzės ir retransimisijos skaičiavimai, lygiagretusis skanavimas , nepasiekiamų host'ų nustatymas skanuojant lygiagrečiu skanavimo metodu, decoy skanavimas, filtruojamų portų nustatymas, tiesioginis RPC skanavimas, fragmentinis skanavimas, bei labai lankstus taikinio ir portų nurodymas.

nmap'o autorius stengiasi kaip galima daugiau įvairių nmap'o galimybių suteikti ne tik root vartotojui, bet ir paprastam sistemos vartotojui, deja daugėlis kritinių sistemos branduolio (kernel) interfeisų (tokių kaip "raw socket'ai") reikalauja root'o privilegijų, todėl nmap'as turėtų būti naudojamas root'u kai tik įmanoma.

nmap'o naudojimo rezultatas dažniausiai būna paprasčiausias sąrašas įdomių portų, rastų skanuojamoje mašinoje(se). Nmap'as visada parodo kokią paslaugą (service) teikia portas, jo numerį, būseną bei protokolą. Būsaną nusako vienas iš trijų žodžių: "open", "filtered", "unfiltered". "open" (atviras) reiškia, kad taikinys leis prisijungti prie šito porto. "filtered" (filtruojamas) reiškia, kad firewall'as (ugnies siena), filtras ar dar kažkoks įdomus įrankis dengia portą, dėl to nmap'as tiklsiai negali nustatyti ar portas atviras. "unfiltered" (nefiltruojamas) parodo, kad portas yra tikrai "closed" (uždarytas) ir nera dengiamas jokio firewall'o/filtro. Nefiltruojamas portas yra gan įprastas atvėjis ir yra rodomas tik tuo atveju, kai dauguma iš skanuotų portų yra filtruojami.

Priklausomai nuo to, kokios opcijos naudojamos, nmap'as taip pat gali parodyti ir nutolusio kompiuterio: (O)peracinę (S)istemą, TCP susekamumą, vartotoju vardus, kuriems priklauso tam tikri procesai, DNS vardus ir dar vieną kitą.

OPCIJOS
Prasmingos opcijos visos gali būti rašomos kartu (t.y. vienoje eilutėje). nmap'as stengsis pasakyti, kokias klaidas esate padarę (aišku jei esate :).

Jei esate nekantrus, galite iškarto šoktelti į sekciją pavyzdžiai gale dokumento, kur gan aiškiai parodo naudojimą. Taip pat galite paleisti nmap -h ir pamatysite pagrindines opcijas, su trumpais aprašymais.

SKANAVIMŲ TIPAI

-sT paprasčiausias TCP connect() skanavimas. Jūs bandote prisijungti prie kiekvieno porto iš eilės. Jei portas klausosi, nmap'as prisijungia prie jo, taigi jei host'as logina, jis matys, kad bandote jungtis. Šis metodas yra tiksliausias, bet rekomenduočiau jį naudoti tik tuo atveju, jei skanuojate savo ar draugo kompiuterį, t.y. tokį, dėl kurio vėliau tikrai nesusilauksite nemalonumų.

-sS TCP SYN skanavimas, kitaip dar dažnai vadinamas kaip "pusiau-atviras" skanavimas, nes nėra padaromas TCP prisijungimas. Jūs paprasčiausiai nusiunčiate TCP SYN paketuką kaip kad norėdamas prisijungti ir laukiate atsakymo. Pakankamai neblogas metodas, bet jei yra filtruojamų portų (pvz. pastatytas firewall'as) ir host kompiuteris juos logina, - būsite pastebėtas.

-sF -sX -sN
    Stealth FIN, Xmas Tree bei Null skanavimo režimai. Tai yra šiek tiek saugesni skanavimo būdai nei TCP SYN (pastebimumo atžvilgiu), bet deja nei vienas iš jų neveikia M$ sistemoms. Iš kitos pusės, tai nebloga priemonė, kurios pagalba galima nustatyti ar tai M$ sistema ar ne, t.y. jei -sF -sX arba -sN parodo, kad visi portai uždaryti, o -sS rodo kelis atvirus portus, taikinys greičiausiai windows dėžutė.

-sP Tai paprasčiausias ping'as, kuris parodo kurie hostai tinkle yra gyvi. Atliekama paprasčiausiai siunčiant ICMP echo prašymą (request). Deja kai kurie saitai (kaip mail.takas.lt) blokuoja prašymus. Kad iš tikro įsitikinti, ar hostas negyvas, nmap'as nusiunčia ir TCP ack paketuką į 80 (standartiškai) portą. Jei gauname atgal RST, reiškia hostas gyvas. Pagal standartą (r00t'ui) nmap'as naudoja abu ICMP bei ACK metodus. Pakankamai efektyvu, nes vienu metu galite patikrinti #n hostų.

-sU UDP skanavimas. Naudojamas tam, kad nustatyti kokie UDP (User Datagram Protocol, RFC 768) portai yra atviri.

    Kai kurie mano, kad UDP skanavimas yra beprasmiškas, bet jį prisiminti verta vien dėl vienos Solaris rcpbind skylės. Taip pat yra cDc Back Orifice trojanas, kuris atsidaro UDP portą ant window'sų. Gaila tik, kad UDP skanavimas kartais gali trukti labai ilgai.

-SO IP protokolo skanavimas. Šis metodas yra naudojamas tam, kad nustatyti kokius protokolus naudoja jūsų taikinys. Technika labai paprasta: siunčiami IP paketai be jokio protokolo header'io į visus nurodytus protokolus. Jeigu pvz gauname "ICMP protocol unreachible" (ICMP protoklolas nepasiekiamas) atsakymą, vadinasi protokolas nenaudojamas, priešingu atveju skaitoma, kad jis atviras.

-sA ACK skanavimas: šitas metodas paprastai yra naudojamas tam, kad išsiaiškinti firewall'ų (ugnies sinų) taisykles. Jis gali padėti nustatyti ar firewall'as tikras, ar paprasčiausias paketų filtras, blokuojantis įplaukiančius SYN paketukus.

-sW Window skanavimas. Šis skanavimo būdas labai panašus į ACK skaną, skirtumas tik tas, kad šis skanavimo metodas kartais parodo ir atvirus portus (ACK jų nerodo).

-sR RPC skanavimas. Praskanavus parodoma kokia programa ir jos versija laiko RPC portus atvirus.

-b <ftp relay hostas>
    Dar vienas pakankamai originalus skanavimo būdas, t.y. pasinaudojant ftp proxy serveriu. <ftp relay host'o> formatas gali būti useris:passwordas@serveris:portas . Viskas išskyrus serverį yra nebūtina.

BENDROSIOS OPCIJOS
    Nei viena iš šių nėra būtina, bet kai kurios gali būti pakankamai naudingos

-P0 Skanuoti iš kart, nepabandžius iš pradžių ping'int serverio. Tai naudinga skanuojant tokius kaip mail.takas.lt, kurie neatsakinėja į ICMP echo request'us. Tokiu atveju reikėtų naudoti -P0 arba -PT80.

-PT Naudoti TCP "ping'ą" vietoje standartinio ICMP ping'o. Naudinga tokiais atvejais, kai serveris neatsakinėja i ICMO echo request'us. Taip pat galima naudoti kartu su postu (-PT<portas>).

-PS Naudoja SYN (prisijungimo prašymą) vietoje ACP

-PI Paprastas ping'as + suranda subnet'o broadcast'u adresus tinkle.

-PB Standartinis ping'inimo metodas: naudoja ACP bei ICMP ping'us kartu. Geriausia būdas patikrinti firewall'us, kurie blokuoja vieną iš jų.

-O  Viena geriausių nmap'o ypatybių - serverio OS'o atpažinimas pagal jo fingerprint'us (jei atvirai, pats nelabai žinau kas per biesas tie fingerprintai).

-I  Įjungiamas TCP reverse ident skanavimas. Kaip 1996 Dave'as Goldsmith'as pastebėjo, ident protokolas (rfc 1413) leidžia pamatyti, kokiam useriui priklauso procesas, kuris naudoja TCP susijungima. Taigi, tu gali pvz prisijungti prie 80 porto ir tada pasinaudojes inentd'u, gali pamatyti ar http serveris yra paleistas root'u ar kokiu kitu userium.

-f  Skanuojant SYN (-sS) , FIN (-sF), XMAS (-sX) arba NULL (-sN) metodu, naudojami labai mažyčiai sufragmentuoti IP paketai.

-v  Verbose mode. Labai rekomenduojama opcija, ypač jei norit geriau suprasti kas čia dedasi. naudodamas šią opciją du kartus, efektas bus dar geresnis. Gali naudoti ir dvigubą -d, efektas - nerealus. Nepabandęs, nesuprasi.

-h  Jei norite kad nedidelis langelis jums trumpai primintu kelias pagrindines komandas, ši opcija - jums.

-oN <logas>
    Viskas, kas vyksta ekrane bus loginama į "logas" failą.

-oX <logas>
    Skanavimo rezultatai išsaugomi XML formatu į failą, kurį nurodote kaip argumentą šiai opcijai.

-oG <logas>
    Ši opcija išsaugo skanavimo rezultatus taip, kad jūs juos galetumėte lengvai grepinti. Šis gan primityvus formatas išsaugo viską vienoje eilutėje.

-oS <logas>
    Loginama į failą "logas" "skipt kiddie" formatu.

--resume <logas>
    Skanavimas, kuris buvo nutrauktas su ^C, gali būti pratęstas, su sąlyga, kad viskas buvo loginama su -oN opcija. Daugiau jokie parametrai negali būti pateikti (jie bus tokie, kokie buvo naudojami loginant). nmap'as pradės skanuoti nuo sekančios mašinos, po tos, kuri paskutinė buvo sėkmingai nuskanuota..

-iL <failas>
    Nuskaito hostus (IP adresus) iš failo "failas". Hostai faile turi būti atskirti tarpais, TAB'ais arba atskirose linijose. deja opcijų nurodyti jokių negalite tame faile, užtat yra galimybė jas nurodyti komandinėje eilutėje.

-iR Šita opcija priverčia nmap'ą generuoti atsitiktinius hostus. Jei kada neturėsite ką veikti, pabandykite `nmap -sS -iR -p 80', kad surastumėte keletą www serverių.

-p <portai>
    Galite nurodyti kurį/kuriuos portus tikrinti. pvz. -p 110 patikrins ar hostas turi pop3 serverį, taip pat galite mišriai nurodinėti portus:
        -p 21,60-90,1243 -- 21, visi nuo 60 iki 90 bei 1243 portas
        -p 1- -- visi portai nuo 1 iki 65535.

-F  Greitasis metodas. Skanuoja tik tuos portus, kurie nurodyti nmap'o services faile (pagal default'ą - /usr/local/lib/nmap/nmap-services)

-D <decoy1 [,decoy2][,decoyN][,ME]>
    Decoy skanavimas priverčia skanuojamą host'ą manyti, kad jį vienu metu skanuoja visi nurodyti decoy'iai. Hostų logai gali parodyti 5-10 skanavimų iš unikalių IP adresų, bet kuris iš jų skanuoja iš tikro jie pasakyti negalės.

    Atskirk kiekvieną decoy'į kableliais (be tarpo) ir gali tarp jų įterpti 'ME' kaip vieną iš decoy'ių. nmap'as ten įterps tavo adresą. Jei šito nenurodysi, nmap'as atsitiktinai išrinks tau vietą. Tiesa, jei 'ME' įrašysi 6-oje ar dar vėlesnėje vietoje, kai kurie skanavimų detektoriai (tokie kaip Solar Designer'io nepakartojamas scanlog daemon'as) gali tavo IP išviso neparodyti.

    Nepamiršk, kad hostai, kuruos naudosi kaip decoy'ius, turi būti gyvi, kitaip gali už-SYN-flood'inti taikinį, o be to labai nesunku bus surasti skanuotoją, jei jis bus vienintelis gyvas visame tinkle.

    Atkreipk dėmesį ir į tai, kad kai kurie (durnesni) portų skanavimų detektoriai gali aplamai skanuojantiems host'ams uždrausti priėjimą. Įsivaizduok, kas gali nutikti, jei vieną iš decoy'ių nurodytum "localhost'ą" :)

    Decoy skanavimas gali būti naudojamas kartu su ping (naudojant ICMP, SYN, ACK, ar dar ką nors) arba tikru portų skanavimu bei bandant surasti remote OS'ą ( -O ).

-S <IP_adresas>
    Kartais nmap'as gali nerasti jūsų adreso. Tokiu atveju galite naudoti -S opciją su jūsų IP adresu bei interfeisu, kuriuo siūsite paketus.

-e <interfeisas>
    Nurodo nmap'ui kokiu interfeisu siųsti paketus. (lo, ppp0, eth0 ir etc.)

-g <portas>
    Nurodo iš kokio porto skanuoti. Daugelis firewall'ų bei filtrų padaro išimtis DNS (53) bei FTP-DATA (20) paketams.

-n  Liepia nmap'ui net nemėginti rezolvinti ip adresų i jų vardus, nes dažnai tai būna labai lėtas procesas ir stabdo nmap'o darbą.

-R  Priešingai nei -n opcija, -R liepia nmap'ui visada pamėginti išrezolvinti ip adresą.

-r  Nurodo nmap'ui portus skanuoti NE atsitiktine tvarka.

--randomize_hosts
    Nmap'as atsitiktine tvarka išmaišo kiekvieną grupę iš daugiau nei 2048 hostų prieš pradedant juos skanuoti. Tai šiek tiek suklaidina įvairius tinklo stebejimo įrankius.

-M <maximalus susijungimu skaicius>
    Nustato naksimalų susijungimu skaičių, kuris bus naudojamas paralelėje su TCP(standartiškai) skanavimu.

LAIKO APRIBOJIMAI

-T <Paranoid|Sneaky|Polite|Normal|Aggressive|Insane>
    Paranoid - pats lėčiausias skanavimo būdas, Insane - pats greičiausias, deja ne toks tikslus, ypač jei tinklas lėtas. Vietoj žodžių galite naudoti ir -T (0-5), kur 0 == Paranoid, 1 == Sneaky ir t.t.

--host_timeout <milisekundės>
    Nurodo kiek laiko nmap'as gali skanuoti duotąjį IP. Laikas turi būti nemažiau nei 200 milisekundžių.

--max_rtt_timeout <milisekundės>
    Kiek daugiausia laiko nmap'as gali laukti atsakymo iš skanuojamo IP.

--scan_delay <milisekundės>
    Nustato minimalų laiko tarpą, kuri nmap'as turi laukti tarp bandymų. Tai naudingiausia siekiant sumažinti tinklo apkrovimą.

TAIKINIO NURODYMO BŪDAI
Viskas, kas nėra opcijos, nmap'e suprantama kaip taikinys. Paprasčiausias būdas yra nurodyti konkrečius IP arba hostus. Jeigu norite nuskanuoti IP adresų subnet'ą, galite pridėti /maskę hostname'ui ar IP adresui. Maskė turi būti tarp 0 (norint nuskanuoti visą internetą) ir 32 (norint nuskanuoti konkretų host'ą/IP. Naudok /24 'C' klasės adresų skanavimui bei /16 'B' klasės adresų skanavimui.

nmap'as taip pat turi gan patogią galimybę nustatinėti IP adresus sąrašais/atstumais. pvz. gali nuskanuoti 'B' klasę užrašydamas 128.210.*.* arba 128.210.0-255.0-255 arba dar 128.210.0-50,51-255.1,2,3,4,5-255 . Manau kad tai pakankamai patogu ir nesudėtinga.

KELETAS PAVYZDŽIŲ

nmap -sX -e lo -P0 -S 127.0.0.3 localhost

Pasinaudodamas Xmas Tree skanavimo metodu, apsimetinėdamas, kad esu 127.0.0.3 Loopback protokolu skanuoju savo localhost'ą Štai kaip atrodo ipchains'ų log'as:

Packet log: input DENY lo PROTO=6 127.0.0.3:37009 127.0.0.1:139 L=40 S=0x00 I=53682 F=0x0000 T=41 (#1)

kaip matote, kernelis yra įsitikinęs, kad jį skanuoja iš 127.0.0.3 o tai ir yra vienas svarbiausių uždavinių - likti nematomiems :)

nmap -sS -O target.example.com/24

stealth SYN metodu nuskanuoja visas 255 mašinas, esančias target.example.com 'C' klasėje. Taip pat bando nustatyti kiekvieno iš jų operacinę sistemą.

host -l company.com | cut '-d ' -f 4 | ./nmap -v -iL -

suranda visus *.company.com hostus ir atiduoda juos nmap'ui, kuris savo ruožtu įsijungęs verbose mode visus juos nuskanuoja.

nmap -sN -D microsoft.com,mail.takas.lt,ME -oN /tmp/crazy -p 1-1024 -O crazy.com

skanauoja Null skanavimo režimu, panaudoja du decoy adresus, viską logina į /tmp/crazy failą, skanuoja nuo 1 iki 1024 crazy.com portus bei stengiasi atspėti crazy.com serverio operacinę sistemą

BUGAI
Vabalėliai? Kokie dar vabalėliai? Na.. jei rasit kokių, būtinai siūskit autoriui: <fyodor@insecure.org> . Pachai taip pat labai laukiami. Taip pat nepamirškite siūsti OS'ų fingerprintus, kad nmap'o autoriai galėtų plėsti duom. bazę. Apie tai smulkiau galite rasti docs/nmap-fingerprinting-article.txt dokumente arba nmap'o puslapyje: http://www.insecure.org/nmap

AUTORIUS

Fyodor <fyodor@insecure.org>

IŠVERTĖ

Aurimas Mikalauskas <inner@crazy.lt>

PLATINIMAS

Naujausią nmap'o versiją visada galite rasti čia:

http://www.insecure.org/nmap/

nmap is (C) 1997,1998,1999,2000 by Fyodor (fyodor@insecure.org)

libpcap'as yra taip pat platinamas kartu su nmap'u. Autorines teises į jį turi Van Jacobson, Craig Leres ir Steven McCanne, visi iš Lawrence Berkeley nacionalinės Laboratorijos Kalifornijos Universiteto, Berkeley, CA. Versija platinama su nmap'u gali būti perrašinėjama. Sourcus galit parsisiūsti iš ftp://ftp.ee.lbl.gov/libpcap.tar.Z

PABAIGAI
Džiaugiuosi, kad pagaliau pasiekėte galą. Dabar jau galite skaityti save kvalifikuotu nmap'o guru.

beje, jei norite ką nors pridėti ar pakeisti šiame dokumente, arba (neduok Dieve) radot kokių tai bug'u, rašykit man adresu, pateiktu sekcijoje išvertė. Šiaip šitas manualas abejoju ar bus atnaujinamas, bet pačią naujausią nmap-lt-HOWTO visada galite rasti mano puslapyje:

http://crazy.lt/~inner