蜜罐背后的影子系统探秘

一般场景下我们会在内部部署蜜罐系统,当外部有渗透时,碰到蜜罐就会报警,蜜罐会去检索攻击源的位置,确定别攻击机器的IP端口,取得payload数据,配合IDS我们可以捕获事件的过程,然后采取对应防御措施。还有一种办法,我们可以在蜜罐被触碰的时候,把流量引入到一台具体的机器上,伪装成一个正常的服务,像侦查机一样,收集攻击服务。我们以WEB服务为例,有一个接近真实的HTTP服务器,主动或是被动的配合蜜罐收集更多的数据,当蜜罐发现威胁IP时,运用动态迁移技术,将威胁服务引到到一个提新预备好的WEB服务,记录攻击行业,还原威胁事件。

负载均衡和灰度测试的WEB服务就是根据特定的用户和被访问机器的负载情况,决定将用户的请求切入到那台服务上。我们也用这种技术, 对有可以行为的攻击请求,进行环境切换。

我们用Openresty的上流反向代理来实现这种模式。

1.基础环境安装

系统最主要依赖的软件就是Openresty,Openresty的安装如下:

1.1 安装依赖软件

1.2 下载Openresty

1.3 安装Openresty

1.4 配置Openresty

2. 首先我们用Openresty、Lua快速构建一个WEB服务

2.1 安装一个演示用的Lua Web框架,名叫blues

2.2 创建一个openresty web项目

2.3 配置web服务

3. 实现影子系统切换逻辑

我们创建了3个监听服务,端口分别是8888、8082、8083,8888是主代理服务,当请求过来时,判断当前的请求IP是否被识别出蜜罐、IDS发现的威胁IP。

我们主要通过在by_balancer阶段对访问者的IP与蜜罐的威胁情报进行碰撞,发现当前访问的IP在封禁列表里,就直接将这个用户请求切换到影子系统。

然后我们在影子系统里手机这个用户的情报。

3.1 服务切换逻辑

3.2 黑名单维护逻辑

一般创建一个nginx项目,需要手动创建目录和配置文件,我们通过blues框架简单的就创建一个APP,blues实现了比较基础的库,比主说路由,JSON处理等库。这样一来,实现一个的封禁IP的存储逻辑就很简单了。

4. 模拟攻击访问

4.1 原理流程图

我们测试通过一个REST接口,在共享的字典里加入一个封禁的IP,这个IP的主要来源就是蜜罐报警给出的,我们通过一个人为的REST设定时你要测试的IP,最直接的测试,就是从日志里选出一个IP,比如“10.236.66.29”,当发现有这个来了,就直接把请求引入到8083这个服务,而如果正常的用户IP是不会加上封禁列表里。

我们直接给8888服务发送一个REST请求,通过Blues框架提供的的功能,记入到封禁列表里。

为了简单演示,我们的upstream使用的是同一台机器,但真的影子系统,需要把影子系统直接变为别的机器会是docker,或是docker套docker,docker里用openresty放影子系统。

4.2 封禁IP

4.2.1 我们通过setlist接口添加模拟封禁IP

curl -X GET http://0.0.0.0:8888/setlist -d '{"1":"xx.xxx.69.84"}'

4.2.2 显示封禁列表

通过getlist,显示当前系统内的封禁IP列表。

4.2.3 验证是否切换到影子系统

国为xx.xxx.69.84是客户端IP,当再次访问时,请求就被引导到影子系统 8083端口服务上了。

4.3 解禁IP

4.3.1 通过setlist接口重置封禁IP

curl -X GET http://0.0.0.0:8888/setlist -d '{"1":"xx.xxx.69.85"}'

4.3.2 显示封禁列表

4.3.3 验证是否切换到影子系统

我们可以看到,当封禁列表里IP与当前测试客户端的IP不匹配时,用户会引导到正常的服务端口上,不会再被引入的影子系统。

4.4 存储攻击行为日志到syslog服务器

用户的请求数据在Openrsety的日志中都可以看到,可以在Openresty里,直接配置把日志发送到远端的syslog服务器上,只要在配置文件里加入下面的代就可以:

而具体要传入什么数据到syslog服务器都是可以定制的,下面具几个常字段的例子:

4.5 把Openresty代理部署到Docker上

4.5.1 拉取较新版本的docker

docker pull openresty/openresty:1.9.15.1-trusty

4.5.2 本地端口映射

4.5.3 极简化配置

4.5.4 停止docker服务

#!/usr/bin/env bashdocker kill nginx && docker rm nginx

4.5.5 提交docker

之后可以实践将各种影子系统放到docker里。

5. 总结

这个影子系统只是做了web方式的系统,如果用户的请求不是http请求,我们也可以做出相应的影子系统,限于篇幅就介绍7层的影子,之后还会介绍tcp协议的影子系统的思路,本文代码只是说明逻辑思路流程,具体功能丰富,还要后续自己润色,关于用Openresty搭建web服务的更细节的内容,请参考资料中的连接。

6.资料

Openresty以及Blues框架的下载的位置是:

https://www.openresty.org https://github.com/shengnoah/blues.git http://openresty-reference.readthedocs.io/en/latest/ https://www.openresty.com.cn

原文发布于微信公众号 - FreeBuf(freebuf)

原文发表时间:2017-09-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏信安之路

Cobalt Strike 初体验

Cobalt Strike 一款以 metasploit 为基础的 GUI 的框架式渗透测试工具,集成了端口转发、服务扫描,自动化溢出,多模式端口监听,win ...

1070
来自专栏张戈的专栏

SEO分享:让百度删除不想收录的域名或快照的最快方法

个别网站可能会出现以下类似困扰: ①、百度收录了自己不想收录的域名,造成内容重复,比如张戈博客,百度近一半的收录是 www 的域名,而且收录的内容还是重复的!实...

9747
来自专栏hbbliyong

Windows 7笔记本创建wifi热点供手机上网教程

用智能手机的朋友会发现这样一个问题,智能手机比普通手机上网更耗流量。这是因为智能手机应用(软件)丰富,而且大部分应用都会自动联网。为此,许多人每月包了上百M的流...

3617
来自专栏Java后端技术

Maven install [WARNING] The artifact aspectj:aspectjrt:jar:1.5.4 has been relocated to org.aspectj:a

  最近在给项目打包的时候,在控制台老是出现一行警告:[WARNING] The artifact aspectj:aspectjrt:jar:1.5.4 ha...

771
来自专栏www.96php.cn

【性能优化】PHP代码输出压缩后HTML

此操作也可以归结在性能操作类别上,虽然效果不是很明显,但在一定情况下起得很好的作用,下面理几点使用该方法的原因 大流量访问页面压缩代码节省RMB,百度...

3648
来自专栏FreeBuf

混在运维部的安全员说“端口与口令安全”

? 1. 前言 先简单自我介绍一下,其实,我是一个安全工程师。现就职于某互联网金融企业负责公司整体网络安全。 刚到公司时首先是了解一些企业规则和规则制定者,当...

6073
来自专栏信安之路

【作者投稿】SOCKSTRESS攻击原理与防御

SockStress攻击正好与Syn-Flood攻击原理相悖,它正是利用建立TCP/IP三次握手连接来实现拒绝服务攻击,而且与Syn-Flood不同它并非通过耗...

1640
来自专栏阿北的知识分享

浅谈csrf攻击以及yii2对其的防范措施

今天北哥就给大家普及下csrf是啥?如果你已经知道了可以直接拉文章到底部点个赞。:smile:

1976
来自专栏码神联盟

碎片化 | 第六阶段-04-搭建nginx和Tomcat集群环境-视频

如清晰度低,可转PC网页观看高清版本: http://v.qq.com/x/page/g0500ly03ud.html Ngnix+Tomcat集群 1:修改...

2757
来自专栏西枫里博客

联通宽带FTTH,华为hg8347r改桥接模式

家里宽带升级成50M光纤到户。换了一个光猫,导致我内网DMZ主机无法远程连接了。联通安装工程师安装好后,提供的是一个限制权限的user账户。除了能关闭wifi信...

3793

扫码关注云+社区

领取腾讯云代金券