Claude 24f816b6a3
Consolidate 22 sibling repos into layered organism structure
Place useful parts of the surrounding repos into sica-fondt by layer, per the
body model (Ada = membrane; brain/endocrine/capabilities/knowledge non-Ada):

- brain/        LLM reasoning + providers (dapr, hermes, MoMoA)
- capabilities/ REPRAG sidecars: hermes tools/skills, dapr tools, parallel
                dispatch, A51 channels, and the OSINT cluster
- knowledge/    LORAG corpus: 754 cyber-skills, agency personas, secure-coding,
                MITRE ATT&CK data
- reference/    defensive threat-reference (C3, shhbruh doc) + AdaYaml parser

License handling: AGPL sources (worldosint, advanced_evolution, mercury,
Reticulum) and GPL DeTTECT are SPEC-only clean-room/port descriptions — no
copyleft code copied. MIT/Apache/data parts copied as working trees.

Safety: shhbruh escape/persistence material and C3 covert-C2 kept as reference
only, not wired into the running organism. See CONSOLIDATION.md.

https://claude.ai/code/session_01UehUqEXXJJCsHoA4voCU5c
2026-06-10 06:53:01 +00:00

5.3 KiB

API Reference: LaZagne Credential Access Detection

Libraries Used

Library Purpose
subprocess Execute LaZagne CLI for credential recovery testing
json Parse LaZagne JSON output
pathlib Handle output file paths
os Check platform and privilege level

Installation

# Python (from source)
git clone https://github.com/AlessandroZ/LaZagne.git
cd LaZagne

# Windows
pip install -r requirements.txt
python laZagne.py --help

# Linux
pip install -r requirements.txt
python laZagne.py --help

# Pre-compiled Windows binary
# Download from GitHub Releases

CLI Reference

Retrieve All Credentials

# All modules, JSON output
python laZagne.py all -oJ

# All modules, text output to file
python laZagne.py all -oA -output /tmp/lazagne_results

# Run with elevated privileges (recommended for full results)
# Windows: Run as Administrator
# Linux: sudo python laZagne.py all

Module-Specific Scans

# Browser credentials only
python laZagne.py browsers

# WiFi passwords
python laZagne.py wifi

# Database credentials
python laZagne.py databases

# System credentials (Windows)
python laZagne.py windows

# Email client credentials
python laZagne.py mails

# Git credentials
python laZagne.py git

Key CLI Flags

Flag Description
all Run all credential recovery modules
browsers Chrome, Firefox, Edge, Opera, IE passwords
wifi Saved WiFi network passwords
databases Database client saved credentials
windows Windows credential manager, vault, LSA
mails Email client saved passwords
git Git credential store and helpers
sysadmin Admin tools (PuTTY, WinSCP, FileZilla)
-oJ Output as JSON
-oA Output all formats (JSON + TXT)
-output Output directory path
-password Master password for specific modules
-v Verbose output

Available Modules

Windows Modules

Module Targets
chrome Chrome saved passwords and cookies
firefox Firefox logins.json
edge Edge Chromium saved passwords
ie Internet Explorer saved credentials
credman Windows Credential Manager
vault Windows Vault
lsa_secrets LSA Secrets (requires SYSTEM)
cachedump Domain cached credentials
winscp WinSCP session passwords
putty PuTTY saved sessions
filezilla FileZilla saved servers
wifi Saved WiFi profiles

Linux Modules

Module Targets
chrome Chrome/Chromium saved passwords
firefox Firefox saved passwords
kde KDE Wallet credentials
gnome GNOME Keyring
wifi NetworkManager WiFi passwords
docker Docker config.json
ssh SSH private keys (detection only)
git Git credential store
env Environment variable secrets

Python Integration

Run LaZagne and Parse Results

import subprocess
import json
import os
from pathlib import Path

def run_lazagne(modules="all", output_dir="/tmp/lazagne"):
    """Run LaZagne and parse JSON output for credential audit."""
    os.makedirs(output_dir, exist_ok=True)
    cmd = ["python", "laZagne.py", modules, "-oJ", "-output", output_dir]

    result = subprocess.run(
        cmd, capture_output=True, text=True, timeout=120,
    )

    # Find the JSON output file
    json_files = list(Path(output_dir).glob("*.json"))
    if json_files:
        with open(json_files[0]) as f:
            return json.load(f)
    return []

Categorize Findings by Risk

HIGH_RISK_MODULES = {"lsa_secrets", "cachedump", "credman", "vault", "wifi"}
MEDIUM_RISK_MODULES = {"chrome", "firefox", "edge", "putty", "winscp", "filezilla"}

def categorize_credentials(lazagne_output):
    summary = {"high": [], "medium": [], "low": [], "total": 0}
    for module_result in lazagne_output:
        module_name = list(module_result.keys())[0]
        creds = module_result[module_name]
        if not creds:
            continue
        for cred in creds:
            entry = {"module": module_name, **cred}
            if module_name in HIGH_RISK_MODULES:
                summary["high"].append(entry)
            elif module_name in MEDIUM_RISK_MODULES:
                summary["medium"].append(entry)
            else:
                summary["low"].append(entry)
            summary["total"] += 1
    return summary

MITRE ATT&CK Mapping

Technique ID Description
Credentials from Password Stores T1555 Browser, credential manager
Credentials from Web Browsers T1555.003 Chrome, Firefox, Edge
Windows Credential Manager T1555.004 Credential Manager, Vault
Cached Domain Credentials T1003.005 Domain cached logon
LSA Secrets T1003.004 LSA secret extraction

Output Format

[
  {
    "chrome": [
      {
        "URL": "https://internal.example.com/login",
        "Login": "admin@example.com",
        "Password": "REDACTED"
      }
    ]
  },
  {
    "wifi": [
      {
        "SSID": "CorpWiFi-5G",
        "Password": "REDACTED",
        "Authentication": "WPA2-Personal"
      }
    ]
  },
  {
    "credman": [
      {
        "Target": "TERMSRV/prod-server-01",
        "Username": "DOMAIN\\admin",
        "Password": "REDACTED"
      }
    ]
  }
]