0x01前言

蜜罐是网络红蓝攻防对抗中检测威胁的重要产品。防守方常常利用蜜罐分析攻击行为、捕获漏洞、甚至反制攻击者。攻击方可以通过蜜罐识别技术来发现和规避蜜罐。因此,我们有必要站在红队攻击者的角度钻研蜜罐识别的方式方法。

0x02介绍

蜜罐是一种安全威胁的检测技术,其本质在于引诱和欺骗攻击者,并且通过记录攻击者的攻击日志来产生价值。安全研究人员可以通过分析蜜罐的被攻击记录推测攻击者的意图和手段等信息。

根据蜜罐的交互特征,可以分为低交互蜜罐和高交互蜜罐。后者提供了一个真正的易受攻击的系统,为的就是让攻击者认为自己在攻击一个真实的系统,在一些甲方实际的蜜罐建设中还提出了使用真实的服务组件构建蜜罐系统的想法。低交互蜜罐则没有这么复杂,其提供了一个不完善的交互系统,有的甚至仅仅模拟了一个响应。互联网中的低交互蜜罐大部分为开源蜜罐。由于其特有的开放特性,人们能够对其特征进行识别和规避。

在本次浅析的过程中,探测的目标为使用了默认配置的开源蜜罐。我们调查了19种开源蜜罐和Fuzz testing 特征蜜罐。本次浅析的目的是从攻击者角度出发找出开源蜜罐的特征,同时完成了多种开源蜜罐全网的分布。本次分析的蜜罐如表2-1所示。

表2-1 本次分析的蜜罐

0x03基于特征的蜜罐检测

3.1 协议的返回特征

部分开源蜜罐在模拟各个协议时,会在响应中带有一些明显的特征,可以根据这些特征来检测蜜罐。

拿Dionaea 的Memcached协议举例,在实现Memcached协议时Dionaea把很多参数做了随机化,但是在一些参数如:version、libevent和rusage_user等都是固定的。

可以通过组合查询其固定参数来确定蜜罐,其他蜜罐在协议上的特征如表3-1所示。

表3-1 协议响应特征的蜜罐

3.2 协议实现的缺陷

在部分开源的蜜罐中模拟实现部分协议并不完善,我们可以通过发送一些特定的请求包获得的响应来判断是否为蜜罐。

3.2.1 SSH协议

SSH协议(Secure Shell)是一种加密的网络传输协议,最常用的是作为远程登录使用。SSH服务端与客户端建立连接时需要经历五个步骤:

1、协商版本号阶段。

2、协商密钥算法阶段。

3、认证阶段。

4、会话请求阶段。

5、交互会话阶段。

SSH蜜罐在模拟该协议时同样要实现这五个步骤。Kippo 是一个已经停止更新的经典的SSH蜜罐,使用了twisted来模拟SSH协议。在kippo的最新版本中使用的是很老的twistd 15.1.0版本。该版本有个明显的特征。在版本号交互阶段需要客户端的SSH版本为形如SSH-主版本-次版本 软件版本号,当版本号为不支持的版本时,如SSH-1.9-OpenSSH_5.9p1就会报错“bad version 1.9”并且断开连接。通过Kippo的配置来看,仅仅支持SSH-2.0-X和SSH-1.99-X两个主版本,其他主版本都会产生报错。

3.2.2 Mysql协议

部分Mysql蜜罐会通过构造一个恶意的mysql服务器,攻击者通过连接恶意的mysql服务器后发送一个查询请求,恶意的mysql服务器将会读取到攻击者指定的文件。

最早的如https://github.com/Gifts/Rogue-MySql-Server, 可以伪造一个恶意的mysql服务器,并使用mysql客户端连接,如下图可见恶意的mysql服务器端已经成功读取到了客户端的/etc/password内容。

检测此类蜜罐的步骤可分为如下几步:

1、伪造客户端连接蜜罐mysql服务

2、连接成功发送mysql查询请求

3、接受mysql服务器响应,通过分析伪造的mysql客户端读取文件的数据包得到的报文结构:文件名长度+1 + \x00\x00\x01\xfb + 文件名

那么我们就可以通过socket构造对应的流程即可识别伪造的mysql服务器,并抓取读取的文件名。

3.2.3 Telnet协议

Hfish 蜜罐中实现了Telnet协议,默认监听在23端口。模拟的该协议默认无需验证,并且对各个命令的结果都做了响应的模板来做应答。在命令为空或者直接回车换行时,会响应default模板,该模板内容为test。因此可以利用这个特征进行该蜜罐在telnet服务上的检测如图所示。

3.3 明显的WEB的特征

部分开源蜜罐提供了web服务,这些web服务中常常会带有一些明显的特征,可以根据这些特征来检测蜜罐。如特定的js文件、build_hash或者版本号等。

还是拿Hfish举例。HFIsh在默认8080端口实现了一个WordPress登录页面,页面中由一个名为x.js的javascript文件用来记录尝试爆破的登录名密码。直接通过判断wordpress登录页是否存在x.js文件就可判断是否为蜜罐。

还有glastopf蜜罐,其没做任何伪装是最明显的。可以通过页面最下方的blog comments的输入框进行识别。

其他的常见的开源蜜罐在WEB上的特征如下表所示。

表3-2 具有明显WEB特征的蜜罐

3.4 上下文特征

部分开源蜜罐存在命令执行上下文明显的特征,本节以Cowrie和Hfish为例。

2020年6月份研究人员发现Mirai的新变种Aisuru检测可以根据执行命令的上下文检测到Cowrie开源蜜罐。当满足如下三个条件时Aisuru将会判定为蜜罐:

1、设备名称为localhost。

2、设备中所有进程启动于6月22日或6月23日。

3、存在用户名richard。

查看Cowrie源码在默认配置中执行ps命令,发现进程的启动时间都在6月22或6月23。不过在最新版的Cowrie中richard被phil替换,并且主机名由localhost替换为svr04。

由Aisuru的启发,是可以根据一些特定的上下文来检测蜜罐的。比如最新版的Cowrie,在默认配置下一些一些命令得到的结果是固定不变的。如:cat /proc/meminfo 这个命令无论执行多少次得到的内容都是不变的,而这真实的系统中是不可能的。

再说Hfish蜜罐,Hfish同样也实现了SSH协议,默认监听在22端口。该蜜罐的SSH协议同样可以很容易的通过上下文识别出来。和telnet协议一样SSH协议在直接进行回车换行时会默认执行default输出test。

3.5 Fuzz testing 特征

Fuzz testing(模糊测试)本是一种安全测试的方法,通过产生随机的数据输入测试系统查看系统响应或者状态,以此发现潜在的安全漏洞。部分蜜罐借用Fuzz testing的思想实现了蜜罐系统,通过netlab的 zom3y3大哥在《通过Anglerfish蜜罐发现未知的恶意软件威胁》种对Fuzz testing蜜罐的介绍,我们得知有以下几点特征:

1、响应任意端口的TCP SYN Packet。

2、根据协议特征,永远返回正确的响应。

3、返回预定义或者随机的Payload特征库集合。

该蜜罐很容易通过人工判断,其目的为模拟蜜罐fuzzing特征,通过预定义大量的关键字实现对扫描器的干扰。该类蜜罐可以通过跨服务的特征进行判断,如开放了HTTP服务同时响应了upnp协议,或者根据server的长度或者个数来判断。由于未知哪种蜜罐产品提供的这个蜜罐服务,quake将此蜜罐标记为未知蜜罐,可以使用语法app:”未知蜜罐”搜索。

0x04开源蜜罐的使用情况

4.1 蜜罐分布

在确定了部分开源蜜罐的特征后,我们利用特征进行了全网匹配,发现了369161条服务数据和72948个独立ip。全球和全国蜜罐分布如图所示。

可以看到在这些开源蜜罐中,中国的数量是最多的。其中,中国台湾占据了1/3,位于国内第一。并且在全球省份排名中,台湾省的数量是第一的。

从ASN的分布上来看,ASN数量全球TOP5如表所示。发现开源蜜罐主要还是部分部署在云厂商或者教育网中。

4.2 生命周期

结合蜜罐服务资产数和ASNTOP5全年的分布可以看,蜜罐数量在全年由三个峰值,分别为四月、六月和十二月。

在之前讨论蜜罐的fuzz testing时,发现在响应中含有大量与服务有关的关键词,用来干扰扫描器服务识别。其中发现在服务的响应中含有weblogic关键词的蜜罐在十一月开始爆发,我们知道在十月份CVE-2020-14882 weblogic未授权命令执行漏洞被披露出来。由此可以看出此类蜜罐可根据热点漏洞进行进行灵活配置,以达到捕捉扫描器的目的。

0x05结论

本文通过蜜罐协议返回特征、协议实现的缺陷、明显的WEB特征和Fuzz testing的特征对常见的19种开源蜜罐进行了分析。我们的研究发现,互联网中存在有超过369161个蜜罐服务,这些蜜罐都可以通过最简单的特征被检测出来,因为这些蜜罐都是在默认配置情况下被开放在互联网上,基本上是一种自我暴露的状态。

从全球分布上来看中国台湾集中了大量的蜜罐,在全球蜜罐的ASN分布中,主要集中在云厂商和教育网络中。同时在全年的蜜罐数量上在四月份、六月份和十二月份存在三个峰值,并且通过部分蜜罐响应的关键字来看,蜜罐的数量可能会随着热点漏洞的披露而增长。

最后,本文中所涉及的蜜罐均可在Quake中搜索,我们提供了三种渠道:

1、直接搜索特定蜜罐,搜索语法见附录(所有用户可用)。

2、使用 type:”蜜罐” 获取全网全量蜜罐设备(高级会员、终身会员可用)。

3、 在Quake专题栏目中直接查看,专题地址如下:

https://quake.360.cn/quake/#/specialDetail/5ff5678693fe78dcaa8b2f09

0x06参考

[1] 蜜罐技术研究新进展[J]. 石乐义,李阳,马猛飞. 电子与信息学报. 2019(02)

[2] 基于数据包分片的工控蜜罐识别方法[J]. 游建舟,张悦阳,吕世超,陈新,尹丽波,孙利民. 信息安全学报. 2019(03)

[3] VETTERL, A., AND CLAYTON, R. Bitter harvest: Systematically fingerprinting low- and medium-interaction honeypots at internet scale.In 12th USENIX Workshop on Offensive Technologies, WOOT’18.

[4] http://books.gigatux.nl/mirror/honeypot/final/ch09lev1sec1.html

[5] https://mp.weixin.qq.com/s/_hpJP6bTuoH-3cQtDawGOw

[6] https://www.avira.com/en/blog/new-mirai-variant-aisuru-detects-cowrie-opensource-honeypots

[7] https://hal.archives-ouvertes.fr/hal-00762596/document

[8] https://subs.emis.de/LNI/Proceedings/Proceedings170/177.pdf

[9] https://www.freebuf.com/articles/ics-articles/230402.html

[10] http://russiansecurity.expert/2016/04/20/mysql-connect-file-read/

[11] https://github.com/mushorg/conpot

[12] https://github.com/cowrie/cowrie

[13] https://github.com/DinoTools/dionaea

[14] https://github.com/jordan-wright/elastichoney

[15] https://github.com/bontchev/elasticpot

[16] https://github.com/mushorg/glastopf

[17] https://github.com/hacklcx/HFish/

[18] https://github.com/omererdem/honeything

[19] https://github.com/desaster/kippo

[20] https://github.com/madirish/kojoney2

[21] https://github.com/jrwren/nepenthes

[22] https://github.com/thinkst/opencanary

[23] https://github.com/Gifts/Rogue-MySql-Server

[24] https://github.com/jaksi/sshesame

[25] https://github.com/Cymmetria/weblogic_honeypot

[26] https://github.com/bg6cq/whoisscanme

[27] https://github.com/zeroq/amun

[28] https://github.com/foospidy/HoneyPy

[29] https://github.com/Cymmetria/StrutsHoneypot

附录:

kippo mysql_浅析开源蜜罐识别与全网测绘相关推荐

  1. 浅析开源蜜罐识别与全网测绘(安全客)

    前言 蜜罐是网络红蓝攻防对抗中检测威胁的重要产品.防守方常常利用蜜罐分析攻击行为.捕获漏洞.甚至反制攻击者.攻击方可以通过蜜罐识别技术来发现和规避蜜罐.因此,我们有必要站在红队攻击者的角度钻研蜜罐识别 ...

  2. Kippo开源蜜罐技术-尚文网络xUP楠哥

    #说在前面 蜜罐(Honeypot)技术在安全圈子里算是一种主动助御技术,其实早在20年前就已经存在,是入侵检测技术的一个重要发展方向.当时,一帮荷兰黑客尝试黑进大名鼎鼎的贝尔实验室的系统(此时在想, ...

  3. 一种工控蜜罐识别与反识别技术研究与应用实践

    一.概述 本文章结合作者在资产探测.入侵检测.网络攻防.蜜罐研究相关工作中大量实践,在此对工控蜜罐识别与反识别的技术进行研究与应用实践与大家进行分享与探讨. 工控蜜罐通常指非真实工控设备,通常指应用服 ...

  4. 谁是鱼谁是饵?红队视角下蜜罐识别方式汇总

    引言 蜜罐技术本质上是对网络攻击方进行欺骗的一项技术,通过在服务上布置一些仿真的系统.网络服务.或是模拟一些物联网设备来诱惑攻击方对其实施攻击从而捕获攻击行为.分析攻击手段与方式.或是收集一些攻击者的 ...

  5. 简单的蜜罐以及开源蜜罐HFish的安装与配置

    目录 1.蜜罐的定义 2.蜜罐的类型 2.1.实系统蜜罐 2.2.伪系统蜜罐 3. 蜜罐的作用 4. 蜜罐系统架构 . 推荐的开源蜜罐系统 HFish 1.HFish的优点 2.HFish架构 3.H ...

  6. 基于Python的开源人脸识别库:离线识别率高达99.38%

    基于Python的开源人脸识别库:离线识别率高达99.38% 2019年04月18日 18:13:18 AI终结者 阅读数 1233 项目地址:https://github.com/ageitgey/ ...

  7. 基于开源蜜罐的实践与功能扩展

    0×00 前言 具有一定规模的公司都会有自己的机房,当网络规模和硬件系统到达一定程度,就需要跟进各种安全预警防护手段,而蜜罐系统就是一种常见的防护手段之一,蜜罐主要是通过在网络环境当中,用虚拟各种真实 ...

  8. Python人脸识别教程 - 基于Python的开源人脸识别库:离线识别率高达99.38%

    Python人脸识别教程 - 基于Python的开源人脸识别库:离线识别率高达99.38% 仅用 Python 和命令行就可以实现人脸识别的库开源了.该库使用 dlib 顶尖的深度学习人脸识别技术构建 ...

  9. 开源程序识别图像像素点_开源浏览器扩展程序,可放大图像

    开源程序识别图像像素点 您是否曾经浏览过网站并希望看到更大的图像? 这无时无刻不在我身上发生,要做到这一点并不总是那么容易. 有时,我在源代码中进行筛选,使用Ctrl + F搜索图像,复制图像源地址并 ...

  10. 开源身份证识别_新的开源:金钱,公司和身份

    开源身份证识别 PayPal开源负责人 Danese Cooper在OSCON第2天上午的主题演讲中谈到了开源的可持续性,并结合了开源的一些历史以及她自己的贤哲建议. 她开始大声疾呼. 我们赢了! 但 ...

最新文章

  1. C#使用RSA加密解密文件
  2. 2019.4.1 数据库连接池
  3. Oracle错误代码:ORA-28002导致密码消失
  4. JAVA校内报纸实验_实验(实训)中心2011—2012学年第二学期工作计划
  5. mysql滚动条不见了,11-JS处理滚动条
  6. python实现带头结点的单链表的就地逆置_带头结点的单链表就地逆置 (10 分)...
  7. php 小程序生成海报,轻松生成小程序分享海报
  8. DDR核心频率、工作频率,等效频率详解
  9. 压缩包文件密码如何找回
  10. c语言汇率转换代码_拜求c语言编写的人民币大小写转换的代码!
  11. 设置Hi提醒实现机器人盯盘|自动监测股票价格达到条件推送消息通知
  12. 导数的四则运算法则_【数学】求导的方法之四则运算法则
  13. oral-b app Android,oral b app
  14. 论代码书写规范的重要性——分享一篇良好的代码书写规范,从小白开始培养..(表示太难了吧)
  15. 高通MDM平台-分区表
  16. 2019保研南京大学软件学院后的一些感想
  17. wrapper-windows-x86 window 10安装
  18. Nodejs中的Buffer
  19. 杭电 2191 悼念512汶川大地震遇难同胞—珍惜现在,感恩生活
  20. java poi 3.14_poi 3.14 jar包下载|

热门文章

  1. 对异常 java.lang.IllegalStateException: getAttribute: Session already invalidated的理解
  2. go语言处理html文件,go语言操作文件实例笔记
  3. Similarity-Preserving Knowledge Distillation
  4. customer-service项目重构总结
  5. Vue2实现长按图片识别二维码
  6. SQL如何还原数据库
  7. less06 引入(importing)
  8. c#语言输出字符串长度,C#获取字符串长度(string.Length)
  9. 小进阶:数据指标体系和数据治理的管理
  10. CAS (4) —— CAS浏览器SSO访问顺序图详解(CAS Web Flow Diagram by Example)