网络扫描作为网络信息收集中最主要的一个环节,其主要目标是探测目标网络,以找出尽可能多的连接目标,然后进一步探测获取目标系统的开放端口、操作系统类型、运行的网络服务、存在的安全弱点等信息。这些工作可以通过网络扫描器来完成。
(一)扫描器的作用
对于扫描器的理解,大家一般会认为,这只是黑客进行网络攻击时的工具。扫描器对于攻击者来说是必不可少的工具,但也是网络管理员在网络安全维护中的重要工具。因为扫描软件是系统管理员掌握系统安全状况的必备工具,是其他工具所不能替代的。例如,一个系统存在“ASP源代码暴露”的漏洞,防火墙发现不了这些漏洞,入侵检测系统也只有在发现有人试图获取ASP文件源代码的时候才报警,而通过扫描工具,可以提前发现系统的漏洞,打好补丁,做好防范。
因此,扫描器是网络安全工程师修复系统漏洞的主要工具。另外,扫描漏洞特征库的全面性是衡量扫描软件功能是否强大的一个重要指标。漏洞特征库越全面,越强大,扫描器的功能也越强大。
扫描器的定义比较广泛,不限于一般的端口扫描和针对漏洞的扫描,可以是针对某种服务、某个协议的扫描,端口扫描只是扫描系统中最基本的形态和模块。扫描器的主要功能列举如下。
(1)检测主机是否在线。
(2)扫描目标系统开放的端口,有的还可以测试端口的服务信息。
(3)获取目标操作系统的敏感信息。
(4)破解系统口令。
(5)扫描其他系统的敏感信息。例如,CGI Scanner、ASP Scanner、从各个主要端口取得服务信息的Scanner、数据库Scanner及木马Scanner等。
一个优秀的扫描器能检测整个系统各个部分的安全性,能获取各种敏感的信息,并能试图通过攻击以观察系统反应等。扫描的种类和方法不尽相同,有的扫描方式甚至相当怪异,且很难被发觉,却相当有效。
(二)常用扫描器
目前各种扫描器已经有不少,有的是在DOS(Disk Operating System,磁盘操作系统)下运行,有的还提供GUI(Graphical User Interface,图形用户界面)。表2-1列出了一些比较著名的扫描软件。
表2-1 著名的扫描软件
(三)端口扫描器预备知识
端口扫描器是最简单的一种扫描器,是对整个系统分析扫描的第一步。很多人认为端口扫描同时扫出了很多无用的信息,但是每一个被发现的端口都是一个入口,有很多被称为“木马”的后门程序就是在端口上做文章。很多免费的TCP端口扫描器和UDP端口扫描器,可以很容易地从网络中获取。
为了更好地理解端口扫描器的实现原理,下面首先介绍OSI模型和TCP/IP协议栈,如图2-7所示。IP数据报的格式如图2-8所示。
图2-7 OSI模型和TCP/IP协议栈
图2-8 IP数据报格式
TCP数据报的格式如图2-9所示。
图2-9 TCP数据报格式
TCP数据报中的各标志位介绍如下。
1.顺序号(www.daowen.com)
4字节,该字段用来确保数据报在传送时保持正确的顺序。
2.确认号
4字节,该字段用来确认是否正确接收到了对方的所有数据。
3.标志位
一共6bit,每一位作为一个标志,各标志介绍如下。
(1)SYN标志(同步标志):标志位用来建立连接,让连接双方同步序列号。如果SYN=1而ACK=0,表示该数据报为连接请求;如果SYN=1而ACK=1,表示接受连接。
(2)ACK标志(确认标志位):如果为1,表示数据报中的确认号是有效的;否则,数据报中的确认号无效。
(3)URG标志(紧急数据标志位):如果为1,表示本数据报中包含紧急数据,此时紧急数据指针有效。
(4)PSH标志(推送标志位):要求发送方的TCP立即将所有的数据发送给低层的协议,或者是要求接收方将所有的数据立即交给上层的协议。该标志的功能实际相当于对缓冲区进行刷新,如同将缓存中的数据刷新或者写入硬盘中一样。
(5)RST标志(复位标志位):将传输层连接复位到其初始状态,作用是恢复到某个正确状态,以进行错误恢复。
(6)FIN标志(结束标志位):作用是释放(结束)TCP连接。
下面简要介绍TCP/IP通信建立时的3次握手过程。
(1)发送方发送一个SYN标志位设置为1的数据报。
(2)接收方接收到该数据报,之后将返回一个SYN标志和ACK标志都置1的数据报。
(3)发送方接收到该数据报后再发送一个数据报。这时,只将ACK标志设置为1。
通过这样3次握手的过程,双方就建立了TCP连接。
(四)端口扫描器实现细节
一般端口扫描器根据操作系统的TCP/IP栈实现时对数据报处理的原则来判断端口的信息,大部分操作系统的TCP/IP栈遵循以下原则。
(1)当一个SYN或者FIN数据报到达一个关闭的端口时,TCP丢弃数据报,同时发送一个RST数据报。
(2)当一个SYN数据报到达一个监听端口时,正常的3阶段握手继续,回答一个SYN+ACK数据报。
(3)当一个包含ACK的数据报到达一个监听端口时,数据报被丢弃,同时发送一个RST数据报。
(4)当一个RST数据报到达一个关闭的端口时,RST被丢弃。
(5)当一个RST数据报到达一个监听端口时,RST被丢弃。
(6)当一个FIN数据报到达一个监听端口时,数据报被丢弃。“FIN行为”(关闭的端口返回RST,监听端口丢弃包)在URG和PSH标志位置位时同样发生。所有的URG、PSH和FIN或者没有任何标记的TCP数据报都会引起“FIN行为”。
上面讲述了TCP/IP数据报的格式和建立连接的3次握手过程,以及端口扫描器在TCP/IP的实现细节。些对后面的学习非常重要。下面以Nmap(Network Mapper)为例,详细介绍Nmap端口扫描的功能。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。