前言
计算机网络的普及,使人们越来越关注网络的安全。而网络安全又取决于网络管理员和网络用户对网络的了解,这种了解不仅包括如何使用网络应用程序,还包括网络的配置甚至网络的技术细节。
网络中,协议是任意两台主机之间进行通信的前提和始终贯彻的原则。因此本书首先在第1章中对网络扫描的概念、原理、目的、算法、历史进行了综述,然后在第2章着眼于现在网络,特别是互联网中网络协议的意义,以及如何通过协议进行编程,由浅入深,逐步分析了网络协议的各项技术细节。
网络服务是一台主机对外开放的最终目的,而端口又是服务的对外窗口。因此以前很多人对网络扫描的理解就是端口扫描。端口直接与服务对应的关系,使得端口越来越成为人们关注的目标,打开一种服务就意味着打开了一个或几个端口,同时也打开了一扇“大门”,因此在第3章中,对端口扫描进行了全面详细的论述。
协议不同,对端口的扫描也不同,因此在随后的第4、5、6章中,分别介绍了基于NetBIOS、SNMP、ICMP扫描的协议、原理、扫描器实现方法等细节。
网络服务必然存在端口,但由于端口本身不具有强制性,所以即使扫描到端口,也不意味着必然对应某一服务,因此端口扫描只能作为初判,服务扫描才是真正判断对方是否提供某服务的最终方式。在第7章中,详细地介绍了完全基于服务的扫描方式,主要有WWW服务、FTP服务、Telnet服务、E-mail服务等应用层服务。这些服务极具扫描的普遍性,可以说,有了针对这些服务的扫描器设计框架和设计思路,任何一个新协议、新服务都可以用此方法做出相应的扫描器。在第8章中,介绍了另一种基于应用的扫描方式,在这里,除了WWW服务、FTP服务之外,还包括了对网络资源的扫描。这种扫描由于使用了应用层的API,所以程序简捷、透明性强,但对底层的控制不多。
在第9、10两章中,介绍了几种特殊应用领域的扫描方式:命名管道扫描器和服务发现扫描器。这两种扫描器是较新的技术,并且可以使网络扫描从仅限于安全领域内的应用,转换到生活领域内的应用。
第11章的漏洞扫描器则是对网络中存在的漏洞进行扫描,从而发现漏洞以及漏洞的位置。这种扫描方式具有很大的实用性,但这类漏洞扫描器的编制有一定的难度,且具有较强的时效性。
第12章介绍扫描防范技术,通过这些技术,可以检测或防止别人对主机本身或网络进行扫描。
为了统一形式,书中在介绍各扫描器时都先介绍协议,使读者对该协议有个初步的了解。然后对其API,特别是扫描器中要使用的API函数进行详细介绍,使读者知道该扫描器要实现的各种技术细节。再针对Windows中该协议程序的安装、配置、测试和验证进行详述,使读者有演习场地。最后是扫描器的编程实例。采用这种循序渐进、逐步深入的方式,读者不仅能深入全面地了解扫描器细节,也能在遇到新情况时举一反三,对代码进行修改或调整。
在全书的组织上,虽然按技术人为地分了很多章,但实际上各章内容则是你中有我,我中有你,相互解释,相互引用,建议读者先读第1、2章,第3~10章则可以按需要酌情选读,最后再看第11、12章。
纵观这些扫描器系统及扫描监测、防护系统,无论是“攻”,还是“防”,都不取决于程序的设计程度,而是取决于使用程序的人。对于黑客,会利用攻方系统刺探、入侵别人的系统,用防方系统保护自己不被发现或刺探;而对于网络普通用户或网络管理员,则要通过攻方系统扫描自身缺点,防患于未然,同时利用防方系统及时发现别人的扫描操作。再安全的系统,都有漏洞,再全面的技术,都有不足,真正的网络安全,需要丰富的安全常识和强烈的安全意识。
全书中的说明和编程实例均以Microsoft Windows XP(SP3)作为默认的操作系统、以Microsoft Visual C++ 6.0(SP6)作为默认的开发环境。
本书附带光盘,内容包括本书所有程序的源码工程文件,以及个别程序所需的必要支持文件。
声明
本书、光盘所有例程,其源码部分版权归本书作者。本书、光盘(包括由例程编译生成的可执行文件)的源码、可执行文件不得用于以下目的:
❑商业销售。
❑网站下载。
❑攻击任意对方未授权的网站。