您当前的位置:首页 > 电脑百科 > 安全防护 > 软件工具

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

时间:2019-07-04 10:10:05  来源:  作者:

“撞库”是非常常见的一种黑产攻击事件。在常见的安全防护中,安全团队通常会在登陆接口设置安全策略来应对攻击。可是,一旦黑产更换攻击规则,就会导致策略失效。

在这种的情况下,企业业务安全部门(或者是风控部门)需要的就不仅仅的表层的“防火墙”,而是一套完整的业务风控系统 ,能够去快速的根据黑灰产的变化去做规则上的对抗。

本文主要是讲一下,如何利用一套开源的业务风控系统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开源项目

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

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

2.1 Nebula服务

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

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 配置防止撞库规则

部署完Nebula服务之后,在策略管理tag中可以看到,Nebula系统针对账号风险规则,已经默认配置了基本的防撞库策略。如下图:

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

 

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

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

0×03 模拟撞库测试

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

模拟脚本原理就是针对 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="threathunter@threathunter.cn" 
) 
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)

捕获流量的截图:

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

 


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

 

0×04 使用TH-Nebula阻断发现的风险

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

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

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

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

详细请参考文档:

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

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



Tags:撞库   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
“撞库”在网络安全中是一个古老的概念,按中文的字面意思解读,就是“碰撞数据库”的意思。“碰撞”意味着碰运气,即不一定能成功;而“数据库”中往往存储着大量敏感数据,比如我们登录一个网站所需要的用户名、密码,再比如手...【详细内容】
2020-03-07  Tags: 撞库  点击:(89)  评论:(0)  加入收藏
在黑客的世界里,我们都是“麻瓜”,更糟糕一点,就是被人剪了羊毛而犹不自知的羔羊。“撞库”是指黑客利用一些互联网用户在不同网站使用相同的账号密码的漏洞,通过收集互联网已泄...【详细内容】
2019-11-07  Tags: 撞库  点击:(119)  评论:(0)  加入收藏
“撞库”是非常常见的一种黑产攻击事件。在常见的安全防护中,安全团队通常会在登陆接口设置安全策略来应对攻击。可是,一旦黑产更换攻击规则,就会导致策略失效。在这种的情况下...【详细内容】
2019-07-04  Tags: 撞库  点击:(386)  评论:(0)  加入收藏
▌简易百科推荐
已经观察到一种新的基于JavaScript的远程访问木马(RAT)利用社会工程学传播,采用隐蔽的"无文件"技术作为其逃避检测和分析的方法。该恶意软件由Prevalyion的对抗性反情报团队(PA...【详细内容】
2021-12-17  网安老葫    Tags:恶意软件   点击:(13)  评论:(0)  加入收藏
关于windows Defender防病毒的问题升级win10后,我们会经常遇到打开或下载文件时弹出提示框提示你下载的文件是病毒之类,直接给你删除。你好不容易找了个激活工具,你刚打开发现...【详细内容】
2021-11-08  IT小哥吧    Tags:defender   点击:(47)  评论:(0)  加入收藏
喽!大家好,我是小易,欢迎来到我的知识分享站!今天给大家分享5个杀毒神器,让你的电脑干干净净,建议收藏起来哟! 1、Windows Defender随着Win10系统的更新已经日趋完善,它可以很好的解...【详细内容】
2021-11-08  知识与技能    Tags:流氓软件   点击:(74)  评论:(0)  加入收藏
介绍其实Iptables服务不是真正的防火墙,只是用来定义防火墙规则功能的"防火墙管理工具",将定义好的规则交由内核中的netfilter即网络过滤器来读取,从而真正实现防火墙功能。fil...【详细内容】
2021-10-18  互联网IT技术全栈    Tags:   点击:(52)  评论:(0)  加入收藏
什么是Nessus?Nessus 是目前全世界最多人使用的系统漏洞扫描与分析软件。总共有超过75,000个机构使用Nessus 作为扫描该机构电脑系统的软件步骤如下:查看当前kali系统内核版本...【详细内容】
2021-09-09  TestGO    Tags:Nessus   点击:(112)  评论:(0)  加入收藏
http 头部信息http头部信息经常包含着主机服务的一些版本信息,经常使用的字段信息有:Server, X-Powered-By, X-AspNet-Version工具可采用curl进行curl --location --head $URL...【详细内容】
2021-08-19  80后IT老民工    Tags:渗透   点击:(227)  评论:(0)  加入收藏
一、杀软常见的三种方式二、免杀的三种常用方式三、利用工具实现免杀1、veil工具基础实现免杀+进阶2、venom免杀3、利用kali自带的shellter进行免杀4、利用avet实现免杀四、...【详细内容】
2021-08-18  白帽hacker淬炼    Tags:免杀   点击:(82)  评论:(0)  加入收藏
关于工具现有工具现在,现成的污点分析工具已经有很多了。其中,我最感兴趣的是Triton和bincat,因为两者已经相当成熟。然而,我们却无法使用这两种工具,因为它们不支持目标设备所...【详细内容】
2021-08-12  Hbo涵    Tags:安全漏洞   点击:(94)  评论:(0)  加入收藏
从实现原理上分,防火墙的技术包括四大类:网络级防火墙、应用级网关、电路级网关和规则检查防火墙。1、网络级防火墙一般是基于源地址和目的地址、应用、协议以及每个IP包的端...【详细内容】
2021-07-20  趣谈文化  搜狐号  Tags:防火墙   点击:(225)  评论:(0)  加入收藏
一、VMware部分1、Vmware简介虚拟机就是一个用来模拟真实的物理机环境的一个软件,可以在虚拟机中安装不同版本的操作系统。就是一个把下载好的ISO安装在物理机操作系统的一个...【详细内容】
2021-07-12  Kali与编程  公众号  Tags:Kali Linux   点击:(113)  评论:(0)  加入收藏
相关文章
    无相关信息
最新更新
栏目热门
栏目头条