コンテンツにスキップ

Starkiller

Starkiller is a modern web-based interface for the Empire C2 framework, streamlining agent management, listener configuration, and post-exploitation workflows through an intuitive GUI instead of CLI-only operations.

MethodCommandNotes
AppImageDownload from releases, chmod +x Starkiller*.AppImage && ./Starkiller*.AppImageStandalone, no dependencies
Dockerdocker run -p 3001:3001 bc1sdc/starkiller:latestIsolated environment, easy deployment
Sourcegit clone https://github.com/BC-SECURITY/Starkiller && npm install && npm startRequires Node.js 14+, full control
BinaryDownload pre-built binaries from GitHub releasesPlatform-specific (Linux, macOS, Windows)
# Connect to Empire Server
# Default: localhost:1337 (Empire API)
# Alternative remote: https://empire-server.local:1337

# Connection Settings
- Username: empire (or custom admin)
- Password: empire (default, change on first login)
- API Token: Auto-generated after successful auth
- SSL/TLS: Configurable (required for production)
Listener TypeUse CaseConfiguration
HTTPStandard web-based comms, lab/testingPort 80, callback URL, user agent strings
HTTPSProduction, encrypted channelPort 443, certificate/key, domain fronting
SMBLateral movement, internal networksPipe name, named pipes, SMB beacon
DNSCovert tunnel, firewall evasionDomain registration, DNS records, timing
CustomPlugins, specialized protocolsListener modules, Python-based
1. Listeners → New Listener
2. Select type (HTTP/HTTPS/SMB/DNS)
3. Configure host (0.0.0.0 or specific IP)
4. Set port (80/443 for HTTP/HTTPS)
5. Optional: Domain fronting (CloudFlare, akamai)
6. Set callback headers, user agent
7. Test → Launch
Stager TypeDeliveryOutput Format
LauncherPowerShell one-liner, macro, scriptBase64 encoded or PowerShell direct
Multi-StageDownload agent, compile in-memoryReduced initial footprint
MacroOffice documents (Word, Excel)VBA payload embedded
BatchCMD batch files, scheduled tasksWindows native execution
HTAHTML Application, mshta executionBrowser-based delivery
EmbeddedCompiled binary, shellcode injection.exe, .dll formats
1. Stagers → New Stager
2. Select listener (pre-configured)
3. Choose stager type and language
4. Set encode, obfuscation options
5. Generate payload
6. Copy/download for delivery
7. Track generated stagers in list
Dashboard → Agents
- List all active/inactive agents
- Filter by listener, user, hostname, OS
- Last seen timestamp
- Stored credentials per agent
- Kill or interact with agent
FunctionPurposeNotes
Shell CommandExecute system commandcmd.exe or powershell.exe
Load ModuleRun exploitation moduleMimikatz, Sherlock, etc.
Upload FileTransfer file to agentBinary/text, obfuscated
Download FileExfiltrate dataProgress tracking, chunked
Rename AgentChange display nameInternal tracking only
Kill AgentTerminate sessionClean shutdown or force
1. Agents → Click agent name
2. Interactive shell opens
3. Type commands (PowerShell syntax)
4. Output streams in real-time
5. Upload/download via buttons
6. Module execution from dropdown
ModuleFunctionExample
MimikatzCredential dumpingcredentials/mimikatz
SherlockVulnerability detectionexploitation/sherlock
BloodhoundAD mapping, pathfindingrecon/bloodhound
PowerUpPrivilege escalation checksexploitation/powerup
Empire LauncherSecondary payloadcode_execution
WMILateral movementlateral_movement/wmi
1. Agent → Interact
2. Select Module dropdown
3. Configure options (listener, target, etc.)
4. Set payload encoding/obfuscation
5. Execute module
6. Monitor output in shell
7. Download results or parse inline
TypeSourceData
PlaintextDumped passwords, manual entryUsername:password
HashMimikatz, SAM dumpNTLM, LM hashes
TicketKerberos ticket extraction.kirbi, base64 encoded
TokenToken impersonationOAuth, API tokens
CertificateCertificate extraction.pfx, .pem keys
1. Load Mimikatz module on agent
2. Execute: `privilege::debug` → `sekurlsa::logonpasswords`
3. Credentials appear in Credentials tab
4. Filter/search by username, hash type
5. Export CSV for offline cracking
6. Use credentials for pivot/lateral movement
7. Notes field for tracking source agent
# Agent communicates with configured listener
# Listener type determines covert channel
# Multiple agents → Single listener (fan-in)
# Single agent → Multiple listeners (backup channels)

# Check agent beacon interval
# Modify in listener → Jitter (randomization)
# Detection: Beaconing patterns, metadata, DNS records
FeatureUse CaseDetails
User AccountsMulti-operator accessRole-based (admin, operator, read-only)
API TokensAutomation, CI/CDToken auth for scripts
Audit LogOperational trackingLogin, agent commands, downloads
Notes/TagsTeam communicationAttach to agents, operations
Operation WorkspaceCampaign organizationSeparate projects, isolated agents
Settings → Users → New User
- Username: operator1
- Password: (auto-generate or set)
- Role: operator (can execute) or viewer (read-only)
- Save API token for scripting
1. Reports → New Report
2. Select date range (operations period)
3. Include: Agents, listeners, modules executed
4. Filter by operator, listener type
5. Format: PDF (formatted) or CSV (data analysis)
6. Export credentials (with/without hashes)
7. Share with stakeholders (redacted PII as needed)
- Agent list: CSV/JSON (for correlation)
- Module output: Plain text or JSON (parsing)
- Credentials: CSV (Excel, password managers)
- Network log: DNS, HTTP beacon analysis
- Timeline: Sorted by event timestamp
Plugins directory structure:
plugins/
├── listener_custom.py      # Custom listener protocol
├── module_custom.py        # Exploitation module
├── obfuscator_custom.py    # Encoding/evasion
└── stager_custom.py        # Delivery method

Load plugin: Settings → Plugins → Upload .zip
Enable/disable without restart
FeatureStarkiller GUIEmpire CLI
Learning curveLow (visual, intuitive)Steep (command memorization)
Agent interactionReal-time web shellCommand feedback loop
Listener setupForm-based, validationManual config, error-prone
ReportingOne-click PDF exportManual log parsing
CollaborationMulti-user, audit logSingle-user, manual logging
AutomationREST API, limitedPython scripts, full control
Workflow speedFast (clicking)Fast (scripting)
Advanced controlLimited (GUI constraints)Full (direct Python)
1. Create HTTP/HTTPS listener (callback domain)
2. Generate PowerShell launcher stager
3. Deliver via phishing email or web compromise
4. Wait for first beacon (check Dashboard)
5. Interact with agent shell
6. Execute initial reconnaissance
1. Gain agent on domain-joined machine
2. Load/execute Mimikatz module
3. Extract NTLM hashes and plaintext
4. Credentials tab auto-populates
5. Use hashes for pass-the-hash attacks
6. Pivot to other systems (lateral movement)
1. Run Sherlock module (vulnerability scan)
2. Execute PowerUp (privesc checks)
3. Review output for exploitable gaps
4. Load token impersonation module
5. Escalate to SYSTEM or admin token
6. Execute privileged commands
7. Dump SAM hive or LSASS process
# Persistence
1. Load empire launcher module
2. Create scheduled task or registry run key
3. Generate base64 launcher
4. Execute on agent (maintains access)

# Cleanup
1. Kill scheduled task/registry entry
2. Clear Event Logs (via agent)
3. Remove temporary files
4. Disconnect agent gracefully
5. Delete listener (archive first)
PracticeImplementation
SSL/TLSUse HTTPS listeners, valid certificates
FirewallLimit Empire API access to operator IPs
CredentialsChange default empire/empire on first login
LogsArchive audit logs, review for anomalies
NetworkSegment C2 from production networks
ObfuscationEnable encoding, vary user agents, domain front
MonitoringSIEM alerts on beacon patterns, failed auth
EncryptionUse encrypted channels (SMB pipes, DNS tunnels)
IssueSolution
Agent not beaconingCheck listener IP/port accessible, agent can reach callback
Module execution timeoutIncrease timeout in settings, retry with smaller scope
Connection refusedVerify Empire server running, API port open, credentials correct
SSL certificate errorDisable cert verification (labs only) or install valid cert
Memory errors on large exportsExport in date ranges, filter agents before export
Slow UI responseClear browser cache, reduce agent count in view, restart Starkiller