说到人机识别,
大家首先联想到的
可能是人工智能。
但是,今天我们要聊的
不是人工智能,
也不是机器学习
而是人机识别
在应用安全中的应用(有点绕)
首先我们说说啥是人机识别……
黑客,在大多数人心中
是一种神秘的存在。
你们想象中的他们
可能是这样的:
(敲什么不重要,重要的是背景很黑,看起来就很厉害……)
或者是这样的:
(编剧对CTF和电子竞技游戏的关系可能有某种误解……)
看得人心潮澎湃,有没有?
心想我要有这技术就好了,是不是?
但真实的情况并不是这样。
根据Distil Networks发布的报告显示,
机器流量约占全网流量的40%,
其中恶意机器流量约占20%。
既然黑客攻击离不开工具,
那么我们就有识别工具的必要性。
A. 真实客户端(比如浏览器)还是机器(比如工具)
B. 是一类进行问答式身份验证的安全措施
C. 区别发起请求的是真实用户还是不怀好意的攻击者
答案:ABC
在网络安全领域中,
爬虫、扫描、暴力破解、
DDoS等多种攻击行为,
都是通过工具发起的。
操纵者预设指令,
由工具去自动执行任务。
这些针对业务发起的定制攻击,
绝大多数来自于自动化工具,
或者说机器人。
如何区分一个请求的发起者
是人还是机器?
这就是人机识别的重要意义。
对于机器发起的请求,
除了直接拦截之外,
还可以返回机器不理解的信息,
让机器无法进行下一步,
从而达到防御的目的。
我们不妨先对比下机器的特点
大多数情况下,
机器只能按照预设的指定执行,
不能处理预设以外的交互信息。
比如小区管理,正常情况下业主刷卡就能进;
但如果小偷捡到卡了也可以进入小区。
但如果某一天
保安要求说出房号姓名电话号码时,
只凭卡就进不去了。
再比如某一天
物业对每个业主都设置了某种标记,
如果不知道这个标记,
当然也不能进入。
基于以上说到的这些特点,
接下来我们聊聊
识别机器的方法有哪些。
最常见也最传统的方法
就是图形化验证码识别
早期的时候,
这个方法确实很有效。
一般的工具不理解,
也不会主动输入验证码进行校验;
虽然它仍然是目前被普遍使用的验证方法
但随着打码平台的出现,
这种简单的验证码识别
其适用的范围变得越来越小。
另一种是创新的交互优化型验证码,
它充分利用了人机之间
知识的差异性
通过人类可以解答
而机器难以解答的问题
进行人机判断。
比如12306的验证码
小编:柯南,救我!
近年来还出现了无感/无知识型验证码,
其最大的特点是
不再基于知识进行人机判断,
而是基于人类固有的生物特征
以及操作的环境信息进行综合判断。
这种方式无需人类思考,
不会打断用户操作,
提供更好的用户体验。
例如Google的新版ReCaptcha
除了验证码识别,
动态令牌也可以应用于人机识别。
动态令牌可用于身份验证,
有的工具在收到令牌后
不会再带着令牌访问
从而被识别出来;
同时令牌可有效防止
请求重放等非法操作;
请求会根据上一个操作,
动态生成每个请求唯一的令牌;
一旦令牌为空、重复使用或者被篡改
就会被视为无效请求而被拦截。
Web应用存在较多敏感信息,
如页面内容、JS源代码、后续链接、表单信息等。
它们构成了一个应用的运行逻辑。
只要能够判断这种逻辑,
应用行为就是可以预测的,
这也是爬虫、扫描器等工具运作的基本原理。
对应用页面的源代码进行混淆或加密,
工具并不能正常解析混淆后的内容,
很大程度上能使工具失去作用。
动态验证会校验JS的实际运行环境,
获取设备指纹,采集客户端行为,
例如是否有键盘鼠标操作
以及在页面停留时间等。
通过多维度数据分析,
区分操作的是人还是机器。
条件允许的话,
还可以专人负责风险控制。
从多维度的数据层面
(如过往操作记录、设备指纹等)
为特定“用户”的操作
提供信誉评分和判断其是否合法。
不过这个方法可操作性有限。
首先,不是每家单位都有能力
做好海量的大数据分析;
其次,用户行为识别
需要有很强的前端技术能力,
而这种能力又会以数据的形式
转化为大数据的分析能力。
比如把验证码和动态令牌结合使用,
从简单到高级的Burp、
爬虫、扫描器等机器行为
都能被有效识别。
当验证码或令牌校验未通过时,
机器必当重复获取和校验,
我们可以基于此,
对攻击者进行拦截。
变被动为主动,实现先发制人。
好了,以上就是今天安全小科普的全部内容
欢迎大家在后台给小编留言
期待看到你们的观点和感兴趣的话题
或许下期分享的就是你想看的知识点
朋友们,下期见~
来源:freebuf.com 2021-01-27 17:21:51 by: WebRAY
请登录后发表评论
注册