nmapWord文档格式.docx
《nmapWord文档格式.docx》由会员分享,可在线阅读,更多相关《nmapWord文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
。
在确定了目标主机和网络之后,即可进行扫描。
如果以root来运行Nmap,Nmap的功能会大大的增强,因为超级用户可以创建便于Nmap利用的定制数据包。
在目标机上,Nmap运行灵活。
使用Nmap进行单机扫描或是整个网络的扫描很简单,只要将带有"
/mask"
的目标地址指定给Nmap即可。
地址是"
victim/24"
, 则目标是c类网络,地址是"
victim/16"
, 则目标是B类网络。
另外,Nmap允许你使用各类指定的网络地址,比如 192.168.7.*,是指192.168.7.0/24, 或 192.168.7.1,4,8-12,对所选子网下的主机进行扫描。
Ping扫描(Ping Sweeping)
入侵者使用Nmap扫描整个网络寻找目标。
通过使用"
-sP"
命令,进行ping扫描。
缺省情况下,Nmap给每个扫描到的主机发送一个ICMP echo和一个TCP ACK, 主机对任何一种的响应都会被Nmap得到。
举例:
扫描192.168.7.0网络:
# nmap -sP 192.168.7.0/24
Starting nmap V. 2.12 by Fyodor (fyodor@, www.insecure.org/nmap/)
Host (192.168.7.11) appears to be up.
Host (192.168.7.12) appears to be up.
Host (192.168.7.76) appears to be up.
Nmap run completed -- 256 IP addresses (3 hosts up) scanned in 1 second
如果不发送ICMP echo请求,但要检查系统的可用性,这种扫描可能得不到一些站点的响应。
在这种情况下,一个TCP"
ping"
就可用于扫描目标网络。
一个TCP"
将发送一个ACK到目标网络上的每个主机。
网络上的主机如果在线,则会返回一个TCP RST响应。
使用带有ping扫描的TCP ping选项,也就是"
PT"
选项可以对网络上指定端口进行扫描(本文例子中指的缺省端口是80(http)号端口),它将可能通过目标边界路由器甚至是防火墙。
注意,被探测的主机上的目标端口无须打开,关键取决于是否在网络上。
# nmap -sP -PT80 192.168.7.0/24
TCP probe port is 80
当潜在入侵者发现了在目标网络上运行的主机,下一步是进行端口扫描。
Nmap支持不同类别的端口扫描TCP连接, TCP SYN, Stealth FIN, Xmas Tree,Null和UDP扫描。
端口扫描(Port Scanning)
一个攻击者使用TCP连接扫描很容易被发现,因为Nmap将使用connect()系统调用打开目标机上相关端口的连接,并完成三次TCP握手。
黑客登录到主机将显示开放的端口。
一个tcp连接扫描使用"
-sT"
命令如下。
# nmap -sT 192.168.7.12
Interesting ports on (192.168.7.12):
Port State Protocol Service
7 open tcp echo
9 open tcp discard
13 open tcp daytime
19 open tcp chargen
21 open tcp ftp
...
Nmap run completed -- 1 IP address (1 host up) scanned in 3 seconds
隐蔽扫描(Stealth Scanning)
如果一个攻击者不愿在扫描时使其信息被记录在目标系统日志上,TCP SYN扫描可帮你的忙,它很少会在目标机上留下记录,三次握手的过程从来都不会完全实现。
通过发送一个SYN包(是TCP协议中的第一个包)开始一次SYN的扫描。
任何开放的端口都将有一个SYN|ACK响应。
然而,攻击者发送一个RST替代ACK,连接中止。
三次握手得不到实现,也就很少有站点能记录这样的探测。
如果是关闭的端口,对最初的SYN信号的响应也会是RST,让NMAP知道该端口不在监听。
"
-sS"
命令将发送一个SYN扫描探测主机或网络:
# nmap -sS 192.168.7.7
Interesting ports on (192.168.7.7):
25 open tcp smtp
53 open tcp domain
80 open tcp http
Nmap run completed -- 1 IP address (1 host up) scanned in 1 second
虽然SYN扫描可能不被注意,但他们仍会被一些入侵检测系统捕捉。
Stealth FIN,Xmas树和Null scans可用于躲避包过滤和可检测进入受限制端口的SYN包。
这三个扫描器对关闭的端口返回RST,对开放的端口将吸收包。
一个 FIN "
-sF"
扫描将发送一个FIN包到每个端口。
然而Xmas扫描"
-sX"
打开FIN, URG和PUSH的标志位,一个Null scans "
-sN"
关闭所有的标志位。
因为微软不支持TCP标准,所以FIN, Xmas Tree和Null scans在非微软公司的操作系统下才有效。
UDP扫描(UDP Scanning)
如果一个攻击者寻找一个流行的UDP漏洞,比如 rpcbind漏洞或cDc Back Orifice。
为了查出哪些端口在监听,则进行UDP扫描,即可知哪些端口对UDP是开放的。
Nmap将发送一个O字节的UDP包到每个端口。
如果主机返回端口不可达,则表示端口是关闭的。
但这种方法受到时间的限制,因为大多数的UNIX主机限制ICMP错误速率。
幸运的是,Nmap本身检测这种速率并自身减速,也就不会产生溢出主机的情况。
# nmap -sU 192.168.7.7
WARNING:
-sU is now UDP scan -- for TCP FIN scan use -sFStarting
nmap V. 2.12 by Fyodor
(fyodor@, www.insecure.org/nmap/)
53 open udp domain
111 open udp sunrpc
123 open udp ntp
137 open udp netbios-ns
138 open udp netbios-dgm
177 open udp xdmcp
1024 open udp unknown
Nmap run completed -- 1 IP address (1 host up) scanned in 2 seconds
操作系统识别(OS Fingerprinting)
通常一个入侵者可能对某个操作系统的漏洞很熟悉,能很轻易地进入此操作系统的机器。
一个常见的选项是TCP/IP上的指纹,带有"
-O"
选项决定远程操作系统的类型。
这可以和一个端口扫描结合使用,但不能和ping扫描结合使用。
Nmap通过向主机发送不同类型的探测信号,缩小查找的操作系统系统的范围。
指纹验证TCP包括使用FIN探测技术发现目标机的响应类型。
BOGUS的标志探测,发现远程主机对发送的带有SYN包的不明标志的反应,TCP 初始序列号(ISN)取样发现ISN数值的样式,也可以用另外的方式决定远程操作系统。
有一篇权威的关于指纹(fingertprinting)的文章,作者:
Fyodor,也是namp的作者,参见地址:
http:
//www.insecure.org/nmap/nmap-fingerprinting-article.htmlNmap'
s操作系统的检测是很准确也是很有效的,举例:
使用系统Solaris 2.7带有SYN扫描的指纹验证堆栈。
# nmap -sS -O 192.168.7.12
Interesting ports on comet (192.168.7.12):
TCP Sequence Prediction:
Class=random positive increments
Difficulty=17818 (Worthy challenge)
Remote operating system guess:
Solaris 2.6 - 2.7
Nmap run completed -- 1 IP address (1 host up) scanned in 5 secondsIdent
扫描(Ident Scanning)一个攻击者常常寻找一台对于某些进程存在漏洞的电脑。
比如,一个以root运行的WEB服务器。
如果目标机运行了identd,一个攻击者使用Nmap通过"
-I"
选项的TCP连接,就可以发现哪个用户拥有http守护进程。
我们将扫描一个Linux WEB服务器为例:
# nmap -sT -p 80 -I -O
Interesting ports on (xxx.xxx.xxx.xxx):
P
ort State Protocol Service Owner
80 open tcp http root
Difficulty=1140492 (Good luck!
)
Linux 2.1.122 - 2.1.132;
2.2.0-pre1 - 2.2.2
如果你的WEB服务器是错误的配置并以root来运行,象上例一样,它将是黎明前的黑暗。
Apache运行在root下,是不安全的实践,你可以通过把/etc/indeed.conf中的auth服务注销来阻止ident请求,并重新启动ident。
另外也可用使用ipchains或你的最常用的防火墙,在网络边界上执行防火墙规则来终止ident请求,这可以阻止来路不明的人探测你的网站用户拥有哪些进程.
另一个选项是"
-P0"
在缺省设置下试图扫描一个端口之前,Nmap将用TCP ping"
和 ICMP echo命令ping一个目标机,如果ICMP 和TCP的探测扫描得不到响应,目标主机或网络就不会被扫描,即使他们是运行着的。
而"
选项允许在扫描之前不进行ping,即可进行扫描。
你应该习惯使用"
-v"
命令,它详细列出所有信息,能和所有的扫描选项一起使用。
你能反复地使用这个选项,获得有关目标机的更多信息。
使用"
-p "
选项,可以指定扫描端口。
比如 ,攻击者想探测你的web服务器的ftp(port 21),telnet (port 23), dns (port 53), http (port 80),想知道你所使用的操作系统,它将使用SYN扫描。
# nmap -sS -p 21,23,53,80 -O -v
小结:
使用什么样的方法来抵制一个黑客使用Nmap,这样的工具是有的,比如 Scanlogd, Courtney, and Shadow;
,然而使用这样的工具并不能代替网络安全管理员。
因为扫描只是攻击的前期准备,站点使用它只可以进行严密的监视。
使用Nmap监视自己的站点,系统和网络管理员能发现潜在入侵者对你的系统的探测。
Nmap4.00(http:
//www.insecure.org/nmap)
Usage:
nmap[ScanType(s)][Options]{targetspecification}
TARGETSPECIFICATION:
Canpasshostnames,IPaddresses,networks,etc.
Ex:
scanme.nmap.org,192.168.0.1;
10.0.0-255.1-254
-iL<
inputfilename>
:
Inputfromlistofhosts/networks
-iR<
numhosts>
Chooserandomtargets
--exclude<
host1[,host2][,host3],...>
Excludehosts/networks
--excludefile<
exclude_file>
ExcludelistfromfileHOSTDISCOVERY:
-sL:
ListScan-simplylisttargetstoscan
-sP:
PingScan-gonofurtherthandeterminingifhostisonline
-P0:
Treatallhostsasonline--skiphostdiscovery
-PS/PA/PU[portlist]:
TCPSYN/ACKorUDPdiscoverytogivenports
-PE/PP/PM:
ICMPecho,timestamp,andnetmaskrequestdiscoveryprobes
-n/-R:
NeverdoDNSresolution/Alwaysresolve[default:
sometimes]
--dns-servers<
serv1[,serv2],...>
SpecifycustomDNSservers
--system-dns:
UseOS'
sDNSresolverSCANTECHNIQUES:
-sS/sT/sA/sW/sM:
TCPSYN/Connect()/ACK/Window/Maimonscans
-sN/sF/sX:
TCPNull,FIN,andXmasscans
--scanflags<
flags>
CustomizeTCPscanflags
-sI<
zombiehost[:
probeport]>
Idlescan
-sO:
IPprotocolscan
-b<
ftprelayhost>
FTPbouncescanPORTSPECIFICATIONANDSCANORDER:
-p<
portranges>
Onlyscanspecifiedports
-p22;
-p1-65535;
-pU:
53,111,137,T:
21-25,80,139,8080
-F:
Fast-Scanonlytheportslistedinthenmap-servicesfile)
-r:
Scanportsconsecutively-don'
trandomizeSERVICE/VERSIONDETECTION:
-sV:
Probeopenportstodetermineservice/versioninfo
--version-intensity<
level>
Setfrom0(light)to9(tryallprobes)
--version-light:
Limittomostlikelyprobes(intensity2)
--version-all:
Tryeverysingleprobe(intensity9)
--version-trace:
Showdetailedversionscanactivity(fordebugging)
OSDETECTION:
-O:
EnableOSdetection
--osscan-limit:
LimitOSdetectiontopromisingtargets
--osscan-guess:
GuessOSmoreaggressively
TIMINGANDPERFORMANCE:
-T[0-5]:
Settimingtemplate(higherisfaster)
--min-hostgroup/max-hostgroup<
size>
Parallelhostscangroupsizes
--min-parallelism/max-parallelism<
msec>
Probeparallelization
--min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout<
Specifies
proberoundtriptime.
--max-retries<
tries>
Capsnumberofportscanproberetransmissions.
--host-timeout<
Giveupontargetafterthislong
--scan-delay/--max-scan-delay<
AdjustdelaybetweenprobesFIREWALL/IDSEVASIONANDSPOOFING:
-f;
--mtu<
val>
fragmentpackets(optionallyw/givenMTU)
-D<
decoy1,decoy2[,ME],...>
Cloakascanwithdecoys
-S<
IP_Address>
Spoofsourceaddress
-e<
iface>
Usespecifiedinterface
-g/--source-port<
portnum>
Usegivenportnumber
--data-length<
num>
Appendrandomdatatosentpackets
--ttl<
SetIPtime-to-livefield
--spoof-mac<
macaddress/prefix/vendorname>
SpoofyourMACaddress
--badsum:
SendpacketswithabogusTCP/UDPchecksumOUTPUT:
-oN/-oX/-oS/-oG<
file>
Outputscaninnormal,XML,s|<
rIptkIddi3,
andGrepableformat,respectively,tothegivenfilename.
-oA<
basename>
Outputinthethreemajorformatsatonce
-v:
Increaseverbositylevel(usetwiceformoreeffect)
-d[level]:
Setorincreasedebugginglevel(Upto9ismeaningful)
--packet-trace:
Showallpacketssentandreceived
--