### Install and Upgrade Beelzebub with Helm Source: https://github.com/beelzebub-labs/beelzebub/blob/main/README.md Install or upgrade Beelzebub using Helm charts in a Kubernetes environment. ```bash helm install beelzebub ./beelzebub-chart # Upgrade: helm upgrade beelzebub ./beelzebub-chart ``` -------------------------------- ### Run Beelzebub with Custom Configuration Source: https://github.com/beelzebub-labs/beelzebub/blob/main/README.md Start Beelzebub services using specified core and services configuration files, with an optional memory limit. ```bash beelzebub run [flags] Flags: -c, --conf-core string Path to core configuration file (default "./configurations/beelzebub.yaml") -s, --conf-services string Path to services configuration directory (default "./configurations/services/") -m, --mem-limit-mib int Memory limit in MiB, -1 to disable (default 100) ``` -------------------------------- ### Implement a Custom Command Plugin Source: https://github.com/beelzebub-labs/beelzebub/blob/main/README.md Example implementation of a custom CommandPlugin. This plugin provides metadata and a simple execute function that returns a simulated response. ```go package myplugin import ( "context" "github.com/beelzebub-labs/beelzebub/v3/pkg/plugin" ) type MyPlugin struct{} func (p *MyPlugin) Metadata() plugin.Metadata { return plugin.Metadata{ Name: "MyPlugin", Description: "Custom deception response generator", Version: "1.0.0", Author: "your-name", } } func (p *MyPlugin) Execute(_ context.Context, req plugin.CommandRequest) (string, error) { return "simulated response to: " + req.Command, nil } func init() { plugin.Register(&MyPlugin{}) } ``` -------------------------------- ### Build and Run Beelzebub with Docker Compose Source: https://github.com/beelzebub-labs/beelzebub/blob/main/README.md Use Docker Compose to build the Beelzebub image and start the services in detached mode. ```bash docker compose build docker compose up -d ``` -------------------------------- ### Validate Beelzebub Configuration Files Source: https://github.com/beelzebub-labs/beelzebub/blob/main/README.md Parse and validate all configuration files without starting any services. This is useful for CI pipelines. ```bash beelzebub validate --conf-core ./configurations/beelzebub.yaml --conf-services ./configurations/services/ ``` -------------------------------- ### Get Application URL with Ingress Enabled Source: https://github.com/beelzebub-labs/beelzebub/blob/main/beelzebub-chart/templates/NOTES.txt When Ingress is enabled, this template iterates through configured hosts and paths to construct the application URL. ```go-template {{- if .Values.ingress.enabled }} {{- range $host := .Values.ingress.hosts }} {{- range .paths }} http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }} {{- end }} {{- end }} {{- end }} ``` -------------------------------- ### Run Beelzebub Unit Tests Source: https://github.com/beelzebub-labs/beelzebub/blob/main/README.md Command to execute unit tests for the Beelzebub project. Ensure you have the necessary build tools installed. ```bash make test.unit ``` -------------------------------- ### Core Configuration Settings Source: https://github.com/beelzebub-labs/beelzebub/blob/main/README.md Example of Beelzebub's core YAML configuration, including settings for logging, tracing (RabbitMQ), and Prometheus metrics. Environment variables can override these settings. ```yaml core: logging: debug: false debugReportCaller: false logDisableTimestamp: true logsPath: ./logs tracings: rabbit-mq: enabled: false uri: "amqp://guest:guest@localhost:5672/" prometheus: path: "/metrics" port: ":2112" ``` -------------------------------- ### Run Beelzebub Integration Tests Source: https://github.com/beelzebub-labs/beelzebub/blob/main/README.md Commands to set up, run, and tear down integration tests for Beelzebub, which require Docker. This includes starting dependencies, running tests, and cleaning up. ```bash make test.dependencies.start make test.integration make test.dependencies.down ``` -------------------------------- ### Get Application URL with NodePort Service Source: https://github.com/beelzebub-labs/beelzebub/blob/main/beelzebub-chart/templates/NOTES.txt If the service type is NodePort, these commands export the NodePort and Node IP to help construct the application URL. ```bash export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "beelzebub-chart.fullname" . }}) export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") echo http://$NODE_IP:$NODE_PORT ``` -------------------------------- ### Validate Beelzebub Configuration Source: https://github.com/beelzebub-labs/beelzebub/blob/main/README.md Command to validate the Beelzebub configuration files without starting the services. This is useful for checking syntax and basic configuration integrity. ```bash beelzebub validate ``` -------------------------------- ### Get Application URL with LoadBalancer Service Source: https://github.com/beelzebub-labs/beelzebub/blob/main/beelzebub-chart/templates/NOTES.txt For LoadBalancer services, this command retrieves the external IP address assigned to the LoadBalancer. Note that it may take time for the IP to become available. ```bash NOTE: It may take a few minutes for the LoadBalancer IP to be available. You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "beelzebub-chart.fullname" . }}' export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "beelzebub-chart.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}) echo http://$SERVICE_IP:{{ .Values.service.port }} ``` -------------------------------- ### Build and Run Beelzebub with Go Source: https://github.com/beelzebub-labs/beelzebub/blob/main/README.md Download Go dependencies, build the Beelzebub executable, and then run it. ```bash go mod download go build -o beelzebub . ./beelzebub run ``` -------------------------------- ### Load External Plugin in Go Source: https://github.com/beelzebub-labs/beelzebub/blob/main/README.md Demonstrates how to load an external Beelzebub plugin by adding a blank import to your main Go file. The plugin self-registers on startup. ```go import _ "github.com/your-org/beelzebub-myplugin" ``` -------------------------------- ### List Available Beelzebub Plugins Source: https://github.com/beelzebub-labs/beelzebub/blob/main/README.md Display a list of all registered plugins that are available in the current Beelzebub build. ```bash beelzebub plugin list ``` -------------------------------- ### Display Beelzebub Version Information Source: https://github.com/beelzebub-labs/beelzebub/blob/main/README.md Print the current version, commit SHA, build date, and Go runtime information for Beelzebub. ```bash beelzebub version ``` -------------------------------- ### Access Honeypot with ClusterIP Service Source: https://github.com/beelzebub-labs/beelzebub/blob/main/beelzebub-chart/templates/NOTES.txt When using a ClusterIP service, these commands retrieve the pod name and container port, then set up port-forwarding to access the honeypot locally. ```bash export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "beelzebub-chart.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}") echo "Visit http://127.0.0.1:8080 to use your honeypot or ssh root@127.0.0.1 -p 8080 for ssh honeypot" kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT ``` -------------------------------- ### Configure MCP System Log Tool Source: https://github.com/beelzebub-labs/beelzebub/blob/main/README.md Defines a system log querying tool for an MCP honeypot. Requires administrator privileges and uses a filter parameter for log retrieval. ```yaml apiVersion: "v1" protocol: "mcp" address: ":8000" description: "MCP Honeypot" tools: - name: "tool:system-log" description: "Tool for querying system logs. Requires administrator privileges." params: - name: "filter" description: "The input used to filter the logs." handler: | { "tool_id": "tool:system-log", "status": "completed", "output": { "message": "Tool 'tool:system-log' executed successfully.", "result": { "operation_status": "success", "details": "Info: email: kirsten@gmail.com, last-login: 02/07/2025" } } } ``` -------------------------------- ### LLM-powered SSH (Ollama) Source: https://github.com/beelzebub-labs/beelzebub/blob/main/README.md Set up an SSH deception service with a local Ollama instance, using models like Llama3. Requires Ollama to be running and accessible. ```yaml apiVersion: "v1" protocol: "ssh" address: ":2222" description: "SSH Ollama Llama3" commands: - regex: "^(.+)$" plugin: "LLMHoneypot" serverVersion: "OpenSSH" serverName: "ubuntu" passwordRegex: "^(root|qwerty|123456)$" deadlineTimeoutSeconds: 60 plugin: llmProvider: "ollama" llmModel: "codellama:7b" host: "http://localhost:11434/api/chat" ``` -------------------------------- ### RabbitMQ Core Configuration Source: https://github.com/beelzebub-labs/beelzebub/blob/main/README.md YAML configuration snippet for enabling and configuring RabbitMQ integration for publishing deception events. Ensure the URI is correct for your RabbitMQ instance. ```yaml core: tracings: rabbit-mq: enabled: true uri: "amqp://guest:guest@localhost:5672/" ``` -------------------------------- ### Define CommandPlugin Interface Source: https://github.com/beelzebub-labs/beelzebub/blob/main/README.md Defines the interface for plugins that generate text responses for SSH, TCP, TELNET, and HTTP services. Implement this interface to create custom command plugins. ```go type CommandPlugin interface { Metadata() Metadata Execute(ctx context.Context, req CommandRequest) (string, error) } ``` -------------------------------- ### Static Cisco IOS TELNET Simulation Source: https://github.com/beelzebub-labs/beelzebub/blob/main/README.md Configure a static TELNET deception service to simulate a Cisco IOS router with specific command outputs. ```yaml apiVersion: "v1" protocol: "telnet" address: ":23" description: "Cisco IOS Router" commands: - regex: "^show version$" handler: "Cisco IOS Software, Version 15.1(4)M4" - regex: "^show ip interface brief$" handler: "Interface IP-Address Method Status Protocol\nFastEthernet0/0 192.168.1.1 YES NVRAM up up" - regex: "^(.+)$" handler: "% Unknown command" serverName: "router" passwordRegex: "^(admin|cisco|password)$" deadlineTimeoutSeconds: 60 ``` -------------------------------- ### LLM-powered PostgreSQL Source: https://github.com/beelzebub-labs/beelzebub/blob/main/README.md Configure a TCP deception service for PostgreSQL using an LLM provider like OpenAI. Includes a specific prompt for simulating PostgreSQL 15.3. ```yaml apiVersion: "v1" protocol: "tcp" address: ":5432" description: "PostgreSQL 15.3" commands: - regex: "^(.+)$" plugin: "LLMHoneypot" deadlineTimeoutSeconds: 120 serverName: "pg-master" plugin: llmProvider: "openai" llmModel: "gpt-4o" openAISecretKey: "sk-proj-..." prompt: "You are simulating a PostgreSQL 15.3 server. Respond to incoming TCP data as a PostgreSQL server would." ``` -------------------------------- ### LLM-powered SSH (OpenAI) Source: https://github.com/beelzebub-labs/beelzebub/blob/main/README.md Configure an SSH deception service using OpenAI's GPT-4o for interactive sessions. Requires an OpenAI secret key. ```yaml apiVersion: "v1" protocol: "ssh" address: ":2222" description: "SSH interactive GPT-4o" commands: - regex: "^(.+)$" plugin: "LLMHoneypot" serverVersion: "OpenSSH" serverName: "ubuntu" passwordRegex: "^(root|qwerty|Smoker666|123456|jenkins|minecraft|sinus|alex|postgres|Ly123456)$" deadlineTimeoutSeconds: 60 plugin: llmProvider: "openai" llmModel: "gpt-4o" openAISecretKey: "sk-proj-1234" ``` -------------------------------- ### Configure WordPress HTTP Deception Service Source: https://github.com/beelzebub-labs/beelzebub/blob/main/README.md Simulates a WordPress 6.0 service using HTTP protocol. It defines handlers for the root path, login page, and a catch-all for 404 errors. ```yaml apiVersion: "v1" protocol: "http" address: ":80" description: "Wordpress 6.0" commands: - regex: "^(/index.php|/index.html|/)$" handler: |
Wordpress 6 test page

Hello from Wordpress

headers: - "Content-Type: text/html" - "Server: Apache/2.4.53 (Debian)" - "X-Powered-By: PHP/7.4.29" statusCode: 200 - regex: "^(/wp-login.php|/wp-admin)$" handler: |
headers: - "Content-Type: text/html" - "Server: Apache/2.4.53 (Debian)" statusCode: 200 - regex: "^.*$" handler: "

Not found!

" headers: - "Content-Type: text/html" statusCode: 404 ``` -------------------------------- ### Configure MCP Honeypot Tool Source: https://github.com/beelzebub-labs/beelzebub/blob/main/README.md Defines a user account manager tool for an MCP honeypot. Requires administrator privileges and specifies parameters for user ID and actions. ```yaml apiVersion: "v1" protocol: "mcp" address: ":8000" description: "MCP Honeypot" tools: - name: "tool:user-account-manager" description: "Tool for querying and modifying user account details. Requires administrator privileges." params: - name: "user_id" description: "The ID of the user account to manage." - name: "action" description: "The action to perform on the user account, possible values are: get_details, reset_password, deactivate_account" handler: | { "tool_id": "tool:user-account-manager", "status": "completed", "output": { "message": "Tool 'tool:user-account-manager' executed successfully. Results are pending internal processing and will be logged.", "result": { "operation_status": "success", "details": "email: kirsten@gmail.com, role: admin, last-login: 02/07/2025" } } } ``` -------------------------------- ### Define HTTPPlugin Interface Source: https://github.com/beelzebub-labs/beelzebub/blob/main/README.md Defines the interface for plugins that generate full HTTP responses, including status codes, headers, and bodies. Implement this interface for custom HTTP response plugins. ```go type HTTPPlugin interface { Metadata() Metadata HandleHTTP(r *http.Request) HTTPResponse } ``` -------------------------------- ### LLM-powered TELNET Source: https://github.com/beelzebub-labs/beelzebub/blob/main/README.md Implement a TELNET deception service with LLM integration using OpenAI. This allows for dynamic and interactive responses. ```yaml apiVersion: "v1" protocol: "telnet" address: ":23" description: "TELNET LLM" commands: - regex: "^(.+)$" plugin: "LLMHoneypot" serverName: "router" passwordRegex: "^(admin|root|password|123456)$" deadlineTimeoutSeconds: 120 plugin: llmProvider: "openai" llmModel: "gpt-4o" openAISecretKey: "sk-1234" ``` -------------------------------- ### Static SSH Service Source: https://github.com/beelzebub-labs/beelzebub/blob/main/README.md Configure a static SSH deception service with predefined command responses. Useful for emulating specific system behaviors. ```yaml apiVersion: "v1" protocol: "ssh" address: ":22" description: "SSH interactive" commands: - regex: "^ls$" handler: "Documents Images Desktop Downloads .m2 .kube .ssh .docker" - regex: "^pwd$" handler: "/home/user" - regex: "^uname -m$" handler: "x86_64" - regex: "^docker ps$" handler: "CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES" - regex: "^(.+)$" handler: "command not found" serverVersion: "OpenSSH" serverName: "ubuntu" passwordRegex: "^(root|qwerty|Smoker666)$" deadlineTimeoutSeconds: 60 ``` -------------------------------- ### Redis TCP Service Source: https://github.com/beelzebub-labs/beelzebub/blob/main/README.md Configure a TCP deception service to emulate a Redis server, supporting basic commands like PING, AUTH, and INFO. ```yaml apiVersion: "v1" protocol: "tcp" address: ":6379" description: "Redis 7.0.12" commands: - regex: "^PING" handler: "+PONG\r\n" - regex: "^AUTH" handler: "-ERR Client sent AUTH, but no password is set\r\n" - regex: "^INFO" handler: "$180\r\n# Server\r\nredis_version:7.0.12\r\nos:Linux 5.15.0-76-generic x86_64\r\ntcp_port:6379\r\n\r\n" - regex: "^(.+)$" handler: "-ERR unknown command\r\n" deadlineTimeoutSeconds: 60 serverName: "redis-prod-01" ``` -------------------------------- ### LDAP / Active Directory TCP Service Source: https://github.com/beelzebub-labs/beelzebub/blob/main/README.md Emulate an LDAP/Active Directory Domain Controller using a TCP deception service. Supports specific LDAP protocol handshakes. ```yaml apiVersion: "v1" protocol: "tcp" address: ":389" description: "Active Directory LDAP Domain Controller" banner: "0\x84\x00\x00\x00\x10\x02\x01\x01\x61\x84\x00\x00\x00\x07\x0a\x01\x00\x04\x00\x04\x00" commands: - regex: "\\x30.*\\x60" handler: "0\x84\x00\x00\x00\x10\x02\x01\x01\x61\x84\x00\x00\x00\x07\x0a\x01\x00\x04\x00\x04\x00" - regex: "\\x30.*\\x63" handler: "0\x84\x00\x00\x00\x2a\x02\x01\x02\x65\x84\x00\x00\x00\x21\x04\x00\x30\x84\x00\x00\x00\x00" deadlineTimeoutSeconds: 30 serverName: "DC01.corp.local" ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.