⒈扫描器
在Internet安全领域,扫描器是最出名的破解工具。据说一个好的TCP端口扫描器相
当于一千个用户口令的价值,在深入讨论扫描器之前,行熟悉一下扫描器。
⑴什么是扫描器
扫描器是自动检测远程或本地主机安全性弱点的程序。通过使用一个扫描器,洛杉矶
的用户可以不留痕迹地发现远在日本的一台服务器的安全性弱点。
⑵扫描器如何工作
真正的扫描器是TCP端口扫描器,这种程序可以选通TCP/IP端口和服务(比如,Telnet
或FTP),并记录目标的回答。通过这种方法,可以搜集到关于目标主机的有用信息(比
如,一个匿旬用户是否可以登录等等)。而其他所谓的扫描器仅仅是UNIX网络应用程序,
这些程序一般用于观察某一服务是否正在一台远程机器上正常工作,它们不是真正的扫描
器,但也可以用于收集目标主机的信息(UNIX平台上通用的rusers和host命令就是这类程
序的很好的例子)。
⑶扫描器在什么平台上可用?
尽管扫描器程序一般是为UNIX工作站编写的,但现在已有了用于任何操作系统的扫描器。
⑷运行扫描器需要什么系统要求?
系统要求取决于扫描器、操作系统以及与Internet的连接。某些扫描器是专为UNIX编
写的,所以需要UNIX系统。
⑸创建一个扫描器难吗?
不困难。但你需要具备TCP/IP例行测试以及C语言、Perl语言,一种或多种外壳语言的
丰富知识。开发扫描器是一项带劲的工作,它能带给编程者很大的满足感。虽然如此,仍
有许多扫描器(免费的和商品化的)无法作为有益的工具被选择使用。
你还需要了解一下Socket编程的知识,它用于开发客户/服务器应用程序。
有许多在线资源可以帮助你了解Socket编程。第一个由Western Ontario大学的Reg
Quinton所写:
http://tecstar.cv.com/~dan/tec/primer/socket:programming.html
另一个有关资料由Quarterdeck办公系统提供,它是一个在线编程资源,它拥有所有
支持BSD 4.3的Socket例行程序,并且非常全面:
http://149.17.36.24/prog/sockets.html
⑹扫描器能告诉我什么?
扫描器能够发现目标主机某些内在的弱点,这些弱点可能是破坏目标主机安全性的关
键性因素。但是,要做到这一点,你必须了解如何识别漏洞。许多扫描器没有提供多少指
南手册和指令,因此,数据的解释非常重要。
⑺扫描器无法告诉用户什么?
扫描器无法告诉你下列内容:
■扫描器工具具体步骤
■你的扫描活动已进行到了什么程度
⑻扫描器合法吗?
合法。安全工作人员和开发人员经常设计、编写、公布扫描器。这些工具通常在公共
范围内公布,以便系统管理员能够检查自己系统的弱点。然而,尽管拥有和使用扫描器不
违法,但如果你不是一个系统的管理员,却使用扫描器检查目标主机,你将遇到目标主机
管理员的严厉反对。而且,某些扫描器在调查远程服务时具有侵略性,未经授权使用这些
扫描器违反联邦或州法令,被认为是非法进入计算机网络。这个问题引起了一些法律方面
的争论,并且至今仍未得到解决。
⑼为什么扫描器对于Internet安全性很重要?
扫描器对于Internet安全性之所以重要,是因为它们能发现网络的弱点。
⒉历史背景
⒊扫描器属性
扫描器的主要属性有
■寻找一台机器或一个网络
■一旦发现一台机器,可以找出机器正在运行的服务
■测试具有漏洞的那些服务
⑴找出潜在目标
Internet非常庞大,在“太空”中有许多的潜在目标。现代“入侵者”面临的问题是
如何快速高效地找出那些目标。扫描器无疑非常适合这一用途。
⑵发现漏洞
⑶寻找目标
⑷利用扫描器发现目标
⒋网络应用程序
有时人们错误地把网络应用程序称为扫描器。这是一个易犯的错误。实际上,有许多
网络应用程序的功能或多或少地与真正的扫描执行的功能相同。
⑴host
⑵Traceroute
简而言之,就是跟踪两台机器间的路由。
注意,运行Traceroute不一定要在UNIX(或类UNIX)环境中。在Internet上到处都有
Traceroute网关;并且,尽管这些网关只跟踪Traqceroute网关与目标之间的路由,但它们
至少可以用于探测一个IP地址的本机主机。
试一下下面这个Traceroute网关:
http://www.beach.net/traceroute.html
⑶rusers finger
通过观察登录活动,你可以有效地识别出机器间的信任关系;你还可以可靠地确定本地
用户的特性,所有这些事实都具有重要的价值。
⑷show mount
Show mount可以发现远程主机的一些非常有用的信息。最重要的是,通过加入 -e
命令选项,Show mount可以提供指定目标上所有对外目录的清单。这些目录可能在
Internet的任何地方都是可安装的。
⑸其他平台上的网络应用程序
①Windows 95上的应用程序
㈠NetScan工具
NetScan工具箱包含一系列由UNIX移植到Windows 95上的应用程序,包含WHOIS、finger、
ping和Traceroute程序。该工具箱是共享软件,参见地址:
http://www.eskimo.com/-nwps/index.html
㈡Network工具箱
同NetScan工具箱类似,速度更快,可在下面地址中找到。
http://www.uriver.com/netbox.html
㈢TCP/IP检测程序
这个工具不仅收集有关网络和机器的信息,而且把它们用图形描述出来,图形中包括路由
器、工作站和服务器。可在下面找到:
ftp://wuarchive.wustl.edu/systems/ibmpc/win95/netutil/wssrv32n.zip
②Macintosh上的应用程序
㈠MacTCP观察程序
这个程序提供了Ping、DNS查询、以及监视由TCP/IP协议套中协议启动的连接。参考:
http://www.share.com/share/peterlewis/mtcpw
㈡Query It!
http://www.cyberatl.net/~mphillip/index.html#Query It!
㈢What Route
这程序是UNIX常用程序Traceroute的移植版本。参见:
http://homepages.ihug.co.nz/~bryanc
③AS/400上的应用程序
有兴趣者可阅读下面这篇文章:
http://204.56.55.10/education/whitepapers/tcpip/tcp/ip.htm
⒌扫描器
⑴NSS(网络安全扫描器)
NSS由Perl语言编成,它最根本的价值在于它的速度,它运行速度非常快,它可以执行下
列常规检查:
■Sendmail
■匿名FTP
■NFS出口
■TFTP
■Hosts.equiv
■Xhost
注:除非你拥有最高特权,否则NSS不允许你执行Hosts.equiv。
利用NSS,用户可以增加更强大的功能,其中包括:
■AppleTalk扫描
■Novell扫描
■LAN管理员扫描
■可扫描子网
简单地说,NSS执行的进程包括:
■取得指定域的列表或报告,该域原本不存在这类列表
■用Ping命令确定指定主机是否是活性的
■扫描目标主机的端口
■报告指定地址的漏洞
尽管没有详尽讨论NSS,但我在这里要说明一些次要的问题:
■在对NSS进行解压缩后,不能立即运行NSS,需要对它进行一些修改,必须设置一些环境
变量,以适应你的机器配置。主要变量包括:
■$TmpDir_NSS使用的临时目录
■$YPX-ypx应用程序的目录
■$PING_可执行的ping命令的目录
■$XWININFO_xwininfo的目录
提示:如果你隐藏了Perl include目录(目录中有Perl include文件),并且在PATH环境
变量中没有包含该目录,你需要加上这个目录;同时,用户应该注意NSS需要ftplib.pl库
函数。NSS具有并行能力,可以在许多工作站之间进行分布式扫描。而且,它可以使进程
分支。在资源有限的机器上运行NSS(或未经允许运行NSS)应该避免这种情况,在代码中
有这方面的选项设置。
你可在下面地址找到NSS拷贝。
http://www.giga.or.at/pub/hacker/unix
⑵Strobe(超级优化TCP端口检测程序)
strobe是一个TCP端口扫描器,它可以记录指定机器的所有开放端口。strobe运行速度快
(其作者声称在适中的时间内,便可扫描整个一个国家的机器)。
strobe的主要特点是,它能快速识别指定机器上正在运行什么服务。strobe的主要不足
是这类信息是很有限的,一次strobe攻击充其量可以提供给“入侵者”一个粗略的指南,
告诉什么服务可以被攻击。但是,strobe用扩展的行命令选项弥补了这个不足。比如,
在用大量指定端口扫描主机时,你可以禁止所有重复的端口描述。(仅打印首次端口定义)
其他选项包括:
■定义起始和终止端口
■定义在多长时间内接收不到端口或主机响应,便终止这次扫描。
■定义使用的socket号码
■定义strobe要捕捉的目标主机的文件
在如下地址可以找到strobe的拷贝:
http://sunsite.kth.se/linux/system/network/admin/
提示:在你获得strobe的同时,必然获得手册页面,这对于Solaris 2.3是一个明显的问
题,为了防止发生问题,你必须禁止使用getpeername()。在行命令中加入-g 标志就可以
实现这一目的。
同时,尽管strobe没有对远程主机进行广泛测试,但它留下的痕迹与早期的ISS一样
明显,被strobe扫描过的主机会知道这一切(这非常象在/var/adm/messages文件中执行
连接请求)。
⑶SA