星云 如何利用开源风控系统防止撞库?

“撞库”是非常常见的一种黑产攻击事件 。在常见的安全防护中,安全团队通常会在登陆接口设置安全策略来应对攻击 。可是,一旦黑产更换攻击规则,就会导致策略失效 。
在这种的情况下,企业业务安全部门(或者是风控部门)需要的就不仅仅的表层的“防火墙”,而是一套完整的业务风控系统,能够去快速的根据黑灰产的变化去做规则上的对抗 。
本文主要是讲一下,如何利用一套开源的业务风控系统TH-Nebule(星云)防止“撞库”攻击 。
【星云 如何利用开源风控系统防止撞库?】我会从“撞库”的基本场景开始讲,逐渐深入到对这套开源系统的使用,包括:如何部署、如何使用、和为什么需要风控系统等 。阐述为什么需要一套“系统”去解决业务安全问题,接着手把手教你部署本系统,以及如何利用这套开源的风控系统来阻断风险,并且也提供了模拟测试的方法和事例 。

TH-Nebula是由威胁猎人开源的风控系统,目前源码已放在Github上,完全开放所有源代码,文档,以及安装包 。地址:https://github.com/threathunterX/nebula
0×01 如何防止撞库
1.什么是撞库?
说到撞库,先得从”社工库”说起,社工库是社会工程学数据库的简称,这个数据库里找包含了每个人的各种行为记录(在不同网站上的账号、密码、分享的照片、信用卡记录、通话记录、短信记录、开房记录等等) 。
所以当黑客想尝试登录某个网站或者App时,就会用”社工库”里的信息去挨个尝试登录,”撞”出一个个正确账号 。
2.如何防止撞库呢?
首先从企业的web服务视角来看,如果发现以下几种情况,基本可以判定是在撞库:
a.一个账号在某个较短的时间内,有多次密码尝试;
b.一定时间内相同密码的出现频次非常高;
c.同一个 IP 或同一个设备,在短时间内使用不同账号密码多次尝试登录 。
在这种情况下,最简单粗暴的方法就是直接在登陆接口加安全策略 。
如:
针对a情况,就限制一天之内密码错误次数;
针对b情况,就针对频率特别高的密码禁止登录(或者校验手机短信/密保问题之后才能登录);
针对c情况,就对IP或者设备唯一id进行阈值限制,如限制1分钟内访问登录接口次数<50次 。
看起来简单粗暴的方法是可以起到防护作用,但实际 上,道高一尺魔高一丈,业务安全就没有一劳永逸的方案 。只要有利可图的前提下,黑灰产就会不断的变换自己的规则,来 “ 攻破 ” 业务的防护 。
比如,业务限制的是1分钟访问限制<50次,那黑产很容易就可以改成40次就能绕过你的策略,这对于他来说只是改了一行代码 。
再比如,现在互联网社会里,IP资源可以说是相当廉价,简单就从IP角度去判定可以说非常容易被绕过 。
所以业务安全的防护不是简单做一层“防火墙”就可以了,是需要有一套完整的能跟黑产持续对抗的“系统” 。
这套系统除了可以自定义策略,从各个维度在网络流量中发现风险以外,还得具备:
1)对业务访问流量的分析、统计 — 方便安全人员发现新的攻击行为从而制定新的策略;
2)策略的效果反馈的展示报表 — 方便安全人员根据策略有效性实时调整;
3)提供除了业务本身流量外的安全情报,如IP的代理标签、秒拨标签等 — 直接识别高危的流量来源 。
TH- Nebula (星云)就是这样一套系统 。它能够让企业有能力主动发现业务风险,并快速的实施攻防对抗 。星云采用旁路流量的方式进行数据采集,无需在业务逻辑上做数据埋点或侵入,同时支持本地私有化部署和Docker镜像云端部署,大大降低了使用门槛 。
系统分为两块服务
1)Nebula服务:包括风控配置分析系统,流量的接收和分析,策略引擎,风控web控制中心等模块;
2)Sniffer服务:流量的抓取服务 。
其中,流量的抓取服务这块为了做到不对业务系统本身做代码修改,提供了多种配置方式 。用户可以直接在web服务机器部署,采用旁路流量的方式获取流量;也可以通过标准化Nginx或其他http服务的输出日志,采取抓取日志的方式获取流量 。
下面就以防止撞库为例子,一步步教你把TH-Nebula风控系统跑起来 。
0×02 部署TH-Nebula开源项目


推荐阅读