最近工作是app推广方案app,求好用的设备指纹技术?求推荐?

浅谈web指纹识别技术 - FreeBuf互联网安全新媒体平台 | 关注黑客与极客
浅谈web指纹识别技术
共1574598人围观
,发现 27 个不明物体
目前网络上开源的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: /
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|
'"powered by plone"'
{: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"/}, #"
‘}, {: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正则表达式
:ghdb google hack数据库,包含以下几个模式
inurl: 包含的字符串在url
intitle: 包含的字符串在title
filetype: 包含的文件名,如PDF, JPG, RB等
:md5 请求页面的md5 hash值
:tagpattern html标签
:version 可以设置正则表达式或直接字符串匹配
可以设置正则表达式或直接字符串匹配
:filepath可以设置正则表达式或直接字符串匹配,通常显示系统错误或配置文件等
:account 经常用在登陆页面或用户列表等
:module 可以设置正则表达式或直接字符串匹配,如网络设备可能使用了一个ruby模块等
:model 可以设置正则表达式或直接字符串匹配
:firmware 可以设置正则表达式或直接字符串匹配,设备的固件版本
了解了以上选项我们可以写出一个简单的识别discuz的插件,如下:
Plugin.define "discuz" do
author "" #
version "0.1"
description "discuz - homepage: http://www.discuz.net/"
# Examples #
examples %w|
www.discuz.net|
# Version detection # Powered by text
{ :version=&// },
{ :version=&/
Powered by .*Discuz!.*([Xx\d\.]+)\s*/ }, # HTML Comment { :text=&'discuz_uid' }, ] end
运行如下图:
更多whatweb插件开发参考:
0×03:如何编写web指纹识别程序
现在网络上做指纹识别用的最多的是BeautifulSoup,这个插件上面已经介绍过了,并且很多web应用指纹识别程序使用了该插件,这里就不多介绍了,今天主要介绍下另外一个框架:
Scrapy,Python开发的一个快速,高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结
Scrapy Pthyon爬虫框架 logo[1]构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。
Scrapy吸引人的地方在于它是一个框架,任何人都可以根据需求方便的修改。它也提供了多种类型爬虫的基类,如BaseSpider、sitemap爬虫等,最新版本又提供了web2.0爬虫的支持。
Scrapy 使用
这个异步网络库来处理网络通讯,架构清晰,并且包含了各种中间件接口,可以灵活的完成各种需求。整体架构如下图所示:
绿线是数据流向,首先从初始 URL 开始,Scheduler 会将其交给 Downloader 进行下载,下载之后会交给 Spider 进行分析,Spider 分析出来的结果有两种:一种是需要进一步抓取的链接,例如之前分析的“下一页”的链接,这些东西会被传回 Scheduler ;另一种是需要保存的数据,它们则被送到 Item Pipeline 那里,那是对数据进行后期处理(详细分析、过滤、存储等)的地方。另外,在数据流动的通道里还可以安装各种中间件,进行必要的处理。
如果想做一个好的准确的,非常牛逼的web指纹识别,自然少不了爬虫机制,而做一个爬虫主要分两部分:
一:下载 Web 页面,有许多问题需要考虑,如何最大程度地利用本地带宽,如何调度针对不同站点的 Web 请求以减轻对方服务器的负担等。一个高性能的 Web Crawler 系统里,DNS 查询也会成为急需优化的瓶颈。
二:一些“行规”需要遵循(例如 robots.txt)。而获取了网页之后的分析过程也是非常复杂的,Internet 上的东西千奇百怪,各种错误百出的 HTML 页面都有,要想全部分析清楚几乎是不可能的事;另外,随着 AJAX 的流行,如何获取由 Javascript 动态生成的内容成了一大难题;除此之外,Internet 上还有有各种有意或无意出现的 ,如果盲目的跟踪超链接的话,就会陷入 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,re
class 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)
a = re.findall("[Dd]iscuz.*",t.read())
if (a or c):
print "Web application details : Discuz"
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[ () class="post" and starts-with(@id, "post-") and div[ () class="posttitle"] and div[
() class="postmeta"] and div[ () class="postbody"] and div[ () class="postfooter"]]',
0×04:后续的一些思考
简单的web应用识别不会涉及到爬虫机制,但是如果需其他更详尽的信息以及更准确的识别web应用,以及后期扩展其他功能,不可缺少的是爬虫机制,而爬虫也直接影响到程序的执行效率、速度是否够快,识别是否准确等。这里就涉及到大规模递归抓取了,如果使用scrapy来做爬虫的话,可能要修改scrapy来处理以下几个问题:
1:快速的link extractor
python的SGMLParser实在是太慢了,使用SgmlLinkExtractor会让爬虫把大部分的时间都浪费在解析网页上,最好自己写一个link extractor,也可以用正则表达式来写link extractor,速度快,问题是不理解html语义,会把注释里的链接也包含进来。另外基于javascript重定向url也要在这里提取出来。
因为spider trap一般是由动态网页实现的,最简单的方案就是先通过url是否包含”?”来判断一个网页是否是动态网页,然后取得不包含参数的url地址,对这个地址进行计数,设置一个阈值,超过阈值之后不再抓取。
3:增量抓取
一个针对多个网站的爬虫很难一次性把所有网页爬取下来,并且网页也处于不断更新的状态中,爬取是一个动态的过程,爬虫支持增量的抓取是很必要的。
4:快速识别
爬虫抓取数据的时候我们可以定位抓取的数据为js、css、html等,也可指定特定的文件夹文件名称,如gif、jpg、 png之类。
参考文章:
FreeBuf常务处主任
小道消息说freebuf后面会出国内应用的指纹扫描工具? :lol:
nice!借楼求扫国内应用指纹的工具
期待后续文章
FreeBuf技术处书记
Freebuf没用过任何自动化采集,所有发布的文章都是人工编辑的,来源:原创、外部投递,精品资源的转发,国外资源自主翻译,转载的内容我们也都附上来源。你说的P站是?
scrapy 安装教程在这里:http://www.youtube.com/watch?v=eEK2kmmvIdw
必须您当前尚未登录。
必须(保密)
FreeBuf保安队队长
关注我们 分享每日精选文章
可以给我们打个分吗?同盾反欺诈研究院丁杨:当谈论设备指纹时 我们到底在说什么
同盾反欺诈研究院丁杨:当谈论设备指纹时 我们到底在说什么
当谈论设备指纹时,我们到底在说什么? ( 丁杨 作者系同盾反欺诈研究院丁杨)“设备”和“指纹”作为独立名词存在时,其具有非常典型的硬件属性;一旦将他们结合起来变成“设备指纹”,就完全变成了一个软件层面的概念。近年来随着智能风控技术日益强大,很多风控系统都逐渐尝试加入这个重要的功能模块。2014年笔者刚加入同盾科技时即负责设备指纹1.0版本研发,随着产品的迭代升级以及无数次与客户现场的沟通,也逐渐积累了一些自己的思考。今天就让我们抛开具体的技术细节,从一个更高的视角来共同探讨设备指纹的发展。设备指纹诞生于网络未知在互联网发展初期,人们发现商业的边疆可以被极大的拓展,我们可以跟某个素不相识的人在一秒以内完成一笔真实交易。但是,更多的机会也带来了更多的风险。很多在人们看来理所当然的线下正规业务场景,一旦转换到线上,就会衍生出意想不到的风险。比如,从前一个卖家可以通过“察言观色”、“一手交钱一手交货”、“摄像头监控”等等方式很精准的去判定一个买家是不是欺诈者。这意味着对于“什么人”在“什么时候”用“什么方法”做了“什么事”这个亘古不变的业务链条,每个环节卖家都一清二楚。但如今在互联网上,所有的识别环节都被打破,实实在在的行为被打散为不同的单个请求,并且这些请求分布在许多复杂的业务模块中,线下积累的经验无法直接适配线上。于是人们发明了各种各样的方式试图重新去补全这个业务链条,而“设备指纹”就是当下用于判定业务主体是“什么人”的一种重要技术。设备指纹的“前世今生”早期,在一些对安全要求非常高的线上场景中,例如一些银行的网上银行,常常使用U盾这样的纯硬件技术去追踪业务主体,也就是上文所说的定位“什么人”。同时,因为业务往往都是发生在浏览器页面中,而浏览器是属于操作系统上层的应用程序,运行在其中的脚本代码受到沙盒的限制,所以用户也需要安装一个可以跳出浏览器沙盒直接跟操作系统对接的控件,来读取U盾里面的安全数据。相对来讲,这很安全。不过随着互联网的发展,这种“控件”+“U盾”的结合方式已经越来越落伍。笔者总结了如下几点原因:1、使用控件的用户体验非常差,需要冗长安装、更新流程,普通用户难以操作; ?2、移动互联网已成为绝对主流,而iOS,Android等移动互联网入口都不支持控件; ?3、不仅仅在移动端,某些控件在pc端适用范围都很小,很多只支持PC上的IE内核浏览器。同时Chrome和Firefox等份额较大的桌面浏览器也在逐步淘汰控件的使用;4、基于控件的本地溢出漏洞层出不穷,用户很容易中木马或者被钓鱼,反而给系统的安全造成严重危害。基于以上几点,纯依赖js的web设备指纹技术逐渐被越来越多的厂商使用。它具有”免安装”、”动态更新”、”用户无感知”、”兼容移动和桌面端所有操作系统浏览器”的优点。此外,由于js天然受到浏览器沙盒的限制,在某些安全性要求更高的场景,内嵌于各种app的SDK设备指纹技术也得到广泛的应用。“好”的设备指纹是怎样的很多人对设备指纹不了解,容易一开始便纠结在一些意义不大的机制和参数上。下面就让我们一起探讨下什么是“好”的设备指纹。1、不侵犯用户隐私这是所有设备指纹产品需要严格遵守的红线。侵犯用户隐私,基于用户敏感信息(比如用户浏览历史记录,用户输入的敏感数据等)研发的设备指纹产品,即使功能再强大,也毫无意义,这无需多言。2. 安全性和用户体验的平衡好的设备指纹需要在安全性和用户体验之间找到最佳的平衡点; 其实这个概念可以衍生到更广的层面,即“安全防护应该是在安全性和业务发展之间找到最佳平衡点”。对于安全从业者来说,这是我们要牢记的第一准则 —— 安全永远是为业务服务的。上文提到的淘汰“硬”设备指纹(U盾)而发展“软”设备指纹(js,SDK)就是对该理念的有力印证。虽然“软”设备指纹在某些情况下功能性和安全性稍差,但在用户体验上获得了极大的提升,再通过结合其他维度的综合风险识别,实践证明”软”设备指纹机制有效且风险可控。3、保证稳定性、兼容性和性能实验室创新并不等同于工厂技术,在实验室诞生的创新技术距离实际的工业化生产还有非常远的路要走。这在设备指纹领域也很明显,我们常常能看到不少”奇思妙想”的技术被炒作为可以用来做设备指纹,但考虑到兼容性和稳定性,实际上绝大多数都不能应用在线上环境中。这些往往只有真正开发设备指纹的技术人员才有深刻体会。稳定性,兼容性,性能等等都需要重点考虑,复杂的客户端环境和多样的使用场景,一款好的设备指纹产品一定是久经考验的“战士”。以同盾的SDK举例,我们做了大量的线上线下测试(针对众多偏门机器或者山寨机的兼容性测试、运行的耗电情况统计、上亿装机量的线上运行、高性能服务端集群压测、极端情况的完备降级处理方案等等)来确保最后交付的产品质量。4. 迎合技术发展无论是web技术还是移动端技术都在飞速发展,一些老旧的技术也在不断被淘汰,设备指纹是一种集合多种技术的集大成类产品,所以也一定要时时迭代,符合新技术发展的潮流。例如前几年HTML5技术刚兴起的时候,我们就对其中“websocket”、”canvas”、”cors”、”local storage”等进行了研究,挖掘了不少有价值可利用的技术。另一边,千疮百孔的flash已经在淘汰的边缘,绝大部分桌面端浏览器都已经默认不开启,我们也在最新的版本里给它判了“死缓”。不仅仅是功能迭代要利用新的技术,设备指纹的应用场景和使用方式也要尽可能与技术发展一致。比如当下很多厂商都采用“混合式app开发”框架,我们就有针对性的研发了适配功能,将app中的h5与本地的sdk结合起来做综合的设备识别。5. 贴合业务场景很多人都知道设备指纹有两个“著名”的评估标准:“稳定性”和“唯一性”。稳定性用来评估历史上出现过的设备依然能够被识别回来的能力。这就好像一个罪犯,不管怎么变装 易容,依然能被警察找到。唯一性则从另一个角度,评估把一个设备识别成另一个设备出错概率。同样的比方,警察知道一个罪犯的特征是“175公分”、“短头发”,但是并不能把大街上所有具有这两个特征的人都当罪犯抓起来,因为这两个特征并不能唯一定位到一个人。换句话说,这两个特征的“熵”太少。但是如果再加上另一个特征—— “左脸眼睛下面有一个3公分的横向刀疤”,这就非常明显了,通过这三个特征,警察有非常大的把握可以追踪到该罪犯。其中这个“刀疤”特征,就是一个不错的可以用来做设备指纹唯一性判定的参数。实际使用过程当中,“稳定性”和“唯一性”也是不可兼得的,此外性价比也是一个关键因素(会有一些办法可以在保证一个特性的同时加强另一个特征,但是其中投入的开发和技术成本,厂商也要考虑是否能承受)。那我们就又需要去找平衡点,怎么找到这个点呢? 答案就是要贴合业务场景。直白点讲,就是厂商想怎么去用设备指纹。我们举两个典型案例:案例一: 广告营销广告营销场景常常需要结合不同人群的兴趣爱好推送不同的广告,达到精准投放的目的。很多时候需要定位到一个用户的设备,然后画一个基于兴趣的设备画像。对于这个场景的设备指纹,其实可以放弃一部分的“唯一性”,去迎合“稳定性”。因为这个时候业务考虑更多的是人群总体覆盖度,而不用纠结在是不是每一个人每一台设备都定位精准了。所以有时候我们会发现在手机的app里浏览一个商品,过段时间电脑上就推荐了,这不是什么黑科技,有可能广告厂商用的仅仅是你的外网ip当作设备指纹。为了更好的解释这一点,我常常举这么一个例子:营销场景的设备指纹就好像给1000个人去标记兴趣,其中有一个人错了没啥大问题,顶多推荐一个他不喜欢的广告;反欺诈则不同,如果1000个里面有一个标记错了,非常有可能那一个人就是一个欺诈者,或者把一个优质的客户给误杀了,这个影响就很大。换一个角度说,用营销的设备指纹去做反欺诈,效果非常难以保证。刚刚提到了外网ip,我们可以简单扩展下思路,随着IPv6的发展,ip地址非常充裕,其实可以在一个人出生的时候就给他一个固定的ip用来上网,这样所有的网络行为都能做到精确追踪。不过这样可能也未必是什么好事。案例二 :可信设备体系反欺诈领域有两种不同的世界观:一种是从一堆未知请求中寻找可能的欺诈;一种是允许已知的优质用户操作,其余未知的都需要经过短信验证或者更严格的身份二次确认。两种方式一种增强了对坏人的覆盖度,一种增强了已知好人的用户体验。高级的反欺诈系统往往混合使用这两种机制。所谓的可信设备体系就是第二种,基于已知的可信操作沉淀出可信的设备体系。这种情况下使用的设备指纹应该更关注“唯一性”还是“稳定性”?答案依然是“稳定性”,不过应该比案例一的营销场景更偏一些唯一性。可以这么理解,对于黑产来说,想要伪装成一台全新的设备很容易,大不了重装系统。但是想要伪装成一台已知的可信设备就很难了。随着维度的增加,难度也会呈指数级增长。打个比方,如果我们是根据”ip归属地城市”、”系统语言”、”wifi名称”三个维度交叉得到的可信设备,那么对于一个特定的可信账号,黑产很难模拟出一套相同的环境。有人会问:为什么不完全偏向“唯一性”呢,这样似乎更安全?那是因为正常用户也会有一些潜在可能的环境变化,比如一个人在家里上网,可能用手机、台式机、或者笔记本电脑,而且常常在多个设备间切换,如果完全偏向“唯一性”,每一个参数的微小改动都需要用户重新进行全流程的二次验证,对于用户的体验会非常差;对厂商来讲,进行二次验证往往需要付出一些成本,比如发短信,当用户量大了之后这些成本的增加也很可观。以上只是众多业务场景中典型的两种,最终怎么设定设备指纹平衡点,完全看业务需要。从商业化的产品角度来看,怎么更好的解决这个问题呢?我们抛出一个答案 —— 灵活可配置化。同盾科技同时提供了多个id,每个id分别有不同的稳定性和唯一性偏好,客户可以根据自己的业务场景,灵活选择。上文所说的只是贴合业务场景的一个层面:“稳定性”和“唯一性”。其实作为“业务”风控产品,方方面面都要努力做到这一点。6. 设备异常环境识别很多人误解,设备指纹只能做设备的唯一标识,也就是“设备ID”的追踪。但其实设备指纹能做的远不止这些,甚至可以说设备ID的功能只占其全部功能的三成左右。上文我们举的两个案例:可信设备和广告营销,可以说这并不算反欺诈的典型业务。当下国内最典型的是“账户”和”营销”这些场景,也是黑产获利最多的场景。这些场景里,黑产往往可以通过伪造新设备或者伪造某些系统底层参数(比如地理位置,imei号等等)的方式来绕过业务的限制。上层设备指纹获取的所有参数都是伪造的,基于这些伪造的数据计算得到的设备ID就毫无意义了。就像一个美丽的空中楼阁,没有了深入地下的坚实基础。而夯实基础关键在于”系统环境异常的识别”。对于常见的黑产改机框架、改机软件、伪装软件等,设备指纹都一定要做到针对性的识别。只有确定当前的系统环境没有异常,设备ID才是可信、可用的。以同盾的设备指纹举例,目前我们几乎能识别所有的Android和iOS底层改机和伪造行为。此外通过对常见的黑产软件有针对性的监控和逆向研究,结合服务端的数据分析和建模,可以给设备打上30多种异常标签,包括“调试行为、“模拟器虚拟机”等等。对于”软”设备指纹,设备异常环境的识别可能比设备ID更重要。7.强大的自我保护机制设备指纹是一个从”端”到”云”的综合系统,这里面既有客户端的交叉验证、劫持检测,又有服务端的数据建模、联防联控,任何一点的疏忽都有可能被黑产攻破,所以需要对客户端的代码做很强健的加固保护。这也是为了在跟黑产对抗的过程中保持信息不对称性的优势,一定程度上我们就是通过这种信息不对称性在攻防之间保持微弱的领先优势。所以对很多设备指纹系统来讲,” 开源”也就意味着平庸和被绕过。双方都在绞尽脑汁拼个你死我活,突然就把家底送给别人看了,后果可想而知。谈论设备指纹时这些尖锐的问题你该知道这几年笔者现场接触了很多客户,也回答了很多设备指纹的问题,其中不乏一些专业到位、一针见血的问题。以下是笔者简单梳理出的一些问题与大家共分享。问题一: 怎么评估设备的“稳定性”和“唯一性”,有没有量化的标准?答:这似乎是一个悖论:如果能有一个良好的判定设备指纹的参数,为什么不拿它当设备指纹呢?不过仔细想想也未必没有解决方案。我们排除掉粗暴的大样本环境测试(样本再大相比线上也是九牛一毛),剩下最好的办法便是基于一些业务数据和生活常识去做这个判断。保密原因我不会详细说,但是我们内部已经形成了一套行之有效的评估预警机制。问题二: 如果我刷机,重装系统,你还能找回这个设备吗?是不是设备指纹就没用了。答:软件层面追踪硬件一定有它的局限性,某些小”trick”可以做到即使刷机和双清,仍然可以还原。但是如果真的是彻底的底层变更,甚至是修改硬件,比如换块硬盘,那光靠设备指纹一定是不够的,需要完整的风控系统。设备指纹不是银弹,我们做的也不是百分百绝对防御,提升黑产作案成本是关键。问题三: 可不可以这样用你们的设备指纹,我自己获取一些你们要的参数,然后传给你,你们给我们返回一个设备ID?答:这种方式没有太大意义。上文笔者提到,设备指纹是一个从”端”到”云”的系统,这种单纯使用”云”不使用”端”的方式,很有可能导致服务端接收的数据完全是黑产伪造的。我们常常说”数据决定了模型的上限”,很多客户更关注服务端模型,但数据的不可靠让模型的效果非常差甚至为负。问题四: 能不能把设备指纹开源给我们,我们担心你们做一些不安全的事情?答:上文我们也提到,设备指纹的开源意味着设备指纹的死亡。对于一个商业产品来说,给一个客户的开源意味着给所有客户的开源,同样意味着给黑产的开源。安全类产品的核心代码一定是不开源,否则对黑产来讲就是照着说明书攻击了。安全上的担心,可以理解。但是换个角度,互联网的发展其实就是基于供应链各个环节互相的信任。我们从来不担心浏览器窃取用户隐私,不担心微信支付宝窃取用户隐私,即使他们大多数代码也是不开源的。对同盾来讲,作为坚持第三方中立的风控领域领头羊,我们非常感谢6000多家客户给予的信任和支持。问题五: 为什么要使用三方的产品,而不是自己进行技术研发?答:难度非常大,成本非常高,投入非常多,需要谨慎考虑。专业的事情还是交给专业的人做。问题六:为什么说同盾的设备指纹是最好的设备指纹?答:试过就知道。
{{news.author}}
{{news.timeFormat}}
正在加载......

我要回帖

更多关于 app优化推广 的文章

 

随机推荐