Httprint使用介绍.doc_第1页
Httprint使用介绍.doc_第2页
Httprint使用介绍.doc_第3页
Httprint使用介绍.doc_第4页
Httprint使用介绍.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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:Apache 1.3.23 server: Http/1.1 200 OKDate: Mon, 08 Sep 2003 17:10:49 GMTServer: Apache/1.3.23Last-Modified: Mon, 08 Sep 2003 03:48:19 GMTETag: 32417-c4-3e5d8a83Accept-Ranges: bytesContent-Length: 196Connection: closeContent-Type: text/html2:Microsoft IIS 5.0 server: Http/1。1 200 OKServer: Microsoft-IIS/5.0Expires: Mon, 08 Sep 2003 01:41:33 GMTDate: Mon, 08 Sep 2003 16:41:33 GMTContent-Type: text/htmlAccept-Ranges: bytesLast-Modified: Mon, 08 Sep 2003 15:32:21 GMTETag: b0aac0542e25c31:89dContent-Length: 73693:Netscape Enterprise 4.1 server: Http/1.1 200 OKServer: Netscape-Enterprise/4。1Date: Mon, 08 Sep 2003 16:19:04 GMTContent-type: text/htmlLast-modified: Mon, 08 Sep 2002 15:37:56 GMTContent-length: 57Accept-ranges: bytesConnection: 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://products/servermask 下面就是一个被自定义Banner信息的Http服务器的例子,Apache服务器被自定义成了未知服务器:Http/1.1 403 ForbiddenDate: Mon, 08 Sep 2003 02:41:27 GMTServer: Unknown-Webserver/1.0Connection: closeContent-Type: text/html; charset=iso-8859-1 下面是一个使用了ServerMask插件的IIS服务器的例子:Http/1.1 200 OKServer: Yes we are using ServerMaskDate: Mon, 08 Sep 2003 02:54:17 GMTConnection: Keep-AliveContent-Length: 18273Content-Type: text/htmlSet-Cookie: It works on cookies too=82.3S3.O12.NT2R0RE,4147ON3P,.4OO.; path=/Cache-control: private 从上面的例子我们可以看到,仅仅从Banner信息来判断Http服务器类型是远远不够的。四 协议行为 在执行Http协议时,几乎所有的Http服务器都具有它们独特的方法,如果Http请求是合法并且规则的,Http服务器返回的应答信息是符合RFC里的描述的。但是如果我们发送畸形的Http请求,这些服务器的响应信息就不同了,不同服务器对Http协议行为表现的不同就是Http指纹识别技术的基本根据和原理。 大家还是喜欢看例子,那就让我们来举几个不同的例子吧,我们将分析3种不同Http服务对不同请求所返回的响应信息,这些请求是这样的:1:HEAD / Http/1.0 发送基本的Http请求2:DELETE / Http/1.0 发送那些不被允许的请求,比如Delete请求3:GET / Http/3.0 发送一个非法版本的Http协议请求4:GET / JUNK/1.0 发送一个不正确规格的Http协议请求Exp1:基本的Http请求 我们先发送请求HEAD / Http/1.0,然后分析Http响应头里的信息,对头信息里项的排序进行分析。发送的请求命令如下:C:nc 80 /回车,下同HEAD / Http/1.0 /输入后回车,下同响应信息:1:Apache 1.3.23 Http/1.1 200 OKDate: Mon, 08 Sep 17:10:49 GMTServer: Apache/1.3.23 Last-Modified: Thu, 27 Feb 2003 03:48:19 GMTETag: 32417-c4-3e5d8a83Accept-Ranges: bytesContent-Length: 196Connection: closeContent-Type: text/html2:IIS 5.0 Http/1.1 200 OKServer: Microsoft-IIS/5.0Content-Location: Http://Default。htmDate: Mon, 08 Sep 20:13:52 GMTContent-Type: text/htmlAccept-Ranges: bytesLast-Modified: Mon, 08 Sep 2003 10:10:50 GMTETag: W/e0d362a4c335be1:ae1Content-Length: 1333:Netscape Enterprise 4.1 Http/1.1 200 OKServer: Netscape-Enterprise/4.1Date: Mon, 08 Sep 2003 06:01:40 GMTContent-type: text/htmlLast-modified: Mon, 08 Sep 2003 01:37:56 GMTContent-length: 57Accept-ranges: bytesConnection: close比较结果: Apache头信息里的Server和Date项的排序是不同的。Exp2:Http DELETE请求这次,我们将发送DELETE / Http/1.0请求,我们将分析不同Http服务器对非法请求的应答信息的不同。发送的请求命令:C:nc 80DELETE / Http/1.0响应信息:1:Apache 1.3.23 Http/1.1 405 Method Not AllowedDate: Mon, 08 Sep 2003 17:11:37 GMTServer: Apache/1.3.23 Allow: GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, PATCH, PROPFIND, PROPPATCH,MKCOL, COPY, MOVE, LOCK, UNLOCK, TRACEConnection: closeContent-Type: text/html; charset=iso-8859-12:IIS 5.0 Http/1.1 403 ForbiddenServer: Microsoft-IIS/5.0Date: Mon, 08 Sep 2003 20:13:57 GMTContent-Type: text/htmlContent-Length: 31843:Netscape Enterprise 4.1 Http/1.1 401 UnauthorizedServer: Netscape-Enterprise/4.1Date: Mon, 08 Sep 2003 06:03:18 GMTWWW-authenticate: Basic realm=WebServer ServerContent-type: text/htmlConnection: close比较结果: Apache响应的是405 Method Not Allowed,IIS响应的是403 Forbidden,Netscape响应的是 401 Unauthorized,发现对Delete请求,响应的信息是完全不同的。Exp3:非法Http协议版本请求这次我们将发送非法的Http协议版本请求,比如GET / Http/3。0请求,事实上Http 3.0是不存在的,发送请求命令:C:nc 80GET / Http/3.0响应信息:1:Apache 1.3.23 Http/1.1 400 Bad RequestDate: Mon, 08 Sep 2003 17:12:37 GMTServer: Apache/1.3.23 Connection: closeTransfer-Encoding: chunkedContent-Type: text/html; charset=iso-8859-12:IIS 5.0 Http/1.1 200 OKServer: Microsoft-IIS/5。0Content-Location: Http://Default。htmDate: Mon, 08 Sep 2003 20:14:02 GMTContent-Type: text/htmlAccept-Ranges: bytesLast-Modified: Mon, 08 Sep 2003 20:14:02 GMTETag: W/e0d362a4c335be1:ae1Content-Length: 1333:Netscape Enterprise 4.1 Http/1.1 505 Http Version Not SupportedServer: Netscape-Enterprise/4.1Date: Mon, 08 Sep 2003 06:04:04 GMTContent-length: 140Content-type: text/htmlConnection: close比较结果:Apache响应的是400 Bad Request,IIS忽略了这个请求,响应信息是OK, 还返回了网站根目录的HTML数据信息,Netscape响应的是505 Http Version Not Supported。Exp4: 不正确规则协议请求这次测试主要是对GET / JUNK/1.0. 请求的响应,发送请求命令:C:nc 80GET / JUNK/1.0响应信息:1:Apache 1.3.23 Http/1.1 200 OKDate: Sun, 15 Jun 2003 17:17:47 GMTServer: Apache/1.3.23 Last-Modified: Thu, 27 Feb 2003 03:48:19 GMTETag: 32417-c4-3e5d8a83Accept-Ranges: bytesContent-Length: 196Connection: closeContent-Type: text/html2:IIS 5.0 Http/1。1 400 Bad RequestServer: Microsoft-IIS/5.0Date: Fri, 01 Jan 1999 20:14:34 GMTContent-Type: text/htmlContent-Length: 873:Netscape Enterprise 4.1 Bad requestBad requestYour browser sent a query this server could not understand。比较结果:在这里,Apache忽视了不规则的协议JUNK,还返回了200 OK 和根目录的一些信息,IIS响应的是400 Bad Request,Netscape几乎没有返回Http头信息,相反的却返回了HTML格式的信息来表明这是个错误请求。 测试小结:我们下面列了一个表,我们可以很简单的辨别不同的Http服务器。服务器 头信息项排序 Delete请求 非法版本 不规则协议Apache/1.3.23 Date, Server 405 400 200 MS-IIS/5.0 Server, Date 403 200 400 Netscape4.1 Server, Date 401 505 no header 五 指纹识别工具 这里我们将介绍一个Http指纹识别工具Httprint,它通过运用统计学原理,组合模糊的逻辑学技术,能很有效的确定Http服务器的类型。它可以被用来收集和分析不同Http服务器产生的签名,什么是Http签名呢?Http签名通过16进制转为ASCII码如下:Microsoft-IIS/5.0CD2698FD6ED3C295E4B1653082C10D64811C9DC594DF1BD04276E4BB811C9DC50D7645B5811C9DC52A200B4C9D69031D6014C217811C9DC5811C9DC52655F350FCCC535BE2CE6923E2CE6923F2454256E2CE69272576B769E2CE6926CD2698FD6ED3C295E2CE692009DB9B3E6ED3C2956ED3C2956ED3C2956ED3C295E2CE69236ED3C295Apache/1.3.x9E431BC86ED3C295811C9DC5811C9DC5050C5D32505FCFE84276E4BB630A04DB0D7645B5970EE6BB811C9DC5CD37187C11DDC7D78398721EB06FE5D78A91CF57FCCC535B6ED3C295FCCC535B811C9DC5E2CE69272576B769E2CE69269E431BC86ED3C295E2CE69262A200B4C811C9DC5811C9DC5811C9DC5811C9DC5811C9DC5811C9DC5 Httprint先把一些Http签名信息保存在一个文档里,然后分析那些由Http服务器产生的结果。当我们发现那些没有例在数据库中的签名信息时,我们可以利用Httprint产生的报告来扩展这个签名数据库,而当Httprint下一次运行时,这些新加的签名信息也就可以使用了。 Httprint可以图形界面运行和命令行下运行,可以运行在Windows、Linux和Mac OS X平台上。以下是命令行下的帮助文件:D:HttprintUsage: Httprint -h | -i -s . options-h 可以是ip地址ip范围,或者是url地址-i 一个包含测试地址的文件,默认文件是input。txt-s 一个包含Http签名的文件,默认是signatures。txtOptions:-o 默认的报告文件是Httprintoutput。html。可以自己定义-tp Ping超时时间,默认是1000 ms。 最大是30000 ms。-t 连接和读取超时时间,默认是10000 ms。 最大是100000 ms。-r 重复时间。 默认是3次。 最大是30次。-P0 指纹识别前不Ping主机。-? 帮助信息。例子:Httprint -h / -s signatures.txtHttprint -h Https:/ -s signatures.txtHttprint -h Http:/:8080/ -s signatures.txtHttprint -h -54 -s signatures.txt -o 10_0_1_x.htmlHttprint -i input.txt -s signatures.txt -o output.html 使用方法是很简单的,下面是Httprint的一次输出结果: D:Httprint -h Http:/www.T -s signatures.txtHost: / is aliveFinger Printing on Http:/:80/Derived Signature:Apache/1.3.26 (Unix)9E431BC86ED3C295811C9DC5811C9DC5050C5D32505FCFE84276E4BBC184CB920D7645B5811C9DC52A200B4C811C9DC511DDC7D78398721E811C9DC5811C9DC5E2CE6923E2CE6923E2CE6923811C9DC568D17AAE2576B769E2CE6926811C9DC5E2CE6923E1CE67B1811C9DC5E2CE6920E2CE69206ED3C2956ED3C295E2CE6920E2CE69206ED3C295811C9DC568D17AAEE2CE6923Banner Reported: Apache/1.3.26 (Unix)Banner Deduced: Apache/1.3.26Scores:Microsoft-IIS/4.0: 47Microsoft-IIS/5.0: 57Microsoft-IIS/5.0 ASP。NET: 57Microsoft-IIS/5.1: 57Microsof

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论