mirror of
https://github.com/cheetahlou/CategoryResourceRepost.git
synced 2025-11-15 21:53:49 +08:00
mod
This commit is contained in:
120
极客时间专栏/安全攻防技能30讲/业务安全/25 | 业务安全体系:对比基础安全,业务安全有哪些不同?.md
Normal file
120
极客时间专栏/安全攻防技能30讲/业务安全/25 | 业务安全体系:对比基础安全,业务安全有哪些不同?.md
Normal file
@@ -0,0 +1,120 @@
|
||||
<audio id="audio" title="25 | 业务安全体系:对比基础安全,业务安全有哪些不同?" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/74/89/74e8784c6e54a394afd1b09b70b40789.mp3"></audio>
|
||||
|
||||
你好,我是何为舟。
|
||||
|
||||
从这一讲开始,我们讨论业务安全。近几年,随着互联网的快速发展,很多公司为了获取用户增长,在业务中投入了大量的资本。向来都是向钱看齐的黑客(在业务安全中,我们称之为黑产),自然就将攻击的重心放到了业务中。业务安全也变得越来越热门,成为各大公司安全投入的重心之一。
|
||||
|
||||
对比于传统的基础安全,业务安全有哪些特点呢?为什么它能够成为一个独立的领域呢?在业务安全中,我们需要重点关注的防护方法又有哪些呢?
|
||||
|
||||
以上这些问题,在这个模块中我会详细来讲。今天,我们先从业务安全的特点和防护重点入手,让你对业务安全的体系和框架有一个清晰的认识。
|
||||
|
||||
## 如何理解业务安全?
|
||||
|
||||
学习一个新知识的最好方法,一定是从我们学过的知识入手。所以,今天我会对比基础安全,来帮助你理解业务安全。基础安全其实就是我们前几个模块关注的安全攻防视角下的安全概念和知识,也叫网络安全。
|
||||
|
||||
想要理解业务安全,我们先来认识一下黑产。黑产是基于正常的业务产品逻辑,采取非正常或者批量的操作,来获取利益的行为。业务安全就是通过各类产品策略,来对黑产进行识别和拦截,从而保障业务的正常运行。
|
||||
|
||||
你一定见过,或者参加过“红包雨”领红包的活动。在活动中,用户可以通过“红包雨”游戏领取一定金额的红包,金额大小由前端决定。通过这个例子,我们来对比一下黑客和黑产的攻击。
|
||||
|
||||
在基础安全的攻击视角中,黑客会逆向前端代码,找到最终决定金额的逻辑,然后自己伪造一个大额的红包请求。这样一来,黑客就可以不用玩游戏,同时还能获得一个大额的红包。在业务安全的攻击视角中,黑产会开发一个自动玩游戏领红包的工具,操纵大量的账号来参与活动。最终,将各个账号的小额红包汇总到一个账号下,从而实现获利。
|
||||
|
||||
## 黑产和黑客有哪些差异?
|
||||
|
||||
从前面的例子中,我能够看出,黑客在基础安全和业务安全中的攻击方式有很大不同,那它们之间具体有哪些差异呢?接下来,我们一起来分析。
|
||||
|
||||
在基础安全中,黑客会通过各种Web安全或者系统安全的漏洞,对公司的系统和应用发起攻击,最终侵入公司系统,窃取敏感信息等成果。“黑客”原意是指擅长各类计算机技术的人,也就是在基础安全领域中,掌握各种高端技巧,能够发现并利用漏洞的攻击者。但是,在业务安全中,业内普遍将攻击者称为“黑产”。之所以会改换一个名称,我认为主要有两点原因。
|
||||
|
||||
**第一,“黑产”强调的是“产业化”。**
|
||||
|
||||
尽管黑客也存在很多组织,但黑客组织更多的是将一群黑客进行统一管理,实际发起攻击的仍然是单人或者小组。
|
||||
|
||||
相比于黑客,在业务攻击中,黑产已经形成了完整的产业化链条:在上游,有人专门提供各类技术支持,如验证码绕过、手机群控、自动注册工具等;在中游,有人专门收集大量的手机号、身份证号、银行卡号等信息,在应用内注册大量的垃圾账号;在下游,有人利用工具和账号,进行薅羊毛、刷评论、欺诈等操作。可以说,任何个人或者小的团体都没有办法发起业务攻击,必须依靠上游提供的各类资源,才能够实现真正获利。产业链的结构如下图所示:
|
||||
|
||||
<img src="https://static001.geekbang.org/resource/image/29/1a/292c34583c62c01d6c19099b4c4b141a.jpeg" alt=""><br>
|
||||
**第二,黑客强调的是技术对抗,而“黑产”更看重资源对抗。**
|
||||
|
||||
对于黑客来说,只要技术足够强大,并且手里掌握着一些“0 day”漏洞,就能够以一己之力攻破公司的安全防御体系。但是对于黑产来说,其本质是资源对抗,所以不可能有类似黑客的“单兵作战”。那什么是资源对抗呢?
|
||||
|
||||
我们来看一个例子。现在有一个“新用户注册得红包”的活动,公司可能会给每个新用户发放1元的现金红包,以此作为用户增长的激励措施。这个时候,如果黑产注册一个新用户的成本是2元(需要手机号、银行卡等各种资源支持),那显然是一个亏本的买卖。因此,黑产需要想尽办法去降低注册资源的成本。如果是你,你会怎么做呢?你可以先试着思考一下,然后再来看我下面的分析。
|
||||
|
||||
生活中就有很多这样的例子。以前,你想要骑一辆自行车,需要花几百块钱买一辆。而现在,你花上一块钱,就能够骑上共享单车,还能够“随停随走”。黑产的资源对抗也是利用的这种“共享”思想:在黑产的中上游,由专门的团伙负责大批量收集各类资源,供很多下游团伙使用,这样就能在很大程度上降低黑产发起攻击的成本。
|
||||
|
||||
现在,黑产购买一个手机号的成本只需要几毛钱,而互联网应用获取一个新用户需要花费几十元,这其中的利益之大可见一斑。
|
||||
|
||||
从黑客与黑产之间的攻击差异中,我们能够发现基础安全和业务安全的核心差异。基础安全是防御黑客的技术攻击,避免漏洞。业务安全是防御黑产的资源对抗,避免正常业务被攻击。
|
||||
|
||||
## 业务安全如何防护?
|
||||
|
||||
在基础安全中,我们说过应用的本质是数据,安全的本质是数据的CIA,我们可以通过黄金法则来保护数据。那么,对于业务安全来说,我们的防护思路又是怎么样的呢?
|
||||
|
||||
我们还是要从业务的本质入手来解决问题。我认为,业务的本质是一种投资,也就是公司投入成本来获取用户价值。投入的成本包括应用开发的成本、服务的成本以及获取用户的成本等。
|
||||
|
||||
用户的价值也多种多样,直接的如收取用户的服务费用,间接的如通过用户来获取广告收益、通过用户来吸引商家入驻收取租金等。那黑产是如何从中获利的呢?
|
||||
|
||||
黑产的获利手段是通过廉价的资源,降低用户的价值,从而赚取公司投入的成本。因此,业务安全的本质就是保障用户价值不受黑产的恶意影响。保障的方法就是提高黑产的资源成本,使得黑产无法获利。这也就是我所说的,业务安全的本质其实就是资源层次上的对抗。
|
||||
|
||||
那我们应该如何进行资源对抗呢?首先,我们要知道,黑产需要进行哪些资源投入。一般来说,黑产会从四个方面进行资源投入,分别是:用户资源、IP资源、设备资源和操作资源。下面,我们一一来看。
|
||||
|
||||
**首先是用户资源。**
|
||||
|
||||
黑产通常需要获取大量的用户身份,来进行大规模的业务操作,才能实现获利。这是因为,应用通常会要求用户绑定各种信息,比如手机号、身份证、银行卡等。而黑产需要满足应用的强制绑定要求,才能获得用户身份。因此,这些手机号、身份证以及银行卡等,其实就是黑产必须投入的用户资源。
|
||||
|
||||
现在,黑产有很多办法可以获取这些用户资源。我来总结了几个常见的方法:
|
||||
|
||||
- 通过虚拟运营商或者物联网卡来获取大量非实名手机卡
|
||||
- 在网上搜集各类泄露的身份证图片
|
||||
- 在偏远地区支付十几块钱,买到他人的手持身份证照片和视频
|
||||
- 在类似[注册任务贴吧](https://tieba.baidu.com/f?kw=%D7%A2%B2%E1%C8%CE%CE%F1&fr=ala0&tpl=5&traceid=)这样的任务群中,注册一个账号之后,再转手卖给黑产
|
||||
|
||||
**对于用户资源的对抗,目前主要的方式就是黑名单**。这里,我把黑名单的防护流程总结了一张图。
|
||||
|
||||
<img src="https://static001.geekbang.org/resource/image/96/b2/965278f430410a574179ac66f0ca9cb2.jpeg" alt=""><br>
|
||||
从上图中我们可以看到,用户黑名单主要有两种收集方式:内部收集和外部采购。其中,内部收集是基于用户在业务内部的行为进行判定的,流程相对复杂一些,而外部采购是直接购买汇总好的黑名单。这样一来,我们就利用黑名单实现了对黑产的拦截。
|
||||
|
||||
**接着,我们来说IP资源。**
|
||||
|
||||
黑产往往是在同一个地方进行大量操作的,IP相对固定。所以,任何公司做业务安全的第一步,都是对IP进行限制,常见的手段是限制一个IP下能够登录的用户数量。为了绕过这种安全防控机制,黑产必须掌握大量的IP资源。
|
||||
|
||||
如果你有做过爬虫,一定知道通过[快代理](https://www.kuaidaili.com/free)这种网上的免费代理,来绕过反爬机制。而黑产更高级一些,黑产会利用“秒拨IP”来获取大量IP资源。所谓“秒拨”,就是指每一次拨号上网,都会分配一个新的IP给我们。只要持续地断网、拨号,我们就能够获得大量的IP资源。
|
||||
|
||||
下图是某个代理IP网站的报价,我们可以看到,目前代理IP的价格最低只要0.5分钱。也就是说,黑产只需要付出很少的成本就能获得大量IP资源。<br>
|
||||
<img src="https://static001.geekbang.org/resource/image/24/f5/24fefb5f1cc59fb5073c19d9c32fa6f5.png" alt=""><br>
|
||||
事实上,我们目前很难对IP资源进行有效防控。IP的变化十分频繁,一个IP上一分钟可能是黑产在操作,下一分钟可能就被正常用户所使用了。所以,即使我们能基于业务数据确定一个IP存在异常,也没有办法对它进行黑名单处理。
|
||||
|
||||
**除了IP之外,设备也是公司做业务安全的一个基础。**
|
||||
|
||||
在正常情况下,一个设备对应一个账号。但是,黑产可能会需要在一个设备上使用几十个账号进行操作,这就很容易被应用和公司检测到异常。因此,黑产必须想办法获取大量的设备。
|
||||
|
||||
黑产获取设备的方法比较多,最简单的一种是通过模拟器来模拟设备。但是,很多公司会对前端进行检测,来发现模拟设备。因此,黑产也就从使用模拟设备升级为使用真实的手机。所以,很多黑产案件中都会出现由大量手机设备组成的“手机墙”。除此之外,也有上游团队将手机做成云控模式,下游黑产可以直接花钱购入可远程操控的真实手机设备。
|
||||
|
||||
**设备资源的对抗原理是对虚拟设备进行识别**。这就需要依赖业务安全中比较关键的设备指纹技术了。所谓“设备指纹技术”,就是收集设备上的各类特征,对设备进行追踪,然后基于设备的行为和信息,判定是虚拟设备还是人为操作,以此对黑产进行拦截。
|
||||
|
||||
**最后是操作资源。**
|
||||
|
||||
黑产需要正常使用业务才能获利,所以在操作上会和正常用户一样花费时间和精力。这对黑产来说,也是一个不小的成本。
|
||||
|
||||
比如说,在开头的例子中,用户参加“红包雨”游戏领取红包的过程,就是一个操作的过程:用户为了领取一个几毛钱的红包,在APP上花几分钟玩一个游戏。这显然对黑产是不合算的。因此,黑产会尝试使用一些自动化的工具,比如[按键精灵](http://www.anjian.com),让机器来完成游戏的过程。这样一来,黑产就释放了人力的操作资源投入,大大降低了操作成本。
|
||||
|
||||
所以说,我们和操作资源的对抗,就是在和黑产的自动化工具进行对抗。公司为了区分“人”和“机器”的操作,就需要使用验证码(如图片验证码、滑块验证码等)。通过这类“人”很容易完成,但“机器”很难完成的验证方式,黑产就没办法全自动地完成交互,我们也就提高了黑产的操作成本。
|
||||
|
||||
总之,业务安全的防护核心就是提高黑产的资源成本。更详细的防护方案,我们会在后面的课程中详细来讲,这里你只需要对这几种资源有一个全面的认知即可。
|
||||
|
||||
为了帮助你理解这4种资源的核心特点,我整理了一个表格供你参考,如下图所示:
|
||||
|
||||
<img src="https://static001.geekbang.org/resource/image/b6/51/b6b56d22838e443b55f3b03e3e677551.jpeg" alt="">
|
||||
|
||||
## 总结
|
||||
|
||||
好了,今天的内容讲完了。我们一起总结回顾一下,你需要掌握的重点内容。
|
||||
|
||||
业务安全和基础安全在本质上就有很大的不同:在基础安全中,黑客将技术作为核心竞争力;在业务安全中,黑产将资源作为核心竞争力。谁能够以更低的成本掌握更多的资源,谁就能窃取公司更大的利益。因此,作为防守方,我们在关注业务安全的时候,也应当将关注的重点放在如何提高黑产的资源成本上,这样才能够为公司提供有力的业务安全防护。
|
||||
|
||||
<img src="https://static001.geekbang.org/resource/image/49/15/49424ef824ad4df08c28fbabc56e2f15.jpg" alt="">
|
||||
|
||||
## 思考题
|
||||
|
||||
最后,还是给你留一道思考题。
|
||||
|
||||
今天,我们讲了几个黑产必须要掌握的资源。你可以思考一下,假如你掌握了这些资源,你会如何对你的业务发起攻击?又会如何获利呢?
|
||||
|
||||
欢迎留言和我分享你的思考和疑惑,也欢迎你把文章分享给你的朋友。我们下一讲再见!
|
||||
113
极客时间专栏/安全攻防技能30讲/业务安全/26 | 产品安全方案:如何降低业务对黑灰产的诱惑?.md
Normal file
113
极客时间专栏/安全攻防技能30讲/业务安全/26 | 产品安全方案:如何降低业务对黑灰产的诱惑?.md
Normal file
@@ -0,0 +1,113 @@
|
||||
<audio id="audio" title="26 | 产品安全方案:如何降低业务对黑灰产的诱惑?" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/9d/7b/9dec52a55d208f68189584695a30b27b.mp3"></audio>
|
||||
|
||||
你好,我是何为舟。
|
||||
|
||||
在上一讲中,我们探讨了业务安全和黑产(也叫黑灰产),知道了业务安全的本质就是资源对抗,业务安全的防护手段就是提高黑产的资源成本,并且针对不同的资源类型,我们需要采取不同的方法来进行对抗。
|
||||
|
||||
在基础安全中,我们提出了“黄金法则”作为总体思路,来对各个防御手段进行梳理。那么,在业务安全中,我们有没有什么方法论可以作为参考呢?这一讲,我们就来聊一聊提高黑产资源成本的方法,以及如何从根本上防御黑产。
|
||||
|
||||
## 业务安全中的防御框架是什么?
|
||||
|
||||
在[安全标准和框架](https://time.geekbang.org/column/article/192220)中讲过,我们可以通过NIST的安全框架IPDRR,在基础安全中构建出一道比较全面的纵深防线。在业务安全中,IPDRR同样可以指导我们与黑产进行对抗。这里我总结了一张对比表格,你可以先了解一下IPDRR在基础安全和业务安全中的异同点。
|
||||
|
||||
<img src="https://static001.geekbang.org/resource/image/3a/2e/3a37f5f15d5e39505573ccc975a6422e.jpg" alt="">
|
||||
|
||||
接下来,再看我对业务安全中IPDRR内容的重点讲解。
|
||||
|
||||
- **Identify(识别)**:和基础安全一样,业务安全的识别阶段主要是进行威胁评估的工作。我们需要找到黑产可能获取到的业务逻辑中的投入成本,比如,应用发放的红包、优惠券等。
|
||||
- **Protect(保护)**:在业务安全中,我们是通过产品方案来实施认证和授权过程的。比如,对于登录过程增加双因子认证和验证码等,就是加强认证的安全性。
|
||||
- **Detect(检测)**:检测阶段主要是风控系统发挥作用。
|
||||
- **Respond(响应)**:发现黑产的攻击后,我们可以通过封禁账号、拦截操作、拒绝提现等方式,来阻止黑产获取利益。
|
||||
- **Recover(恢复)**:最后就是对整个系统进行恢复了。在业务安全中,黑产可能已经盗取了某些账号,或者已经领取了部分红包。这时,我们就需要通过合适的运营机制,将账号返回给原用户,把红包退回到奖金池中。
|
||||
|
||||
以上就是业务安全中的IPDRR,从中我们可以看出,业务安全的纵深防线也是环环相扣的,我们需要在各方面都进行防护,避免安全短板的出现。
|
||||
|
||||
IPDRR的指导思想贯穿了整个业务安全的防御过程,内容很多也很重要。所以,今天我们先来看IPDRR中的前两个部分,识别和保护。
|
||||
|
||||
## 业务安全中的威胁评估怎么做?
|
||||
|
||||
前面说了,在识别过程中,我们的主要工作就是威胁评估。在业务安全中,黑产的最终目的是窃取公司投入的成本来获取利益,但公司成本的具体表现形式很多,因此,业务安全中的威胁评估也更加复杂。下面,我就以一个典型的业务场景为例,总结在业务安全的威胁评估中,我们需要重点考虑的因素。
|
||||
|
||||
我们来看最近比较流行的邀约活动,几乎所有的App都会在拉新阶段开启各种各样的邀约活动。而且对于这类能够刺激用户增长的活动,公司都很舍得投入大量的资本,因此邀约活动是黑产聚集的“重灾区”。
|
||||
|
||||
邀约的逻辑:已注册用户可以通过邀请码的形式邀请新用户注册,注册成功后(可能需要新用户完成一定任务)双方都可以获得一定的奖励,如现金红包(可以参考拼多多)。
|
||||
|
||||
邀约活动的目的很明确,就是拉取新用户为公司带来用户增长。那对黑产来说,获利的方式就是通过大量注册小号,完成邀约任务,获得现金红包的奖励。现在的奖励金额一般是几块到十几块不等,因此,黑产的利润很高。
|
||||
|
||||
这个时候,如果公司想要拦截邀约活动中的黑产用户,需要考虑哪些因素呢?我认为需要重点考虑实时性要求、漏判影响和误伤影响这三方面因素。实时性很好理解,就是我们要评估在哪个阶段对黑产进行评估和拦截。所谓漏判,就是没有识别出黑产,让其成功获利。而误伤就是正常用户被判定成了黑产,无法正常使用业务功能。
|
||||
|
||||
下面,我就来说说原因。
|
||||
|
||||
**首先是实时性要求**。
|
||||
|
||||
选择拦截黑产的时机是非常重要的。一般来说,拦截时间越靠前就能越早拦截黑产,但是误伤对用户体验的损伤也越大,而拦截时间越靠后风险越小。除此之外,我们还要考虑业务的逻辑。
|
||||
|
||||
比如,对于邀约活动来说,红包提现一般都需要审核。因此,我们不需要在邀约活动中实时拦截,只需要在提现的时候进行拦截即可。这样的拦截方式风险更小、效果更好。
|
||||
|
||||
**其次是漏判影响和误伤影响。它们的联系很紧密,我就一起来讲**。
|
||||
|
||||
我们在指定业务安全防控策略的时候,漏判影响和误伤影响决定了策略的严格程度。如果漏判影响更大,就需要制定更严格的策略对黑产进行控制;如果误伤影响更大,策略要相对宽松,有的时候我们甚至可以放过一定的黑产来降低误伤。
|
||||
|
||||
对于邀约活动来说,在黑产刷走大量现金之后,漏判影响是指公司有大量的资金损失。这对公司来说并不致死,因为用户的正常邀约行为不会受到黑产影响。
|
||||
|
||||
误伤影响比漏判影响严重的多,误伤一旦出现,就会让用户对邀约活动的真实性产生质疑。如果你做过业务,一定知道,用户的信任是很难培养的。而一旦丧失了用户的信任,业务基本也就失败了。因此,公司基本不容许出现误伤的拦截。
|
||||
|
||||
总之,对于邀约活动的业务安全防御来说,避免误伤是我们最核心的关注点。为了避免误伤,我们可以将防御机制延后,避免对用户正常参与活动的流程产生影响。同时,我们可以将防控策略放宽,通过放过一定的黑产来降低误伤。
|
||||
|
||||
当然,还有很多其他类型的业务和活动,比如,微博中常见的排行榜、支付宝的集福抽奖活动,你可以试着对它们进行一次威胁评估工作,来看看在这些业务活动中,我们所面临的黑产威胁是什么样的,以及我们应该以什么样的态度去防御黑产。
|
||||
|
||||
这三种业务场景的威胁评估结果,我总结了一张表格,供你参考。
|
||||
|
||||
<img src="https://static001.geekbang.org/resource/image/ff/81/ff42215cdcb9b4f5e607b4fca6a12e81.jpg" alt=""><br>
|
||||
上图中的评估结果就足够我们了解这些业务面临的黑产风险了,所以,对于任何一个业务来说,我们其实都可以从业务目标、黑产获利程度、实时性要求、漏判影响和误伤影响这5个方面进行威胁评估。
|
||||
|
||||
## 如何利用产品方案防御黑产?
|
||||
|
||||
对业务进行威胁评估之后,我们就需要为业务提供安全防护了。对业务安全来进行保护,就是为业务制定合适的安全产品方案,来提升黑产的资源成本,从而实现保护业务的目的。
|
||||
|
||||
那么,安全产品方案具体是什么呢?我们来看一个例子。
|
||||
|
||||
在登录业务中,我们需要防止盗号的发生。这种情况下的安全产品方案就是提高黑产发起盗号的资源成本,比如,我们可以在产品机制上加入二次验证机制,如短信验证等。这样一来,黑产需要完成一次登录的成本就大大增加了。
|
||||
|
||||
相比于我们使用各种复杂的策略和算法对每一次登录行为进行判定,安全产品方案的实现更简单一些,只需要增加一个基本功能就足够了。而且安全产品方案其实不识别黑产,也就不存在误伤和漏判,只需要考虑用户体验的损伤就足够了。因此,一个安全的产品方案是对抗黑产最有效的防护手段。
|
||||
|
||||
下面,我们再以“满减红包”为例,来讨论一下产品方案中需要考虑的防控因素有哪些。
|
||||
|
||||
“满减红包”是各类电商、O2O领域中最常见的促销手段。但是这种促销手段,很可能因为产品方案不当引来黑产的攻击。比如,前两年“饿了么”对新用户的补贴较多的时候,就有人利用新用户的大额红包[代下单外卖](https://tieba.baidu.com/p/5624220348?red_tag=0731312822),实现获利。
|
||||
|
||||
我们来看看“满减红包”常见的维度有哪些。
|
||||
|
||||
<img src="https://static001.geekbang.org/resource/image/ed/6b/edab1c47a1a03f094de0dc11538bd06b.jpg" alt=""><br>
|
||||
可以看出,通过对领取条件、满减金额和有效期进行不同的限制,我们就可以设计不同的产品方案,来达到不同的安全等级。下面,我们来具体分析一下。
|
||||
|
||||
- 领取条件:注册就给红包,会给与黑产极大的便利。而下单后再减,能刺激用户再消费,有了前一单的收益,下一单的红包补贴就基本不会亏。当补贴减少时采取会员制,公司就能通过会员费来增加额外的收入。
|
||||
- 满减金额:满减条件同样是需要慎重把握的一个方案。满10减10,相当于不需要黑产付出任何成本。一旦变成满10.01减10,效果就天差地别了。想要支付这多出的1分钱,黑产必须进行一个完整的支付流程,必须绑定银行卡等其他支付方式,这些都是额外的成本。而满30减10,对公司来说应该是稳赚不赔的,也就不需要考虑漏判的风险。
|
||||
- 有效期:有效期过长同样会给黑产带来便利。因为黑产售卖“满减红包”或者“代下单”,是需要时间来找买家的。所以,有效期越长,黑产卖红包的时间就越长。如果把有效期设为2天,黑产就很有可能面临优惠券卖不出去而过期的风险,收益就会大大降低。
|
||||
|
||||
那平台是如何限制“代下单”这种行为的呢?最常见的,当饿了么下单的手机号变更时,是不允许使用之前的红包的。而且,饿了么也不允许备注中出现手机号。这些产品方案其实都是在提高黑产“代下单”的成本。
|
||||
|
||||
总结来说,安全产品方案是不存在标准答案的,更多的是根据业务的诉求来进行衡量。但在任何情况下,我都不建议忽略掉安全产品方案。为什么这么说呢?其实,借助刚才的分析我们就能知道,满减条件中的满10减10和满10.01减10,对正常用户来说没有什么区别,却能给业务安全带来极大增益。因此,我们可以在业务发展初期,适当降低安全产品方案的复杂程度,但是仍然要保持必要的信息和数据收集。在业务稳定后,再逐步进行完善和升级。
|
||||
|
||||
提升应用安全性的产品方案还有很多。我总结了一些常见的例子,你可以了解一下。
|
||||
|
||||
在邀约活动中,我们可以适当增加用户任务的难度,如必须连续活跃三天用户才能得到收益;在抽奖活动中,我们可以增加参与抽奖的门槛,如必须是注册一个月以上的老用户才能参加;在排行榜活动中,我们可以将排行榜的计算规则隐藏,让黑产摸不清刷的方式。这些常见的安全产品方案可以提升黑产攻击业务的成本,让业务更安全。
|
||||
|
||||
## 总结
|
||||
|
||||
好了,今天的内容讲完了。我们一起总结回顾一下,你需要掌握的重点内容。
|
||||
|
||||
在业务安全中,NIST的安全框架IPDRR可以指导我们与黑产进行对抗,实现全面防护,避免安全短板的出现。
|
||||
|
||||
识别和保护是IPDRR中的前两个步骤,主要的工作是进行威胁评估和制定安全产品方案。其中,威胁评估的主要过程其实就是基于业务形态,对黑产可能的获利点、业务的目标用户、安全的实时性要求、策略的误伤和漏判影响进行综合的评估。
|
||||
|
||||
评估完成之后,你就能够知道,业务安全的目标和要求是什么。安全产品方案则是提高黑产资源成本的第一道防线,通过适当地增加用户操作的复杂度,来提高黑产的各类资源成本。安全产品方案实现起来比较简单,且没有误伤和漏判,是业务安全中十分简单有效的一环。
|
||||
|
||||
业务安全同样讲究纵深防御,任何一个单点的防御机制都有其缺陷,很容易被黑产绕过。因此,对业务安全来说,在部署风控系统之前,我们要先进行威胁评估,然后设计出一个安全的产品方案。这样一来,我们就能够在根本上提高黑产的资源成本,大大提升业务的安全性。
|
||||
|
||||
## 思考题
|
||||
|
||||
最后,我给你留了一道思考题。
|
||||
|
||||
试着分析一下,在你负责的业务或者应用中,有哪些产品方案是为了安全考虑的。黑产有什么办法可以绕过这些产品方案呢?还有哪些方法可以进一步提升黑产的资源成本?
|
||||
|
||||
欢迎留言和我分享你的思考和疑惑,也欢迎你把文章分享给你的朋友。我们下一讲再见!
|
||||
148
极客时间专栏/安全攻防技能30讲/业务安全/27 | 风控系统:如何从海量业务数据中,挖掘黑灰产?.md
Normal file
148
极客时间专栏/安全攻防技能30讲/业务安全/27 | 风控系统:如何从海量业务数据中,挖掘黑灰产?.md
Normal file
@@ -0,0 +1,148 @@
|
||||
<audio id="audio" title="27 | 风控系统:如何从海量业务数据中,挖掘黑灰产?" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/3c/09/3c6236c5b9ffae2276a6f7af1a3cf309.mp3"></audio>
|
||||
|
||||
你好,我是何为舟。
|
||||
|
||||
在上一讲中,我们讲了如何通过安全的产品方案,提升黑产攻击业务的资源成本,降低应用被攻击的风险。当然,仅靠产品方案是没办法完全抵御黑产的。因为在产品方案中,我们还需要对用户体验进行关注。
|
||||
|
||||
比如说,为了拦截黑产盗取他人账号登录,或批量登录自有账号的行为,我们的产品方案可能是,通过加入短信验证、人脸验证和滑块验证来提高登录的门槛。当你在登录一款应用的时候,如果需要进行两次甚至是三次的验证操作,那么,这种糟糕的体验感很有可能驱使你放弃使用这款应用。
|
||||
|
||||
为了解决这个问题,在业务安全中,我们会采取折中的方案:如果识别到一次登录行为是异常操作,那么就弹出多次验证;如果识别是正常操作,就让其用简单的用户名密码登录即可。
|
||||
|
||||
对于一款热门的应用来说,一天可能要面临上亿次的登录行为。这其中有正常用户的登录行为,也有黑产的登录行为,我们应该如何从海量的登录数据中准确地判定它们呢?这就是IPDRR中的检测,也就是我们常说的风控系统需要完成的事情。
|
||||
|
||||
那么风控系统究竟是如何识别黑产的呢?今天,我们就一起来探讨一下。
|
||||
|
||||
## 如何理解风控系统?
|
||||
|
||||
简单来说,风控系统就是从业务数据中挖掘出黑产行为的数据分析系统。
|
||||
|
||||
我们可以通过对比产品方案来深入理解风控系统。
|
||||
|
||||
- 产品方案抵御黑产的方式,是普适性地提高用户的使用成本,不区分用户是否是黑产。因此在产品方案中不存在数据挖掘和分析的工作。
|
||||
- 在风控系统抵御黑产的过程中,为了不增加正常用户的使用成本,我们必须对黑产用户进行区分,然后告诉业务只对黑产进行拦截,放行正常用户。而区分黑产就需要对海量的业务数据进行分析和挖掘了。
|
||||
|
||||
总结来说:**产品方案属于事前的防控,是从根本上提高黑产操作的成本;风控系统属于事中的防控,是在检测到黑产行为时才进行拦截**。
|
||||
|
||||
目前,风控系统的整体框架已经基本成熟了,各个公司的风控系统也都大同小异。一般来说,一个完整的风控系统框架应当包括前端SDK、规则引擎和验证流程。但是,一个完整的风控流程还需要人工进行数据分析、处理用户投诉、监控舆情,并采取应急响应机制。完整的风控流程如下图所示:
|
||||
|
||||
<img src="https://static001.geekbang.org/resource/image/1b/5e/1be33aee37a468d3a67c46211a47a05e.jpeg" alt="">
|
||||
|
||||
下面,我就来讲解一下风控流程中的各个环节。
|
||||
|
||||
## 风控系统如何利用前端SDK采集数据?
|
||||
|
||||
想要在风控中做好数据分析,数据当然是越多越好。我们只有尽可能多地采集各类用户的数据,才能够更准确地识别黑产。各类用户数据包括用户身份信息、行为记录、设备类型、鼠标或者屏幕点击轨迹等。
|
||||
|
||||
但是,业务在正常的开发过程中,一般不会采集和业务无关的数据(比如设备相关的信息)。为了解决这个问题,风控系统通常会提供一个前端SDK。前端SDK由业务集成在前端应用中,它可以采集各类前端数据,如手机型号、硬件类型等。
|
||||
|
||||
<img src="https://static001.geekbang.org/resource/image/e4/06/e441487d371c8a07a4a842f22a490806.jpg" alt="">
|
||||
|
||||
除此之外,前端SDK还会计算出一个唯一的设备指纹,通过这个设备指纹,我们就能够实现对设备行为的追踪。
|
||||
|
||||
## 规则引擎如何帮助风控系统识别黑产?
|
||||
|
||||
采集到业务数据之后,我们就要对其中的黑产进行识别了。在风控系统中,一次操作行为是来自黑产还是正常用户,是由规则引擎来决定的。那么,规则引擎是如何识别黑产的呢?下面,我来详细讲解一下。
|
||||
|
||||
规则引擎会接收到业务提供的原始数据,而想要从中识别出黑产,我们首先需要通过一些统计手段找到其中有用的特征。那什么是“有用的特征”呢?
|
||||
|
||||
举个例子,想要从登录行为中识别出黑产,仅仅知道设备指纹是不够的,我们还需要知道,这个设备在最近一段时间内发起了多少次登录请求。这就是特征提取需要进行的工作了。
|
||||
|
||||
经过特征提取得到特征之后,我们就需要制定规则对登录行为进行判定。比如说,我们可以定义,一个设备在1分钟内登录5次的行为属于异常行为,应当进行拦截。
|
||||
|
||||
这样一来,当有新的登录行为发生时,通过规则引擎,我们就可以直接判定其是否为黑产。规则引擎的识别过程如下图:
|
||||
|
||||
<img src="https://static001.geekbang.org/resource/image/13/3d/13ad07043a2d9552fbcac66f06d8393d.jpeg" alt="">
|
||||
|
||||
那么,应该如何做好一款规则引擎呢?我认为关键在两个方面:采用正确的工作模式、设计高效的规则管理功能。下面,我们就来具体看一下。
|
||||
|
||||
### 1. 正确的工作模式
|
||||
|
||||
规则引擎可以分为同步、异步和离线三种模式。下面,我就以登录场景为例,为你解释一下这三种模式的工作过程。
|
||||
|
||||
**在同步模式下**,用户输入完用户名密码之后,需要先经过规则引擎的判定,只有正常用户才能够正常登录,黑产则直接被拦截,不允许登录。
|
||||
|
||||
**在异步模式下**,用户一开始是可以正常登录的,登录后才交由规则引擎判定,如果最终确定是黑产,则会被封号或者踢出登录状态。
|
||||
|
||||
**离线模式**的效果和异步模式一致,不过异步模式通常会在几秒到几分钟的时间内完成判定和处罚,离线模式则需要几小时甚至一天的时间才能够完成判定。
|
||||
|
||||
这三种模式的工作过程如下图:
|
||||
|
||||
<img src="https://static001.geekbang.org/resource/image/e8/30/e8731b159c109e6860ff165c6353da30.jpeg" alt="">
|
||||
|
||||
我们知道,实时性越高、对黑产拦截得越及时,黑产所能够获得的收益也就越少。那是不是我们都采用同步模式就好了呢?当然不是。相比于同步模式,异步和离线模式在业务接受度和数据分析能力上都更优。下面,我们来具体分析一下。
|
||||
|
||||
首先,同步模式需要侵入到业务的正常流程中,这对于业务来说,一方面会产生较高的接入改造成本,另一方面,也给业务的正常运行带来风险。因此,我们经常会遇到业务不接受同步模式的情况。
|
||||
|
||||
其次,实时性越高,我们获得到的信息就越少。以登录的场景为例,同步模式下的拦截行为发生在成功登录之前,所以,我们无法知道用户名密码是否正确。**异步和离线是事后的分析**,所以我们能够知道用户是否登录成功。显然,连续登录失败比连续登录成功更可疑。因此,用户是否登录成功这个信息,对于我们提升识别准确率会有很大的帮助。
|
||||
|
||||
而实时性越低,我们和黑产的对抗优势也就越多。如何理解这句话呢?我们来看实时性最低的离线模式。通常来说,离线模式能慢慢处理和运行几天甚至是几个月的数据。而数据越多,规则引擎的准确率和召回率也会越高,所以我们的优势也就越多。
|
||||
|
||||
最后,即使是使用同步模式,我们也需要使用异步和离线模式做数据分析和规则验证,这样才能保障同步模式的判定结果不会出现太大的误伤。
|
||||
|
||||
因此,在大部分情况下,**我更推荐使用异步或者离线模式**,仅在部分没办法做事后的拦截和处罚的业务场景中,我们才会使用同步模式。
|
||||
|
||||
举个例子,在提现操作中,提现成功后,钱就已经从公司转移到黑产手里了,我们没有办法追回,因此我们必须采用同步模式,在提现操作前对黑产进行拦截。
|
||||
|
||||
### 2. 高效的规则管理
|
||||
|
||||
如果你做过数据分析工作,一定知道同步、异步、离线其实都是数据分析工作中常见的模式,已经有很成熟的工具来为它们服务了,比如:通过Redis完成实时计算;通过Flink完成异步计算;通过Hive完成离线计算等。因此,**规则引擎不存在技术上的独特性**。
|
||||
|
||||
但是,我认为特别“完美”的规则引擎还没有出现。因为规则管理有较高的复杂性和独特性。换一句话说就是,想要新建一条规则并执行是一件很容易的事情,但如何高效管理成百上千的规则,让风控人员和业务人员能够清晰地看到每个规则的效果、准确率和实际意义,是一个很有挑战性的工作。
|
||||
|
||||
就拿最出名的开源规则引擎[Drools](http://www.drools.org.cn)来说吧。Drools定义了一套自有的IF匹配语言DRL,并提供了基于[Rete算法](https://www.jianshu.com/p/3e9afe9e0617)的高效规则执行功能。然而,Drools并没有提供十分高效的规则管理工具。
|
||||
|
||||
而高效的规则执行功能所能带来的性能提升,其实并不会特别明显。因为规则引擎的复杂度其实在于特征提取。特征提取完成之后,规则管理基本就是简单的IF匹配了。因此,我认为Drools并不是一个适用于风控系统的规则引擎。
|
||||
|
||||
除了Drools之外,部分规则引擎也会尝试使用Web界面的方式来降低规则管理的复杂度。比如,在一些开源的风控系统中(比如[Nebula](https://github.com/threathunterX/nebula)),我们可以看到各种用来增加修改规则的Web页面。
|
||||
|
||||
但是,各个公司的规则形式,以及各个业务对规则的理解都不尽相同,因此,你在使用这些开源风控系统的时候,总会有部分需求无法实现。所以,我才说“规则管理需要较高的灵活性才能够适用于各个业务”。而矛盾的是,灵活性过高又会大大提高规则管理的复杂性,因此,我们必须慎重把握规则管理的灵活性。
|
||||
|
||||
目前来看,我觉得比较好的解决方案是,使用[Aviator](http://fnil.net/aviator/)、[QLExpress](https://github.com/alibaba/QLExpress)、[Groovy](https://baike.baidu.com/item/Groovy/180590?fr=aladdin)等在Java中提供动态开发支持的语言,来进行底层的规则执行,在此基础之上,我们再去封装自己理解的规则管理。这样一来,我们就实现了灵活性和复杂度的平衡。
|
||||
|
||||
<img src="https://static001.geekbang.org/resource/image/61/fb/6104cb168f5dde603493fbe46d214ffb.jpeg" alt="">
|
||||
|
||||
当然,你可能会想到使用机器学习来解决规则管理的难题。机器学习相关的内容,我会在后续的课程中详细来讲。
|
||||
|
||||
总结来说,**规则引擎是风控系统的核心**。想要做好一个规则引擎,我们需要思考清楚两件事情:第一,规则引擎以什么样的模式接入业务;第二,如何进行规则管理。
|
||||
|
||||
## 风控系统为什么需要经过验证流程才能拦截黑产?
|
||||
|
||||
事实上,当我们使用规则引擎识别出一个用户行为可能是黑产的时候,不能够直接进行拦截。因为规则引擎的判定结果永远存在“误伤”。有时候为了尽可能不漏过黑产,“误伤”的比例会很高。
|
||||
|
||||
比如说,当用户因为忘记密码多次登录网站失败的时候,网站就会怀疑这是黑产在进行操作。这个时候,我们如果直接拦截,就会收到大量的用户投诉。
|
||||
|
||||
为了解决这个问题,风控系统中加入了**验证流程**。采取适当的验证流程,我们可以降低拦截机制对用户体验的影响。所以,在上面的例子中,网站会使用滑块验证码来验证你是否是黑产。
|
||||
|
||||
基于业务场景的不同,验证的方式还有很多,比如,核验身份的短信认证、人脸识别,区分人机的图片验证、滑块验证等。很多应用都会对存疑的用户和行为施加各种验证流程,来保障用户身份的真实可靠。所以,为了让风控系统成功落地,验证流程是我们不能忽视的一个环节。
|
||||
|
||||
## 有哪些风控人员?
|
||||
|
||||
和SIEM一样,风控系统的成功运行离不开各类人员的持续投入。风控人员一般分为策略人员、运营人员和应急响应人员。下面,我就来说说他们是如何推动风控系统落地的。
|
||||
|
||||
在规则引擎中,**策略人员**需要对业务的数据进行分析,产出准确的规则和模型。而且,随着和黑产的对抗升级,策略人员还需要对规则和模型不停迭代。
|
||||
|
||||
除了数据分析和规则迭代以外,规则引擎的“误伤”也必然会导致部分用户的不满和投诉。因此,**运营人员**需要对投诉情况进行处理和监控,避免风控系统出现大规模的“误伤”。同时,因为会有的黑产高调宣扬自己从业务中获利的成功经历,所以,运营人员还需要对黑产的言论和动向进行把控,来感知风险。
|
||||
|
||||
最后,对于大规模误伤或者漏洞造成的严重影响,**应急响应人员**需要及时跟进处理,来进一步减少业务的损失。
|
||||
|
||||
## 总结
|
||||
|
||||
好了,今天的内容讲完了。我们来一起总结回顾一下,你需要掌握的重点内容。
|
||||
|
||||
一个完整的风控系统需要结合业务全流程。
|
||||
|
||||
前期需要通过前端SDK采集设备数据,然后结合业务的离线数据,由算法或者策略人员进行数据分析,整理出具体的规则。接着,通过同步、异步或者离线的方式和业务进行对接,并基于规则对业务数据进行判定。
|
||||
|
||||
如果发现了黑产的用户和行为,风控系统还需要提供对应的验证流程,来降低对用户体验的损伤。最后,风控系统还需要保持对用户客诉、黑产舆情的监控,及时发现、响应和处理风险,降低业务的损失。
|
||||
|
||||
规则引擎作为风控系统的核心,主要分为特征提取和规则管理两个部分。特征提取可以依靠现有的各类大数据处理框架实现。规则管理则因为各个公司和业务对规则的复杂度和灵活度要求不同,很难有非常合适的解决方案,需要我们根据不同的情况灵活调整和实现。
|
||||
|
||||
<img src="https://static001.geekbang.org/resource/image/18/a2/184e4d3fc8c46a1dadc840acdc542ea2.jpg" alt="">
|
||||
|
||||
## 思考题
|
||||
|
||||
最后,我们还是来看一道思考题。
|
||||
|
||||
你可以调研并试用一些开源的风控系统,试着思考一下,在这些系统中,有哪些功能对你的业务有帮助。接着,你可以再试着分析一下,业务有哪些痛点是这些系统无法满足的。
|
||||
|
||||
欢迎留言和我分享你的思考和疑惑,也欢迎你把文章分享给你的朋友。我们下一讲再见!
|
||||
117
极客时间专栏/安全攻防技能30讲/业务安全/28 | 机器学习:如何教会机器识别黑灰产?.md
Normal file
117
极客时间专栏/安全攻防技能30讲/业务安全/28 | 机器学习:如何教会机器识别黑灰产?.md
Normal file
@@ -0,0 +1,117 @@
|
||||
<audio id="audio" title="28 | 机器学习:如何教会机器识别黑灰产?" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/4f/d0/4f05d1ce3113e12a5e89309d56fd0dd0.mp3"></audio>
|
||||
|
||||
你好,我是何为舟。
|
||||
|
||||
通过建立一个成熟的风控系统,你能够快速建立起和黑产进行持续对抗的稳固防线。但是,风控系统和规则引擎仅仅是一个平台和工具。想要真正对黑产进行识别,我们还得依靠规则引擎中运行的规则策略。
|
||||
|
||||
当然,规则的维护主要是依靠人力来进行的。但是这样的维护方式会有两个弊端:首先,人的工作效率会受各种因素影响,所以对抗的时效性很难保障;其次,规则的维护受到人的主观意识的影响,可能会产生一些“偏见”。
|
||||
|
||||
对于上述这两个问题,机器学习是一个理想的解决方案。因为,机器学习不仅可以无休止地工作,还会完全依据客观事实产生结果。
|
||||
|
||||
而且,机器学习对于基础安全来说,同样是一个提升规则维护效率的理想方案。因为各类防御工具(如:防火墙、IDS、WAF等)也都是基于规则来运转的。
|
||||
|
||||
那么今天,我们就来聊一聊,在安全领域中尝试机器学习算法会遇到哪些问题,以及我们有哪些解决思路。
|
||||
|
||||
## 如何正确认识机器学习?
|
||||
|
||||
机器学习这几年非常火热,我相信你一定了解过一些相关的概念,对机器学习也有自己的理解。但是,很多人都对机器学习有着过高的预期,认为机器学习“无所不能”,而这种高预期会误导我们错误地使用机器学习。因此,我想先和你明确一下,机器学习在安全领域中能干什么、不能干什么,让我们对机器学习在安全领域中的应用有一个正确的预期。
|
||||
|
||||
一般来说,机器学习是通过找出未知的规则参数来区分已知的行为。这句话怎么理解呢?
|
||||
|
||||
我来举个例子你就懂了。在生活中,我们能够快速地分辨一张图片是猫还是狗。那你有没有思考过,我们是怎么进行识别的?根据五官、颜色还是形状?仔细回想一下,你就会发现,我们往往是根据经验来判断的,很难用文字描述出准确的判断依据。
|
||||
|
||||
同样地,对于一次请求或者操作,我们通常能够依据经验判定其是否是安全攻击。但是判定的依据具体有哪些,往往说不清楚。在这种情况下,机器学习就可以帮助我们将脑海中的模糊经验,总结成客观的规则参数,从而挖掘出恶意的攻击行为。
|
||||
|
||||
你会发现,机器学习挖掘恶意攻击的前提,是攻击行为必须能够被人为的判定,只是判定过程比较模糊和复杂,无法通过制定简单的规则进行人为的区分。因此,**机器学习实际上是对人为经验的一种总结,并不具备创新的能力,所以最终对抗效果的好坏,还是取决于人的对抗能力**。
|
||||
|
||||
## 无监督学习在安全中的应用
|
||||
|
||||
机器学习可以简单分为无监督学习和有监督学习,我今天也会按照这个分类来讲。我们先来看一下,无监督学习在安全中的应用。
|
||||
|
||||
很多人认为,无监督学习就是在没有标签的情况下去找寻分类,发现所谓的“未知的威胁”,其实不然。实际上,**无监督学习的目的是挖掘数据的分布特征,主要包括数据的聚集特征(也叫聚类特征,是通过聚类算法获得)和分布规律(也叫离群点,通过时序算法获得)。这些特征和规律能够帮助你发现异常的情况,但是不能帮你定位异常的行为**。
|
||||
|
||||
因此,如果想使用无监督学习来判定正常和异常行为,我们就需要对行为的整体分布有一个先验假设,常见的如:正常行为由正常用户产生,行为各有各的不同;恶意行为是少数人批量产生,行为会比较相似。
|
||||
|
||||
我曾经和几家乙方安全厂商聊过,有些厂商明确地表示过,他们正是基于这个假设,采用无监督学习进行业务风控识别的。从直觉上来说,这样的思路是没问题的,因为黑产大都是通过批量的行为来获取非法利益的,所以必然会在IP、设备、行为、关联关系等各个方面露出一些马脚,被我们识别出来。但是,当落地到具体的场景时,这个假设并不完全成立。
|
||||
|
||||
举个例子,在业务安全中经常会遇到“垃圾小号问题”,我们通常是通过批量特征来进行挖掘的。下表是同一天注册的一批账号,以及它们对应的行为特征。我们可以通过FP-Growth算法对其行为进行关联分析,找到行为相同的一批账号。比如,表中的账号2和账号3、账号6和账号7,就存在高度的相似性。
|
||||
|
||||
<img src="https://static001.geekbang.org/resource/image/58/07/587dd4e1a09e7d3be13b13dd186fd607.png" alt="">
|
||||
|
||||
那这种相似是不是就意味着这几个账号是黑产呢?这个理由显然并不充分。因为这种相似性可能只是一种巧合。比如,一个寝室的同学都刚开始使用微博,他们的行为和兴趣都很相似。因此,我们并不能基于这个无监督学习挖掘出来的聚类特征,对这些账号进行处罚。
|
||||
|
||||
但是,如果1月1日注册了100个账号,其中一半的账号都被关联分析挖掘出了聚类,那我们就无法用巧合去解释了,这就说明必然出现了黑产的攻击。
|
||||
|
||||
因此,我们可以将无监督学习当成一个评价和监控方法。比如,在没有黑产攻击的时候,注册账号的聚类占比可能低于10%,那当某一天的值高于10%的时候,就说明可能出现黑产攻击了。但是,无监督无法准确地告诉你,哪些聚类是黑产的。所以接下来,我们就需要人工进行分析了。
|
||||
|
||||
在基础安全领域中,无监督学习也可以通过类似的原理来应用。
|
||||
|
||||
举个例子,IDS判定一台服务器是否被黑客控制的思路,可能是服务器访问的外部服务数量是否异常。通常来说,服务器访问的外部服务越多,越有可能存在扫描的嫌疑。同样地 ,这个假设也不绝对成立,因为你永远无法预估开发到底会使用多少外部服务。
|
||||
|
||||
但是,当我们去实际统计服务器访问的外部服务数量时,会发现它呈指数分布。也就是说大部分服务器只访问少量的外部服务,而访问服务数越多,对应的服务器就越少,如下方右图所示。(横轴是外部服务数量,纵轴是服务器数量)
|
||||
|
||||
<img src="https://static001.geekbang.org/resource/image/07/5a/07d4355cd832678a3358f59d3428ee5a.png" alt="">
|
||||
|
||||
如果你发现某一集群内的服务器对应外部服务数量分布和指数分布,存在了明显的偏离(如上方左图所示),就说明这个集群内的服务器出现了异常情况,有可能是被黑客控制了。那接下来,我们再针对这些偏离较远的服务器,进行人工排查即可。
|
||||
|
||||
所以说,通过应用无监督学习,我们能够发现整体数据中的异常情况,然后只需要根据相应的报警去分析疑似异常的数据就可以了。相比于人工去分析全量数据,无监督学习能够大大提升风控效率。
|
||||
|
||||
## 有监督学习在安全中的应用
|
||||
|
||||
说完了无监督学习的应用,我们再来说说有监督学习的应用。
|
||||
|
||||
有监督学习的基础是标签数据,标签就代表着已知。所以,有监督学习的最大作用就是用来挖掘“已知的威胁”。如果想要保持和黑灰产的持续对抗,我们就必须不断地生产标签数据(也叫“打标”),供有监督学习的算法来学习。但是,依靠人工去生产标签数据是不可行的。你可以先试着思考一下,不可行的原因都有哪些,然后再来看我下面的讲解。
|
||||
|
||||
我认为主要有三方面原因。
|
||||
|
||||
**第一,时间成本高。**
|
||||
|
||||
在图片识别等领域,对一个图片“打标”只需要一个普通人花几秒钟的时间。但是对于一个安全类的数据,一个安全人员可能需要花费几十分钟甚至几个小时,才能够确定这次行为到底是不是恶意行为。
|
||||
|
||||
**第二,覆盖面不全。**
|
||||
|
||||
由于时间成本高,我们无法进行全量数据的“打标”。而且人是存在懒惰心理的,因此人为“打标”时,总是会倾向于优先处理相对明显的数据,那么相对隐秘的攻击行为,就很容易在“打标”过程中被忽略。
|
||||
|
||||
**第三,标准偏差。**
|
||||
|
||||
恶意与正常往往没有明确的界限,不同的安全人员对于安全的认知和要求也不同。比如,一次简单的端口扫描算不算恶意行为呢?一个专刷明星的账号算不算垃圾账号呢?不同的人会有不同的判断,这种判断标准的偏差会导致最终产生的标签数据分布不一致,这对机器学习的结果也将产生较大的影响。
|
||||
|
||||
因此,想要成功地应用有监督学习,我们就必须找到客观、高效的“打标”方案。
|
||||
|
||||
在基础安全领域中,黑客的最终目的无非是获取数据、篡改程序、拒绝响应等。所以,我们其实可以通过数据的CIA是否受到影响来进行标记,获得最终的判定标签,然后将标签进行回溯,从而获得表层的标签数据。
|
||||
|
||||
举个例子,WAF是通过获取HTTP相关的数据(如:路径、参数、header、ua等)来找出恶意的HTTP请求,从而对Web攻击进行检测拦截的。但是WAF并不知道这个请求具体会干什么,执行什么样的逻辑,所以它的评判标准只能是“带有XXX特征的请求是恶意请求”。如果想持续不断为WAF提供标签数据,靠人力肯定不行,我们应该深入追踪下去,以最终结果对数据进行自动“打标”。
|
||||
|
||||
RASP的检测思路正是如此,就是直接深入到Web程序的逻辑,根据运行情况去评判该请求是否是攻击行为。因为是对HTTP请求的最终行为进行评判,所以RASP可以实现所谓的“无规则检测”,准确率和召回率都有保证。
|
||||
|
||||
如果我们利用RASP对影响数据CIA的HTTP请求进行打标,然后由WAF去学习这些HTTP请求具有什么样的特征,那么一个完整的机器学习闭环基本就形成了,如下图所示。
|
||||
|
||||
<img src="https://static001.geekbang.org/resource/image/09/7f/095c1d58777c33ed9343f2b84c5c407f.jpg" alt="">
|
||||
|
||||
业务安全其实也可以尝试同样的思路来生产标签。比如,我们可以通过对接口签名校验、虚拟设备判定等方式,对异常的行为进行标记,作为业务安全中标签数据的来源。在此基础之上,我们再使用有监督学习算法去学习异常行为的特征,让业务风控的机器学习算法能够不断更新和迭代。
|
||||
|
||||
另外,我不建议直接根据标签数据进行拦截。因为我们一旦进行拦截,这些生产标签的指标就会暴露,就会促使黑产进行研究和对抗,那么标签的准确性就会受到影响。
|
||||
|
||||
除此之外,我们也可以采用一些相对间接的方法:比如,通过用户反馈来获取异常的行为数据;再比如,标记一部分已知的恶意用户,但是不处理这些用户,而是将它们产生的行为都当成恶意行为来标记。
|
||||
|
||||
总而言之,想要成功地运用有监督学习,我们必须找到一个合理的打标方案,持续不断地产出可靠的标签数据。在此基础上,我们才能够运用各种高上大的算法,去挖掘安全领域中的“已知的威胁”。
|
||||
|
||||
## 总结
|
||||
|
||||
好了,今天的内容讲完了。我们来一起总结回顾一下,你需要掌握的重点内容。
|
||||
|
||||
在安全领域应用机器学习的时候,我们要注意:机器学习并不是一个万能的工具,它无法发现“未知的威胁”。因此,在和黑产对抗的过程中,“人”始终是对抗过程中最关键的部分,而机器学习更多的是一种提升效率的工具。
|
||||
|
||||
对于无监督学习,我们可以利用它的原理,来发现异常的聚集和离群点。尽管这些聚集和离群点,因为准确率不足无法全部被判定成攻击行为,但聚集和离群点的数量和分布,仍然反映出了整体的异常情况。而对于有监督学习,我们需要设计一个合理的标签系统,来尽可能自动化地生成标签数据,从而保持算法的持续更新和迭代。
|
||||
|
||||
<img src="https://static001.geekbang.org/resource/image/8c/7e/8cb85a08f742879510a85ae09766ec7e.jpg" alt="">
|
||||
|
||||
## 思考题
|
||||
|
||||
今天,我们留两道思考题。
|
||||
|
||||
基于今天给出的机器学习应用思路,你能分析一下,在你负责的业务安全场景中,有哪些风险是可以通过无监督或者有监督学习算法来分析的吗?应该如何进行分析呢?
|
||||
|
||||
另外,如果你了解深度学习和图算法的话,那么不妨试着思考一下,深度学习和图算法是如何在安全领域中使用的。
|
||||
|
||||
欢迎留言和我分享你的思考和疑惑,也欢迎你把文章分享给你的朋友。我们下一讲再见!
|
||||
166
极客时间专栏/安全攻防技能30讲/业务安全/29 | 设备指纹:面对各种虚拟设备,如何进行对抗?.md
Normal file
166
极客时间专栏/安全攻防技能30讲/业务安全/29 | 设备指纹:面对各种虚拟设备,如何进行对抗?.md
Normal file
@@ -0,0 +1,166 @@
|
||||
<audio id="audio" title="29 | 设备指纹:面对各种虚拟设备,如何进行对抗?" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/b3/4e/b36b1d577ab0ba82241b17c5b0263c4e.mp3"></audio>
|
||||
|
||||
你好,我是何为舟。
|
||||
|
||||
有一句话说“数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已”。这句话在风控系统中同样适用,因为风控系统本质上也是一个大数据分析系统。所以,收集更多的数据是提升风控能力的一项核心工作。
|
||||
|
||||
随着手机和人的关系越来越紧密,通过手机对用户行为进行追踪和判定的方法,已经成为风控系统中识别黑产的主要手段。设备指纹是用来标识手机或者浏览器的唯一ID,我们能够通过这个ID关联到手机或浏览器相关的全部数据。因此设备指纹是风控系统中最核心的数据来源。
|
||||
|
||||
[<img src="https://static001.geekbang.org/resource/image/6d/b8/6d49d61cfbe7be57e041d204aafbe0b8.jpg" alt="">](https://fingerprintjs.com/demo)
|
||||
|
||||
那设备指纹是如何对手机进行追踪的?又是如何判定异常行为的呢?今天,我们就一起来探讨一下,应该如何设计和实现设备指纹。
|
||||
|
||||
## 设备指纹的优势
|
||||
|
||||
对比于传统的IP、手机号等ID,设备指纹具有唯一性高、稳定性强和信息丰富这三个优势。
|
||||
|
||||
简单来说,唯一性高是指一人一设备,因为使用者不同,每个智能设备上的使用痕迹和特征也具有唯一性。稳定性强也很好理解,就是智能设备的硬件不常更新,它们对应稳定不变的ID。这两个优势,让我们能通过识别智能设备找到唯一对应的人,以及在较长时间内保持对他的识别。最后,智能设备能够收集的信息非常丰富,自下而上包括硬件、操作系统、应用信息等。
|
||||
|
||||
基于这些优势,一方面,设备指纹可以以设备为单位对其相关的行为进行串联,发现诸如使用一个设备进行大规模注册等黑产攻击行为;另一方面,设备指纹可以基于其丰富的设备信息,来识别黑产使用的虚拟设备,帮助风控系统对抗黑产。
|
||||
|
||||
## 设备指纹面临的主要挑战
|
||||
|
||||
文章开头我们说过,我们要设计和实现设备指纹。那你可能会问,Android和iOS都已经内置了用来追踪设备的ID,比如[IDFA](https://www.jianshu.com/p/38f4d1a4763b)(Identifier For Advertising),我们为什么还要自己去实现设备指纹呢?在解答这个问题之前,我首先来讲一下设备指纹技术面临的主要挑战。通过这些挑战,你就能够明白内置的ID存在哪些问题,为什么无法满足风控系统的需求了。
|
||||
|
||||
**第一,设备重置之后,保持设备指纹不变。**
|
||||
|
||||
恢复出厂设置是所有智能设备的标配功能,设备重置之后,系统自带的设备ID必然会发生变化,理论上来说就是“新设备”了。
|
||||
|
||||
所以,如果只是使用系统自带的设备ID,黑产完全可以通过不断恢复出厂设置模拟大量的设备,来绕过风控系统的检测。因此,如何在恢复出厂设置的情况下,仍然保持设备指纹的稳定不变,是设备指纹技术的主要挑战之一。
|
||||
|
||||
**第二,设备更新之后,保持设备指纹不变。**
|
||||
|
||||
既然无法直接使用自带的设备ID,那我们就必须基于各类设备信息综合计算出设备指纹。但是,我们平时在使用智能设备的时候,不仅会有意或无意地变更设备名称、网络环境、位置等信息,还会更新操作系统,系统版本、应用版本等特征也会随之改变。这都会影响到设备指纹的计算。
|
||||
|
||||
知道了设备更新能影响设备指纹的计算,黑产在进行欺诈行为的时候会更加极端,它们会更换部分硬件去尝试伪造新的设备,比如,摄像头、音响等相对容易拆卸安装的部分。因此,如何在一定程度上兼容设备的变动和更新,也是设备指纹需要考虑的问题之一。
|
||||
|
||||
总之,黑产总是会尝试去修改虚拟设备的各类配置,将其伪造成新的设备,从而绕过风控系统的检测。因此,一个稳定的设备指纹可以帮助风控系统对抗黑产的虚拟设备。
|
||||
|
||||
上面说的这两个挑战都属于设备指纹对**稳定性**的要求。**最后,我们还要保证设备指纹的唯一性**,避免两个不同的设备产生相同的设备指纹,比如,如何准确地区分同型号的设备,也是设备指纹需要满足的要求之一。所以,唯一性是避免误伤真实用户的关键维度。
|
||||
|
||||
## 设备指纹的信息采集
|
||||
|
||||
通过上述的挑战我们可以看到,不同类型的信息能够满足不同的诉求,比如:iOS中的IDFA或者Android中的IMEI可以解决环境变更的问题,但是无法解决重置的问题;而硬件特征可以解决重置的问题,但是面对多个同型号设备,可能无法准确区分。
|
||||
|
||||
因此,想要获得准确且稳定的设备指纹,我们必须从多个维度采集不同的信息。这些信息可以大致分为:软件ID、软件静态特征、硬件静态特征和硬件动态特征。下面,我就和你一起来探讨一下这些信息的特点和重要性。
|
||||
|
||||
**第一,软件ID。**
|
||||
|
||||
软件ID主要包括iOS设备的IDFA、IDFV,Android设备的IMEI、MAC等。这些ID本身就是苹果和Google为了给APP厂商提供追踪能力设计的标识,具备较好的唯一性和稳定性。
|
||||
|
||||
但是,操作系统为了保障用户隐私,对APP的权限做了较多的限制。比如,用户可以自主选择禁止APP获取到这些ID,重置手机也会同时重置这些ID等。
|
||||
|
||||
而黑产也会利用这一特性,绕过APP厂商的识别策略。比如,黑产可以在苹果系统中直接设置不允许获取IDFA。这样一来,APP厂商的风控系统就没有办法通过设备维度关联黑产行为了,也就无法识别单一设备批量操作的攻击行为了。
|
||||
|
||||
**第二,软件静态特征。**
|
||||
|
||||
软件静态特征主要是操作系统和APP本身的各类基本信息,比如操作系统版本、手机名称、APP版本等。这些信息基本都可以通过更新或者手动配置的方式修改,因此在稳定性上表现较差。但是,这些信息能够反映出用户的个人特征,因此,它们能够对设备指纹的唯一性产生较大帮助。
|
||||
|
||||
比如,下图是我手机的部分状态信息,其中的每一项都能够直接或间接地代表我的部分信息。比如,我使用了一张移动卡和联通卡,我的手机型号是小米9,我开着蓝牙等。
|
||||
|
||||
<img src="https://static001.geekbang.org/resource/image/76/00/76f591349839772e6e2b707b71c13400.jpg" alt="">
|
||||
|
||||
**第三,硬件静态特征。**
|
||||
|
||||
硬件静态特征主要是设备的各类硬件信息,比如,主板、CPU、摄像头等相关型号信息。正常用户基本不会去替换设备上的各个硬件,因此硬件静态特征具备较高的稳定性。
|
||||
|
||||
但同一型号手机的硬件配置是一致的,所以,硬件静态特征在唯一性上相对欠缺。因此,通过硬件静态特征,我们无法很好地区分同型号的设备。
|
||||
|
||||
**第四,硬件动态特征。**
|
||||
|
||||
硬件动态特征是目前比较新的研究方向,它的基本原理是基于硬件的一些动态执行层产生的特征(如:加速度传感器的偏差)来识别虚拟设备。
|
||||
|
||||
举个例子,因为加速度传感器校准结果的不精确性,其产生的最终结果会存在一定的偏差。通过多次快速地查询加速度传感器,我们就可以模拟出同一时刻,加速度传感器返回的结果值。又因为存在机械偏差,所以这些结果值是不同的,那通过这些值,我们就可以计算出该传感器的线性偏差。
|
||||
|
||||
利用这样的原理,我们可以采集任何一个传感器硬件的偏差特征。比如,下图是在播放同一个音频后,不同手机的麦克风接收到的音频曲线。每一个颜色对应一个设备,可以看到不同设备之间的曲线存在较大差异,而同一设备的曲线则相对稳定。
|
||||
|
||||
[<img src="https://static001.geekbang.org/resource/image/f8/8f/f8a3644352861dca4f5e6dd10192828f.jpg" alt="">](https://crypto.stanford.edu/gyrophone/sensor_id.pdf)
|
||||
|
||||
因此,从稳定性上来说,硬件动态特征的表现还是不错的。不过由于特征区间比较窄,唯一性稍差一些,更多被用来辅助区分同型号的不同设备。
|
||||
|
||||
## 设备指纹的ID计算
|
||||
|
||||
在采集了各类信息之后,如何基于这些信息计算出一个正确的设备指纹,是设备指纹技术的核心挑战。由于数据的维度和数据量的大小都各有不同,因此,各个公司都需要自己设计相应的算法进行计算。下面我们来讲一下ID计算的大体思路。
|
||||
|
||||
首先,我们要明确设备指纹需要解决的核心问题,也就是给出两组信息,如何判定它们是不是来自同一个设备。我们来看一个例子。
|
||||
|
||||
下图中有三组设备数据,我们可以看到,设备信息A和设备信息B十分相似,它们的硬件信息相同,又在同一个Wi-Fi网络下,只有设备ID和SIM卡不同。这就很符合黑产的使用场景了:通过重置设备和更换SIM卡,来伪造一个新的设备和号码。
|
||||
|
||||
因此,我们可以判定设备信息A和设备信息B实际上属于同一个设备,应该分配相同的设备指纹。
|
||||
|
||||
<img src="https://static001.geekbang.org/resource/image/ba/f8/baca7d7e34a18e4d45e6b973a9971ef8.jpeg" alt="">
|
||||
|
||||
上面的判定过程进一步抽象的话,其实就是**计算两组数据的相似度,**相似度越高、差异度越低,就越有可能是同一个设备。
|
||||
|
||||
下面,我们就来看一下,实际工作中是如何利用相似度进行判定的。
|
||||
|
||||
首先,新采集上来一组设备信息,我们要计算它和已有设备信息的相似度。可实现的算法有很多,简单的包括欧式距离、马氏距离、联合概率分布等,相对复杂的包括MRF(马尔可夫随机场)、BP算法(置信度传播算法)等。
|
||||
|
||||
其次,我们会设定一个阈值,当这两组数据的相似度达到这个值之后,就可以判定这两组设备数据本质上都是同一台设备产生的。
|
||||
|
||||
设定阈值的依据,就是黑产伪造新设备的2种方式:
|
||||
|
||||
<li>
|
||||
重置设备:手机在重置后,虽然设备ID改变了,但是大部分的硬件相关信息仍然保持不变;
|
||||
</li>
|
||||
<li>
|
||||
更新设备:如果更新系统信息,那么设备ID和硬件信息等仍然保持不变;如果替换部分硬件,那么系统信息和配置等仍然会保持不变。
|
||||
</li>
|
||||
|
||||
最后,如果判定这两组数据属于同一台设备,我们就分配相同的设备指纹。如果属于不同的设备,我们就为新采集的数据生成新的设备指纹。设备指纹分配的流程如下图:
|
||||
|
||||
<img src="https://static001.geekbang.org/resource/image/83/d3/83cd40d22ad4c8815b5f348f718218d3.jpg" alt="">
|
||||
|
||||
## 设备指纹对异常设备的识别
|
||||
|
||||
除了通过计算一个唯一ID来追踪设备,设备指纹的另一个核心任务就是对异常的设备进行识别。异常的设备可能是虚拟机,也可能是手机墙、云控等真实的设备。
|
||||
|
||||
我们可以从三个方面来识别异常设备。
|
||||
|
||||
**第一,系统信息识别。**
|
||||
|
||||
识别虚拟机最基本的方法,就是利用一些系统的默认参数,也就是系统信息来识别。下图是Android虚拟机中的部分设备信息,可以看到设备型号是x86(市面上不存在x86的安卓手机),序列号是EMULATOR开头。
|
||||
|
||||
<img src="https://static001.geekbang.org/resource/image/72/8a/7279f95833db80e931832e0755ac9c8a.jpg" alt="">
|
||||
|
||||
因此,一旦在设备指纹中出现了这些信息,我们就能够判断当前的运行环境是一个虚拟机了。不过想要修改系统信息十分容易,因此大部分黑产都能够绕过基于系统信息识别的检测方法。
|
||||
|
||||
**第二,硬件识别。**
|
||||
|
||||
虚拟机和真实设备的最大区别就在于,虚拟机不存在真实的硬件设备支持。因此虚拟机在很多功能上会存在缺失。
|
||||
|
||||
比如:各类传感器要么缺失,要么采集的数值都是0或者某个固定值;相机功能异常,无法拍照等。这些都是常见的虚拟机硬件缺失的特征。
|
||||
|
||||
黑产想要绕过设备指纹基于硬件特征的检测机制,就必须在虚拟机中模拟出这些硬件的存在,这需要一定的技术成本。
|
||||
|
||||
**第三,系统状态识别。**
|
||||
|
||||
为了降低被风控系统识别的风险,有的黑产已经升级到使用廉价真机来攻击业务了。因为设备已经是真实设备,所以我们无法通过虚拟机的检测方式识别设备异常。但是,既然虚拟机都有特定的特征可以用来识别,那这类真实设备是否也有呢?显然是有的。
|
||||
|
||||
比如说,为了实现批量操控,这些设备必须插入数据线,所以它们会一直处于充电状态(如下图所示,Android虚拟机一直处于充电中),而正常用户大部分时候其实是未连接数据线的状态。
|
||||
|
||||
<img src="https://static001.geekbang.org/resource/image/b7/54/b71e57ca0134aa1e4f7ad042a5470b54.jpg" alt="">
|
||||
|
||||
另外,这些设备的地理位置、网络环境等往往也高度相似,我们可以根据这些信息对异常的聚集现象进行挖掘。
|
||||
|
||||
总体来说,对异常设备的识别,是设备指纹和黑产进行直接对抗的领域。双方都在不断挖掘新的技术相互博弈:黑产在想方设法让设备看起来更加真实可信,而我们则需要不断挖掘新的特征点,找出这些设备和正常设备之间的差异。
|
||||
|
||||
## 总结
|
||||
|
||||
今天,我们对设备指纹技术进行了全面的讲解。
|
||||
|
||||
我们知道,设备指纹是风控系统中对设备实现长期追踪和异常识别的一种关键技术。
|
||||
|
||||
一款好的设备指纹,必须有足够高的稳定性和唯一性。也就是说,设备指纹不能够因为一台设备的小幅度变动和更新而轻易改变,也不能够同时属于两台设备。
|
||||
|
||||
为了实现对设备的长期追踪,我们必须采集各类设备信息,进行相似度的计算和识别;为了实现异常设备识别,我们需要对异常的系统信息、硬件信息状态和系统状态进行挖掘和分析。
|
||||
|
||||
另外,想要开发出一款合格的设备指纹,公司需要投入大量成本在移动安全领域中不断研究。因此,大部分的中小型公司,会选择采购安全厂商提供的设备指纹技术,而将主要的精力集中到如何去利用设备指纹采集上来的数据。
|
||||
|
||||
<img src="https://static001.geekbang.org/resource/image/61/78/61d09934cd4a67d5914e8345c87f7578.jpg" alt="">
|
||||
|
||||
## 思考题
|
||||
|
||||
随着H5、小程序等应用的普遍落地,Web端的设备指纹技术也是目前火热的研究方向之一。你可以试着思考一下,Web环境中的设备指纹会面临哪些新的挑战和技术难点呢?为什么?
|
||||
|
||||
欢迎留言和我分享你的思考和疑惑,也欢迎你把文章分享给你的朋友。我们下一讲再见!
|
||||
141
极客时间专栏/安全攻防技能30讲/业务安全/30 | 安全运营:“黑灰产”打了又来,如何正确处置?.md
Normal file
141
极客时间专栏/安全攻防技能30讲/业务安全/30 | 安全运营:“黑灰产”打了又来,如何正确处置?.md
Normal file
@@ -0,0 +1,141 @@
|
||||
<audio id="audio" title="30 | 安全运营:“黑灰产”打了又来,如何正确处置?" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/63/f3/635bdb38f21d680bfb58ee4bcf2f2cf3.mp3"></audio>
|
||||
|
||||
你好,我是何为舟。
|
||||
|
||||
在前面的课程中,我们介绍了IPDRR的前三个部分,并且着重讲解了风控系统的框架、算法以及设备指纹的相关技术。学会了这些机制和手段,你已经能够识别出大部分的黑产了。那我们是不是可以直接将识别的结果抛给业务,让业务自行处理呢?
|
||||
|
||||
在一个专业的业务安全方案中,这当然不可以。因为,识别出黑产仅仅是第一步,采取合适的手段处理黑产,才是业务安全长治久安的根本。
|
||||
|
||||
那么,针对黑产的处理,我们有三个参照原则:
|
||||
|
||||
- 采取适当的拦截策略,防止黑产快速绕过业务安全策略
|
||||
- 给予一定震慑,防止黑产变本加厉
|
||||
- 保持情报收集,做好和黑产持续对抗的准备
|
||||
|
||||
今天,我们就结合这三个原则来看一下,有哪些运营手段可以对业务安全起到正向作用,切实打击黑产。
|
||||
|
||||
## 业务中处理黑产的手段
|
||||
|
||||
在识别出黑产之后,运营的第一步一定是在业务中对黑产进行处理。处理的手段有很多种,它们能起到的效果也截然不同。接下来,我们就来具体分析一下这些手段的特点和它们能产生的效果。
|
||||
|
||||
### 1. 直接拦截
|
||||
|
||||
在27讲中我们讲过,在不同的识别模式下,黑产的拦截方案也不同:同步模式下,我们可以直接拒绝黑产的当次登录请求;异步和离线模式下,我们可以拒绝对应的账号在登录后继续使用业务。这都属于直接拦截,拦截之后,黑产都将无法继续使用业务,自然也就无法对业务产生任何影响了。
|
||||
|
||||
尽管直接拦截的方案简单有效,但是我们依然需要注意,因为出现误伤而损伤用户体验的问题。因此,通常只有在风控识别准确度较高的时候,我们才会采用直接的拦截处理。
|
||||
|
||||
### 2. 验证拦截
|
||||
|
||||
验证黑产的方式有两种:**人机验证和同人验证**。
|
||||
|
||||
首先是人机验证。
|
||||
|
||||
人机验证的目的是区分人和机器的操作,防止黑产利用机器去自动化刷取业务的利益。
|
||||
|
||||
人机验证的验证码,你应该很熟悉,最常见的是图片验证码。在进行图片验证的时候,我们可以轻易地认出变形后的数字和字母,但是机器却不能。
|
||||
|
||||
不过,随着深度学习的发展,图像识别技术越来越准确,图片验证码已经不那么可靠了。近几年比较流行的滑块验证码。
|
||||
|
||||
在进行滑块验证的时候,会要求我们拖动滑块滑至目标点。但是人在滑动过程中不可能匀速直线运动,所以滑动轨迹在速度、方向等特性上会存在一定的波动,而机器则会产生笔直的滑动轨迹。通过这个特征,我们就可以来判定是人还是机器在拖动滑块。
|
||||
|
||||
说完了人机验证,我们再来说说同人验证。
|
||||
|
||||
同人验证主要是区分进行操作的是不是用户本人,防止账号被盗用。
|
||||
|
||||
比如,当我们异地登录邮箱的时候,网站经常要求我们进行短信验证。这是因为我们的登录操作,被同步模式下的风控系统判定为可疑,所以网站才会通过短信来验证你是不是本人在操作。
|
||||
|
||||
<img src="https://static001.geekbang.org/resource/image/93/81/9345c7dd37b7af3bdb1e752122cc5281.png" alt="">
|
||||
|
||||
除了短信验证还有很多常见的产品方案,比如:异地登录的时候,微信会要求你从一堆用户列表中找出你的好友;美团会要求你从一堆订单中找出自己下过的订单等。
|
||||
|
||||
另外,像人脸识别、声纹识别这种基于生物信息的验证方式,也进一步丰富了同人验证的方式。并且,因为其极优的用户体验感,目前各大应用都重点采用了它们。
|
||||
|
||||
因为验证不会阻拦正常用户使用业务,而且,即使出现误伤,验证能产生的影响也相对较小,因此它使用的场景更加广泛。
|
||||
|
||||
但是,是否选择验证方式进行拦截,还要取决于验证方式本身的安全性,也就是验证方式是否能够起到阻拦黑产的效果。如果黑产能够以较低的成本通过验证,就起不到任何的拦截效果和作用了,也就不是最佳拦截方案。
|
||||
|
||||
### 3. 假数据拦截
|
||||
|
||||
直接拦截和验证拦截都是生活中比较常见的拦截方式,那这里,我再讲一种在爬虫场景中比较常见的拦截方式,就是通过假数据的形式来拦截黑产的行为。
|
||||
|
||||
比如说,像是酒店、机票这样的业务,通常会尝试去爬取竞争对手的价格数据,让自己的价格在竞争中更占优势。所以,当风控识别到请求是来自于爬虫的时候,会直接返回一个虚假的价格数据,来误导爬虫。
|
||||
|
||||
针对爬虫场景,我们之所以不采用直接拦截或者验证拦截的方式,就是因为这些拦截方式会被爬虫发现,然后爬虫就会想尽办法绕过这两种方式。但是,如果使用假数据,爬虫可能认为自己已经成功爬取了数据,就不会特意绕过了。
|
||||
|
||||
而且,在抓取业务数据的过程中,爬虫并不会直接攻击业务的正常流程。所以,这些假数据被爬取,并不会给我们造成任何损失。
|
||||
|
||||
尽管优势非常明显,但是使用假数据的成本很高。这是因为,机票和酒店这样的业务中都会有成千上万的价格数据,如何设置一个合理的假数据,使其既不明显偏离正常值,被爬虫发现,又不过度接近真实值,泄露机密信息。这必然需要业务方投入足够的精力来设置。
|
||||
|
||||
为了帮助你理解这三种拦截手段,我把它们的特点总结成一张表格,供你参考。
|
||||
|
||||
<img src="https://static001.geekbang.org/resource/image/27/c4/2749e52a252c2e24818748c5e4ff65c4.jpeg" alt="">
|
||||
|
||||
总结来说,风控系统识别到黑产之后,可以在业务中采取拦截、验证和假数据的形式处理。相比较而言,验证是适用范围最广的处理方式,我们可以根据不同的场景需求和风控的准确性,选取不同的验证方式。
|
||||
|
||||
## 业务之外处理黑产的运营手段
|
||||
|
||||
所谓知己知彼,百战不殆,想要做好业务安全,除了在业务中采取合适的手段处理黑产以外,我们还需要了解黑产。这就需要我们采取一些业务之外的运营手段去获取黑产的信息,有的时候,业务之外的运营手段甚至可以从根本上铲除黑产。常见的运营手段有3种,分别是情报收集、钓鱼执法和案件打击。下面,我们一一来看。
|
||||
|
||||
### 1. 情报收集
|
||||
|
||||
掌握和了解黑产的动向和手段,是做好业务安全防御的必要基础。情报收集需要运营人员对微博、贴吧等公开信息源保持监控,加入一些“羊毛群”,甚至打入一些黑产交流群。
|
||||
|
||||
通过这些方式,你就能够知道外界是否对你的业务发起了攻击,从而及时发现漏洞,补全业务安全防御体系。
|
||||
|
||||
### 2. 钓鱼执法
|
||||
|
||||
情报收集需要我们打入黑产内部,但是打入内部需要一定的运气,并没有什么固定的方法能够帮助我们找到黑产团伙。因此,面对狡猾的黑产,我们可以采取钓鱼执法这样的手段。
|
||||
|
||||
比如说,在微博上,你经常会看到有人提供买小号、买粉丝这样的服务。毫无疑问,这些服务对业务来说是非法的。那业务安全就需要知道这些黑产是如何突破防御体系,进而发起攻击的。
|
||||
|
||||
这个时候,钓鱼执法就是一个非常有效的方案了。举个例子,我们可以花钱去买一批小号,这样,我们就得到了一批被黑产掌握的账号,然后就可以去分析这些账号的历史行为了。
|
||||
|
||||
具体怎么分析呢?比如,我们可能会发现这批账号都在某一个时刻修改了密码,那么,我们就可以推测这些账号是在这个时刻被盗号的。在明确了盗号的时间和方式之后,你就可以有针对性地分析当时的数据情况,从而能发现黑产突破业务安全的防御体系的方式,然后有针对性地去完善即可。
|
||||
|
||||
这里有一点需要你注意,钓鱼执法的结果只能够帮助你完善业务安全能力,并不能作为案件打击的依据。如果你想要对这类已知的黑产进行打击,就必须基于钓鱼获得的部分信息,去挖掘出黑产整体的行为,才能够找到被法律认可的犯罪事实。
|
||||
|
||||
### 3. 案件打击
|
||||
|
||||
随着《网络安全法》的推出,国家对于安全的把控越来越严格,各地的网安、网信办等机构,都纷纷出手开始打击黑产团伙。因此,对于业务运营来说,借助法律方式打击黑产也是一个十分有效的方案。比如去年微博成功打击的[“星援”案件](https://baijiahao.baidu.com/s?id=1636105500763479864&wfr=spider&for=pc),就是警方直接抓捕了刷明星热度的一伙黑产。
|
||||
|
||||
那接下来,我就结合这个案件和你一起分析一下,想要成功发起一次案件打击,需要具备的基础条件。
|
||||
|
||||
**首先,想要打击黑产,你得知道黑产是谁**。你可能会认为这是警方的工作。但事实上,警方不熟悉你的业务,无法接触你的系统,排查起来会很困难。因此,通常需要由业务人员找出打击的目标是谁,再交由警方进行后续的处理。
|
||||
|
||||
比如,微博业务人员先是发现有人在刷转发、评论、点赞等,然后基于对这些账号的行为分析和用户的访谈,发现这些操作是由“星缘”这款App产生的,而“星缘”App又对应到了一家公司。排查到这里,警方就可以对这家公司进行线下抓捕和打击了。
|
||||
|
||||
**其次,你要明确业务损失的金额或者黑产的收益金额。**因为法院的最终判决主要还是依靠直接金额的大小,只有金额明确了,你才能够推动警方去协助你打击黑产。
|
||||
|
||||
现金类业务(如:红包、优惠券、支付等)的金额很好衡量,我们直接统计黑产成功获取的金额即可。但是,对于非现金类的业务(如:登录、评论等),我们无法准确地衡量一个用户或者一次评论的价值,因此很难给出一个可信的金额损失数目。
|
||||
|
||||
这个时候,我们可以通过黑产的收益来评估,比如黑产通过盗号或者刷评论,赚取了多少收益。这些收益属于非法收益,可以用来作为法院评判犯罪事实的参考依据。
|
||||
|
||||
在“星缘”一案中,最终评判的依据就是黑产通过提供非法服务获利上百万元。
|
||||
|
||||
**最后,当你找到了目标、明确了损失的金额之后,你还要提供证据**。但是对于网络犯罪来说,需要提供什么样的证据,其实是一个相对模糊的部分。尽管如此,我还是根据经验总结了3种常见的证据形式。
|
||||
|
||||
1.黑产服务器上的日志和其名下的资产记录是最有力的证据,它们是由警方实施抓捕后获得的信息,因此具备极高的可信度。同时,黑产的日志也能够直接表明它们的所作所为,不存在任何狡辩的空间。
|
||||
|
||||
2.在内容侵权相关的案件中比较常见的公开侵权数据。比如,竞争对手的信息流中,出现了自家公司生产的内容,这就是竞争对手采取恶意手段爬取我方数据,侵犯我方版权的明确证据。
|
||||
|
||||
3.自身服务器日志。在案件打击过程中,公司也同样需要提供一份日志作为黑产发起攻击的证明。在大部分的案件打击中,前两种证据已经能够提供直接证明了,公司提供的自身服务器日志,更多的是为警方办案提供辅助支持。
|
||||
|
||||
## 总结
|
||||
|
||||
好了,今天的内容讲完了。我们一起来回顾一下,你需要掌握的重点内容。
|
||||
|
||||
和基础安全一样,运营工作对于业务安全的长期发展意义重大。业务安全中的运营工作主要分为两个方面:业务中的黑产处理和业务之外对黑产信息的挖掘和打击。
|
||||
|
||||
在业务中处理黑产时,我们采取更加间接的方式,比如,验证码和返回假数据,能够大大降低风控误伤对正常用户的影响,同时也能够增加黑产绕过风控的难度。
|
||||
|
||||
在业务之外,通过情报收集和钓鱼执法,能够为风控系统提供持续的数据支撑,帮助风控系统完善自身的策略。除此之外,还能够通过司法手段,对黑产实施线下打击,从根本上打击黑产的嚣张气焰。
|
||||
|
||||
<img src="https://static001.geekbang.org/resource/image/8d/16/8d20dc2ec04c7be66be27d2791068b16.jpg" alt="">
|
||||
|
||||
## 思考题
|
||||
|
||||
最后,我们来看一道思考题。
|
||||
|
||||
除了我今天讲的这几种验证方式,你还见过哪些验证方式,它们的用户体验和难度如何?你能够想办法自动化地进行验证吗?
|
||||
|
||||
欢迎留言和我分享你的思考和疑惑,也欢迎你把文章分享给你的朋友。我们下一讲再见!
|
||||
Reference in New Issue
Block a user