1、实验2 NMAP和Nessus扫描2Network Security Technology 使用NMAP & Nessus进行网络扫描KeyWords:NMAP,Nessus,Scan,Vulnerability 试验一、安装与配置NMAP一、NMAP功能简介1. 什么是Nmap?Nmap(Network exploration tool and security / port scanner)是一个免费的开源实用程序,它可以对网络进行探查和安全审核;还可以利用它对网络设备调查、管理服务升级、监视主机或服务的正常运行时间进行监视。Nmap使用IP数据包来决定有哪些主机在网络中是可用的,这些主机
2、正提供的服务有哪些,它们运行的操作系统是什么,使用了哪些类型的过滤器或防火墙,当然还有许多其它的特性。其设计目的是能够快速地扫描大型网络,不过对于一些独立的主机而言它工作起来是游刃有余滴。Nmap可以运行在大多数主流的计算机操作系统上,并且支持控制台和图形两种版本。在Windows平台上,Nmap能够运行在Windows 2000及Windows XP平台上,不能在Windows 98 、ME、CE等系统上运行。官网地址:http:/insecure.org/。Nmap是一款开放源代码的网络探测和安全审核的工具。它的设计目标是快速地扫描大型网络,当然用它扫描单个主机也没有问题。Nmap使用原始
3、IP报文来发现网络上有哪些主机,它们提供什么服务(应用程序名和版本),那些服务运行在什么操作系统(包括版本信息)中,它们使用什么类型的报文过滤器/防火墙,以及其它功能。2.一个入侵过程的简单描述黑客想要入侵一台电脑,首先要有一套完整的计划。在入侵系统之前,黑客必须先找到一台目标主 机,并查出哪些端口在监听之后才能进行入侵。找出网络上的主机,测试哪些端口在监听,这些工作通常是由扫描来实现的。扫描网络是黑客进行入侵的第一步。通过使用扫描器(如nmap)扫描网络,寻找存在漏洞的目标主机。一旦发现了有漏洞的目标,接下来就是对监听端口的扫描。nmap通过使用 TCP协议栈指纹准确地判断出被扫主机的操作系
4、统类型。3.命令格式nmap Scan Type. Options targetspecificationnmap . 3.1 描述Nmap输出的是扫描目标的列表,以及每个目标的补充信息,至于是哪些信息则依赖于所使用的选项。“所感兴趣的端口表格”是其中的关键。那张表列出端口号,协议,服务名称和状态。状态可能是 open(开放的),filtered(被过滤的),closed(关闭的),或者unfiltered(未被过滤的)。如果Nmap报告状态组合 open|filtered和closed|filtered时,那说明Nmap无法确定该端口处于两个状态中的哪一个状态。当要求进行版本探测时,端口表也
5、可以包含软件的版本信息。当要求进行IP协议扫描时(-sO),Nmap提供关于所支持的IP协议而不是正在监听的端口的信息。除了所感兴趣的端口表,Nmap还能提供关于目标机的进一步信息,包括反向域名,操作系统猜测,设备类型,和MAC地址。一个典型的Nmap扫描如下 所示。# nmap -A -T4192.168.0.0/24在这个例子中,唯一的选项是-A,用来进行操作系统及其版本的探 测,-T4可以加快执行速度,接着是目标网络IP。3.2 选项概要基于 Zenmap内置的几个模板,说明最常用的几个选项。Zenmap的示例在最后列出(见13.实例(Zenmap内置模板))。3.3 目标说明除了选项,
6、所有出现在Nmap命令行上的都被视为对目标主机的说明。最简单的情况是指定一个目标IP地址或主机名。有时候您希望扫描整个网 络的相邻主机。为此,Nmap支持CIDR风格的地址。您可以附加一个/在一个IP地址或主机名后面,Nmap将会扫描所有和该参考IP地址具有相同比特的所有IP地址或主机。例如,192.168.10.0/24将会扫描 192.168.10.0 (二进制格式: 11000000 10101000 0000101000000000)和192.168.10.255(二进制格式: 11000000 10101000 0000101011111111)之间的256台主机。192.168.1
7、0.40/24将会做同样的事情。假设主机scanme.nmap.org的IP地址是 205.217.153.62, scanme.nmap.org/16将扫描205.217.0.0和205.217.255.255之间的65,536个IP地址。所允许的最小值是/1,这将会扫描半个互联网。最大值是 /32,这将会扫描该主机或IP地址,因为所有的比特都固定了。CIDR标志位很简洁但有时候不够灵活。例如,您也许想要扫描 192.168.0.0/16,但略过任何以.0或者.255结束的IP地址,因为它们通常是广播地址。Nmap通过八位字节地址范围支持这样的扫描您可 以用逗号分开的数字或范围列表为IP地址
8、的每个八位字节指定它的范围。例如,192.168.0-255.1-254将略过在该范围内以.0和.255结束的地址。范围不必限于最后的8位:0-255.0-255.13.37将在整个互联网范围内扫描所有以13.37结束的地址。这种大范围的扫描对互联网调查研究也 许有用。IPv6地址只能用规范的IPv6地址或主机名指定。CIDR和八位字节范围不支持IPv6,因为它们对于IPv6几乎没什么用。Nmap命令行接受多个主机说明,它们不必是相同类型。命令nmap scanme.nmap.org 192.168.0.0/810.0.0,1,3-7.0-255将和您预期的一样执行。 4.主机发现(HOST
9、DISCOVERY)任何网络探测任务的最初几个步骤之一就是把一组IP范围(有时 该范围是巨大的)缩小为一列活动的或者您感兴趣的主机。扫描每个IP的每个端口很慢,通常也没必要。当然,什么样的主机令您感兴趣主要依赖于扫描的目的。 网管也许只对运行特定服务的主机感兴趣,而从事安全的人士则可能对一个马桶都感兴趣,只要它有IP地址。一个系统管理员也许仅仅使用Ping来定位内网上的主机,而一个外部入侵测试人员则可能绞尽脑汁用各种方法试图突破防火墙的封锁。由于主机发现的需求五花八门,Nmap提供了多个的选项来定制个性化需求。主机发现有时候也叫做ping扫描,但它远远超越一般的ping工具发送简单的ICMP回
10、声请求报文。用户完全可以通过使用列表扫描(-sL)或者通过关闭ping(-P0)跳过ping的步骤,也可以使用多个端口把TPC SYN/ACK,UDP和ICMP任意组合起来玩一玩。这些探测的目的是获得响应以显示某个IP地址是否是活动的(正在被某 主机或者网络设备使用)。在许多网络上,在给定的时间,往往只有小部分的IP地址是活动的。这种情况在基于RFC1918的私有地址空间如10.0.0.0/8尤其普遍。那个网络有16,000,000个IP,但有些使用它的公司连1000台机器都没有。主机发现能够找到零星分布于IP地址海洋上的那些机器。 -P*选项(用于选择ping 的类型)可以被结合使用。您可以
11、通过使用不同的TCP端口/标志位和ICMP码发送许多探测报文来增加穿透防守严密的防火墙的机会。另外要注意的是即使您指定了其它 -P*选项,ARP发现(-PR) 对于局域网上的目标而言是默认行为,因为它总是更快更有效。-sP (Ping扫描)该选项告诉 Nmap仅仅进行ping扫描(主机发现),然后打印出对扫描做出响应的那些主机。没有进一步的测试(如端口扫描或者操作系统探测)。这比列表扫描更积极,常常用于和列表扫描相同的目的。它可以得到些许目标网络的信息而不被特别注意到。对于攻击者来说,了解多少主机正在运行比列表扫描提供的一列IP和主 机名往往更有价值。系统管理员往往很喜欢这个选项。它可以很方便
12、地得出网络上有多少机器正在运行或者监视服务器是否正常运行。常常有人称它为地毯式ping,它比ping广播地址更可靠,因为许多主机对广播请求不响应。-sP选项在默认情况下,发送一个ICMP回声请求和一个 TCP报文到80端口。如果非特权用户执行,就发送一个SYN报文(用connect()系统调用)到目标机的80端口。当特权用户扫描局域网上的目标机 时,会发送ARP请求(-PR),除非使用了-send-ip选项。-sP选项可以和除-P0)之外的任何发现探测类型-P*选项结合使用以达到更大的 灵活性。一旦使用了任何探测类型和端口选项,默认的探测(ACK和回应请求)就被覆盖了。当防守严密的防火墙位于运
13、行Nmap的源主机和目标网络之间时,推荐使用那些高级选项。否则,当防火墙捕获并丢弃探测包或者响应包时,一些主机就不能被探测到。-PSportlist (TCP SYN Ping)该选项发送一个设置了SYN标志位的空TCP报文。默认目的端口为80(可以通过改变nmap.h)文件中的DEFAULT_TCP_PROBE_PORT值进行配置,但不同的端口也可以作为选项指定。甚至可以指定一个以逗号分隔的端口列表(如 -PS22,23,25,80,113,1050,35000),在这种情况下,每个端口会被并发地扫描。-PAportlist (TCP ACK Ping)TCP ACK ping和刚才讨论的S
14、YNping相当类似。区别就是设置TCP的ACK标志位而不是SYN标志位。ACK报文表示确认一个建立连接的尝试,但该连接尚未完全建立。所以远程主机应该总是回应一个RST报文,因为它们并没有发出过连接请求到运行Nmap的机器,如果它们正在运行的话。提供SYN和 ACK两种ping探测的原因是使通过防火墙的机会尽可能大。-PU portlist (UDP Ping)还有一个主机发现的选项是UDP ping,它发送一个空的(除非指定了-data-lengthUDP报文到给定的端口。端口列表的格式和前面讨论过的-PS和-PA选项还是一样。如果不指定端口,默认是31338。该默认值可以通过在编译时改变n
15、map.h文件中的DEFAULT_UDP_PROBE_PORT值进行配置。默认使用这样一个奇怪的端口是因为对开放端口进行这种扫描一般都不受欢迎。如果目标机器的端口是关闭的,UDP探测应该马上得到一个ICMP端口无法到达的回应报文。该扫描类型的主要优势是它可以穿越只过滤TCP的防火墙和过滤器。-PE;-PP; -PM (ICMP Ping Types)除了前面讨论的这些不常见的TCP和UDP主机发现类 型,Nmap也能发送世人皆知的ping程序所发送的报文。Nmap发送一个ICMP type 8 (回声请求)报文到目标IP地址,期待从运行的主机得到一个type 0 (回声响应)报文。对于网络探索
16、者而言,不幸的是,许多主机和防火墙现在封锁这些报文,而不是按期望的那样响应,参见RFC1122。因此,仅仅ICMP扫描对于互联网上的目标通常是不够的。但对于系统管理员监视一个内部网络,它们可能是实际有效的途径。使用-PE选项打开该 回声请求功能。时间戳和地址掩码查询可以分别用-PP和-PM选项发送。5. 端口扫描基础(PORT SCANNING BASICS)虽然 Nmap这些年来功能越来越多,它也是从一个高效的端口扫描器开始的,并且那仍然是它的核心功能。nmap 这个简单的命令扫描主机上的超过1660个TCP端口。许多传统的端口扫描器只列出所有端口是开放还是关闭的,Nmap的信息粒度比它们要
17、细得多。它把端口分成六个状 态:open(开放的),closed(关闭的),filtered(被过滤的),unfiltered(未被过滤的),open|filtered(开 放或者被过滤的),或者closed|filtered(关闭或者未被过滤的)。这些状态并非端口本身的性质,而是描述Nmap怎样看待它 们。例如,对于同样的目标机器的135/tcp端口,从同网络扫描显示它是开放的,而跨网络作完全相同的扫描则可能显示它是filtered(被过滤 的)。Nmap 所识别的6个端口状态。 open(开放的)应用程序正在该端口接收 TCP连接或者UDP报文。这是端口扫描的主要目标。安全意识强的人们知道
18、每个开放的端口都是攻击的入口。攻击者或者入侵测试者想要发现开放的端口。而管理员则试图关闭它们或者用防火墙保护它们以免妨碍了合法用户。非安全扫描可能对开放的端口也感兴趣,因为它们显示了网络上那些服务可供使用。 closed(关闭的)关闭的端口对于Nmap也是可访问的(它接受Nmap的探测报文并 作出响应),但没有应用程序在其上监听。它们可以显示该IP地址上(主机发现,或者ping扫描)的主机正在运行,也对部分操作系统探测有所帮助。因为关闭的端口是可访问的,也许等一下值得再扫描一下,可能一些又开放了。系统管理员可能会考虑用防火墙封锁这样的端口。那样他们就会被显示为被过滤的状态,下 面讨论。 fil
19、tered(被过滤的)由于包过滤阻止探测报文到达端口,Nmap无法确定该 端口是否开放。过滤可能来自专业的防火墙设备,路由器规则或者主机上的软件防火墙。这样的端口让攻击者感觉很受挫折,因为它们几乎不提供任何信息。有时候它们响应ICMP错误消息如类型3代码13(无法到达目标:通信被管理员禁止),但更普遍的是过滤器只是丢弃探测帧,不做任何响应。这迫使Nmap重试若干次以访万一探测包是由于网络阻塞丢弃的。这使得扫描速度明显变慢。 unfiltered(未被过滤的)未被过滤状态意味着端口可访问,但Nmap不能确定它是开放还是关闭。只有用于映射防火墙规则集的ACK扫描才会把端口分类到这种状态。用其它类型
20、的扫描如窗口扫描,SYN扫描,或者FIN扫描来扫描未被过滤的端口可以帮助确定端口是否开放。 open|filtered(开 放或者被过滤的)当无法确定端口是开放还是被过滤的,Namp就把该端口划分成这种状态。开放的端口不响应就是一个例子。 没有响应也可能意味着报文过滤器丢弃了探测报文或者它引发的任何响应。因此Nmap无法确定该端口是开放的还是被过滤的。UDP,IP协 议,FIN,Null和Xmas扫描可能把端口归入此类。 closed|filtered(关闭或者被过滤的)该状态用于Nmap不能确定端口是关闭的还是被过滤的。它只可能出现在IPID Idle扫描中。6. 端口扫描技术(PORT S
21、CANNING TECHNIQUES)大部分扫描类型只对特权用户可用。这是因为他们发送接收原始报文,这在Unix系统需要root权限。在Windows上推荐使用 administrator账户,但是当WinPcap已经被加载到操作系统时,非特权用户也可以正常使用Nmap。当Namp在1997年发布时,需要 root权限是一个严重的局限,因为很多用户只有共享的shell账户。随着计算机越来越便宜,更多人拥有互联网连接,桌面UNIX系统(包括Linux和MAC OSX)用户更多。Windows版本的Nmap现在也有了,这使它可以运行在更多的桌面上。由于所有这些原因,用户不再需要用有限的共享shel
22、l账户运行 Nmap。这是很幸运的,因为特权选项让Nmap强大得多也灵活得多。虽然Nmap努力产生正确的结果,但所有结果都是基于目标机器 (或者它们前面的防火墙)返回的报文的。这些主机也许是不值得信任的,它们可能响应以迷惑或误导Nmap的报文。更普遍的是非RFC兼容的主机以不正确的方式响应Nmap探测。FIN,Null和Xmas扫描特别容易遇到这个问题。这些是特定扫描类型的问题,因此我们在个别扫描类型里讨论它们。这一节讨论Nmap支持的大约十几种扫描技术。一般一次只用一种方法,除了UDP扫描(-sU)可能和任何一种TCP扫描类型结合使用。端口扫描类型的选项格式是-sC,其中C是个显眼的字符,通
23、常是第一个字符。一个例外是deprecated FTPbounce扫描(-b)。默认情况下,Nmap执行一个SYN扫描,但是如果用户没有权限发送原始报文(在UNIX上需要root权限)或者如果指定的 是IPv6目标,Nmap调用connect()。本节列出的扫描中,非特权用户只能执行connect()和ftp bounce扫描。 -sS(TCP SYN扫描)SYN扫描作为默认的也是最受欢迎的扫描选项,是有充分理由的。它执行得很快,在一个没有入侵防火墙的快速网络上,每秒钟可以扫描数千个端口。SYN扫描相对来说不张扬,不易被注意到,因为它从来不完成TCP连接。它也不像Fin/Null /Xmas,
24、Maimon和Idle扫描依赖于特定平台,而可以应对任何兼容的TCP协议栈。它还可以明确可靠地区分open(开放 的),closed(关闭的),和filtered(被过滤的)状态。它常常被称为半开放扫描,因为它不打开一个完全的TCP连接。它发送一个SYN报文,就像您真的要打开一个连接,然后等待响应。SYN/ACK表示端口在监听(开放),而RST(复位)表示没有监听者。如果数次重发后仍没响应,该端口就被标记为被过滤。如果收到ICMP不可到达错误(类型3,代码1,2,3,9,10,或者13),该端口也被标记为被过滤。-sT (TCPconnect()扫描)当SYN扫描不能用时,TCPConnect
25、()扫描就是默认的TCP扫描。当用户没有权限发送原始报文或者扫描IPv6网络时,就是这种情况。Instead of writingraw packets as most other scan typesdo,Nmap通过创建connect()系统调用要求操作系统和目标机以及端口建立连接,而不像其它扫描类型直接发送原始报文。这是和Web浏览 器,P2P客户端以及大多数其它网络应用程序用以建立连接一样的高层系统调用。它是叫做Berkeley SocketsAPI编程接口的一部分。Nmap用该API获得每个连接尝试的状态信息,而不是读取响应的原始报文。当SYN扫描可用时,它通常是更好的选择。因为Nm
26、ap对高层的connect()调用比对原始报文控制更少,所以前者效率较低。该系统调用完全连接到开放的目标端口而不是像SYN扫描进行半 开放的复位。这不仅花更长时间,需要更多报文得到同样信息,目标机也更可能记录下连接。IDS(入侵检测系统)可以捕获两者,但大部分机器没有这样的警报 系统。当Nmap连接,然后不发送数据又关闭连接,许多普通UNIX系统上的服务会在syslog留下记录,有时候是一条加密的错误消息。此时,有些真正 可怜的服务会崩溃,虽然这不常发生。如果管理员在日志里看到来自同一系统的一堆连接尝试,她应该知道她的系统被扫描了。 -sU(UDP扫描)虽然互联网上很多流行的服务运行在TCP协
27、议上,UDP服务也不少。DNS,SNMP,和DHCP(注册 的端口是53,161/162,和67/68)是最常见的三个。因为UDP扫描一般较慢,比TCP更困难,一些安全审核人员忽略这些端口。这是一个错误, 因为可探测的UDP服务相当普遍,攻击者当然不会忽略整个协议。所幸,Nmap可以帮助记录并报告UDP端口。UDP扫描用-sU选项激活。 它可以和TCP扫描如SYN扫描(-sS)结合使用来同时检查两种协议。UDP扫描发送空的(没有数据)UDP报头到每个目标端口。如果返回 ICMP端口不可到达错误(类型3,代码3),该端口是closed(关闭的)。其它ICMP不可到达错误(类型3,代码1,2,9,
28、10,或者13)表 明该端口是filtered(被过滤的)。偶尔地,某服务会响应一个UDP报文,证明该端口是open(开放的)。如果几次重试后还没有响应,该端口就被认为是open|filtered(开放|被过滤的)。这意味着该端口可能是开放的,也可能包过滤器正在封锁通信。可以用版本扫描(-sV)帮助区分真正 的开放端口和被过滤的端口。UDP扫描的巨大挑战是怎样使它更快速。开放的和被过滤的端口很少响应,让Nmap超时然后再探测,以防探测帧或 者响应丢失。关闭的端口常常是更大的问题。它们一般发回一个ICMP端口无法到达错误。但是不像关闭的TCP端口响应SYN或者Connect扫描所发送 的RST报
29、文,许多主机在默认情况下限制ICMP端口不可到达消息。Linux和Solaris对此特别严格。例如, Linux2.4.20内核限制一秒钟只发送一条目标不可到达消息(见net/ipv4/icmp.c)。Nmap探测速率限制并相应地减慢来避免用那 些目标机会丢弃的无用报文来阻塞网络。不幸的是,Linux式的一秒钟一个报文的限制使65,536个端口的扫描要花18小时以上。加速UDP扫描的方法 包括并发扫描更多的主机,先只对主要端口进行快速扫描,从防火墙后面扫描,使用-host-timeout跳过慢速的主机。7. 端口说明和扫描顺序(PORT SPECIFICATION ANDSCAN ORDER)
30、除了所有前面讨论的扫描方法,Nmap提供选项说明那些端口被扫描以及扫描是随机还 是顺序进行。默认情况下,Nmap用指定的协议对端口1到1024以及nmap-services文件中列出的更高的端口在扫描。-p (只扫描指定的端口)该选项指明您想扫描的端口,覆盖默认值。单个端 口和用连字符表示的端口范围(如1-1023)都可以。范围的开始以及/或者结束值可以被省略,分别导致Nmap使用1和65535。所以您可以指定 -p-从端口1扫描到65535。如果您特别指定,也可以扫描端口0。对于IP协议扫描(-sO),该选项指定您希望扫描的协议号(0-255)。当既扫描TCP端口又扫描UDP端口时,您可以通
31、过在端口号前加上T:或者U:指定协议。协议限定符一直有效直到指定另一个。例如,参数 -pU:53,111,137,T:21-25,80,139,8080将扫描UDP端口53,111,和137,同时扫描列出的TCP端口。注意,要既扫描 UDP又扫描TCP,您必须指定-sU,以及至少一个TCP扫描类型(如-sS,-sF,或者-sT)。如果没有给定协议限定符,端口号会被加到所有协议 列表。-F (快速 (有限的端口) 扫描)在nmap的nmap-services文件中(对于-sO,是协议文件)指定您想要扫描的端口。这比扫描所有65535个端口快得多。因为该列表包含如此多的TCP端口(1200多),这
32、和默认的TCP扫描(大约1600个端口)速度差别不是很大。 如果您用-datadir选项指定您自己的小小的nmap-services文件 ,差别会很惊人。8. 服务和版本探测(SERVICE AND VERSIONDETECTION)-sV (版本探测)打开版本探测。您也可以用-A同时打开操作系统探测和版本探测。-version-intensity(设置 版本扫描强度)当进行版本扫描(-sV)时,nmap发送一系列探测报文,每个报文都被赋予一个1到9之间的值。被赋予较低值的探测报文对大范围的常见服务有效,而被赋予较高值的报文一般没什么 用。强度水平说明了应该使用哪些探测报文。数值越高,服务越有可能被正确识别。然而,高强度扫描花更多时间。强度值必须在0和9之间。默认是7。当探测报 文通过nmap
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1