Manuka开源情报蜜罐

Manuka开源情报蜜罐

Manuka描述

Manuka是一个开放源代码情报(OSINT)蜜罐,用于监视威胁行为者的侦察企图并为蓝队生成可操作的情报。它创建了一个由分阶段的OSINT来源(例如社交媒体配置文件和泄露的凭据)组成的模拟环境,并跟踪对手的特征,与MITRE的PRE-ATT&CK框架紧密匹配。Manuka为蓝队提供了攻击前侦察阶段的更多可见性,并为防御者生成了预警信号。

尽管它们的规模和复杂程度各不相同,但大多数传统蜜罐都将重点放在网络上。这些蜜罐在网络杀手链的第2阶段(武器化)到第7阶段(目标操作)中发现了攻击者,并假设攻击者已经在探测网络。

Manuka在网络查杀链的第一阶段(侦察)进行OSINT威胁检测。

尽管在网络防御方面投入了数百万美元,但是通过单个Google搜索可以轻松地破坏组织。
最近的一个例子是,黑客通过开放式Web上留下的Zoom呼叫公开了公司会议,理疗会议和大学课程。企业需要在其外围检测到这些OSINT威胁,但缺乏执行此操作的工具。

Manuka是按比例建造的。用户可以轻松添加新的侦听器模块,并将其插入Dockerized环境。他们可以同时协调多个战役和蜜罐,以扩大蜜罐的监听面。此外,用户可以快速自定义和部署Manuka以匹配不同的用例。

Manuka的数据旨在轻松移植到组织工作流程中的其他第三方分析和可视化工具。

由于OSINT技术的复杂性和广泛性,设计OSINT蜜罐提出了一个新的挑战。但是,这样的工具将使蓝队可以在其网络威胁情报策略中“向左移动”。

仪表板

工具设计

build

Manuka建立在以下关键术语和流程之上。

  • 来源:可能的OSINT向量,例如社交媒体配置文件,公开的凭据和泄漏的源代码。
  • 侦听器:监视源以与攻击者进行交互的服务器。
  • 命中:感兴趣的指标,例如尝试使用泄露的凭据和社交媒体上的连接尝试登录。
  • 蜜罐:组织成一个Campaign的源和侦听器组,可分析和跟踪一段时间内的匹配。

系统设计

该框架本身包含几个可以部署在单个主机上的Docker容器。

  • manuka-server:中央Golang服务器,它执行CRUD操作并从侦听器中提取匹配。
  • manuka-listener:可以执行不同侦听器角色的模块化Golang服务器。
  • manuka-client:React仪表板,供蓝队管理Manuka的资源。

这些容器通过单个docker-compose命令进行编排。

发展历程

在开发中,组件在各自容器中的以下端口上运行:

manuka-client: 3000
manuka-server: 8080
manuka-listener: 8080

要允许客户端和服务器的谈话没有CORS问题,对额外的nginx的层localhost:8080代理传递/api/manuka-serverAMD/manuka-listener

另外,manuka-listener在以下端口上运行:

  1. 8081 暂存的登录页面
  2. 8082 与暂存的电子邮件进行交互

安装条件

有关其要求,请参见各个组件存储库。

docker >= 19.03.8
docker-compose >= 1.25.4
ngok >= 2.3.35

配置

  1. docker/secrets/postgres_password使用Postgres的密码创建一个文件。
  2. 为Gmail设置Google帐户,以接收来自社交媒体配置文件的电子邮件。
  3. https://console.cloud.google.com/cloudpubsub上设置Google Cloud Pub/Sub以获得推送电子邮件功能(指南:developers.google.com/gmail/api/guides/push)。该指南还将说明如何创建Cloud项目。
  4. docker/secrets/google_credentials.json使用项目的凭据创建文件。
  5. 将在Cloud Pub / Sub上创建的主题添加到docker/secrets/google_topic
  6. 为您的Google帐户获取oauth2令牌。Manuka首次运行时需要一个oauth2令牌。随后,它将自动刷新令牌。将令牌保存在中docker/secrets/google_oauth2_token.json

运行

docker-compose -f docker-compose.yml -f docker-compose-dev.yml up --build --remove-orphans
  1. 初始化manuka-listenergmail推送服务:
    1. 初始化ngok./ngok http <manuka-listener port>并记下https URL。
    2. 在Google PubSub仪表板左侧菜单上,转到订阅-> <订阅名称> ->编辑订阅,然后将端点URL更改为<ngok https URL> / notifications
    3. 尝试将电子邮件从另一个帐户发送到目标Gmail帐户。您应该POST /notifications 200 OKngrok控制台和Received push notificationDocker控制台上看到。

生产

在生产中,以下端口映射到这些服务器:

  1. 8080manuka-client/manuka-server/api
  2. 80manuka-listener-login/manuka-listener-social/notifications

这样,指向管理服务器的任何域都可以显示为假登录页面,而管理仪表板位于port 8080。此外,管理仪表板在该nginx层受到HTTP基本身份验证的保护。

配置

  1. 与开发配置类似,请确保所有机密和Google Cloud设置均已就绪。请注意,订阅URL现在应位于http://DOMAIN/notifications
  2. 将您的域名指向服务器IP。
  3. 复制docker/nginx/nginx.prod.conf.exampledocker/nginx/nginx.prod.conf并替换examplecompany.com与您的生产领域。
  4. 运行init-letsencrypt.sh以生成您的SSL证书。

运行

COMPANY_NAME='Next Clarity Financial' NGINX_USERNAME=username NGINX_PASSWORD=password docker-compose -f docker-compose.yml -f docker-compose-prod.yml up --build --remove-orphans -d
  1. NGINX_USERNAME并且NGINX_PASSWORD将仪表板基本身份验证。
  2. COMPANY_NAME 将是假的登录页面公司名称。

当前支持的侦听器

  1. 社交听众监视Facebook和LinkedIn上的社交活动。当前支持网络连接尝试的通知。请注意,受监控的社交媒体帐户应启用电子邮件通知。从社交媒体平台接收电子邮件通知的相应电子邮件帐户应配置为将这些电子邮件转发到集中式gmail帐户。
  2. 登录监听器使用蜜罐站点上的泄漏凭据监视尝试登录。

项目地址

GitHub: github.com/spaceraccoon/manuka