本文目录一览:
黑客常用的扫描器是怎样的存在?
在Internet安全领域,扫描器是常用攻击工具之一。许多网络入侵是从扫描开始的。利用扫描器能够找出目标主机的各种安全漏洞,尽管其中的一些漏洞早已公布于众,但在许多系统中仍然存在,于是给了外部入侵以可乘之机。
扫描器是一种自动检测远程或本地主机安全性弱点的程序,通过使用扫描器,我们可以自动发现系统的安全缺陷。不同的扫描器检查不同的安全漏洞,但一般来说归结为两种类型:
主机系统扫描器;
网络扫描器。
主机系统扫描器用来扫描查找本地主机的安全漏洞,这些漏洞经常是错误的文件权限配置和默认帐号。主机系统扫描器的最常见工具是COPS(Computer Oracle and Password System) ,它是用来检查UNIX系统的常见安全配置问题和系统缺陷。网络扫描器是通过检查可用的端口号和服务,查找远程攻击者所能利用的安全缺陷。SATAN(System Administrator’s Tool for Analyzing Networks)是一个著名的网络扫描器,它可以用来发现以下方面的漏洞:
文件传输协议漏洞;
网络文件系统漏洞;
网络信息服务口令漏洞;
远程shell访问漏洞;
Sendmail漏洞漏洞;
普通文件传输协议漏洞;
X服务器安全和访问控制。
另外,还有SAINT、ISS 、NESSUS、NMAP 等有名的网络扫描器。由于网络系统中有新的漏洞出现,所以扫描器要不断地更新的检查漏洞库或检查程序。
工作原理
尽管从技术的角度来看,主机系统扫描器和网络扫描器不尽同,但是它们具有共同的特征。其中,就是扫描器的检测机制。大多数扫描器按上图所示的工作流程工作。
以网络扫描器为例,我们分析扫描器的工作原理。网络扫描器是通过连接远程TCP/IP不同的端口的服务,并记录目标给予的回答,就可以搜集到很多关于目标主机的各种有用的信息(如是否能用匿名登录访问FTP服务,是否有可写的FTP目录,是否能用Telnet,HTTPD是用Root还是普通用户在运行)。
当目标主机运行的是Unix操作系统时,通常提供了较多的服务。可以对该主机的端口扫描一遍,检测它提供了哪些服务。例如,扫描主机192.168.0.68的10到100之间的端口,结果如下:
$portscan 192.168.0.68 10 100
192.168.0.68 21 accepted
192.168.0.68 23 accepted
192.168.0.68 25 accepted
192.168.0.68 80 accepted
可以看出,主机192.168.0.68在21、23、25和80这些端口都提供服务。对于1024以下的端口,端口号与服务的对应是固定的。例如:
21对应的是FTP服务
23对应的是telnet服务
25对应的是mail服务
80对应的是Web服务
在Unix系统中,还有一些可以扫描某些特定服务的工具,用于观察某一特定服务进程是否正在远程主机上运行。例如,rusers和finger,这两个都是Unix命令。通过这两个命令,你能收集到目标计算机上的有关用户的消息。使用rusers命令,产生的结果如下示意:
wh yjb.dcs:ttyp1 Nov 13 15:42 7:30 (remote)
root yjb.dcs:ttyp2 Nov 13 14:57 7:21 (remote)
显示了通过远程登录的用户名,还包括上次登录时间、使用的Shell类型等信息。使用finger可以产生类似下面的结果:
user S00 PPP ppp-122-pm1.wiza Thu Nov 14 21:29:30 - still logged in
user S15 PPP ppp-119-pm1.wiza Thu Nov 14 22:16:35 - still logged in
user S04 PPP ppp-121-pm1.wiza Fri Nov 15 00:03:22 - still logged in
user S03 PPP ppp-112-pm1.wiza Thu Nov 14 22:20:23 - still logged in
这个命令能显示用户的状态。该命令是建立在客户/服务模型之上的。用户通过客户端软件向服务器请求信息,然后解释这些信息,提供给用户。在服务器上需要运行fingerd程序,根据服务器的配置,能向客户提供某些信息。若考虑到保护这些个人信息,有可能许多服务器不提供这个服务,或者只提供一些无关的信息。
对于一个功能较完备的扫描器,它能对操作系统与服务程序存在的各种系统漏洞和Bug进行检测。为了实现该项功能,需要检查各个系统配置文件,例如,
/etc/passwd 口令文件
/etc/hosts 主机列表文件
/etc/networks 网络列表文件
/etc/protocols 协议列表文件
/etc/services 服务列表文件
/etc/hosts.equiv 主机信任列表文件
比较成熟的扫描器,如SATAN,Nessus,ISS等,都能对这些配置文件进行细致的检测,并给出完整的报告和建议。
哪些方法可以防御黑客的Nmap扫描
黑客入侵ADSL用户的方法
在很多地方都是包月制的,这样的话,黑客就可以用更长的时间进行端口以及漏洞的扫描,甚至采用在线暴力破解的方法盗取密码,或者使用嗅探工具守株待兔般等待对方自动把用户名和密码送上门。
要完成一次成功的网络攻击,一般有以下几步。第一步就是要收集目标的各种信息,为了对目标进行彻底分析,必须尽可能收集攻击目标的大量有效信息,以便最后分析得到目标的漏洞列表。分析结果包括:操作系统类型,操作系统的版本,打开的服务,打开服务的版本,网络拓扑结构,网络设备,防火墙,闯氩炀踝爸玫鹊取?
黑客扫描使用的主要是TCP/IP堆栈指纹的方法。实现的手段主要是三种:
1.TCP ISN采样:寻找初始化序列规定长度与特定的OS是否匹配。
2.FIN探测:发送一个FIN包(或者是任何没有ACK或SYN标记的包)到目标的一个开放的端口,然后等待回应。许多系统会返回一个RESET(复位标记)。
3.利用BOGUS标记:通过发送一个SYN包,它含有没有定义的TCP标记的TCP头,利用系统对标记的不同反应,可以区分一些操作系统。
4.利用TCP的初始化窗口:只是简单地检查返回包里包含的窗口长度,根据大小来唯一确认各个操作系统。
扫描技术虽然很多,原理却很简单。这里简单介绍一下扫描工具Nmap(Network mapper)。这号称是目前最好的扫描工具,功能强大,用途多样,支持多种平台,灵活机动,方便易用,携带性强,留迹极少;不但能扫描出TCP/UDP端口,还能用于扫描/侦测大型网络。
注意这里使用了一些真实的域名,这样可以让扫描行为看起来更具体。你可以用自己网络里的名称代替其中的addresses/names。你最好在取得允许后再进行扫描,否则后果可要你自己承担哦。
nmap -v target.example.com
这个命令对target.example.com上所有的保留TCP端口做了一次扫描,-v表示用详细模式。
nmap -sS -O target.example.com/24
这个命令将开始一次SYN的半开扫描,针对的目标是target.example.com所在的C类子网,它还试图确定在目标上运行的是什么操作系统。这个命令需要管理员权限,因为用到了半开扫描以及系统侦测。
发动攻击的第二步就是与对方建立连接,查找登录信息。现在假设通过扫描发现对方的机器建立有IPC$。IPC$是共享“命名管道”的资源,它对于程序间的通讯很重要,在远程管理计算机和查看计算机的共享资源时都会用到。利用IPC$,黑客可以与对方建立一个空连接(无需用户名和密码),而利用这个空连接,就可以获得对方的用户列表。
第三步,使用合适的工具软件登录。打开命令行窗口,键入命令:net use 222.222.222.222ipc$ “administrator” /user:123456
这里我们假设administrator的密码是123456。如果你不知道管理员密码,还需要找其他密码破解工具帮忙。登录进去之后,所有的东西就都在黑客的控制之下了。
防范方法
因为ADSL用户一般在线时间比较长,所以安全防护意识一定要加强。每天上网十几个小时,甚至通宵开机的人不在少数吧,而且还有人把自己的机器做成Web或者ftp服务器供其他人访问。日常的防范工作一般可分为下面的几个步骤来作。
步骤一,一定要把Guest帐号禁用。有很多入侵都是通过这个帐号进一步获得管理员密码或者权限的。如果不想把自己的计算机给别人当玩具,那还是禁止的好。打开控制面板,双击“用户和密码”,选择“高级”选项卡。单击“高级”按钮,弹出本地用户和组窗口。在Guest帐号上面点击右键,选择属性,在“常规”页中选中“帐户已停用”。
步骤二,停止共享。Windows 2000安装好之后,系统会创建一些隐藏的共享。点击开始→运行→cmd,然后在命令行方式下键入命令“net share”就可以查看它们。网上有很多关于IPC入侵的文章,都利用了默认共享连接。要禁止这些共享,打开管理工具→计算机管理→共享文件夹→共享,在相应的共享文件夹上按右键,点“停止共享”就行了。
步骤三,尽量关闭不必要的服务,如Terminal Services、IIS(如果你没有用自己的机器作Web服务器的话)、RAS(远程访问服务)等。还有一个挺烦人的Messenger服务也要关掉,否则总有人用消息服务发来网络广告。打开管理工具→计算机管理→服务和应用程序→服务,看见没用的就关掉。
步骤四,禁止建立空连接。在默认的情况下,任何用户都可以通过空连接连上服务器,枚举帐号并猜测密码。我们必须禁止建立空连接,方法有以下两种:
(1)修改注册表:
HKEY_Local_MachineSystemCurrent-ControlSetControlLSA下,将DWORD值RestrictAnonymous的键值改成1。
(2)修改Windows 2000的本地安全策略:
设置“本地安全策略→本地策略→选项”中的RestrictAnonymous(匿名连接的额外限制)为“不容许枚举SAM账号和共享”。
步骤五,如果开放了Web服务,还需要对IIS服务进行安全配置:
(1) 更改Web服务主目录。右键单击“默认Web站点→属性→主目录→本地路径”,将“本地路径”指向其他目录。
(2) 删除原默认安装的Inetpub目录。
(3) 删除以下虚拟目录: _vti_bin、IISSamples、Scripts、IIShelp、IISAdmin、IIShelp、MSADC。
(4) 删除不必要的IIS扩展名映射。方法是:右键单击“默认Web站点→属性→主目录→配置”,打开应用程序窗口,去掉不必要的应用程序映射。如不用到其他映射,只保留.asp、.asa即可。
(5) 备份IIS配置。可使用IIS的备份功能,将设定好的IIS配置全部备份下来,这样就可以随时恢复IIS的安全配置。
不要以为这样就万事大吉,微软的操作系统我们又不是不知道,bug何其多,所以一定要把微软的补丁打全。
最后,建议大家选择一款实用的防火墙。比如Network ICE Corporation公司出品的Black ICE。它的安装和运行十分简单,就算对网络安全不太熟悉也没有关系,使用缺省的配置就能检测绝大多数类型的黑客攻击。对于有经验的用户,还可以选择“Tools”中的“Advanced Firewall Settings”,来针对特定的IP地址或者UDP的特定端口进行接受或拒绝配置,以达到特定的防御效果。
网络管理员会出于什么目的使用 nmap 工具
用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统。nmap工具具体功能如下:
1、探测一组主机是否在线;
2、扫描 主机端口,嗅探所提供的网络服务;
3、可以推断主机所用的操作系统 。
Nmap可用于扫描仅有两个节点的LAN,直至500个节点以上的网络。Nmap 还允许用户定制扫描技巧。
通常,一个简单的使用ICMP协议的ping操作可以满足一般需求;也可以深入探测UDP或者TCP端口,直至主机所 使用的操作系统;还可以将所有探测结果记录到各种格式的日志中, 供进一步分析操作。
扩展资料:
Nmap的优点:
1、 灵活。支持数十种不同的扫描方式,支持多种目标对象的扫描。
2、强大。Nmap可以用于扫描互联网上大规模的计算机。
3、可移植。支持主流操作系统:Windows/Linux/Unix/MacOS等等;源码开放,方便移植。
4、简单。提供默认的操作能覆盖大部分功能,基本端口扫描nmap targetip,全面的扫描nmap –A targetip。
5、自由。Nmap作为开源软件,在GPL License的范围内可以自由的使用。
6、文档丰富。Nmap官网提供了详细的文档描述。Nmap作者及其他安全专家编写了多部Nmap参考书籍。
参考资料来源:百度百科-nmap
nmap使用求助
Nmap是一款网络扫描和主机检测的非常有用的工具。Nmap是不局限于仅仅收集信息和枚举,同时可以用来作为一个漏洞探测器或安全扫描器。它可以适用于winodws,linux,mac等操作系统
Nmap是一款非常强大的实用工具,可用于:检测活在网络上的主机(主机发现)检测主机上开放的端口(端口发现或枚举)检测到相应的端口(服务发现)的软件和版本检测操作系统,硬件地址,以及软件版本检测脆弱性的漏洞(Nmap的脚本)Nmap是一个非常普遍的工具,它有命令行界面和图形用户界面。本人包括以下方面的内容:介绍Nmap扫描中的重要参数操作系统检测Nmap使用教程Nmap使用不同的技术来执行扫描,包括:TCP的connect()扫描,TCP反向的ident扫描,FTP反弹扫描等。所有这些扫描的类型有自己的优点和缺点,我们接下来将讨论这些问题。 Nmap的使用取决于目标主机,因为有一个简单的(基本)扫描和预先扫描之间的差异。我们需要使用一些先进的技术来绕过防火墙和入侵检测/防御系统,以获得正确的结果。下面是一些基本的命令和它们的用法的例子:扫描单一的一个主机,命令如下:
代码如下:
#nmap nxadmin.com#nmap 192.168.1.2
扫描整个子网,命令如下:
代码如下:
#nmap 192.168.1.1/24
扫描多个目标,命令如下:
代码如下:
#nmap 192.168.1.2 192.168.1.5
扫描一个范围内的目标,如下:
代码如下:
#nmap 192.168.1.1-100 (扫描IP地址为192.168.1.1-192.168.1.100内的所有主机)
如果你有一个ip地址列表,将这个保存为一个txt文件,和namp在同一目录下,扫描这个txt内的所有主机,命令如下:
代码如下:
#nmap -iL target.txt
如果你想看到你扫描的所有主机的列表,用以下命令:
代码如下:
#nmap -sL 192.168.1.1/24
扫描除过某一个ip外的所有子网主机,命令:
代码如下:
#nmap192.168.1.1/24-exclude192.168.1.1
扫描除过某一个文件中的ip外的子网主机命令
代码如下:
#nmap192.168.1.1/24-excludefilexxx.txt(xxx.txt中的文件将会从扫描的主机中排除)
扫描特定主机上的80,21,23端口,命令如下
代码如下:
#nmap-p80,21,23192.168.1.1
从上面我们已经了解了Nmap的基础知识,下面我们深入的探讨一下Nmap的扫描技术
Tcp SYN Scan (sS) 这是一个基本的扫描方式,它被称为半开放扫描,因为这种技术使得Nmap不需要通过完整的握手,就能获得远程主机的信息。Nmap发送SYN包到远程主机,但是它不会产生任何会话.因此不会在目标主机上产生任何日志记录,因为没有形成会话。这个就是SYN扫描的优势.如果Nmap命令中没有指出扫描类型,默认的就是Tcp SYN.但是它需要root/administrator权限.
代码如下:
#nmap -sS 192.168.1.1
Tcp connect() scan(sT)如果不选择SYN扫描,TCP connect()扫描就是默认的扫描模式.不同于Tcp SYN扫描,Tcp connect()扫描需要完成三次握手,并且要求调用系统的connect().Tcp connect()扫描技术只适用于找出TCP和UDP端口.
代码如下:
#nmap -sT 192.168.1.1
Udp scan(sU)顾名思义,这种扫描技术用来寻找目标主机打开的UDP端口.它不需要发送任何的SYN包,因为这种技术是针对UDP端口的。UDP扫描发送UDP数据包到目标主机,并等待响应,如果返回ICMP不可达的错误消息,说明端口是关闭的,如果得到正确的适当的回应,说明端口是开放的.
代码如下:
#nmap -sU 192.168.1.1
FINscan(sF)
有时候TcpSYN扫描不是最佳的扫描模式,因为有防火墙的存在.目标主机有时候可能有IDS和IPS系统的存在,防火墙会阻止掉SYN数据包。发送一个设置了FIN标志的数据包并不需要完成TCP的握手.
代码如下:
a href="mailto:root@bt:~#nmap-sF192.168.1.8"root@bt:~#nmap-sF192.168.1.8/a/p pStartingNmap5.51at2012-07-0819:21PKTNmapscanreportfor192.168.1.8Hostisup(0.000026slatency).Notshown:999closedportsPORTSTATESERVICE111/tcpopen|filteredrpcbind
FIN扫描也不会在目标主机上创建日志(FIN扫描的优势之一).个类型的扫描都是具有差异性的,FIN扫描发送的包只包含FIN标识,NULL扫描不发送数据包上的任何字节,XMAS扫描发送FIN、PSH和URG标识的数据包.
PINGScan(sP)
PING扫描不同于其它的扫描方式,因为它只用于找出主机是否是存在在网络中的.它不是用来发现是否开放端口的.PING扫描需要ROOT权限,如果用户没有ROOT权限,PING扫描将会使用connect()调用.
代码如下:
#nmap-sP192.168.1.1
版本检测(sV)
版本检测是用来扫描目标主机和端口上运行的软件的版本.它不同于其它的扫描技术,它不是用来扫描目标主机上开放的端口,不过它需要从开放的端口获取信息来判断软件的版本.使用版本检测扫描之前需要先用TCPSYN扫描开放了哪些端口.
代码如下:
#nmap-sV192.168.1.1
Idlescan(sL)
Idlescan是一种先进的扫描技术,它不是用你真实的主机Ip发送数据包,而是使用另外一个目标网络的主机发送数据包.
代码如下:
#nmap-sL192.168.1.6192.168.1.1
Idlescan是一种理想的匿名扫描技术,通过目标网络中的192.168.1.6向主机192.168.1.1发送数据,来获取192.168.1.1开放的端口
有需要其它的扫描技术,如FTPbounce(FTP反弹),fragmentationscan(碎片扫描),IPprotocolscan(IP协议扫描),以上讨论的是几种最主要的扫描方式.
Nmap的OS检测(O)
Nmap最重要的特点之一是能够远程检测操作系统和软件,Nmap的OS检测技术在渗透测试中用来了解远程主机的操作系统和软件是非常有用的,通过获取的信息你可以知道已知的漏洞。Nmap有一个名为的nmap-OS-DB数据库,该数据库包含超过2600操作系统的信息。Nmap把TCP和UDP数据包发送到目标机器上,然后检查结果和数据库对照。
代码如下:
InitiatingSYNStealthScanat10:21Scanninglocalhost(127.0.0.1)[1000ports]Discoveredopenport111/tcpon127.0.0.1CompletedSYNStealthScanat10:21,0.08selapsed(1000totalports)InitiatingOSdetection(try#1)againstlocalhost(127.0.0.1)RetryingOSdetection(try#2)againstlocalhost(127.0.0.1)
上面的例子清楚地表明,Nmap的首次发现开放的端口,然后发送数据包发现远程操作系统。操作系统检测参数是O(大写O)
Nmap的操作系统指纹识别技术:
设备类型(路由器,工作组等)运行(运行的操作系统)操作系统的详细信息(操作系统的名称和版本)网络距离(目标和攻击者之间的距离跳)
如果远程主机有防火墙,IDS和IPS系统,你可以使用-PN命令来确保不ping远程主机,因为有时候防火墙会组织掉ping请求.-PN命令告诉Nmap不用ping远程主机。
代码如下:
#nmap-O-PN192.168.1.1/24
以上命令告诉发信主机远程主机是存活在网络上的,所以没有必要发送ping请求,使用-PN参数可以绕过PING命令,但是不影响主机的系统的发现.
Nmap的操作系统检测的基础是有开放和关闭的端口,如果OSscan无法检测到至少一个开放或者关闭的端口,会返回以下错误:
代码如下:
Warning:OSScanresultsmaybeunreliablebecausewecouldnotfindatleast1openand1closedport
OSScan的结果是不可靠的,因为没有发现至少一个开放或者关闭的端口
这种情况是非常不理想的,应该是远程主机做了针对操作系统检测的防范。如果Nmap不能检测到远程操作系统类型,那么就没有必要使用-osscan_limit检测。
想好通过Nmap准确的检测到远程操作系统是比较困难的,需要使用到Nmap的猜测功能选项,–osscan-guess猜测认为最接近目标的匹配操作系统类型。
代码如下:
#nmap-O--osscan-guess192.168.1.1
下面是扫描类型说明
-sTTCPconnect()扫描:这是最基本的TCP扫描方式。connect()是一种系统调用,由操作系统提供,用来打开一个连接。如果目标端口有程序监听,connect()就会成功返回,否则这个端口是不可达的。这项技术最大的优点是,你勿需root权限。任何UNIX用户都可以自由使用这个系统调用。这种扫描很容易被检测到,在目标主机的日志中会记录大批的连接请求以及错误信息。
-sSTCP同步扫描(TCPSYN):因为不必全部打开一个TCP连接,所以这项技术通常称为半开扫描(half-open)。你可以发出一个TCP同步包(SYN),然后等待回应。如果对方返回SYN|ACK(响应)包就表示目标端口正在监听;如果返回RST数据包,就表示目标端口没有监听程序;如果收到一个SYN|ACK包,源主机就会马上发出一个RST(复位)数据包断开和目标主机的连接,这实际上有我们的操作系统内核自动完成的。这项技术最大的好处是,很少有系统能够把这记入系统日志。不过,你需要root权限来定制SYN数据包。
-sF-sX-sN秘密FIN数据包扫描、圣诞树(XmasTree)、空(Null)扫描模式:即使SYN扫描都无法确定的情况下使用。一些防火墙和包过滤软件能够对发送到被限制端口的SYN数据包进行监视,而且有些程序比如synlogger和courtney能够检测那些扫描。这些高级的扫描方式可以逃过这些干扰。些扫描方式的理论依据是:关闭的端口需要对你的探测包回应RST包,而打开的端口必需忽略有问题的包(参考RFC793第64页)。FIN扫描使用暴露的FIN数据包来探测,而圣诞树扫描打开数据包的FIN、URG和PUSH标志。不幸的是,微软决定完全忽略这个标准,另起炉灶。所以这种扫描方式对Windows95/NT无效。不过,从另外的角度讲,可以使用这种方式来分别两种不同的平台。如果使用这种扫描方式可以发现打开的端口,你就可以确定目标注意运行的不是Windows系统。如果使用-sF、-sX或者-sN扫描显示所有的端口都是关闭的,而使用SYN扫描显示有打开的端口,你可以确定目标主机可能运行的是Windwos系统。现在这种方式没有什么太大的用处,因为nmap有内嵌的操作系统检测功能。还有其它几个系统使用和windows同样的处理方式,包括Cisco、BSDI、HP/UX、MYS、IRIX。在应该抛弃数据包时,以上这些系统都会从打开的端口发出复位数据包。
-sPping扫描:有时你只是想知道此时网络上哪些主机正在运行。通过向你指定的网络内的每个IP地址发送ICMPecho请求数据包,nmap就可以完成这项任务。如果主机正在运行就会作出响应。不幸的是,一些站点例如:microsoft.com阻塞ICMPecho请求数据包。然而,在默认的情况下nmap也能够向80端口发送TCPack包,如果你收到一个RST包,就表示主机正在运行。nmap使用的第三种技术是:发送一个SYN包,然后等待一个RST或者SYN/ACK包。对于非root用户,nmap使用connect()方法。在默认的情况下(root用户),nmap并行使用ICMP和ACK技术。注意,nmap在任何情况下都会进行ping扫描,只有目标主机处于运行状态,才会进行后续的扫描。如果你只是想知道目标主机是否运行,而不想进行其它扫描,才会用到这个选项。
-sUUDP扫描:如果你想知道在某台主机上提供哪些UDP(用户数据报协议,RFC768)服务,可以使用这种扫描方法。nmap首先向目标主机的每个端口发出一个0字节的UDP包,如果我们收到端口不可达的ICMP消息,端口就是关闭的,否则我们就假设它是打开的。有些人可能会想UDP扫描是没有什么意思的。但是,我经常会想到最近出现的solarisrpcbind缺陷。rpcbind隐藏在一个未公开的UDP端口上,这个端口号大于32770。所以即使端口111(portmap的众所周知端口号)被防火墙阻塞有关系。但是你能发现大于30000的哪个端口上有程序正在监听吗?使用UDP扫描就能!cDcBackOrifice的后门程序就隐藏在Windows主机的一个可配置的UDP端口中。不考虑一些通常的安全缺陷,一些服务例如:snmp、tftp、NFS使用UDP协议。不幸的是,UDP扫描有时非常缓慢,因为大多数主机限制ICMP错误信息的比例(在RFC1812中的建议)。例如,在Linux内核中(在net/ipv4/icmp.h文件中)限制每4秒钟只能出现80条目标豢纱锏肾CMP消息,如果超过这个比例,就会给1/4秒钟的处罚。solaris的限制更加严格,每秒钟只允许出现大约2条ICMP不可达消息,这样,使扫描更加缓慢。nmap会检测这个限制的比例,减缓发送速度,而不是发送大量的将被目标主机丢弃的无用数据包。不过Micro$oft忽略了RFC1812的这个建议,不对这个比例做任何的限制。所以我们可以能够快速扫描运行Win95/NT的主机上的所有65K个端口。
-sAACK扫描:这项高级的扫描方法通常用来穿过防火墙的规则集。通常情况下,这有助于确定一个防火墙是功能比较完善的或者是一个简单的包过滤程序,只是阻塞进入的SYN包。这种扫描是向特定的端口发送ACK包(使用随机的应答/序列号)。如果返回一个RST包,这个端口就标记为unfiltered状态。如果什么都没有返回,或者返回一个不可达ICMP消息,这个端口就归入filtered类。注意,nmap通常不输出unfiltered的端口,所以在输出中通常不显示所有被探测的端口。显然,这种扫描方式不能找出处于打开状态的端口。
-sW对滑动窗口的扫描:这项高级扫描技术非常类似于ACK扫描,除了它有时可以检测到处于打开状态的端口,因为滑动窗口的大小是不规则的,有些操作系统可以报告其大小。这些系统至少包括:某些版本的AIX、Amiga、BeOS、BSDI、Cray、Tru64UNIX、DG/UX、OpenVMS、DigitalUNIX、OpenBSD、OpenStep、QNX、Rhapsody、SunOS4.x、Ultrix、VAX、VXWORKS。从nmap-hackers邮件3列表的文档中可以得到完整的列表。
-sRRPC扫描。这种方法和nmap的其它不同的端口扫描方法结合使用。选择所有处于打开状态的端口向它们发出SunRPC程序的NULL命令,以确定它们是否是RPC端口,如果是,就确定是哪种软件及其版本号。因此你能够获得防火墙的一些信息。诱饵扫描现在还不能和RPC扫描结合使用。
-bFTP反弹攻击(bounceattack):FTP协议(RFC959)有一个很有意思的特征,它支持代理FTP连接。也就是说,我能够从evil.com连接到FTP服务器target.com,并且可以要求这台FTP服务器为自己发送Internet上任何地方的文件!1985年,RFC959完成时,这个特征就能很好地工作了。然而,在今天的Internet中,我们不能让人们劫持FTP服务器,让它向Internet上的任意节点发送数据。如同Hobbit在1995年写的文章中所说的,这个协议"能够用来做投递虚拟的不可达邮件和新闻,进入各种站点的服务器,填满硬盘,跳过防火墙,以及其它的骚扰活动,而且很难进行追踪"。我们可以使用这个特征,在一台代理FTP服务器扫描TCP端口。因此,你需要连接到防火墙后面的一台FTP服务器,接着进行端口扫描。如果在这台FTP服务器中有可读写的目录,你还可以向目标端口任意发送数据(不过nmap不能为你做这些)。传递给-b功能选项的参数是你要作为代理的FTP服务器。语法格式为:-busername:password@server:port。除了server以外,其余都是可选的。如果你想知道什么服务器有这种缺陷,可以参考我在Phrack51发表的文章。还可以在nmap的站点得到这篇文章的最新版本。
通用选项这些内容不是必需的,但是很有用。
-P0在扫描之前,不必ping主机。有些网络的防火墙不允许ICMPecho请求穿过,使用这个选项可以对这些网络进行扫描。microsoft.com就是一个例子,因此在扫描这个站点时,你应该一直使用-P0或者-PT80选项。
-PT扫描之前,使用TCPping确定哪些主机正在运行。nmap不是通过发送ICMPecho请求包然后等待响应来实现这种功能,而是向目标网络(或者单一主机)发出TCPACK包然后等待回应。如果主机正在运行就会返回RST包。只有在目标网络/主机阻塞了ping包,而仍旧允许你对其进行扫描时,这个选项才有效。对于非root用户,我们使用connect()系统调用来实现这项功能。使用-PT来设定目标端口。默认的端口号是80,因为这个端口通常不会被过滤。
-PS对于root用户,这个选项让nmap使用SYN包而不是ACK包来对目标主机进行扫描。如果主机正在运行就返回一个RST包(或者一个SYN/ACK包)。
-PI设置这个选项,让nmap使用真正的ping(ICMPecho请求)来扫描目标主机是否正在运行。使用这个选项让nmap发现正在运行的主机的同时,nmap也会对你的直接子网广播地址进行观察。直接子网广播地址一些外部可达的IP地址,把外部的包转换为一个内向的IP广播包,向一个计算机子网发送。这些IP广播包应该删除,因为会造成拒绝服务攻击(例如smurf)。