众所周知安全领域的主要工作攻防对抗,黑客采取各种技术伪造数据达到高仿真模拟实现系统攻入,在这里数据伪造以及伪造的真实程度是一个黑客所面临的主要工作。那我们就来讲讲时下流行的几种数据防伪造措施。
数据防伪造,基于防御的模式可以分为主动和被动模式:主动模式主要是蜜罐方式,也就是说防御者也设置一个伪造的数据作为“坑”等待攻击者来踩,而随着这种方式的大量利用,攻击者也变得更加的谨慎,会校验各个参数的有效性,进而规避开蜜罐数据,不过虽然是可以这样做,但是时下主流防伪造里面还是会设置大量的蜜罐参数来处理;被动模式形式就多样一些,可以分为:客户端基因识别、用户历史行为识别及用户实时行为识别三类,我们接下来重点介绍着三类。
客户端基因识别
有一个很重要的信息可以明确识别客户端,那就是userAgent(UA),User Agent我们简称UA,顾名思义是指用户代理,是代表用户行为的软件所提供的一个标识自己身份的标识符,包含了用户正在使用的设备以及软件的一些数据信息(例如操作系统及版本、CPU类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等)。基于用户代理的访问,网站才能够针对不同的用户,进行个性化的定制,开发出更丰富的动态网站,带给用户更好的体验。同时UA在控制搜索引擎爬虫爬取网站服务器资源也有着关键作用。我们看下一个标准UA的含义。
用户代理应用是Mozilla的5版,或一类和它兼容的软件。
操作系统是OS X版本10.2.2(是在Mac上运行)。
客户端是Chrome版本51.0.2704.84。
客户端基于Safari版本537.36。
负责该设备上的显示内容引擎applewebkit版本537.36。
不同UA中反应了浏览器版本、显示内容的引擎版本以及硬件型号,它可以反映出这个浏览器的JS解析引擎、操作系统及硬件平台,以UA中的JS解析引擎和浏览器版本为例可以通过大数据结合深度学习算法分析出它们之间的拟合关系。例如可以量化如下几类参数(js执行性能、页面渲染负荷、浏览器版本),一个典型的神经网络结构如下:
三个参数从输入层输入,结果隐层数据处理,可以得出他们之间的对应关联关系,这样计算出来的关联关系是比较稳固且可信任的,进而可以识别真实场景下用户提交过来的UA信息中的可信任程度。
用户历史行为识别
这类的实现思路和客户端基因识别很类似,也就是找出用户历史行为数据之间的关联,由于单数据的防御能力非常有限,那么就应该糅合大量的因素数据来进行共同防伪,可以这么理解,单个数据很好伪造,而多数据之间的关联关系很难伪造,这些数据可以包含如下:UA、IP信息、历史浏览记录、用户硬件指纹、验证口令、COOKIES等等,把这些数据之间的关联关系建立起来也可以做到有效防伪。
用户实时行为识别
用户实时行为识别是防伪里面的最高境界,这种模式是通过设计一个交互组件,用户主动点击,系统通过探测用户的点击等各种实时行为来判断是否存在伪造。而这个模式的发展也简历了两个阶段。
第一阶段:通过复杂的图文点击、拖动条拖动、图像拖动匹配等方式来实现,这种方式相比图文填写的方式上效率有一定的提升,但是仍然存在大量的正常用户都需要通过这种方式来验证,加大了正常用户的识别成本。
第二阶段:通过鼠标点击探测,例如google的NOCaptcha项目就是这种方式,它只需要将数据点击一个checkBox就可以高效识别是否人机。
这类模式笔者通过查访材料分析来看包括但不限于如下一些因素来进行是否伪造的判断:鼠标移动轨迹、键盘点击次数、鼠标点击次数、UA、插件、屏幕大小、执行时间、时区等等。
这些数据可以收集到后端可以通过逻辑回归、dbscan聚类以及神经网络等相关算法进行处理,区分出人机行为的边界点,有效识别机器的伪造行为。