Log file locations
| File | Content |
|---|---|
/var/log/apache2/redirector-access.log | HTTP (:80) access log — all inbound requests |
/var/log/apache2/redirector-error.log | HTTP (:80) error log — rewrite trace, proxy errors |
/var/log/apache2/redirector-ssl-access.log | HTTPS (:443) access log — all inbound requests |
/var/log/apache2/redirector-ssl-error.log | HTTPS (:443) error log — rewrite trace, TLS errors |
In production C2 operations, agents connect over HTTPS. Monitor
redirector-ssl-access.log as your primary log during active sessions. The HTTP access log is useful for debugging connectivity and testing the header validation flow.Access the logs
SSH to the redirector first:- HTTPS logs (active sessions)
- HTTP logs
- Live monitoring
What to look for
Active Mythic callback traffic
Once an Apollo agent is running on a target, it beacons at regular intervals. In the HTTPS access log you will see repeated requests to the Mythic URI prefix:/cdn/media/stream/status is the Mythic check-in. /cdn/media/stream/update carries task results. Regular alternating GET/POST requests at your configured beacon interval confirm the agent is healthy and traffic is flowing through the redirector.
Decoy page requests (missing header)
Requests without a validX-Request-ID header are served the CloudEdge CDN maintenance page and logged with a 200 status:
200 response with a small body (around 500–700 bytes, the size of the decoy HTML) and no X-Request-ID in the request is the fingerprint of a scanner or automated probe receiving the decoy page. These requests are not proxied to any C2 backend.
Blocked scanner traffic (redirect.rules)
Requests from known AV vendor IPs, scanner CIDRs, or TOR exit nodes are blocked at Layer 1 before header validation runs. They appear in the log with a403 Forbidden status:
403 responses from diverse IPs indicates active scanner or AV probing of your redirector’s public IP.
Successful C2 proxy (header present, URI matched)
When a request passes all three layers and is proxied to a C2 backend, the response code reflects what the C2 server returned — typically200 for a successful check-in or task delivery:
404 from a C2 URI prefix means the request reached the backend but no listener or agent matched — this is normal before a listener is configured.
Error log diagnostics
The error logs capture rewrite trace output (LogLevel warn rewrite:trace3 is set in both VirtualHosts) and proxy backend errors. Use them when a request is not being routed as expected:
Rewrite trace shows rule not matching
Rewrite trace shows rule not matching
If Look for
rewrite:trace3 output shows the header condition failing, the X-Request-ID token in the request does not match the configured value. Retrieve the correct token:C2 Header: X-Request-ID: <token>. Ensure the agent’s HTTP profile uses this exact value.Proxy backend errors (AH01114, connection refused)
Proxy backend errors (AH01114, connection refused)
AH01114 or connection refused in the error log means Apache could not reach the C2 backend. Common causes:- No listener is running on the C2 server (expected until you start one)
- The VPC peering route was not established — check
terraform output network_architecture - The C2 server’s security group does not allow traffic from the Redirector VPC (
10.60.0.0/16)
SSL errors (certificate verification)
SSL errors (certificate verification)
SSL errors in
redirector-ssl-error.log typically indicate a certificate mismatch between the agent’s expected host and the served certificate. After running Certbot, verify the active certificate matches your domain: