美剧 WestWorld 第二集里有个场景十分有意思:游客来到西部世界公园,遇到了一个漂亮的女接待员,但无法区分对方是否是人类,于是产生了如下对话:

Guest: "Are you real?"  -- Are you a Human or a Host?

Host: "If you can't tell, Does it matter?"

可以说科技尤其人工智能的发展,机器人已经足以模拟人类达到以假乱真的地步,不过今天要谈的并不是人工智能、不是机器学习。诚然AI可以在人机识别及诸多方面做得很好(假设有足够的训练样本),但它未必是最好、也不是唯一的选择,至少在我所说的当前场景中。

作为科普和背景铺垫,感兴趣的可以检索:

验证码的前世今生(前世篇)

验证码的前世今生(今生篇)

直入主题,安全领域中爬虫、暴力破解、扫描、DDoS等攻击行为都是通过工具发起,操纵者预设指令而工具去自动执行直到任务完成或出于某种原因中断运行。传统安全机制而言,WAF、IPS等这类产品的确在一定程度能够保护用户免受攻击,但鉴于它们都依赖于特征和规则库又有很多限制。

时代在变化,攻击者也在不断尝试新的机会和场景,比如竞争性爬虫、撞库、薅羊毛、虚假注册、灌水刷评论等等。全局分析时,我们可以认为这些操作都是恶意且应被阻断的,然而单独来看每一个操作又是合法且正常的,没有任何攻击特征,WAF解决不了,代码层面做诸多做限制也解决不了。

没有攻击特征,不代表无法识别,可以肯定的是这些针对业务发起的"定制"攻击绝大多数来自于自动化工具,或者说机器人。然而问题难就难在这里,怎么区分一个请求的发起者是人还是机器?

业务方会做很多事情限制非法机器人的访问,最常见的是使用图形验证码、短信验证码。验证码机制早期确实很有效果,但现在也遭遇着巨大的挑战,比如国内打码平台的出现及使用。另一方面,验证码会对用户体验造成较大伤害,企业不得不做一个安全与使用方便的折中,于是出现了滑块验证码。相比扭曲的图形验证码,理论上基于用户行为的滑块验证码无论从安全级别还是易用性都可以有巨大提升,然而它只是安全防护机制其中的一道,存在被突破的可能,而且已经被突破。

实力较好的公司有人专门负责风险控制(简称风控),国内目前也有很多风控服务和产品的提供商,大多是从多维度的数据层面(如过往操作记录、设备指纹等)为某一个"用户"的操作提供信誉评分,确定其是否合法,例如转账支付是否为本人操作。阿里云是这方面的杰出代表,不仅数据层面而且在用户行为识别方面做了不少工作。不过其在风控方面的成就可复制性并不高,首先不是每家公司都有能力做好海量大数据分析,其次用户行为识别需要有很强的前端技术能力,而这种能力又会以数据的形式转化为大数据的分析能力。

下面介绍一下我们在用户行为特别是人机识别上的一些实践,以下均以Web应用为例说明。

对于Web应用而言,(视情况而定)本身就存在较多敏感信息,比如页面内容、JS源代码、后续链接、表单信息等,它们构成了一个应用的运行逻辑。只要能判断这个逻辑,应用行为就是可以预测的,这也是爬虫、扫描器等工具运作的基本原理。那如果我可以对应用页面的源代码进行混淆或加密,是否能使工具失去作用呢?答案是在一定程度上可以,但这里面临几个问题。

首先,页面中包含各种标签、表单、链接、JS等信息,哪些信息需要混淆需要明确。最重要的是,虽然可以使用算法进行混淆,但是把混淆后的代码还原让浏览器可以解析以保证应用可正常访问则要难得多。正是因为还原混淆代码的难度大,很少有应用采用这种保护方式。

其次,如果算法固定且考虑到性能问题,加密信息和算法可以被逆向还原,稍微做一些定制开发就可以使工具再次自动运行。如果有多种混淆算法,如何决定在某一时刻使用哪种算法?

上述两个问题已经超越了本人能回答的范畴,但可以讲一下我司已经实现的效果:(1)页面的表单、URL、JS代码全部使用专有算法封装,可理解为加密,其余内容不做处理;(2)算法是动态变换的,每次请求譬如刷新页面都会随机使用不同算法,可使用算法数40亿以上;(3)所有封装通过JS实现,用于加密页面的JS本身被混淆且没有逆袭价值;(4)被保护页面具备防止调试和虚拟执行的能力;(5)正常用户通过浏览器进行访问不受任何影响;

根据Distil公司的统计,54%的自动化工具不具备Javascript解析能力,这意味着超过一半的工具将无法使用,无需任何规则即可有效阻拦大量机器,此为人机识别第一步。

虽然商用扫描工具很多都具备JS解析能力,但对于这类机器行为仍有办法识别——动态验证。简单来说,动态验证会校验JS的实际运行环境、获取设备指纹,以及采集客户端行为——例如是否有键盘鼠标操作及在页面停留时间等。通过多维度数据分析可以区分操作的是人还是机器,此为人机识别第二步。

对于提交的表单信息,也可以选择对其进行混淆,即便通过中间人攻击截获了请求,看到的都是乱码,无法窃取信息、无法伪造、无法篡改。由于算法是动态的,同样不担心被逆向或破解。这一步本身不是用于识别工具行为,却可以有效防御借助工具进行的中间人攻击等行为。

动态令牌机制可以作为人机识别的第三步来看,可以有效防止请求重放等非法操作。即便不对页面进行封装,仍然会(根据上一个页面的访问)动态生成每个请求唯一的令牌,存放在Cookie中。保护模式下每个令牌都只能用一次,一旦令牌为空、重复使用、或者被篡改,请求就会被视为无效请求而拦截。

综合以上几个过程,从简单到高级的Burp、爬虫、扫描器、PhantomJS等机器行为都能被有效识别,理论误判概率%0。最重要的是,做这么多事情无须应用改一行哪怕半行代码,客户端无需做任何更改,各大主流及非主流浏览器访问均不受任何影响。

我们使用的方案除了人际识别当然还有更多的能力,这里不做描述,感兴趣的可以联系我。

实际上,如果能在非法请求到达后台之前能够对其进行识别并采取阻断措施,带来的效益除了减缓攻击,还可以节约带宽、服务器资源、过滤大量噪音和垃圾数据。更重要的是,我们使用的是一种全程防护的方式却又很轻量级,变被动为主动,先发制人。

更多信息请见:https://www.riversecurity.com.cn | 私聊

转载于:https://www.cnblogs.com/r00tgrok/p/RiverSecurity-Bots-FireWall.html

机器人防火墙:人机识别在应用安全及风控领域的一点实践相关推荐

  1. 活动 Web 页面人机识别验证的探索与实践

    在电商行业,线上的营销活动特别多.在移动互联网时代,一般为了活动的快速上线和内容的即时更新,大部分的业务场景仍然通过 Web 页面来承载.但由于 Web 页面天生"环境透明",相较 ...

  2. Python破解滑块验证码算法,完美避开人机识别

    | 完美是不可能的,加个震惊!Python破解BiliBili滑块验证码,完美避开人机识别,可以有 准备工作 B站登录页 https://passport.bilibili.com/login pyt ...

  3. 走进人工智能|机器人技术 人机协作新纪元

    前言: 机器人技术为人类提供协助.增强生产力,改善生活质量,并推动科技进步和社会发展. 文章目录 序言 背景 核心技术支持 人机协作新纪元 目前形式 领跑人 困难和挑战 总结 机器人技术作为现代科技领 ...

  4. TI官网注册账号一直卡人机识别问题

    我自己在注册TI账号时发现不管是啥浏览器,QQ邮箱还是公司邮箱注册都一直卡在人机识别,就是注册不成功,后面我电话咨询TI的客服,按客服提供了步骤,注册成功了,亲试有效.步骤如下: 请尝试使用谷歌/ed ...

  5. 巡检机器人之仪表识别系统

    作者主页:爱笑的男孩. 博客简介:分享机器学习.深度学习.python相关内容.日常BUG解决方法及Windows&Linux实践小技巧. 如发现文章有误,麻烦请指出,我会及时去纠正.有其他需 ...

  6. 各大协作机器人厂商人机安全协作方式(HRC)简介

    各大协作机器人厂商人机安全协作方式(HRC)简介 1. UR 安全协作方式 1.1 Safety Configuration 通用限制(General limits) 包括机器人的力.速度.动量等限制 ...

  7. 华数机器人编程语言_华数机器人:以自主创新为引领,深耕细分领域

    原标题:华数机器人:以自主创新为引领,深耕细分领域 [文/虞超]在市场需求爆发的情况下,机器人市场也趋于理性,越来越多的客户通过严谨的技术比较,结合自身的需求选择最合适的产品.也正因为如此,国产品牌得 ...

  8. 自然语言处理NLP星空智能对话机器人系列:业界动态信息分享 京东零售数据智能探索实践沙龙

    自然语言处理NLP星空智能对话机器人系列:业界动态信息分享 京东零售数据智能探索实践沙龙 目录 京东客服全链路数智化的应用实践 京东智能商客之推荐卖点的技术介绍 星空智能对话机器人系列博客 京东客服全 ...

  9. 服务型机器人在人机协同生活场景中的作用

    相较于工厂中执行固定任务的机械臂,服务机器人需要进入高度复杂动态变化的生活场景,与人流.车流.建筑环境等密切接触,才能并且执行复杂任务并真正服务于人本身.在<2022年十大数字科技前沿应用趋势& ...

最新文章

  1. linux验证文件的完整性,linux中校验文件完整性(md5,sha1)(示例代码)
  2. Windows XP自带的定时关机功能以及我的基于此的小程序
  3. ARM中Bus Error的测试
  4. 《剑指offer》-- 第一个只出现一次的字符、数组中只出现一次的数字、字符流中第一个不重复的字符、数组中重复的数字
  5. AES加密算法256位密钥与128位密钥的不同之处
  6. Spring入门(三)之IoC
  7. 【TensorFlow】TensorFlow从浅入深系列之十一 -- 教你深入理解卷积神经网络中的卷积层
  8. 嵌入式实时操作系统的可裁剪性及其实现
  9. element UI 表格序号计算 index
  10. java 替换 ppt内容_Java 替换PPT中的指定文本内容 详细始末
  11. JavaScript函数——输入某年某月某日,判断这一天是一年中的第几天
  12. 磊科路由器信号按键_磊科怎么隐藏wifi信号 磊科路由器如何隐藏wifi信号?-192路由网...
  13. javaSe查漏补缺
  14. 启动BPM的5个步骤
  15. 2020-11-25博客营销及软文营销价值
  16. ARM40-A5应用——W1LED的使用说明
  17. 如何关闭台式计算机休眠,win7台式机怎样关闭电脑休眠模式
  18. java伪删除,JAVA WEB数据库输出,删除-9.18
  19. Fiddler:Fiddler新旧版抓包相关总结
  20. 汉化版植物大战僵尸修改器

热门文章

  1. 剑指offer 求第n个丑数
  2. 查找和为定值的两个数—Leetcode1
  3. VMware出错 Reason Failed to lock the file
  4. CF-1209 F. Koala and Notebook(建图BFS)
  5. android 进程间的通信,Android native进程间通信实例-binder结合共享内存
  6. 类的公有类型(public)和私有类型(private)
  7. Java:银行账户类
  8. ROS学习笔记-使用C++类用以编程(以机器人语音交互为例)
  9. [BUUCTF-pwn]——jarvisoj_level1
  10. 数据仓库—数据仓库—Sybase IQ 介绍