
Golay — Active Directory Relay Attack Framework
Golay is a comprehensive Active Directory relay attack framework written in Go. It combines the functionality of ntlmrelayx, Responder, Pretender, mitm6, Relay-King, and ASRepCatcher into a single, statically compiled binary. Single binary. Pure Go. Zero CGO. Cross-compiles to Linux, Windows, and macOS. No Python interpreters, no libpcap, no Docker, no dependency hell — just drop the binary on your operator box and start relaying.What Golay Does
Golay covers the full relay attack lifecycle from poisoning through exploitation:How It Works
Golay operates as a pipeline. Each stage can run independently or chained together for a full attack:1
Poison Name Resolution
Golay poisons LLMNR, mDNS, NetBIOS-NS, and DHCPv6 on the local network. Victim machines that fail DNS lookups fall back to these multicast protocols, and Golay responds with the attacker’s IP address.With
--search-domain, Golay also injects a DNS suffix via DHCPv6 Option 24 (the mitm6 technique), causing Windows clients to resolve single-label names like “wpad” through the attacker’s rogue DNS.2
Capture Authentication
When victims connect to the attacker’s IP, Golay’s rogue servers (SMB, HTTP, LDAP, etc.) present NTLM authentication challenges. The victim’s machine automatically attempts to authenticate using the logged-in user’s credentials.For credential capture mode, hashes are extracted and saved in hashcat-compatible format. For relay mode, the authentication is forwarded to the real target instead.
3
Relay to Target
Golay takes the victim’s NTLM Type-1 (Negotiate), forwards it to the real target (e.g., an ADCS server, LDAP server, or SMB share), receives the Type-2 (Challenge), sends it back to the victim, captures the Type-3 (Authenticate), and forwards it to the target.The target sees a valid authentication from the victim’s account. Golay supports CVE-2019-1040 (MIC removal), CVE-2025-33073 (sign/seal stripping), and CVE-2019-1019 (target removal) for cross-protocol relay.
4
Execute Post-Auth Attack
Once authenticated on the target, Golay executes one of 12 attack modules:
- ADCS ESC8: Request a certificate as the victim account
- Shadow Credentials: Inject a KeyCredential for PKINIT authentication
- RBCD: Configure delegation to an attacker-controlled account
- DCSync: Grant replication rights for full domain compromise
- Secret Dumping: Extract SAM hashes, LSA secrets, or NTDS.dit
- Command Execution: Run commands via SMBExec, TaskExec, or WMIExec
Commands
Golay is organized into top-level commands, each targeting a specific phase of the attack:Quick Examples
Relay to ADCS for certificate enrollment (ESC8)
Full attack chain: Poison + Relay
Capture hashes (Responder mode)
./loot/ in hashcat-compatible format:
- NTLMv2:
-m 5600 - NTLMv1:
-m 5500 - Kerberos:
-m 7500
Coerce authentication
AS-REP hash capture with RC4 downgrade
Analyze relay paths
Relay Server + Client Matrix
Relay Servers (What Golay Listens On)
Relay Servers (What Golay Listens On)
Relay Clients (What Golay Relays To)
Relay Clients (What Golay Relays To)
Post-Relay Attacks
Post-Relay Attacks
Poisoning Protocols
LLMNR
LLMNR
Listens on multicast 224.0.0.252:5355 (IPv4) and ff02::1:3:5355 (IPv6). Responds to single-label name queries with the attacker’s IP. Effective when DNS fails for short hostnames.
mDNS
mDNS
Listens on multicast 224.0.0.251:5353 (IPv4) and ff02::fb:5353 (IPv6). Similar to LLMNR but uses the mDNS protocol and strips
.local suffixes.NetBIOS-NS
NetBIOS-NS
Listens on UDP port 137. Uses first-level NetBIOS name encoding. The oldest and most reliable poisoning vector on Windows networks.
DHCPv6 + DNS Search Domain
DHCPv6 + DNS Search Domain
Responds to DHCPv6 Solicit/Request/Rebind/Renew/InfoReq messages, injecting the attacker as the DNS server. With
--search-domain, injects a DNS suffix via Option 24 so Windows clients append the domain to all single-label lookups (the core mitm6 technique).Router Advertisement
Router Advertisement
Sends periodic ICMPv6 Router Advertisements with RDNSS option (RFC 8106) pointing to the attacker’s IPv6 address. Triggers Windows to start DHCPv6 negotiation.
DNS
DNS
Full rogue DNS server on TCP+UDP port 53. Responds to A, AAAA, ANY, SOA, and SRV queries. With
--relay-host, returns SOA records to trigger Kerberos-authenticated DNS dynamic updates.
