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连接服务端和客户端需要五个步骤:
- 协商版本号阶段。
- 协商密钥算法阶段。
- 认证阶段。
- 会话请求阶段。
- 互动会话阶段。
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内容。
检测此类蜜罐的步骤可分为以下步骤:
- 伪造客户端连接蜜罐mysql服务
- 成功发送连接mysql查询请求
- 接受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月,研究人员发现,研究人员发现,研究人员发现,研究人员发现,研究人员发现,研究人员发现,研究人员发现,研究人员于6月6月发现,研究人员发现Mirai的新变种Aisuru根据执行命令的上下文可以检测到检测Cowrie开源蜜罐。满足以下三个条件时Aisuru将判定为蜜罐:
- 设备名称为localhost。
- 6月22日或6月23日开始设备中的所有过程。
- 存在用户名richard。
查看Cowrie默认配置中执行源码ps6月22日或6月23日发现命令。但在最新版本中Cowrie中richard被phil更换,主机名称localhost替换为svr04。
由Aisuru根据一些具体的上下文,可以检测到蜂蜜罐的灵感。例如,最新版本Cowrie,一些命令在默认配置下得到的结果是固定的。cat /proc/meminfo 无论执行多少次,这个命令都是不变的,这个真实的系统中是不可能的。
再说Hfish蜜罐,Hfish也实现了SSH22端口默认监控协议。SSH协议也很容易通过上下文识别。telnet协议一样SSH协议在直接进行回换车时默认执行default输出test。
3.5 Fuzz testing 特征
Fuzz testing(模糊测试)这是一种安全测试方法,通过生成随机数据输入测试系统来检查系统的响应或状态,从而发现潜在的安全漏洞。一些蜜罐被借用Fuzz testing蜜罐系统是通过思想实现的netlab的 zom3y3大哥在《通过》Anglerfish蜜罐发现未知意软件的威胁Fuzz testing介绍蜂蜜罐,我们了解到以下特点:
- 响应任何端口TCP SYN Packet。
- 根据协议的特点,永远回到正确的响应。
- 返回预定义或随机返回Payload收集特征库。
蜜罐很容易手动判断,其目的是模拟蜜罐fuzzing通过预定义大量关键量关键字来干扰扫描仪。这种蜂蜜罐可以通过跨服务的特点来判断,如开放HTTP同时响应服务upnp协议,或依据server判断长度或数量。由于未知的蜂蜜罐产品提供的蜂蜜罐服务,quake将蜜罐标记为未知蜜罐,可使用语法app:”未知蜜罐”搜索。
0x04使用开源蜜罐
4.1 蜜罐分布
在确定了一些开源蜜罐的特性后,我们利用特性匹配了整个网络,发现了369161条服务数据和72948条独立服务数据ip。如图所示,全球和全国图所示。
可以看出,在这些开源蜜罐中,中国的数量最多。其中,中国台湾省占1/3,在中国排名第一。在全球省份排名中,台湾省的数量排名第一。
从ASN就分布而言,ASN数量全球TOP5如表所示。发现开源蜜罐主要部署在云制造商或教育网络中。
4.2 生命周期
结合蜜罐服务资产的数量和ASNTOP5从全年的分布可以看出,蜜罐的数量是四月、六月和十二月三个峰值。
之前讨论过蜜罐fuzz testing当发现响应中含有大量与服务相关的关键字,以干扰扫描仪的服务识别。发现服务响应中含有weblogic关键词蜜罐在11月爆发,我们知道在10月CVE-2020-14882 weblogic披露未经授权命令执行的漏洞。由此可见,这种蜂蜜罐可以根据热点漏洞灵活配置,以捕捉扫描仪。
0x05结论
本文通过蜂蜜罐协议返回特征、协议实现的缺陷和明显的缺陷WEB特征和Fuzz testing其特点分析了19种常见的开源蜂蜜罐。我们的研究发现,互联网上有369161多个蜂蜜罐服务,可以通过最简单的特性检测到,因为这些蜂蜜罐在默认配置下在互联网上开放,基本上是一种自我暴露的状态。
从全球分布来看,中国台湾省集中了大量的蜂蜜罐,全球蜂蜜罐ASN分布主要集中在云制造商和教育网络上。同时,4月、6月和12月的蜂蜜罐数量存在三个峰值,通过一些蜂蜜罐响应的关键字,蜂蜜罐的数量可能会随着热点漏洞的披露而增加。
最后,本文中所涉及的蜜罐均可在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
附录: