|
|
|
联系客服020-83701501

浅谈web指纹识别技术

联系在线客服,可以获得免费在线咨询服务。 QQ咨询 我要预约
浅谈web指纹辨认技能

今朝网络上开源的web指纹辨认挨次很多,如Wapplyzer,BlindElephant,plecost,w3af,whatweb, wpscan, joomscan等等,底子都是海外的,哄骗的时候因各方面成份会有一些限定,在某些特定环境下需要自己定制指纹辨认工具,本文会浅析这些指纹辨认挨次的 情理以及若何编写一个web垄断指纹辨认挨次,完全不有技能含量,有不妥的处所还望各类SM。

0×01:辨认的几种设施

今朝思空见贯的web垄断指纹辨认主要有下列几种设施,泽总已经总结的很明确了。

1:网页中创作发明关键字

2:特定文件的MD5(主假设静态文件、不定然假设MD5)

3:指定URL的关键字

4:指定URL的TAG形式

以上4种形式联结起来辨认的话准确率个别在95%以上,除非通常BT的站点批改的体无完肤,如meta、文件阶梯、css等都删除了或存心批改为此外的webapp等,那我只能说你屌爆了。

0×02:辨认设施详解

一 般垄断挨次在html、js、css等文件中多多少少会包罗一些特色码,这跟ips、waf等产物的本色有点相通,有特色码受室形式。譬如 wordpress假定不有特细暗藏的话,在robots.txt中会包罗wp-admin之类,首页index.php中会包罗 generator=wordpress 3.xx,后背为版本号,页面中会包罗wp-content阶梯等等。
这几条都是存在网页中的关键字。 此外的垄断也有相通的例子,如discuz、dedecms、phpwind等在页面中都会创作发明一些固定的特色码。特色码若何查找这里不详细阐明了,下期 会有文章详细阐明若何批量查找特色码,接上去先介绍一下几款思空见贯的web垄断指纹辨认挨次。

1:Wapplyzer

Wapplyzer是基于正则表明式来辨认web垄断的,如下图:

点击在新窗口中浏览此图片

担当看看Wapplyzer的规则切实很繁冗,挑一条看看,如下:

‘WordPress’:???????????? { cats: { 1:??1, 2: 11 }, meta: { ‘generator’: /WordPress/i }, html: /

2:plecost

plecost是基于python架构,操纵了Beautiful Soup 来剖析html、xml文件辨认站点哄骗的插件及版本。要体会plecost的情理,必须先知道Beautiful Soup是干啥用的,繁冗科普下Beautiful Soup:

Beautiful Soup 是一个 Python HTML/XML 处置惩罚器,方案用来快捷地转换网页抓取。下列的本色撑持着 Beautiful Soup:

Beautiful Soup 不会决议 纵然你给他一个损坏的标签。 他产生活力一个转换DOM树,尽可能和你原文档模式含义一致 。这种挨次通常可能你搜集数据的需要。
Beautiful Soup 提供一些繁冗的设施以及类Python语法 来查找、查找、批改一颗转换树:一个工具集帮忙你剖析一棵树并释出你需要的模式。你不需要为每个垄断创建自己的剖析工具。
Beautiful Soup 自动将送出去的文档转换为 Unicode 编码 并且在输出的时候转换为 UTF-8,。 除非这个文档不有指定编码设施大概Beautiful Soup 没能自动检测编码,你需要手动指定编码设施,不然你不需要思索编码的标题问题。

再看看plecost代码,如下图:

点击在新窗口中浏览此图片

加载并读取wp_plugin_list.txt,操纵urlopen探测方针url是否存在该插件。Plecos编写插件也非常任意,在wp_plugin_list.txt外面写上插件称说、最新版本号和cve便可。

3:whatweb

whatweb 是一个web垄断挨次指纹辨认工具,概略鉴别出模式操持琐细(CMS)、博客平台、统计剖析软件、javascript库、服务器和此外更多Web挨次。 whatweb领有超过900个插件,插件是用来鉴别Web垄断琐细的。因此,开发者号令更多的人帮忙开发插件,没必要放心作者声称插件是稀奇繁冗编写的。
概略说whatweb是今朝网络上角力算计强大的一款垄断辨认挨次了。它支持正则表明式、md5 hash受室、url辨认、HTML标识表记标帜形式、蜘蛛爬行等等。

Whatweb插件编写需要体会一些变量的定义,通过上面的例子便概略看出个可能,如下:

Plugin.define “Plone” do
author “Andrew Horton”
version “0.2”
description “CMS http://plone.org”
examples %w| www.norden.org www.trolltech.com www.plone.net www.smeal.psu.edu|dorks [
‘”powered by plone”‘
]matches [
{:name=>”meta generator tag”,
:regexp=>//},

{:name=>”plone css”,
:regexp=>/(@import url|text/css)[^>]*portal_css/.*plone.*css()|”)/}, #”

{:name=>”plone javascript”,
:regexp=>/src=”[^”]*ploneScripts[0-9]+.js”/}, #”

{:text=>’‘}, {:name=>”div tag, visual-portal-wrapper”, :certainty=>75, :text=>’

‘}, ] def passive m=[] #X-Caching-Rule-Id: plone-content-types #X-Cache-Rule: plone-content-types m << {:name=>”X-Caching-Rule-Id: plone-content-types” } if @meta[“x-caching-rule-id”] =~ /plone-content-types/i m << {:name=>”X-Cache-Rule: plone-content-types” } if @meta[“x-cache-rule”] =~ /plone-content-types/i m end end

:name=>”meta generator tag”,??: 包罗受室的文件称说,这个文件必须是站点中唯一存在的文件。

:regexp=>是包罗的要受室的形式,它是一个正则表明式,概略有下列选项:

:regexp 尺度的ruby正则表明式

:text??字符

:ghdb 谷歌 hack数据库,包罗下列几个形式

inurl: 包罗的字符串在url

intitle: 包罗的字符串在title

filetype: 包罗的文件名,如PDF, JPG, RB等

:md5 乞请页面的md5 hash值

:tagpattern html标签

:version 概略设置正则表明式或间接字符串受室

:string????概略设置正则表明式或间接字符串受室

:filepath概略设置正则表明式或间接字符串受室,通常表现琐细差错或配置文件等

:account 常罕用在登陆页面或用户列表等

:module 概略设置正则表明式或间接字符串受室,如网络装备可能哄骗了一个ruby模块等

:model 概略设置正则表明式或间接字符串受室

:firmware 概略设置正则表明式或间接字符串受室,装备的固件版本

体会了以上选项咱们概略写出一个繁冗的辨认discuz的插件,如下:

Plugin.define “discuz” do
author “freebuf@gmail.com” # 2012-05-28
version “0.1”
description “discuz – homepage: http://www.discuz.net/”# Examples #
examples %w|
www.discuz.net|matches [

# Version detection # Powered by text
{ :version=>// },
{ :version=>/

Powered by <strong>.*Discuz!.*<em>([Xxd.]+)s*/ }, # HTML Comment { :text=>’discuz_uid’ }, ] end </em></strong>

运行如下图:

点击在新窗口中浏览此图片

更多whatweb插件开发参考:whatweb

0×03:若何编写web指纹辨认挨次

面前目今当今网络上做指纹辨认用的至多的是BeautifulSoup,这个插件上面已经介绍过了,并且很多web垄断指纹辨认挨次哄骗了该插件,这里就未几介绍了,往日诰日主要介绍下此外一个框架:scrapy

Scrapy,Python开发的一个快捷,低档次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结??Scrapy Pthyon爬虫框架 logo[1]构化的数据。Scrapy用处遍及,概略用于数据挖掘、监测和自动化测试。

Scrapy吸收人的处所在于它是一个框架,任何人都概略根据需要任意的批改。它也提供了多种典范榜样爬虫的基类,如BaseSpider、sitemap爬虫等,最新版本又提供了web2.0爬虫的支持。

Scrapy 哄骗 Twisted 这个异步网络库来处置惩罚网络通信,架构显明,并且包罗了各类两端件接口,概略机动的实现各类需要。小我架构如下图所示:

点击在新窗口中浏览此图片

绿 线是数据流向,首先从初始 URL 初步,Scheduler 会将其交给 Downloader 遏制下载,下载之后会交给 Spider 遏制剖析,Spider 剖析出来的后果有两种:一种是需要进一步抓取的链接,比方曩昔剖析的“下一页”的链接,这些工具会被传回 Scheduler ;另一种是需要保留的数据,它们则被送到 Item Pipeline 那处,那是对数据遏制后期处置惩罚(详细剖析、过滤、存储等)的处所。此外,在数据流动的通道里还概略调剂各类两端件,遏制需要的处置惩罚。

假定想做一个好的准确的,非常牛逼的web指纹辨认,人造少不了爬虫机制,而做一个爬虫主要分两全体:

一:下载 Web 页面,有很多标题问题需要思索,若何最大程度地操纵当地带宽,若何铺排针对差距站点的 Web 乞请以加重对方服务器的肩负等。一个高功用的 Web Crawler 琐细里,DNS 查问也会成为急需优化的瓶颈。

二: 一些“行规”需要按照(比方 robots.txt)。而取得了网页之后的剖析历程也利害常冗杂的,网络 上的工具千奇百怪,各类差错百出的 HTML 页面都有,要想全全体析分明简直是不成能的事;此外,随着 AJAX 的风行,若何取得由 Javascript 音讯天生的模式成了一大艰难;除此之外,网络 上还有有各类存心或无意涌现的Spider Trap ,假定盲目标跟踪超链接的话,就会陷入 Trap 中万劫不复了

不过,切实并不有多少人需要做像 Google 那样通用的 Crawler ,咱们做一个 Crawler 即是为了去爬特定的某个站点来遏制指纹辨认,所谓良心知彼,百战百胜,咱们概略事先对需要爬的站点结构做一些剖析,事故就变得繁冗多了。通过剖析,选出有 代价的链接遏制跟踪,尔后再遏制指纹辨认。多么便概略避免很多不需要的链接大概 Spider Trap。

举个例子,咱们添加一个discuz的辨认挨次,
Discuz我繁冗例了2个特色码如下:
页面中meta标签的generator属性为Discuz
robots.txt 外面也会有版本音讯

OK, 以上2个特色码已经能繁冗辨认该垄断了,咱们操纵scrapy来提取数据并辨认垄断。scrapy提取数据主要用到了XPath,它有提供两个XPath 决议器,HtmlXPathSelector和XmlXPathSelector,一个用于HTML,一个用于XML,XPath决议器有三个设施:

select(xpath): 前往一个相关于之后选中节点的决议器列表(一个XPath可能选到多个节点)
extract(): 前往决议器(列表)对应的节点的字符串(列表)
re(regex): 前往正则表明式受室的字符串(分组受室)列表

体会了以上设施,写起来就角力算计繁冗了,上面举个非常繁冗的例子:

from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
from scrapy.utils.url import urljoin_rfc,urllib,reclass XSSSpider(BaseSpider):
name=”freebuf”
allowed_domains=[“freebuf.com”]
start_urls=[“http://forum.freebuf.com”]def parse(self, response):
hxs = HtmlXPathSelector(response)
c = hxs.select(‘//meta[@name=”generator”]/@content’).extract()
urls = urljoin_rfc(response.url,”robots.txt”)
t = urllib.urlopen(urls)
#print a
a = re.findall(“[Dd]iscuz.*”,t.read())
if (a or c):
print “Web application details : Discuz”
else:
print “Web application version not found!”

到主花样目录运行:scrapy crawl freebuf

点击在新窗口中浏览此图片

以上只是个繁冗的例子,诚然你也概略多种条件联结到一块儿写成插件的设施调用,如下:

FreebuF[“WordPress”] = {
‘//meta[ () name=”generator” and starts-with(@content,”WordPress”)]’,
‘//head/link[ () rel=”stylesheet” and @type=”text/css” and contains( @href, “/wp-content/”)]’,
‘//div[ () id=”content”]/div[ () and starts-with(@id, “post-“) and div[ ()] and div[
()] and div[ ()] and div[ ()]]’,
}

0×04:后续的一些考虑

简 单的web垄断辨认不会涉及到爬虫机制,但是假定需此外更过细的音讯以及更准确的辨认web垄断,以及后期缩减此外功用,不成短少的是爬虫机制,而爬虫也 间接影响到挨次的实验违抗、速度是否够快,辨认是否准确等。这里就涉及到大范畴递归抓取了,假定哄骗scrapy来做爬虫的话,可能要批改scrapy来 处置惩罚下列几个标题问题:

1:快捷的link extractor

python的SGMLParser切实是太慢了,哄骗 SgmlLinkExtractor会让爬虫把大全体的岁月都华侈在剖析网页上,最好自己写一个link extractor,也概略用正则表明式来写link extractor,速度快,标题问题是不体会html语义,会把剖明里的链接也包罗出去。此外基于javascript重定向url也要在这里提存入来。

2:Spider Trap

由于spider trap个别是由音讯网页实现的,最繁冗的操持即是先通过url是否包罗”?”来果断一个网页是否是音讯网页,尔后取得不包罗参数的url地址,对这个地址遏制计数,设置一个阈值,超过阈值之后不再抓取。

3:增量抓取

一个针对多个站点的爬虫很难一次性把整个网页爬取上去,并且网页也处于不断更新的状态中,爬取是一个音讯的历程,爬虫支持增量的抓取是很需要的。

4:快捷辨认
爬虫抓取数据的时候咱们概略定位抓取的数据为js、css、html等,也可指定特定的文件夹文件称说,如gif、jpg、 png之类。

参考文章:

http://anantshri.info/articles/web_app_finger_printing.html
http://luoq.net/ais/1181/
http://www.biaodianfu.com/scrapy-architecture.html
http://blog.pluskid.org/?p=366

对哄骗琐细的探测:《渗入测试工具Nmap从低级到低级》

原文 http://www.freebuf.com/articles/2555.html

由网络保险攻防研究室(www.91ri.org)音讯保险小组搜集整理。

数安新闻+更多

证书相关+更多