Reference this section if any component is not behaving as expected after deployment. Start with the connectivity checks to confirm the network is intact, then move to component-specific health checks if a particular service is the problem.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/BaddKharma/redStack/llms.txt
Use this file to discover all available pages before exploring further.
Connectivity checks
Guacamole portal
Verify Guacamole is reachable from your local machine:Internal hostname resolution (from Windows workstation)
Pre-configured/etc/hosts and C:\Windows\System32\drivers\etc\hosts entries are written on all machines at deploy time. Hostname resolution failures from WIN-OPERATOR mean the hosts file was not written during cloud-init.
Redirector decoy and header validation
These two tests verify the core redirector security model from your local machine. Use a browser User-Agent —curl’s default is blocked by redirect.rules.
<token> value:
VPC peering
Verify VPC peering routes are present in both VPCs. From the redirector, the team server VPC CIDR (10.50.0.0/16 by default, or your custom vpc_cidr) should be reachable:
Component health checks
Mythic C2 server
Mythic C2 server
SSH to Mythic via the Mythic Team Server (SSH) Guacamole connection, then check container status:Expected: 8 core containers plus Retrieve the Mythic admin password:Access the web UI from the Windows workstation browser:Login: Check container logs directly with Docker:If the
apollo and http all showing running. Warnings about localhost binding are expected and harmless.Check Docker directly:mythic_admin / password from above.If containers are not running, stop and restart Mythic:mythic_nginx container keeps restarting with a missing certificate error, see the Mythic nginx SSL certificate missing section below.Sliver C2 server
Sliver C2 server
SSH to Sliver via the Sliver C2 Server (SSH) Guacamole connection:Connect the Sliver client to verify the daemon is accepting connections:The client should connect without error and display the Sliver banner. If the
sliver-server binary is missing, see the Sliver not installed section below.Havoc C2 server
Havoc C2 server
SSH to Havoc via the Havoc C2 Server (SSH) Guacamole connection:If not running:If the binary is missing, the build step (Part 6) has not been completed. Run
~/build_havoc.sh on the Havoc server.Guacamole
Guacamole
SSH to Guacamole and check that all three Docker containers are running:Expected: If connections are missing from the Guacamole UI, verify they exist in the database:Expected: 7 connections (1 RDP, 5 SSH, 1 VNC). If missing, connections can be recreated manually through the Guacamole UI under Settings → Connections → New Connection.
guacamole/guacamole, postgres:15, and guacamole/guacd — all up.Check Nginx (the reverse proxy in front of Guacamole):Apache redirector
Apache redirector
SSH to the redirector and run the pre-installed test script:This single command checks Apache status, all VirtualHost configurations, connectivity to all three C2 backends, and header/decoy page behavior.Check VirtualHost configuration directly:Verify Check Apache service status:Review access and error logs:URI prefixes in the logs identify which C2 backend received each request:
redirect.rules loaded correctly (should return a count of rules, not zero or an error):| URI prefix | Backend |
|---|---|
/cdn/media/stream/ | Mythic |
/cloud/storage/objects/ | Sliver |
/edge/cache/assets/ | Havoc |
Windows workstation
Windows workstation
If RDP through Guacamole is failing or slow:
- Desktop takes a long time to load: Normal. Wait 10-15 minutes after initial deployment. Windows is the slowest component to initialize.
- Check RDP is enabled: On the Guacamole server, confirm RDP connectivity:
nc -zv win-operator 3389 - Check Defender is disabled: After connecting, open PowerShell and run
Get-MpComputerStatus | Select RealTimeProtectionEnabled. Expected:False. - Check hosts file: Open
C:\Windows\System32\drivers\etc\hostsand confirm entries exist formythic,sliver,havoc,guac, andredirector.
Common issues and fixes
Sliver or Havoc shows FAILED in the connectivity test
Sliver or Havoc shows FAILED in the connectivity test
This is expected before listeners are started. The redirector test script (
test_redirector.sh) attempts to connect to each C2 backend’s HTTP port. Sliver and Havoc only expose that port after a listener is configured.- Sliver: FAILED until an HTTP listener is started with
http --lhost 0.0.0.0 --lport 80in the Sliver console - Havoc: FAILED until the teamserver is running and an HTTP listener is created through the Havoc client
sudo /home/admin/test_redirector.sh after completing Parts 5 and 6 to confirm all three backends show OK.C2 routing returns the decoy page instead of proxying
C2 routing returns the decoy page instead of proxying
The
X-Request-ID header value is wrong or missing. The decoy page is always returned when the header check fails, regardless of URI prefix.- Retrieve the correct token:
terraform output deployment_info→ look forC2 Header: X-Request-ID: <token> - Confirm the token matches what is configured in your agent or test command
- Test manually with the correct token:
Expected: connection refused or 404 (proxied to Mythic), not the CloudEdge page.
Windows desktop takes a long time
Windows desktop takes a long time
Normal behavior. Windows cloud-init runs Defender disablement, RDP enablement, and tool installation (Chromium, VS Code, MobaXterm, 7-Zip) on first boot. This takes 10-15 minutes. Wait and retry the Guacamole RDP connection.
terraform apply fails with key pair not found
terraform apply fails with key pair not found
The SSH key pair (If it does not exist, create it (run from inside the Then re-run
rs-rsa-key) must be created in AWS before running terraform apply. Terraform does not create it.Verify the key pair exists:redStack/ directory):terraform apply.Guacamole shows a blank page
Guacamole shows a blank page
The Guacamole Docker containers take several minutes to start after the instance boots. If you see a blank page, wait 3-5 more minutes and refresh. Check container status over SSH if the issue persists:All three containers (
guacamole/guacamole, postgres:15, guacamole/guacd) must be Up before the UI is available.redirect.rules download fails
redirect.rules download fails
Symptom: Apache fails to start; The redirector downloads Re-download manually on the redirector:
sudo apache2ctl -S shows:redirect.rules from the redRules GitHub repo at boot. A network issue or timeout during cloud-init can leave the file empty or containing an error page.Verify the file contents:Mythic nginx SSL certificate missing
Mythic nginx SSL certificate missing
Symptom: The Generate the certificate manually:Verify:
mythic_nginx container keeps restarting. Logs show:Mythic not starting
Mythic not starting
Symptom: Common causes:
mythic-cli status shows containers not running.- Docker is still pulling images — wait 5 minutes after initial deploy
- Port conflict — check with
sudo netstat -tlnp - Insufficient memory — consider upgrading to
t3.largeinterraform.tfvars - Missing SSL certificate — see Mythic nginx SSL certificate missing above
Sliver not installed
Sliver not installed
Symptom: Re-run the installation:
sliver-server command not found.Check the cloud-init log for installation errors:Havoc build failed
Havoc build failed
Symptom: Havoc teamserver binary not found or service fails to start.Check the cloud-init log:Verify Go is installed:Rebuild manually:
Agent won't call back
Agent won't call back
Work through this checklist before digging into logs:
- Listener is running on the correct C2 server
callback_host/ Hosts field points to the redirector’s domain or public IP- Agent includes the correct
X-Request-IDheader with the auto-generated token - Agent URI uses the correct prefix (
/cdn/media/stream/,/cloud/storage/objects/, or/edge/cache/assets/) - Redirector Apache is running with all VirtualHosts enabled (
sudo apache2ctl -S) - Redirector can reach the C2 server’s private IP (
ping mythicfrom the redirector) - Agent user-agent string is not blocked by
redirect.rules(check for known scanner or AV strings)
Terraform errors
Terraform errors
Error: Update
InvalidKeyPair.NotFoundThe key pair name in terraform.tfvars does not match an existing key pair in AWS.ssh_key_name in terraform.tfvars to match the actual key pair name.Error: VPC limit exceededAWS accounts have a default limit of 5 VPCs per region. redStack creates 2 (team server + redirector), so you need at least 2 free VPC slots. Either delete unused VPCs in the AWS console or switch to the default VPC: