• Stars
    star
    325
  • Rank 128,595 (Top 3 %)
  • Language
    Shell
  • License
    GNU General Publi...
  • Created over 4 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A modular OSINT honeypot for blue teamers

Manuka

Black Hat Arsenal Manuka

Description

Manuka is an Open-source intelligence (OSINT) honeypot that monitors reconnaissance attempts by threat actors and generates actionable intelligence for Blue Teamers. It creates a simulated environment consisting of staged OSINT sources, such as social media profiles and leaked credentials, and tracks signs of adversary interest, closely aligning to MITRE’s PRE-ATT&CK framework. Manuka gives Blue Teams additional visibility of the pre-attack reconnaissance phase and generates early-warning signals for defenders.

Although they vary in scale and sophistication, most traditional honeypots focus on networks. These honeypots uncover attackers at Stage 2 (Weaponization) to 7 (Actions on Objectives) of the cyber kill chain, with the assumption that attackers are already probing the network.

Manuka

Manuka conducts OSINT threat detection at Stage 1 (Reconnaissance) of the cyber kill chain. Despite investing millions of dollars into network defenses, organisations can be easily compromised through a single Google search. One recent example is hackers exposing corporate meetings, therapy sessions, and college classes through Zoom calls left on the open Web. Enterprises need to detect these OSINT threats on their perimeter but lack the tools to do so.

Manuka is built to scale. Users can easily add new listener modules and plug them into the Dockerized environment. They can coordinate multiple campaigns and honeypots simultaneously to broaden the honeypot surface. Furthermore, users can quickly customize and deploy Manuka to match different use cases. Manuka’s data is designed to be easily ported to other third-party analysis and visualization tools in an organisation’s workflow.

Designing an OSINT honeypot presents a novel challenge due to the complexity and wide range of OSINT techniques. However, such a tool would allow Blue Teamers to “shift left” in their cyber threat intelligence strategy.

Dashboard

Manuka

Tool Design

Architecture

Manuka is built on the following key terms and processes.

Manuka Architecture

  • Sources: Possible OSINT vectors such as social media profiles, exposed credentials, and leaked source code.
  • Listeners: Servers that monitor sources for interactions with attackers.
  • Hits: Indicators of interest such as attempted logins with leaked credentials and connections on social media.
  • Honeypots: Groups of sources and listeners that are organized into a single Campaign which analyzes and tracks hits over time.

System Design

Manuka System

The framework itself consists of several Docker containers which can be deployed on a single host.

  • manuka-server: Central Golang server that performs CRUD operations and ingests hits from listeners.
  • manuka-listener: Modular Golang server that can perform different listener roles.
  • manuka-client: React dashboard for Blue Team to manage Manuka’s resources.

These containers are orchestrated through a single docker-compose command.

Development

In development, the components run on the following ports in their respective containers:

  1. manuka-client: 3000
  2. manuka-server: 8080
  3. manuka-listener: 8080

To allow for the client and server to talk without CORS issues, an additional nginx layer on localhost:8080 proxy-passes /api/ to manuka-server amd / to manuka-listener.

In addition, manuka-listener operates on the following ports:

  1. 8081 for the staged login webpage
  2. 8082 for interacting with the staged email

Requirements

See the individual component repositories for their requirements.

  1. docker >= 19.03.8
  2. docker-compose >= 1.25.4
  3. ngok >= 2.3.35

Configure

  1. Create a file in docker/secrets/postgres_password with the password for Postgres.
  2. Setup Google account for Gmail to receive emails from social media profiles.
  3. Setup Google Cloud Pub/Sub on https://console.cloud.google.com/cloudpubsub for push email functionality (guide: https://developers.google.com/gmail/api/guides/push). The guide will have instructions to create a Cloud project too.
  4. Create file docker/secrets/google_credentials.json with your project's credentials.
  5. Add the topic created on Cloud Pub/Sub to docker/secrets/google_topic.
  6. Obtain an oauth2 token for your Google account. Manuka requires an oauth2 token the first time it is run. Subsequently, it will automatically refresh the token. Save the token in docker/secrets/google_oauth2_token.json.

Run

  1. docker-compose -f docker-compose.yml -f docker-compose-dev.yml up --build --remove-orphans
  2. Initialize manuka-listener gmail push service:
    1. Initialize ngok ./ngok http <manuka-listener port> and take note of the https URL.
    2. On Google PubSub dashboard left-hand menu, go to Subscriptions -> <subscription name> -> Edit Subscription and change the Endpoint URL to <ngok https URL>/notifications.
    3. Try sending an email from another account to the target Gmail account. You should see POST /notifications 200 OK on the ngrok console, and Received push notification on the Docker console.

Production

In production, the following ports map to these servers:

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

This allows any domain that points to your server to appear as the fake login page, while the administration dashboard is available at port 8080. Furthermore, the administration dashboard is protected by HTTP basic authentication at the nginx layer.

Requirements

See the individual component repositories for their requirements.

  1. docker >= 19.03.8
  2. docker-compose >= 1.25.4
  3. ngok >= 2.3.35

Configure

  1. Similar to the configuration for development, ensure that all secrets and Google Cloud settings are in place. Note that the subscription URL should now be at http://DOMAIN/notifications.
  2. Point your domain name to your server IP.
  3. Copy docker/nginx/nginx.prod.conf.example to docker/nginx/nginx.prod.conf and replace examplecompany.com with your production domain.
  4. Run init-letsencrypt.sh to generate your SSL certificates.

Run

  1. 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 and NGINX_PASSWORD will be your dashboard basic authentication.
    2. COMPANY_NAME will be the fake login page company name.

Currently Supported Listeners

  1. Social Listener

    Monitors for social activities on Facebook and LinkedIn. Currently supports notification of network connection attempts. Note that the monitored social media account(s) should have email notification enabled. The corresponding email account(s) receiving the email notifications from the social media platforms should be configured to forward these emails to the centralised gmail account.

  2. Login Listener

    Monitors for attempted login using leaked credentials on the honeypot site.

Others

Category

OSINT - Open Source Intelligence

Acknowledgement

  1. Eugene Lim
  2. Bernard Lim
  3. Kenneth Tan
  4. Tan Kee Hock

More Repositories

1

spring-boot-actuator-h2-rce

Sample Spring Boot App Demonstrating RCE via Exposed env Actuator and H2 Database
Java
102
star
2

webpack-exploder

Unpack the source code of React and other Webpacked apps!
HTML
96
star
3

CVE-2020-10665

POC for CVE-2020-10665 Docker Desktop Local Privilege Escalation
C++
54
star
4

npm-scan

An extensible, heuristic-based vulnerability scanning tool for installed npm packages
JavaScript
49
star
5

npm-zoo

A zoo for malicious NPM packages
Python
19
star
6

accent-trainer

Flask webapp/endpoint that compares the user's speech with different accents and assigns similarity scores based on speed, voice (DTW/MFCC), and accuracy. The accents are generated from Amazon Polly and accuracy analysis using Bing Speech API speech to text.
Python
15
star
7

icalendardb

A data
HTML
9
star
8

serverless-recon-example

Example of a serverless web reconaissance workflow's AWS architecture.
Go
9
star
9

detect-cve-2024-4367

YARA detection rule for CVE-2024-4367 arbitrary javascript execution in PDF.js
YARA
7
star
10

lohrem-ipsum

A Singlish version of the classic Lorem Ipsum generator coded as a Racket webapp.
Racket
4
star
11

aws-amazon-polly-flask-sample

Amazon Polly implementation that mirrors the Python example provided by AWS, only using the Flask framework.
HTML
3
star
12

streamliner-doc-word-replacer

Flask webapp that replaces words in documents according to debate tournament rules. Useful if you want to quickly replace a dictionary of words and save syllables.
Python
3
star
13

road-sign-manager

A civic hacking project in collaboration with MakeHaven and New Haven Transportation. A cloud road sign manager platform.
JavaScript
3
star
14

manuka-client

Frontend client for Manuka
TypeScript
2
star
15

unicollider

An elegant frontend to generate and detect possible Unicode transformation collisions.
HTML
2
star
16

npm-scan-backtest

Backtest npm-scan on past updates on npmjs
Python
1
star
17

Challendar-TISC-2022-Challenge-7

Go
1
star
18

code4good-crash-course

A developer crash course for my team at Code4Good.
JavaScript
1
star
19

manuka-listener

Listener honeypot for Manuka
Go
1
star
20

manuka-server

REST API and business logic for Manuka
Go
1
star
21

electronic-road-sign-simulator

Express app that simulates an electronic road sign that is updated over the web live via websockets.
JavaScript
1
star
22

jobcan-automatic-clock-chrome-extension

Chrome extension for automatic clocking on JobCan (Unofficial)
JavaScript
1
star
23

SSRFTest

SSRF testing tool
Python
1
star