在上世纪80年代的时候,网络利用率很低,很多人通过Modem拨号到Unix系统。这时的攻击手段需要进行大量的手工编程、编译和运行测试,然后通过分析所取得的数据了解系统提供了哪些服务、开放了哪些端口以及系统其他的配置信息。这种纯粹的手工劳动不仅费时费力,而且对操作者的编程能力和经验提出了很高的要求。这就应运而生了War Dialer,它是由当时应用的扫描技术所实现的自动扫描器,用相同的格式来记录结果。
1992年,计算机科学系学生Chris Klaus 在做Internet安全试验时编写了一个扫描工具ISS(Internet Security Scanner),ISS是Internet上用来进行远程安全评估扫描的最早的工具之一,它能识别出几十种常见的安全漏洞,并将这些漏洞做上标记以便日后解决。虽然有些人担心该工具的强大功能可能会被用于非法目的,但多数管理员对这个工具却很欢迎。
SATAN的发布是一个全新的起点。SATAN本质上与ISS相同,但更加成熟。SATAN基于Web的界面,并能进行分类检查。当时许多人甚至担心SATAN的发布会给Internet带来混乱。从那个时候开始,安全评估技术在人们的研究下不断地成熟起来。今天,业界已经出现了几十种扫描器,每种都有其优点,也有其弱点。
2.扫描技术
2.1扫描的各种方式
端口扫描有很多种不同的方式,根据连接到一个端口扫描的情况下,可分为全开扫描,半连接扫描,秘密扫描。这几种扫描都可以查找服务器上存活或者关机的端口,从而发现该服务器上对外开放的情况,但这几种技术不是每一种技术都能得到正确的结论。尽管TCP connect扫描很容易被检测到但是确是最准确的,使用秘密扫描可能避开防火墙,容易造成误报。
全连接扫描是TCP端口扫描的基础,现有的全连接扫描代表是TCP connectar()扫描。TCP connect扫描是最传统的扫描技术,程序调用connect()套接字函数连接到目标端口,形成一次完整的TCP三次握手过程,显然能连接上的目标端口就是开放的。在UNIX环境下使用这种扫描方式不需要任何权限。还有一个特点,它的扫描速度非常快,可以同时使用多个Socket来加快扫描速度,使用一个非阻塞的I/O调用即可监视多个socket。不过由于它不存在隐蔽性,所以不可避免地呀哦被目标主机记录连接信息和错误信息或者被防护系统拒绝。全连接扫描还有TCP反向ident扫描等。
TCP连接是端口扫描的基础,使用三次握手与规定的端口进行连接,方便对于每个端口进行监测,connect()就会成功,反之则不成功。它还可以阻止其他不明主机的连接。
秘密扫描技术没有三次握手的任何内容,所以没办法被记录,而SNY扫描比较隐蔽,而FIN数据包只能监测SYN包的包过滤器。它对UNIX目标扫描,不关目标的端口是否打开都会发送相应的RST。
间接扫描是利用第三方IP以欺骗主机的目的来隐藏真正的扫描者IP,从而获得扫描结果,但是它不能发送任何数据包(除了与扫描有关的包)墙监控TCP SYN扫描来说,有一些如synlogger和考特尼也能够探测到它的工具。原因是,这种扫描方法,以达到长期隐瞒违反扫描方式,网络流量是相当抢眼,这是它刻意追求的隐藏的功能并留下了自己的狐狸尾巴。有半连接扫描的IP ID头扫描。 存活主机扫描软件开发与设计+源代码(2):http://www.751com.cn/jisuanji/lunwen_9925.html