PAVADINIMAS
nmap - tinklo tyrinėjimo įrankis
bei saugumo skeneris
SINTAKSĖ
nmap [skanavimo tipas(ai)] [opcijos]
<hostas #1 ... #n>
APIBŪDINIMAS
nmap'as yra sukurtas tam, kad
leistų sistemų administrato
riams 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 nus
tatymas per TCP/IP fingerprintinima,
stealth (vogtinis)
skanavimas, dinaminės pauzės ir
retransimisijos skaičiavi
mai, lygiagretusis skanavimas
, nepasiekiamų host'ų nus
tatymas 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ų sis
temos 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čiau
sias sąrašas
įdomių portų, rastų
skanuojamoje
mašinoje(se). Nmap'as
visada parodo kokią paslaugą (ser
vice) 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 tikl
siai 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 naudo
jimą. Taip pat
galite paleisti nmap -h ir pamatysite
pagrindines opcijas, su trumpais
aprašymais.
SKANAVIMŲ TIPAI
-sT paprasčiausias
TCP connect() skanavimas. Jūs ban
dote 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 padaro
mas TCP prisijungimas.
Jūs paprasčiausiai
nusiunčiate TCP SYN paketuką kaip kad norėdamas
prisijungti ir laukiate atsakymo. Pakankamai neblo
gas 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 negy
vas, 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. Pakanka
mai 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.
-sA ACK
skanavimas: šitas metodas paprastai yra naudo
jamas tam, kad išsiaiškinti firewall'ų (ugnies
sinų) taisykles. Jis gali padėti nustatyti ar fire
wall'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:passwor
das@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 gal
ima 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
finger
printai).
-I Įjungiamas
TCP reverse ident skanavimas. Kaip 1996
Dave'as Goldsmith'as pastebėjo, ident protokolas
(rfc 1413) leidžia pamatyti, kokiam useriui prik
lauso 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 sufrag
mentuoti 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ą.
-oM <logas>
Viskas, kas vyksta ekrane bus loginama į
failą
"logas" "šiek tiek" kitokiu formatu.
-oS <logas>
Logina į failą "logas" kažkokiu nauju s|<ipT kiDd|3
(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 arba -oM 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 atsitik
tinius 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 ppop3 serverį, taip
pat galite mišriai nurodinėti portus:
-p 21,60-90,1243  p; -- 21, visi nuo 60 iki 90
bei 1243 portas
-p 1- &nbssp;
-- 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 dae
mon'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 skanuo
jantiems 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.
-r Nurodo
nmap'ui portus skanuoti NE atsitiktine
tvarka.
-M <maximalus susijungimu skaicius>
Nustato naksimalų susijungimu skaičių, kuris bus
naudojamas paralelėje su TCP(standartiškai) skanav
imu.
LAIKO APRIBOJIMAI
-T <Paranoid|Sneaky|Polite|Normal|Aggressive|Insane>
Paranoid - pats lėčiausias skanavimo būdas, Insane
- pats greičiausias, deja ne toks tiksllus, 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 hos
tus. 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 pakanka
mai 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-finger
printing-article.txt dokumente
arba nmap'o puslapyje:
http://www.insecure.org/nmap
AUTORIUS: Fyodor fyodor@insecure.org
IŠVERTĖ: Aurimas Mikalauskas inner@dammit.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. Sour
cus 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 doku
mente, arba (neduok Dieve) radot
kokių tai bug'u, rašykit
man adresu, pateiktu sekcijoje
išvertė. Šiaip šitas manu
alas abejoju ar bus
atnaujinamas, bet pačią naujausią
nmap-lt-HOWTO visada galite rasti
mano puslapyje:
http://ice.dammit.lt/~inner/
® 2002-2003 VaidaZ