Beelzebub, MCP kullanarak honeypot araçları oluşturmanızı sağlayan bir framework'tür. Prompt injection ve kötü niyetli agent davranışlarını tespit etmek için tasarlanmıştır. Temel konsept, agente normal çalışmasında asla kullanmayacağı araçlar sunarak tehditli aktiviteleri yakalamaktır.
Claude Desktop config.json'a ekle
{
"mcpServers": {
"beelzebub-labs-beelzebub": {
"command": "node",
"args": [
"~/.mcp/beelzebub/index.js"
]
}
}
} Kaynak kodu al ve yerel olarak çalıştır
git clone https://github.com/beelzebub-labs/beelzebub.git ~/.mcp/beelzebub
cd ~/.mcp/beelzebub Aldatma Çalışma Zamanı Çerçevesi
Beelzebub, SSH, HTTP, TCP, TELNET ve MCP protokolleri arasında uyarlanabilir, LLM destekli yanıltıcı hizmetleri dağıtan açık kaynaklı bir aldatma çalışma zamanıdır. Pasif honeypot'ların ötesine geçerek saldırganlarla gerçekçi etkileşimlerde aktif olarak katılır, yüksek kaliteli tehdit istihbaratı toplar ve AI aracılarına karşı prompt injection saldırılarını algılar.
CommandPlugin veya HTTPPlugin arayüzünü uygulayın ve init() üzerinden kaydedin — temel değişiklik gerekmezdocker compose build
docker compose up -d
go mod download
go build -o beelzebub .
./beelzebub run
helm install beelzebub ./beelzebub-chart
# Güncelleme:
helm upgrade beelzebub ./beelzebub-chart
Beelzebub yapılandırılmış bir CLI ile birlikte gelir. Tüm kullanılabilir komutları görmek için beelzebub --help çalıştırın.
beelzebub runTüm yapılandırılmış aldatma hizmetlerini başlatın.
beelzebub run [flags]
Flags:
-c, --conf-core string Temel konfigürasyon dosyasının yolu (varsayılan "./configurations/beelzebub.yaml")
-s, --conf-services string Servis konfigürasyon dizininin yolu (varsayılan "./configurations/services/")
-m, --mem-limit-mib int MiB cinsinden bellek sınırı, devre dışı bırakmak için -1 (varsayılan 100)
beelzebub validateHerhangi bir hizmeti başlatmadan tüm konfigürasyon dosyalarını ayrıştırın ve doğrulayın. CI pipelines için kullanışlıdır.
beelzebub validate --conf-core ./configurations/beelzebub.yaml --conf-services ./configurations/services/
beelzebub plugin listMevcut derlemede kayıtlı tüm eklentileri listeleyin.
beelzebub plugin list
beelzebub versionSürüm, commit SHA, derleme tarihi ve Go çalışma zamanı bilgisini yazdırın.
beelzebub version
Beelzebub, temel kod değiştirmeden aldatma çalışma zamanını genişletmek için pkg/plugin konumunda istikrarlı bir genel SDK ortaya koymaktadır.
// CommandPlugin, SSH, TCP, TELNET ve HTTP hizmetleri için metin yanıtları üretir.
type CommandPlugin interface {
Metadata() Metadata
Execute(ctx context.Context, req CommandRequest) (string, error)
}
// HTTPPlugin, durum kodu, başlıklar ve gövde içeren tam HTTP yanıtları üretir.
type HTTPPlugin interface {
Metadata() Metadata
HandleHTTP(r *http.Request) HTTPResponse
}
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: "Özel aldatma yanıt üreticisi",
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{})
}
main.go çatalınıza boş bir import ekleyin:
import _ "github.com/your-org/beelzebub-myplugin"
Plugin başlangıçta kendini kaydeder ve hemen herhangi bir servis YAML'sinde bir plugin referansı olarak kullanılabilir.
Beelzebub, yapılandırılmış endpoint'te Prometheus metriklerini ortaya koymaktadır (varsayılan: :2112/metrics):
| Metrik | Açıklama |
|---|---|
beelzebub_events_total |
Tüm hizmetler arasında toplam aldatma olayları |
beelzebub_events_ssh_total |
SSH olayları |
beelzebub_events_http_total |
HTTP olayları |
beelzebub_events_tcp_total |
TCP olayları |
beelzebub_events_telnet_total |
TELNET olayları |
beelzebub_events_mcp_total |
MCP olayları |
Tüm aldatma olaylarını aşağı akış SIEM entegrasyonu için bir mesaj kuyruğuna yayımlayın:
core:
tracings:
rabbit-mq:
enabled: true
uri: "amqp://guest:guest@localhost:5672/"
Olaylar yapılandırılmış JSON olarak event kuyruğuna yayımlanır.
# Unit testler
make test.unit
# Entegrasyon testleri (Docker gerektirir)
make test.dependencies.start
make test.integration
make test.dependencies.down
# Hizmetleri başlatmadan konfigürasyonu doğrulayın
beelzebub validate
Beelzebub, GNU GPL v3 Lisansı altında lisanslanmıştır.
Beelzebub ekibi katkı ve proje katılımını memnuniyetle karşılar. Hataları raporlamak, yeni özellikler eklemek veya herhangi bir sorunuz olması durumunda, ayrıntılı bilgi için lütfen Katkı Rehberimize bakınız. Tüm katılımcılara ve maintainerlara Davranış Kurallarımıza uymanızı ve destekleyici ve saygılı bir topluluk oluşturmayı teşvik ediyoruz.
Mutlu hacking!
Beelzebub iki seviyeli bir konfigürasyon sistemi kullanır:
beelzebub.yaml) — global ayarlar: logging, tracing, Prometheusservices/*.yaml) — hizmet başına bir dosyacore:
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"
Ortam değişkeni geçersiz kılmaları tüm alanlar için desteklenir (örn. BEELZEBUB_RABBITMQ_ENABLED). Servis konfigürasyonları, BEELZEBUB_SERVICES_CONFIG aracılığıyla tamamen JSON dizisi olarak da sağlanabilir.
Her aldatıcı hizmet, services/ dizinine yerleştirilen ayrı bir YAML dosyasında tanımlanır. protocol alanı kullanılan aldatma motorunu belirler. Komutlar istek eşleştirmesi için regex kullanır ve dinamik yanıtlar için statik bir handler veya plugin referansı kullanırlar.
MCP (Model Context Protocol) aldatma hizmetleri, LLM destekli aracılara karşı prompt injection saldırılarını algılamak için tasarlanmış yanıltıcı araçları ortaya koymaktadır.
Yanıltıcı araç, aracının araç listesinde kaydedilir ancak normal işlem altında hiçbir zaman çağrılmamalıdır. Herhangi bir çağırma, bir prompt injection saldırısının aracının koruma mekanizmalarını başarıyla aştığını gösterir. Bu sağlar:
mcp-8000.yaml:
apiVersion: "v1"
protocol: "mcp"
address: ":8000"
description: "MCP Honeypot"
tools:
- name: "tool:user-account-manager"
description: "Kullanıcı hesabı ayrıntılarını sorgula ve değiştirmek için araç. Yönetici ayrıcalıkları gerektirir."
params:
- name: "user_id"
description: "Yönetilecek kullanıcı hesabının kimliği."
- name: "action"
description: "Kullanıcı hesabında gerçekleştirilecek işlem, olası değerler: get_details, reset_password, deactivate_account"
handler: |
{
"tool_id": "tool:user-account-manager",
"status": "completed",
"output": {
"message": "'tool:user-account-manager' aracı başarıyla yürütüldü. Sonuçlar iç işleme beklemede ve kaydedilecektir.",
"result": {
"operation_status": "success",
"details": "email: kirsten@gmail.com, role: admin, last-login: 02/07/2025"
}
}
}
- name: "tool:system-log"
description: "Sistem loglarını sorgula araç. Yönetici ayrıcalıkları gerektirir."
params:
- name: "filter"
description: "Logları filtrelemek için kullanılan giriş."
handler: |
{
"tool_id": "tool:system-log",
"status": "completed",
"output": {
"message": "'tool:system-log' aracı başarıyla yürütüldü.",
"result": {
"operation_status": "success",
"details": "Info: email: kirsten@gmail.com, last-login: 02/07/2025"
}
}
}
http://beelzebub:port/mcp üzerinden erişilebilir (Streamable HTTP transport).
HTTP aldatma hizmetleri, URL deseni eşleştirmesine göre yapılandırılabilir yanıtlarla web isteklerine yanıt verir. TLS, statik handler'lar, LLM destekli yanıtlar ve sonsuz labirent üreticisini destekler.
WordPress simülasyonu (http-80.yaml):
apiVersion: "v1"
protocol: "http"
address: ":80"
description: "Wordpress 6.0"
commands:
- regex: "^(/index.php|/index.html|/)$"
handler: |
<html><header><title>Wordpress 6 test sayfası</title></header>
<body><h1>Wordpress'ten Merhaba</h1></body></html>
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: |
<html><body>
<form method="post">
<input type="text" name="uname" placeholder="Kullanıcı Adı" required>
<input type="password" name="psw" placeholder="Şifre" required>
<button type="submit">Giriş</button>
</form>
</body></html>
headers:
- "Content-Type: text/html"
- "Server: Apache/2.4.53 (Debian)"
statusCode: 200
- regex: "^.*$"
handler: "<html><body><h1>Bulunamadı!</h1></body></html>"
headers:
- "Content-Type: text/html"
statusCode: 404
LLM destekli HTTP hizmeti — eşleşmeyen herhangi bir istek için dinamik yanıtlar oluşturmak üzere fallbackCommand ile plugin: LLMHoneypot ekleyin.
Sonsuz labirent üreticisi — otomatik tarayıcıları ve crawlerleri tuzağa düşüren sonsuz genişleyen bir Apache tarzı dizin listesi dağıtmak için plugin: MazeHoneypot kullanın.
SSH aldatma hizmetleri hem statik komut yanıtlarını hem de oturum başına konuşma geçmişi içeren LLM destekli etkileşimli seansları destekler.
LLM destekli SSH (OpenAI):
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"
LLM destekli SSH (yerel Ollama):
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"
Statik SSH:
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
TELNET aldatma hizmetleri, tam kimlik doğrulama akışı ve LLM entegrasyonu içeren terminal tabanlı cihazları (yönlendiriciler, anahtarlar, eski sistemler) taklit eder.
LLM destekli TELNET:
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"
Statik Cisco IOS simülasyonu:
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
TCP aldatma hizmetleri ikili ve metin tabanlı protokolleri kapsar: veritabanları, mesaj broker'ları, dizin hizmetleri, uzaktan erişim ve daha fazlası. Banner'ı yalnızca mod, etkileşimli regex eşleştirme ve LLM entegrasyonunu destekler.
Redis:
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:
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"
LLM destekli PostgreSQL:
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: "PostgreSQL 15.3 sunucusunu simule ediyorsunuz. Gelen TCP verilerine bir PostgreSQL sunucusu gibi yanıt verin."
Memcached, MS-SQL, SMB, RDP, VNC ve MQTT için ek örnek konfigürasyonlar configurations/services/ içinde mevcuttur.

IDA Pro için MCP sunucusu, AI asistanları ile binary analiz yapmanızı sağlar. Plugin decompilation, disassembly işlemlerini gerçekleştirir ve malware analiz raporlarını otomatik olarak oluşturmanıza imkan tanır.
Ghidra için bir Model Context Protocol sunucusu olup LLM'lerin uygulamaları özerk şekilde ters mühendislik yapmasını sağlar. Binary dosyaları derlemesini açma, metod ve veri adlandırma, metod/sınıf/import/export listeleme araçlarını sunar.
JADX-AI-MCP, JADX decompiler için bir plugin ve MCP Server olup Model Context Protocol (MCP) ile entegre edilerek Claude gibi LLM'lerle canlı reverse engineering desteği sağlar.
vet-mcp, yapay zeka kodlama araçları tarafından önerilen npm ve PyPI paketleri gibi açık kaynak paketleri güvenlik açıkları ve kötü amaçlı kodlar açısından kontrol eder. Docker üzerinde veya bağımsız bir binary olarak yerel olarak çalışarak hızlı ve otomatik doğrulama sağlar.
AI ajanlarının Semgrep kullanarak kodda güvenlik açıklarını taramasına izin verir.
Ghidra için native Model Context Protocol sunucusu. GUI konfigürasyon ve logging içerir, 31 güçlü tool ve harici bağımlılık yok.