nmap参考指南man page7p.docx
《nmap参考指南man page7p.docx》由会员分享,可在线阅读,更多相关《nmap参考指南man page7p.docx(33页珍藏版)》请在冰豆网上搜索。
nmap参考指南manpage7p
Nmap参考指南(ManPage)
--------------------------------------------------------------------------------
TableofContents
1.描述
2.译注
3.选项概要
4.目标说明
5.主机发现
6.端口扫描基础
7.端口扫描技术
8.端口说明和扫描顺序
9.服务和版本探测
10.操作系统探测
11.时间和性能
12.防火墙/IDS躲避和哄骗
13.输出
14.其它选项
15.运行时的交互
16.实例
17.Bugs
18.作者
19.法律事项(版权、许可证、担保(缺)、出口限制)
UnofficialTranslationDisclaimer/非官方翻译声明
Name
nmap—网络探测工具和安全/端口扫描器
nmap[扫描类型...][选项]{扫描目标说明}
1.描述
Nmap(“NetworkMapper(网络映射器)”)是一款开放源代码的网络探测和安全审核的工具。
它的设计目标是快速地扫描大型网络,当然用它扫描单个主机也没有问题。
Nmap以新颖的方式使用原始IP报文来发现网络上有哪些主机,那些主机提供什么服务(应用程序名和版本),那些服务运行在什么操作系统(包括版本信息),它们使用什么类型的报文过滤器/防火墙,以及一堆其它功能。
虽然Nmap通常用于安全审核,许多系统管理员和网络管理员也用它来做一些日常的工作,比如查看整个网络的信息,管理服务升级计划,以及监视主机和服务的运行。
Nmap输出的是扫描目标的列表,以及每个目标的补充信息,至于是哪些信息则依赖于所使用的选项。
“所感兴趣的端口表格”是其中的关键。
那张表列出端口号,协议,服务名称和状态。
状态可能是open(开放的),filtered(被过滤的),closed(关闭的),或者unfiltered(未被过滤的)。
Open(开放的)意味着目标机魃系挠τ贸绦蛘诟枚丝诩嗵?
/报文。
filtered(被过滤的)意味着防火墙,过滤器或者其它网络障碍阻止了该端口被访问,Nmap无法得知它是open(开放的)还是closed(关闭的)。
closed(关闭的)端口没有应用程序在它上面监听,但是他们随时可能开放。
当端口对Nmap的探测做出响应,但是Nmap无法确定它们是关闭还是开放时,这些端口就被认为是unfiltered(未被过滤的)如果Nmap报告状态组合open|filtered和closed|filtered时,那说明Nmap无法确定该端口处于两个状态中的哪一个状态。
当要求进行版本探测时,端口表也可以包含软件的版本信息。
当要求进行IP协议扫描时(-sO),Nmap提供关于所支持的IP协议而不是正在监听的端口的信息。
除了所感兴趣的端口表,Nmap还能提供关于目标机的进一步信息,包括反向域名,操作系统猜测,设备类型,和MAC地址。
一个典型的Nmap扫描如Example1,“一个典型的Nmap扫描”所示。
在这个例子中,唯一的选项是-A,用来进行操作系统及其版本的探测,-T4可以加快执行速度,接着是两个目标主机名。
Example1.一个典型的Nmap扫描
Startingnmap(
)
(The1663portsscannedbutnotshownbelowareinstate:
filtered)
portSTATESERVICEVERSION
22/tcpopensshOpenSSH3.9p1(protocol1.99)
53/tcpopendomain
70/tcpclosedgopher
113/tcpclosedauth
Devicetype:
generalpurpose
Uptime33。
908days(sinceThuJul2103:
38:
032005)
(The1659portsscannedbutnotshownbelowareinstate:
closed)
portSTATESERVICEVERSION
135/tcpopenmsrpcMicrosoftWindowsRPC
139/tcpopennetbios-ssn
389/tcpopenldap?
445/tcpopenmicrosoft-dsMicrosoftWindowsXPmicrosoft-ds
1002/tcpopenwindows-icfw?
1025/tcpopenmsrpcMicrosoftWindowsRPC
1720/tcpopenH.323/Q.931CompTekAquaGateKeeper
5800/tcpopenvnc-httpRealVNC4.0(Resolution400x250;VNCTCPport:
5900)
5900/tcpopenvncVNC(protocol3.8)
MACAddress:
00:
A0:
CC:
63:
85:
4B(Lite-onCommunications)
Devicetype:
generalpurpose
Running:
MicrosoftWindowsNT/2K/XP
OSdetails:
MicrosoftWindowsXPProRC1+throughfinalrelease
ServiceInfo:
OSs:
Windows,WindowsXP
Nmapfinished:
2IPaddresses(2hostsup)scannedin88.392seconds
--------------------------------------------------------------------------------
2.译注
该Nmap参考指南中文版由FeiYang和LeiLi从英文版本翻译而来。
我们希望这将使全世界使用中文的人们更了解Nmap,但我们不能保证该译本和官方的英文版本一样完整,也不能保证同步更新。
它可以在CreativeCommonsAttributionLicense下被修改并重新发布。
3.选项概要
当Nmap不带选项运行时,该选项概要会被输出,最新的版本在这里
。
它帮助人们记住最常用的选项,但不能替代本手册其余深入的文档,一些晦涩的选项甚至不在这里。
Usage:
nmap[ScanType(s)][Options]{targetspecification}
TARGETSPECIFICATION:
Canpasshostnames,IPaddresses,networks,etc.
-iL:
Inputfromlistofhosts/networks
-iR:
Chooserandomtargets
--exclude:
Excludehosts/networks
--excludefile:
Excludelistfromfile
HOSTDISCOVERY:
-sL:
ListScan-simplylisttargetstoscan
-sP:
PingScan-gonofurtherthandeterminingifhostisonline
-P0:
Treatallhostsasonline--skiphostdiscovery
-PS/PA/PU[portlist]:
TCPSYN/ACKorUDPdiscoveryprobestogivenports
-PE/PP/PM:
ICMPecho,timestamp,andnetmaskrequestdiscoveryprobes
-n/-R:
NeverdoDNSresolution/Alwaysresolve[default:
sometimesresolve]
SCANTECHNIQUES:
-sS/sT/sA/sW/sM:
TCPSYN/Connect()/ACK/Window/Maimonscans
-sN/sF/sX:
TCPNull,FIN,andXmasscans
--scanflags:
CustomizeTCPscanflags
-sI:
Idlescan
-sO:
IPprotocolscan
-b:
FTPbouncescan
PORTSPECIFICATIONANDSCANORDER:
-p:
Onlyscanspecifiedports
Ex:
-p22;-p1-65535;-pU:
53,111,137,T:
21-25,80,139,8080
-F:
Fast-Scanonlytheportslistedinthenmap-servicesfile)
-r:
Scanportsconsecutively-don'trandomize
SERVICE/VERSIONDETECTION:
-sV:
Probeopenportstodetermineservice/versioninfo
--version-light:
Limittomostlikelyprobesforfasteridentification
--version-all:
Tryeverysingleprobeforversiondetection
--version-trace:
Showdetailedversionscanactivity(fordebugging)
OSDETECTION:
-O:
EnableOSdetection
--osscan-limit:
LimitOSdetectiontopromisingtargets
--osscan-guess:
GuessOSmoreaggressively
TIMINGANDPERFORMANCE:
-T[0-6]:
Settimingtemplate(higherisfaster)
--min-hostgroup/max-hostgroup:
Parallelhostscangroupsizes
--min-parallelism/max-parallelism:
Probeparallelization
--min_rtt_timeout/max-rtt-timeout/initial-rtt-timeout:
Specifies
proberoundtriptime.
--host-timeout:
Giveupontargetafterthislong
--scan-delay/--max_scan-delay:
Adjustdelaybetweenprobes
FIREWALL/IDSEVASIONANDSPOOFING:
-f;--mtu:
fragmentpackets(optionallyw/givenMTU)
-D:
Cloakascanwithdecoys
-S:
Spoofsourceaddress
-e:
Usespecifiedinterface
-g/--source-port:
Usegivenportnumber
--data-length:
Appendrandomdatatosentpackets
--ttl:
SetIPtime-to-livefield
--spoof-mac:
SpoofyourMACaddress
OUTPUT:
-oN/-oX/-oS/-oG:
Outputscanresultsinnormal,XML,s|:
Outputinthethreemajorformatsatonce
-v:
Increaseverbositylevel(usetwiceformoreeffect)
-d[level]:
Setorincreasedebugginglevel(Upto9ismeaningful)
--packet-trace:
Showallpacketssentandreceived
--iflist:
Printhostinterfacesandroutes(fordebugging)
--append-output:
Appendtoratherthanclobberspecifiedoutputfiles
--resume:
Resumeanabortedscan
--stylesheet:
XSLstylesheettotransformXMLoutputtoHTML
--no_stylesheet:
PreventNmapfromassociatingXSLstylesheetw/XMLoutput
MISC:
-6:
EnableIPv6scanning
-A:
EnablesOSdetectionandVersiondetection
--datadir:
SpecifycustomNmapdatafilelocation
--send-eth/--send-ip:
SendpacketsusingrawethernetframesorIPpackets
--privileged:
Assumethattheuserisfullyprivileged
-V:
Printversionnumber
-h:
Printthishelpsummarypage.
EXAMPLES:
nmap-v-iR10000-P0-p80
4.目标说明
除了选项,所有出现在Nmap命令行上的都被视为对目标主机的说明。
最简单的情况是指定一个目标IP地址或主机名。
IPv6地址只能用规范的IPv6地址或主机名指定。
CIDR和八位字节范围不支持IPv6,因为它们对于IPv6几乎没什么用。
虽然目标通常在命令行指定,下列选项也可用来控制目标的选择:
-iL(从列表中输入)
从inputfilename中读取目标说明。
在命令行输入一堆主机名显得很笨拙,然而经常需要这样。
例如,您的DHCP服务器可能导出10,000个当前租约的列表,而您希望对它们进行扫描。
如果您不是使用未授权的静态IP来定位主机,或许您想要扫描所有IP地址。
只要生成要扫描的主机的列表,用-iL把文件名作为选项传给Nmap。
列表中的项可以是Nmap在命令行上接受的任何格式(IP地址,主机名,CIDR,IPv6,或者八位字节范围)。
每一项必须以一个或多个空格,制表符或换行符分开。
如果您希望Nmap从标准输入而不是实际文件读取列表,您可以用一个连字符(-)作为文件名。
-iR(随机选择目标)
对于互联网范围内的调查和研究,您也许想随机地选择目标。
hostnum选项告诉Nmap生成多少个IP。
不合需要的IP如特定的私有,组播或者未分配的地址自动略过。
选项0意味着永无休止的扫描。
记住,一些网管对于未授权的扫描可能会很感冒并加以抱怨。
使用该选项的后果自负!
如果在某个雨天的下午,您觉得实在无聊,试试这个命令nmap-sS-PS80-iR0-p80随机地找一些网站浏览。
--exclude(排除主机/网络)
如果在您指定的扫描范围有一些主机或网络不是您的目标,那就用该选项加上以逗号分隔的列表排除它们。
该列表用正常的Nmap语法,因此它可以包括主机名,CIDR,八位字节范围等等。
当您希望扫描的网络包含执行关键任务的服务器,已知的对端口扫描反应强烈的系统或者被其它人看管的子网时,这也许有用。
--excludefile(排除文件中的列表)
这和--exclude选项的功能一样,只是所排除的目标是用以换行符,空格,或者制表符分隔的excludefile提供的,而不是在命令行上输入的。
5.主机发现
任何网络探测任务的最初几个步骤之一就是把一组IP范围(有时该范围是巨大的)缩小为一列活动的或者您感兴趣的主机。
扫描每个IP的每个端口很慢,通常也没必要。
当然,什么样的主机令您感兴趣主要依赖于扫描的目的。
网管也许只对运行特定服务的主机感兴趣,而从事安全的人士则可能对一个马桶都感兴趣,只要它有IP地址:
-)。
一个系统管理员也许仅仅使用Ping来定位内网上的主机,而一个外部入侵测试人员则可能绞尽脑汁用各种方法试图突破防火墙的封锁。
由于主机发现的需求五花八门,Nmap提供了一箩筐的选项来定制您的需求。
主机发现有时候也叫做
如果没有给出主机发现的选项,Nmap就发送一个TCPACK报文到80端口和一个ICMP回声请求到每台目标机器。
一个例外是ARP扫描用于局域网上的任何目标机器。
对于非特权UNIXshell用户,使用connect()系统调用会发送一个SYN报文而不是ACK这些默认行为和使用-PA-PE选项的效果相同。
扫描局域网时,这种主机发现一般够用了,但是对于安全审核,建议进行更加全面的探测。
-P*选项(用于选择ping的类型)可以被结合使用。
您可以通过使用不同的TCP端口/标志位和ICMP码发送许多探测报文来增加穿透防守严密的防火墙的机会。
另外要注意的是即使您指定了其它-P*选项,ARP发现(-PR)对于局域网上的目标而言是默认行为,因为它总是更快更有效。
下列选项控制主机发现。
-sL(列表扫描)
既然只是打印目标主机的列表,像其它一些高级功能如端口扫描,操作系统探测或者Ping扫描的选项就没有了。
如果您希望关闭ping扫描而仍然执行这样的高级功能,请继续阅读关于-P0选项的介绍。
-sP(Ping扫描)
该选项告诉Nmap仅仅进行ping扫描(主机发现),然后打印出对扫描做出响应的那些主机。
没有进一步的测试(如端口扫描或者操作系统探测)。
这比列表扫描更积极,常常用于和列表扫描相同的目的。
它可以得到些许目标网络的信息而不被特别注意到。
对于攻击者来说,了解多少主机正在运行比列表扫描提供的一列IP和主机名往往更有价值。
系统管理员往往也很喜欢这个选项。
它可以很方便地得出网络上有多少机器正在运行或者监视服务器是否正常运行。
常常有人称它为地毯式ping,它比ping广播地址更可靠,因为许多主机对广播请求不响应。
-sP选项在默认情况下,发送一个ICMP回声请求和一个TCP报文到80端口。
如果非特权用户执行,就发送一个SYN报文(用connect()系统调用)到目标机的80端口。
当特权用户扫描局域网上的目标机时,会发送ARP请求(-PR),,除非使用了--send-ip选项。
-sP选项可以和除-P0)之外的任何发现探测类型-P*选项结合使用以达到更大的灵活性。
一旦使用了任何探测类型和端口选项,默认的探测(ACK和回应请求)就被覆盖了。
当防守严密的防火墙位于运行Nmap的源主机和目标网络之间时,推荐使用那些高级选项。
否则,当防火墙捕获并丢弃探测包或者响应包时,一些主机就不能被探测到。
-P0(无ping)
该选项完全跳过Nmap发现阶段。
通常Nmap在进行高强度的扫描时用它确定正在运行的机器。
默认情况下,Nmap只对正在运行的主机进行高强度的探测如端口扫描,版本探测,或者操作系统探测。
用-P0禁止主机发现会使Nmap对每一个指定的目标IP地址进行所要求的扫描。
所以如果在命令行指定一个B类目标地址空间(/16),所有65,536个IP地址都会被扫描。
-P0的第二个字符是数字0而不是字母O。
和列表扫描一样,跳过正常的主机发现,但不是打印一个目标列表,而是继续执行所要求的功能,就好像每个IP都是活动的。
-PS[portlist](TCPSYNPing)
该选项发送一个设置了SYN标志位的空TCP报文。
默认目的端口为80(可以通过改变nmap.h)文件中的DEFAULT_TCP_PROBE_PORT值进行配置,但不同的端口也可以作为选项指定。
甚至可以指定一个以逗号分隔的端口列表(如-PS22,23,25,80,113,1050,35000),在这种情况下,每个端口会被并发地扫描。
SYN标志位告诉对方您正试图建立一个连接。
通常目标端口是关闭的,一个RST(复位)包会发回来。
如果碰巧端口是开放的,目标会进行TCP三步握手的第二步,回应一个SYN/ACKTCP报文。
然后运行Nmap的机器则会扼杀这个正在建立的连接,发送一个RST而非ACK报文,否则,一个完全的连接将会建立。
RST报文是运行Nmap的机器而不是Nmap本身响应的,因为它对收到的SYN/ACK感到很意外。
Nmap并不关心端口开放还是关闭。
无论RST还是SYN/ACK响应都告诉Nmap该主机正在运行。
在UNIX机器上,通常只有特权用户root能否发送和接收原始的TCP报文。
因此作为一个变通的方法,对于非特权用户,Nmap会为每个目标主机进行系统调用connect(),它也会发送一个SYN报文来尝试建立连接。
如果connect()迅速返回成功或者一个ECONNREFUSED失败,下面的TCP堆栈一定已经收到了一个SYN/ACK或者RST,该主机将被标志位为在运行。
如果连接超时了,该主机就标志位为down掉了。
这种方法也用于IPv6连接,因为Nmap目前还不支持原始的IPv6报文。
PA[portlist](TCPACKPing)
TCPACKping和刚才讨论的SYNping相当类似。
也许您已经猜到了,区别就是设置TCP的ACK标志位而不是SYN标志位。
ACK报文表示确认一个建立连接的尝试,但该连接尚未完全建立。
所以远程主机应该总是回应一个RST报文,因为它们并没有发出过连接请求到运行Nmap的机器,如果它们正在运行的话。
-PA选项使用和SYN探测相同的默认端口(80),也可以用相同的格式指定目标端口列表。
如果非特权用户尝试该功能,或者指定的是IPv6目标,前面说过的connect()方法将被使用。
这个方法并不完美,因为它实际上发送的是SYN报文,而不是ACK报文。
提供SYN和ACK两种ping探测的原因是使通过防火墙的机会尽可能大。
许多管理员会配置他们的路由器或者其它简单的防火墙来封锁SYN报文,除非连接目标是那些公开的服务器像公司网站或者邮件服务器。
这可以阻止其它进入组织的连接,同时也允许用户访问互联网。
这种无状态的方法几乎不占用防火墙/路由器的资源,因而被硬件和软件过滤器广泛支持。
LinuxNetfilter/iptables防火墙软件提供方便的--syn选项来实现这种无状态的方法。
当这样的无状态防火墙规则存在时,发送到关闭目标端口的SYNping探测(-PS)