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

在企业发展过程中,日益增多的业务形态往往会招致新的业务风险。简单的业务防护已经不足以解决问题。一套完整的业务风控系统可以帮助企业有效的规避风险,降低损失。

TH-Nebula(星云)是威胁猎人开源的业务风控系统。在业务安全应用门槛普遍过高的当下,我们希望以开源的方式,降低大家的学习使用门槛,能以更低的成本,完成风控体系从无到有的搭建,在使用过程中意识到风控的重要性。

自TH-Nebula(星云)发布以来,考虑到大家在如何部署、如何使用、和为什么需要风控系统上能还存在一些问题。

本文以如何防止撞库场景为例,阐述为什么需要一套“系统”去解决业务安全问题,接着手把手教你部署本系统,以及如何利用咱们这套风控来阻断风险,并提供模拟测试demo。

附项目git地址:

https://github.com/threathunterX/nebula

1 如何防止撞库

1.1 什么是撞库?

说到撞库,先得从”社工库”说起,社工库是社会工程学数据库的简称,这个数据库里找包含了每个人的各种行为记录(在不同网站上的账号、密码、分享的照片、信用卡记录、通话记录、短信记录、开房记录等等)。

所以当黑客想尝试登录某个网站或者APP时,就会用”社工库”里的信息去挨个尝试登录,”撞”出一个个正确账号。

1.2 如何防止撞库?

从企业的Web服务视角来看,如果发现以下几种情况,基本可以判定是在撞库:

一个账号在某个较短的时间内,有多次密码尝试。

一定时间内相同密码的出现频次非常高

同一个ip或同一个设备,在短时间内使用不同账号密码多次尝试登录

在这种情况下,最简单粗暴的方法就是直接在登陆接口加安全策略。

如:

针对a情况,就限制一天之内密码错误次数。

针对b情况,就针对频率特别高的密码禁止登录(或者校验手机短信/密保问题之后才能登录)。

针对c情况,就对ip或者设备唯一id进行阈值限制,如限制1分钟内访问登录接口次数<50次

看起来简单粗暴的方法是可以起到防护作用,但实际上,道高一尺魔高一丈,业务安全就没有一劳永逸的方案。

在有利可图的前提下,黑灰产就会不断的变换自己的规则,来”攻破”业务的防护。

比如,业务限制的是1分钟访问限制<50次,那黑产很容易就可以改成40次就能绕过你的策略,这对于他来说只是改了一行代码。

再比如现在互联网社会里,ip资源可以说是相当廉价,简单就从ip角度去判定可以说非常容易被绕过。

所以业务安全的防护不是简单做一层”防火墙”就可以了,是需要有一套完整的能跟黑产持续对抗的”系统”。

这套系统除了可以自定义策略,从各个维度在网络流量中发现风险以外,还得具备:

对业务访问流量的分析、统计  — 方便安全人员发现新的攻击行为从而制定新的策略

策略的效果反馈的展示报表   — 方便安全人员根据策略有效性实时调整

提供除了业务本身流量外的安全情报,如ip的代理标签、秒拨标签等  — 直接识别高危的流量来源

TH-Nebula(星云)就是这样一套系统。它能够让企业有能力主动发现业务风险,并快速的实施攻防对抗。星云采用旁路流量的方式进行数据采集,无需在业务逻辑上做数据埋点或侵入,同时支持本地私有化部署和Docker镜像云端部署,大大降低了使用门槛。

该系统主要包含两块服务

Nebula服务:包括风控配置分析系统,流量的接收和分析,策略引擎,风控web控制中心等模块

Sniffer服务:流量的抓取服务

其中,流量的抓取服务这块为了做到不对业务系统本身做代码修改,提供了多种配置方式。用户可以直接在Web服务机器部署,采用旁路流量的方式获取流量;也可以通过标准化nginx或其他http服务的输出日志,采取抓取日志的方式获取流量

下面就以防止撞库为例子,一步步教你把TH-Nebula(星云)风控系统跑起来。

1 部署TH-Nebula开源项目

如上所述Nebula开源项目分为Sniffer流量抓取服务、Nebula服务两块,建议直接采用Docker方式部署,部署参考如下github文档:

https://github.com/threathunterX/nebula_doc/blob/master/chapter2/section2/section2.2.md

2.1 Nebula服务

运行./ctrl.sh status,状态如下则部署成功:

Name Command State Ports

--------------------------------------------------------------------------------------------------

nebula            /entrypoint.sh /usr/bin/su ...  Up      0.0.0.0:9001->9001/tcp

nebula-aerospike  /entrypoint.sh asd --foreg ...  Up      3000/tcp, 3001/tcp, 3002/tcp, 3003/tcp

nebula-db          docker-entrypoint.sh mysqld      Up      3306/tcp

nebula-redis      docker-entrypoint.sh redis ...  Up      0.0.0.0:16379->6379/tcp

cron                              RUNNING  pid 27, uptime 4 days, 22:23:47

java_web                          RUNNING  pid 33, uptime 4 days, 22:23:47

labrador                          RUNNING  pid 10286, uptime 2 days, 21:26:41

nebula:incident_babel_db_writer  RUNNING  pid 19, uptime 4 days, 22:23:47

nebula:nebula_db_query_web        RUNNING  pid 12, uptime 4 days, 22:23:47

nebula:nebula_offline            RUNNING  pid 14, uptime 4 days, 22:23:47

nebula:nebula_online              RUNNING  pid 19720, uptime 0:29:22

nebula:nebula_query_web          RUNNING  pid 15, uptime 4 days, 22:23:47

nebula:nebula_web                RUNNING  pid 11, uptime 4 days, 22:23:47

nebula:notice_babel_db_writer    RUNNING  pid 13, uptime 4 days, 22:23:47

nginx                            RUNNING  pid 29, uptime 4 days, 22:23:47

  

2.2 Sniffer服务

这里为了方便后面模拟测试,建议就直接采用最简单旁路流量方式(bro驱动)启动Sniffer服务,即git上默认配置:

....

- SOURCES=default

#default driver

- DRIVER_INTERFACE=eth0

- DRIVER_PORT=80,8080,9001

....

说明:

DRIVER_PORT代表监听的流量端口,此处除了监听80,8080外。还监听了9001端口的流量,这是为了方便测试,可以捕获到Nebula服务自身的Web控制中心流量。实际生产环境可以去掉

把Nebula和Sniffer两块服务正常启动起来,则可通过 http://IP:9001端口的方式访问 TH-Nebula界面了,如图:

2.3 配置防止撞库规则

参考github教程部署完之后,运行./ctrl.sh status可查看Nebula服务的运行状态,如下图则代表部署成功,默认配置下Nebula的Web控制中心是通过9001端口访问:

用户也可以自定义新规则或者修改默认规则,参考如下github文档:

https://github.com/threathunterX/nebula_doc/blob/master/chapter3/section3/section3.1.md

3 模拟撞库测试

部署并配置好规则之后,接下来就是通过模拟撞库的过程,校验系统的风险检测逻辑。

模拟脚本原理就是针对Sniffer模块监听的9001端口连续发起1000次登录请求(这里为了方便测试没有在服务端实现login接口,但风控系统对于404的访问也同样会捕获到)。具体python代码如下:

#!/usr/bin/env python

# -*- coding: utf-8 -*-

from requests import get

from requests import put

from requests import post

from requests import delete

port = 9001

class NewRequestsData(object):

def __init__(self, url, data, cookies, method=‘get‘):

self.data = data

self.url = url

self.cookies = cookies

self.method = method

def request(self):

m = dict(

get=get,

put=put,

post=post,

delete=delete,

)

method = m[self.method]

text = ‘默认模式‘

code = ‘None‘

header = {

"connection": "close",

"content-type": ‘application/json‘,

}

try:

if self.method in [‘get‘, ‘delete‘]:

response = method(self.url, params=self.data, cookies=self.cookies, timeout=10,

headers=header)

elif self.method in [‘post‘, ‘put‘]:

data = dumps(self.data, ensure_ascii=False).encode(‘utf8‘)

response = method(self.url, data=data, timeout=8, headers=header, cookies=self.cookies)

else:

raise ValueError

text = response.text

code = response.status_code

except Exception as e:

print("error", e)

finally:

return (text, code)

def attack_login():

data = dict(

username="[email protected]"

)

r = NewRequestsData(‘http://127.0.0.1:{}/login‘.format(port), data, {})

code, text = r.request()

if __name__ == ‘__main__‘:

i = 0

for i in range(1000):

attack_login()

print(‘总访问次数:‘, i)

捕获流量的截图:

4 使用TH-Nebula阻断发现的风险

由于 TH-Nebula 属于旁路分析模式,所以无法主动拦截风险事件,需要与企业端应用进行集成后实现自动阻断的功能。

针对业务系统拉黑阻断,系统提供以下两种风险数据获取方法:

主动推送:TH-Nebula 可以将分析发现的风险推送至拦截节点进行自动的风险阻断。

被动调用:TH-Nebula 可以将分析发现的风险名单以接口方式提供给拦截节点调用判断风险。

详细请参考文档:

https://github.com/threathunterX/nebula_doc/blob/master/chapter3/section5.md

以上就是通过部署TH-Nebula开源风控系统,配置防撞库策略的整套流程。

在系统使用过程中,如遇任何疑问,可在Github进行反馈:

https://github.com/threathunterX/nebula

原文地址:https://www.cnblogs.com/threathunter/p/10943557.html

时间: 2024-11-09 03:21:43

如何利用开源风控系统(星云)防止撞库?的相关文章

电商实时交易风控系统

1.课程名称 2.课程目标 1.了解电子商务交易的风险点 2.了解电子商务交易中风险点的处理策略 3.利用Storm技术开发基于规则判定的风控系统 4.掌握企业中风控系统的一般架构和业务流程 3.背景知识 3.1.信用卡的交易风险及常见策略 3.1.1.用户逾期风险控制 用户主动.被动对正常消费的金额产生逾期 通过滞纳金进行处理 3.1.2.虚假交易风险控制 3.1.2.1.配合商家进行虚假交易 通过中介公司.皮包公司,在该机构虚假下单,扣除一些的返点. 3.1.2.2.找朋友刷单刷卡 朋友较大

京东基于Spark的风控系统架构实践和技术细节

京东基于Spark的风控系统架构实践和技术细节 时间 2016-06-02 09:36:32  炼数成金 原文  http://www.dataguru.cn/article-9419-1.html 主题 Spark软件架构 1.背景 互联网的迅速发展,为电子商务兴起提供了肥沃的土壤.2014年,中国电子商务市场交易规模达到13.4万亿元,同比增长31.4%.其中,B2B电子商务市场交易额达到10万亿元,同比增长21.9%.这一连串高速增长的数字背后,不法分子对互联网资产的觊觎,针对电商行业的恶

【方案】去哪儿网徐磊:如何利用开源技术构建日处理130亿+的实时日志平台?

转自:http://mp.weixin.qq.com/s?__biz=MzIzMzEzODYwOA==&mid=2665284466&idx=1&sn=2b06a529821734e36e26e642424f24fc&scene=2&srcid=0527p3qISp6dFqGg8iLIYgRF&from=timeline&isappinstalled=0#wechat_redirect [本文系互联网技术联盟(ITA1024)原创首发,转载或节选内容

【转】【干货】第三方支付风控系统架构与运作机制阐述!

第三方电子支付是一个高风险的行业,这就意味着第三方电子支付公司必然要与各种不确定性相伴.从风险受益的角度来看,第三方电子支付公司存在的价值不在于其能消灭不确定性,消灭风险,而在于其能在对风险有较深入认识的基础上控制和管理风险,将风险配置到愿意并能承担风险的主体,并使其获得收益.风险控制系统目标是实现对各个业务部门.渠道和产品线和相关人员监测,通过对运营业务交易的实时分析.事中和事后分析.跟踪和处理的方法实现欺诈风险预警的自动化.通过对交易的监测,可以识别那些是高风险交易,以及早发现其欺诈的可能性

【干货】第三方支付风控系统架构与运作机制阐述

<转自http://www.sohu.com/a/2793317_116173> 第三方电子支付是一个高风险的行业,这就意味着第三方电子支付公司必然要与各种不确定性相伴.从风险受益的角度来看,第三方电子支付公司存在的价值不在于其能消灭不确定性,消灭风险,而在于其能在对风险有较深入认识的基础上控制和管理风险,将风险配置到愿意并能承担风险的主体,并使其获得收益.风险控制系统目标是实现对各个业务部门.渠道和产品线和相关人员监测,通过对运营业务交易的实时分析.事中和事后分析.跟踪和处理的方法实现欺诈风

开源日志系统比较:scribe、chukwa、kafka、flume

1. 背景介绍 许多公司的平台每天会产生大量的日志(一般为流式数据,如,搜索引擎的pv,查询等),处理这些日志需要特定的日志系统,一般而言,这些系统需要具有以下特征: (1) 构建应用系统和分析系统的桥梁,并将它们之间的关联解耦: (2) 支持近实时的在线分析系统和类似于Hadoop之类的离线分析系统: (3) 具有高可扩展性.即:当数据量增加时,可以通过增加节点进行水平扩展. 本文从设计架构,负载均衡,可扩展性和容错性等方面对比了当今开源的日志系统,包括facebook的scribe,apac

利用开源软件strongSwan实现支持IKEv2的企业级IPsec VPN,并结合FreeRadius实现AAA协议(下篇)

续篇—— 利用开源软件strongSwan实现支持IKEv2的企业级IPsec VPN,并结合FreeRadius实现AAA协议(上篇) 上篇文章写了如何构建一个支持IKEv2的VPN,本篇记录的是如何利用freeradius,以及结合Daloradius进行VPN的 Web 管理.先让freeradius做个自述吧. 一.Radius 介绍 远端用户拨入验证服务(RADIUS, Remote Authentication Dial In User Service)是一个AAA协议,意思就是同时

利用开源软件搭建JAVA工程CI&CD自动化工具链

JAVA传统项目交付流程的问题 开发和运维间环境有明显差异 代码缺乏统一质量度量 客户要求上线时间紧,人工测试慢,导致测试不充分,时常做线上BUG修复 打造工具链 ● 源码管理Gitlab● 持续集成Jenkins● 代码扫描SonarQube● 接口测试PostMan+NewMan● 制品管理ArtifactoryOSS版本(仅支持Maven)● 自动部署Ansible GitLab安装 vim /etc/yum.repos.d/gitlab-ce.repo [gitlab-ce] name=

小米开源监控系统Open-Falcon安装使用笔记

前言 近期爆出Zabbix有严重bug,加上一直对zabbix的性能.UI不满.所以这次想钻研一下最近很火的open-falcon,源于小米公司的开源项目,赞一个. 一.官网介绍 监控系统是整个运维环节,乃至整个产品生命周期中最重要的一环,事前及时预警发现故障,事后提供翔实的数据用于追查定位问题.监控系统作为一个成熟的运维产品,业界有很多开源的实现可供选择.当公司刚刚起步,业务规模较小,运维团队也刚刚建立的初期,选择一款开源的监控系统,是一个省时省力,效率最高的方案.之后,随着业务规模的持续快速