原文标题:HoneyKube: Designing and Deploying a Microservices-based Web Honeypot

原文作者:Chakshu Gupta,Thijs van Ede,Andrea Continella

原文链接:https://ieeexplore.ieee.org/document/10188626

发表期刊:2023 IEEE SPW

笔记作者:李智宇@安全学术圈

主编:黄诚@安全学术圈

编辑:张贝宁@安全学术圈

1、引言

随着 Web 应用程序架构和基础设施发生根本性变革,基于微服务的架构如今已成为开发大型 Web 应用程序的首选。由于其具有可移植性、可扩展性和易于部署的特点,普遍性的提高已使该架构成为特定网络攻击的目标。然而传统的入侵检测和防御系统在应用于此类容器化环境时效果较差,所以收集攻击数据以正确理解攻击模式至关重要。因此,本文提出了一种新的的 Web 蜜罐 HONEYKUBE,它采用微服务架构并被构建为一个 Web 应用程序,并使用 Kubernetes 和 Google Kubernetes Engine 进行容器编排和部署。

2、背景介绍

微服务架构是一种将应用程序拆分为多个独立部署的松耦合服务单元的软件开发模式。每个微服务专注于特定业务功能,通过 API 或 RPC 进行网络通信,并支持自主选择最优数据库类型,结合容器化技术使用宿主机的内核特性以隔离进程,使各服务具备独立扩展、更新和运维能力。

Kubernetes(k8s)是用于自动化大规模微服务集群管理的容器编排工具。其集群由抽象为节点的物理或虚拟机组成,控制平面作为核心编排器,通过 API 服务器与各节点通信,执行服务调度、伸缩及状态管理。每个节点运行 kubelet 代理,确保微服务正常运行并协调资源分配。k8s 通过 Pod 抽象将共享网络和存储资源的容器组作为最小调度单元,支持容器间通过本地通信协同工作。逻辑相关的一组 Pod 可以被配置为一个微服务,使用抽象方法 Service 将其暴露为网络服务,一个 API 对象 Ingress 作为外部流量的入口,通过负载均衡等机制将 HTTP/HTTPS 请求定向至集群内的服务。

下图描述了 Ingress、Service 和集群内 Pod 之间的关系:

3、方案设计

HONEYKUBE 的设计侧重于满足四个要求:指纹识别性、交互等级、监控和安全措施。此外,该蜜罐在四个层面上监控运行时活动:外部网络流量、内部网络流量、系统调用以及系统日志。

监控。该监控系统通过捕获每个微服务的双向网络流量,在节点层面对共享内核的容器执行系统调用追踪以复现入侵后的所有操作,最后从集群内的所有计算单元(包括 K8s 控制平面)收集日志。为了将监控过程隐藏起来,避免攻击者的立即检测和篡改,使用 sidecar 容器来捕获和存储进出该 pod 的所有网络流量。此外,运行一个入侵检测系统来检测可疑行为,以区分攻击者执行的系统调用和 HONEYKUBE 引入的其余系统调用,降低捕获所有组件系统调用昂贵的成本。

下图展示了 HONEYKUBE 中捕获网络流量和系统调用相关机制的架构:

指纹识别性。研究者使用 Google Cloud Platform 开发的一个开源电子商务应用程序作为蜜罐基线,通过修改原始界面布局并添加微服务以避免攻击者因熟悉演示网站而识破陷阱。该应用程序由 14 个 Pod 组成,每个微服务都由封装在一个 Pod 中的单个容器组成。

交互等级。为了保持攻击者的参与度并促进高质量数据的收集,研究者在这些微服务中添加了漏洞并将应用程序呈现为易受攻击的状态(在用户界面上打印包含软件版本和数据库名称、堆栈跟踪泄露),允许攻击者使用访问服务器和网络映射技术发现服务,便于攻击者进行入侵系统、获取敏感信息以及在集群内横向移动等恶意活动。

安全措施。通过采用 K8s 的安全上下文限制蜜罐的网络活动,限制非必要出站流量(如 DDoS 和垃圾邮件),并通过降低容器权限和使用基于角色的访问控制阻止攻击者逃逸容器。这些安全措施虽然缩小了攻击面,但增强了蜜罐的真实性,因为真实生产环境也采用类似防御策略。

4、实验评估

研究者进行了开放实验和受控实验两项实验,并从这两个实验中收集了包括系统跟踪文件、网络跟踪文件和各种日志文件在内的大约 850GB 的数据,并使用 Shodan 的 Honeyscore 工具对 HONEYKUBE 进行了指纹识别评估,结果显示其蜜罐概率得分为 0.0,表明该工具将 HONEYKUBE 识别为一个真实系统。由于微服务架构蜜罐尚未被现有指纹库覆盖,Honeyscore 可能缺乏识别此类环境下蜜罐的标记,因此其评估可靠性存在局限。

4.1 开放实验(将 HONEYKUBE 暴露于互联网)

在为期两周的开放实验中,蜜罐 SSH 服务器共记录约 11,500 次来自200 个不同 IP 地址(源自 36 个国家)的登录尝试,其中仅 12 次成功渗透。成功入侵者大多立即断开连接并持续发起暴力破解,其随机时间戳特征表明为自动化扫描机器人行为。攻击者尝试了 36 个不同用户名(如 root、user、demo 等),最终通过集群脆弱入口获得了对蜜罐的初始访问权限。

下表列出了在 SSH 服务器上记录的登录尝试最多的前五个国家:

实验观察到,部分攻击者在暴力破解 SSH 入侵集群后表现出多阶段恶意行为:包括门罗币挖矿、搜索扫描挖矿进程以及通过删除 /var/log 日志实施痕迹清理。系统调用分析表明,绝大多数攻击为自动化脚本执行,仅一例疑似手动攻击,特征为尝试通过连接 DHCP 服务器建立持久连接。

下图展示了捕获的疑似手动攻击的系统调用集:

4.2 受控实验(将 HONEYKUBE 暴露于招募的志愿者)

此实验招募了两组参与者:一组是当地 CTF 团队的志愿者,另一组是一家中型安全运营公司的红队志愿者。

实验对比了两组攻击者的渗透技术差异:缺乏 K8s 经验的 CTF 组采用传统渗透方法(如前端暴力破解和手动目录扫描),依赖 nmap、linPEAS 等工具进行环境探测,偶然发现容器挂载的服务账号令牌;而具备 K8s 知识的红队则通过自动化 SQL 注入和 kubectl、peirates 工具快速定位服务账号令牌,并利用 K8s API 获取敏感信息。两组共产生了约 1500 次系统调用,大多数攻击者都尝试利用窃取的凭据访问数据库服务器。

5、总结

本研究提出了 HONEYKUBE,一个基于微服务架构的 Web 蜜罐,通过采用真实的应用程序作为基础框架并主动注入漏洞,有效增强了系统的隐蔽性和攻击交互性。实验证明,HONEYKUBE 的监控架构设计能有效记录攻击者的行为数据。未来研究者计划对现有攻击数据进行深度分析,以揭示针对微服务架构的通用攻击模式,并将在不同编排平台上复现实验,为微服务架构设计普适性安全防护机制。

安全学术圈招募队友-ing

有兴趣加入学术圈的请联系 secdr#qq.com

声明:本文来自安全学术圈,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。