网络安全讲座之:侦察与工具(3)
许多本课中介绍的程序都利用堆栈指纹技术,这种技术允许你利用TCP/IP来识别不同的操作系统和服务。因为大多数的系统管理员注意到信息的泄露而且屏蔽了系统标志,所以应用堆栈指纹的技术十分必要。但是,各个厂商和系统处理TCP/IP协议的特征是管理员所难以更改的。许多审计人员和黑客记录下这些TCP/IP应用的细微差别,并针对各种系统构建了堆栈指纹表。
要想了解操作系统间处理TCP/IP协议的差异需要向这些系统的IP和端口发送各种特殊的包。根据这些系统对包的回应的差别,你可以推断出操作系统的种类。例如,你可以向主机发送FIN包(或任何不含有ACK或SYN标志的包),你会从下列操作系统获得回应:
·Microsoft Windows NT,98,95,和3.11
·FreeBSD
·CISCO
·HP/UX
大多数其它系统不会回应。虽然你只不过缩小了一点范围,但这至少开始了你对目标系统的了解。如果你向目标系统发送的报文头有未定义标志的TCP包的话,2.0.35版本以前的LINUX系统会在回应中加入这个未定义的标志。这种特定的行为使你可以判断出目标主机上是否运行该种LINUX操作系统。
下列是堆栈指纹程序利用的部分特征,许多操作系统对它们的处理方式不同:
·ICMP错误信息抑制
·服务类型值(TOS)
·TCP/IP选项
·对SYN FLOOD的抵抗力
·TCP初始窗口:只要TCP开始进行三次握手,总是先发出一个SYN包。像NMAP这样的程序会发出一个SYN包欺骗操作系统作回应。堆栈指纹程序可以从回应报文的格式中推论出目标操作系统的一些情况。
NMAP
NMAP由于功能强大、不断升级和免费的原因十分流行。它对网络的侦查十分有效是基于两个原因。首先,它具有非常灵活的TCP/IP堆栈指纹引擎,NMAP的制作人FYODOR不断升级该引擎是它能够尽可能多的进行猜测。NMAP可以准确地扫描服务器操作系统(包括Novell, UNIX, Linux, NT),路由器(包括CISCO,3COM和HP),还有一些拨号设备。其次,它可以穿透网络边缘的安全设备,例如防火墙。
NMAP穿透防火墙的一种方法是利用碎片扫描技术(fragment scans),你可以发送隐秘的FIN包(-sF),Xmas tree包(-sX)或NULL包(-sN)。这些选项允许你将TCP查询分割成片断从而绕过防火墙规则。这种策略对很多流行的防火墙产品都很有效。
当前NMAP只能运行在UNIX操作系统上。操作系统类型包括Linux的所有版本,Free BSD 2.2.6-30,HP/UX,和Solaris。在Linux的X-Windows上还提供图形界面。最好的掌握NMAP的方法是学习使用它。使用nmap -h命令可以显示帮助信息,当然,你也可以用man nmap命令查看它的使用手册。
共享扫描
你可以扫描网络中绝大多数的内容,包括正在使用的共享。这种扫描过程提供了重要的侦查和利用各种资源和文件的方法。
共享扫描软件
Ping Pro提供了允许审计人员扫描Windows网络共享的功能。它只能侦查出共享名称,但不会入侵共享。例如,Microsoft网络利用TCP139端口建立共享。更具侵略性的侦查软件有知名的RedButton,许多Internet站点都免费提供下载。
RedButton是一个很古老的程序,大多数的系统管理员和安全管理员都找到了防范它的方法。这个程序不仅可以侦查出共享名称还可以发现相应的密码。它还可以获得管理员的账号名称。
缺省配置和补丁级扫描
黑客和审计人员对系统的缺省配置很了解。你可以编制工具查找这些弱点。实际上,本课中讨论的许多企业级的侦查工具都是针对这些弱点进行工作的。安全专家还知道操作系统工作的细节,根据服务补丁和hot fix的数量进行升级。
使用Telnet
Telnet是远程登录系统进行管理的程序。缺省情况下telnet使用23端口。当然,你还可以利用Telnet客户端程序连接到其它端口。
例如,你可以Telnet至HTTP端口。在连接一段时间内若没有任何动作,服务器会因为无法识别这次连接而自动切断。但是你通常可以从HTTP服务器上得到一些信息。例如,可以得知服务厂商的信息,版本(如Apache Web Server 1.36或IIS 4.0)等等。
虽然信息不是很多,但你至少能从报错信息中推断出服务器类型。如左边图所示你与服务器连接被终止,但在Web服务器报错信息中仍可以看出HTTP服务器版本。你还可以用Telnet连接上系统再使用SYST命令,许多TCP/IP堆栈会泄漏一些重要的信息。