什么是蜜罐
蜜罐就像做陷阱捕鸟时撒的一把小米,引诱不谙世事的小鸟走进陷阱。在网络安全领域中,它也扮演入侵者的诱饵,蜜罐的设计看起来像是你应用程序的一部分,主要用于吸引入侵者远离真实的资产。说白了,蜜罐就是"虚假"企业资产,通过故意暴露出一些漏洞或者弱点引诱攻击者先攻击自己,"拖慢"攻击者的进度或者及时给安全团队提供预警。
由于蜜罐并没有向外界提供真正有价值的服务,因此所有试图与其进行连接的行为均可认为是攻击者发出的,同时,攻击者也会在蜜罐上浪费部分时间,起到延缓对内网有价值目标攻击的作用。
显著优势
由于蜜罐就是被设计用来诱捕攻击行为的,因此所有捕获的数据都是攻击行为强相关的,可以说蜜罐捕获到的信息是很优秀的威胁情报来源;
同时由于减少了正常流量数据的“干扰”,基于蜜罐数据的入侵检测算法可以较容易获得很低的误报率和漏报率,进而有更大的概率捕获新的攻击方式。
劣势
资源消耗、管理复杂度提升、维护成本上升
蜜罐有点像刀尖上跳舞,就像虚拟机逃逸漏洞一样,蜜罐如果被逃逸其实是很危险的,因此我不太喜欢主动式蜜罐,更希望蜜罐在内部只是一个被动工具
有经验的入侵者有很多指纹,他们能识别出蜜罐并避免与之交互,在这种情况下,蜜罐就没有任何存在的意义
分类
按照应用分类太复杂了,例如可以有客户端蜜罐、DB蜜罐、主机蜜罐等等,业界更流行按照交互模式分类:
纯蜜罐(Pure honeypots) & 高交互蜜罐(High-interaction honeypots):包含脱敏后的真实数据,一切环境看起来都和生产环境一致,类似测试环境一样,一般认为纯蜜罐基于真实机器,而高交互蜜罐基于虚拟化技术;
低交互蜜罐(Low-interaction honeypots):批量部署来模拟网络中的基本服务和应用程序,它只适合捕获一些自动化攻击和大规模扫描,入侵者很容易分辨低交互蜜罐
部署位置
网络边界之前:我认为甲方在建设企业安全时,使用这种方式做没啥意义,蜜罐是诱捕吸引入侵者的,假设放在网络边界你是要做什么...主动吸引自动化扫描器嘛?
网络边界之后:在内网中部署蜜罐可以帮助监测已经绕过外部一两层防御措施的入侵者,或是某些内部问题,部署在这种位置的蜜罐是比较有效的,可以很方便诱捕那些已经渗透进入网络并进行下一步动作的入侵者。
关键资产和 DMZ 内:在 DMZ 内部署蜜罐,可以监测针对公开服务的攻击活动,而在关键业务系统附近部署蜜罐时,这些蜜罐故意暴露出一些漏洞,入侵者大概率会选择优先渗透有明显漏洞的系统,而一旦他们对这些蜜罐实施攻击就中计了,安全团队能收到相应的预警,蜜罐也会把入侵者的完整操作步骤记录并保留,供事后使用。
例:Redis 蜜罐
假设你要搞一个 Redis 蜜罐,那第一步就是仿真,要么用真实的程序做,要么就自己实现一套虚假的程序,比如你实现的假 Redis 肯定要有 set get del keys 之类命令,同时让你自己的服务跑在 6379。
第二步,假设你自己实现 Redis,你还要暴露出一部分可以被扫出的漏洞;如果直接拿 Redis 来用就用稍远点版本;
第三步,记录一切日志,包括流量、系统操作之类的,越多越好
第四步,记得准备好"真实数据",即脱敏的测试环境数据或者随机生成点什么东西,总之需要给出一些让入侵者觉得他成功的奖励。
写在最后
本文写的比较粗略,究其原因是我不太看好蜜罐的未来。
有人说蜜罐、蜜标 or 蜜网是下一代入侵检测?
我不认同,这些技术无法像 RASP 一样深入应用程序内部发现问题,只在外部守门的东西怎么可能是下一代技术呢?最多可以说蜜罐地位和NGFW WAF差不多
那比较新的探针向导、流量牵引类蜜罐呢?他们会更好吗?
没什么用啊,蜜罐最大的问题就是被动感知,他们对于攻击者的攻击意图暴露没什么引导能力,即使蜜罐有再多漏洞暴露出或者用上了各种诱饵域名,也没法保证入侵者一定走到蜜罐内啊!这使得被动的感知攻击成为了一件"看运气"的事情:攻击者刚好闯到蜜罐内皆大欢喜,没碰上也没办法...
蜜罐的应用场景
以欺骗伪装、威胁感知和溯源反制为核心的蜜罐,集成为整个安全系统的一部分打包卖是比较靠谱的,单独拎蜜罐出来卖确实竞争力不够高。
很多人喜欢吹蜜罐的溯源能力,入侵者也不是傻子,VPN、Tor之类隐藏真实IP地址很轻松的;而且蜜罐没什么持续追踪安全问题的能力,它仅能捕获到攻击流量的最后一跳步,无法全程跟踪攻击流量在网络上的路径,而溯源需要在网络层面收集全程数据包甚至还需要运营商帮忙才能做到。
总体来看,蜜罐更适合作为入侵检测(及时预警并拖慢入侵者进度)、威胁情报收集和分析特征的辅助,全面溯源攻击源头是一个系统工程,只吹蜜罐有点离谱,还是要回归理性才行啊。