笨鸟先飞|网络学院:教程,资料,技巧,应用.

www.itfly.org

您正在浏览: 主页>网络基础>HTTP协议>
  文章搜索

  热点文章

Http指纹识别技术

HTTP协议四--关于Chunked编码

浅谈HTTP协议(一)--结构

浅谈HTTP协议(二)--返回值

利用HTTP协议的特性进行拒绝服务

HTTP和WWW的配置注意事项

协议分析的优势—HTTP分析器检测

WWW的核心——HTTP协议

SOAP 1.1规范

HTTP协议三--断点续传

Http指纹识别技术

来源:    作者:    时间:2006-10-19    字体:[ ]

Http指纹识别技术
Http指纹识别现在已经成为应用程序安全中一个新兴的话题,Http服务器和Http应用程序安全也已经成为网络安全中的重要一部分.从网络管理的立场来看,保持对各种web服务器的监视和追踪使得Http指纹识别变的唾手可得,Http指纹识别可以使得信息系统和安全策略变的自动化,在基于已经设置了审核策略的特殊的平台或是特殊的web服务器上,安全测试工具可以使用Http指纹识别来减少测试所需要的配置.



本文将介绍现有的Http指纹识别技术,同时也将讨论所遇到的一些问题并且拿出可行的解决方案.



一.指纹识别理论



指纹的定义是这样的:1是指任何表面上的指尖印象或者是在指尖上蘸上墨水而在纸上留下的的墨水印象;2是指可以用来识别的东西:如特色、痕迹或特性等揭露起源的东西,表示物体或物质的特色的证据.



指纹识别可以分为两步,一是对指纹进行收集和分类;二是将未知的指纹同被储存在数据库中的指纹进行比较,从而找出最符合的.



当采集指纹的时候,对物体的所有主要特性的抓取是必要的.采集较多的细节,可以对第二步产生很大的帮助.当比较指纹的时候,很有可能有几个指纹是被不合适的匹配的,因为可指纹之间微小的差别很容易使识别产生错误,这也要求指纹识别需要很高的技术.



指纹识别技术现在已经是网络安全的已知技术.操作系统指纹识别在任何的网络评估中是一件通常的工作,现在也有很多操作系统指纹识别技术.操作系统指纹识别为什么能成功?那是因为每个操作系统实现TCP/IP协议时有微小的差别,当前比较流行的是利用TCP/IP堆栈进行后操作系统识别,相关工具比如Nmap;还有的是利用ICMP进行操作系统识别,代表工具如Xprobe.



Http指纹识别的原理大致上也是相同的:记录不同服务器对Http协议执行中的微小差别进行识别.Http指纹识别比TCP/IP堆栈指纹识别复杂许多,理由是定制Http服务器的配置文件、增加插件或组件使得更改Http的响应信息变的很容易,这样使得识别变的困难;然而定制TCP/IP堆栈的行为需要对核心层进行修改,所以就容易识别.



二.Banner获取



查看Http应答头信息是Http指纹识别中最简单也是最基础的,我们可以通过一个Tcp客户端比如netcat来实现,一般我们用的比较多的是telnet到80端口,然后发送命令来得到响应信息,这里我们以netcat来做例子,以下是三个不同Http服务器的响应信息:



1:Apache1.3.23server:
Http/1.1200OK
Date:Mon,08Sep200317:10:49GMT
Server:Apache/1.3.23
Last-Modified:Mon,08Sep200303:48:19GMT
ETag:"32417-c4-3e5d8a83"
Accept-Ranges:bytes
Content-Length:196
Connection:close
Content-Type:text/html




2:MicrosoftIIS5.0server:
Http/1.1200OK
Server:Microsoft-IIS/5.0
Expires:Mon,08Sep200301:41:33GMT
Date:Mon,08Sep200316:41:33GMT
Content-Type:text/html
Accept-Ranges:bytes
Last-Modified:Mon,08Sep200315:32:21GMT
ETag:"b0aac0542e25c31:89d"
Content-Length:7369



3:NetscapeEnterprise4.1server:
Http/1.1200OK
Server:Netscape-Enterprise/4.1
Date:Mon,08Sep200316:19:04GMT
Content-type:text/html
Last-modified:Mon,08Sep200215:37:56GMT
Content-length:57
Accept-ranges:bytes
Connection:close



三.模糊服务器Banner信息



在很多情况下,获取Banner被证明是一种很好的Http指纹识别方法.但是,网络管理员会选择通过配置或者是增加插件来更改或者是模糊服务器的Banner信息.当然,这样的设置确实是自动的阻止了很多对Http服务器的攻击.



要让服务器返回不同的Banner信息的设置是很简单的,象Apache这样的开放源代码的Http服务器,用户可以在源代码里修改Banner信息,然后重起Http服务就生效了;对于没有公开源代码的Http服务器比如微软的IIS或者是Netscape,可以在存放Banner信息的Dll文件中修改,相关的文章有讨论的,这里不再赘述,当然这样的修改的效果还是不错的.



另一种模糊Banner信息的方法是使用插件,这些插件可以提供自定义的Http应答信息.比如ServerMask这个商业软件就可以提供这样的功能,它是IIS服务器的一个插件,ServerMask不仅模糊了Banner信息,而且会对Http应答头信息里的项的序列进行重新组合,从而来模仿Apache这样的服务器,它甚至有能力扮演成任何一个Http服务器来处理每一个请求.这个软件可以在以下地址找到:



Http://www.port80software.com/products/servermask



下面就是一个被自定义Banner信息的Http服务器的例子,Apache服务器被自定义成了未知服务器:
Http/1.1403Forbidden
Date:Mon,08Sep200302:41:27GMT
Server:Unknown-Webserver/1.0
Connection:close
Content-Type:text/html;charset=iso-8859-1



下面是一个使用了ServerMask插件的IIS服务器的例子:
Http/1.1200OK
Server:YesweareusingServerMask
Date:Mon,08Sep200302:54:17GMT
Connection:Keep-Alive
Content-Length:18273
Content-Type:text/html
Set-Cookie:Itworksoncookiestoo=82.3S3.O12.NT2R0RE,4147ON3P,.4OO.;path=/
Cache-control:private



从上面的例子我们可以看到,仅仅从Banner信息来判断Http服务器类型是远远不够的.

上一页12 3 4 下一页 www.itfly.org