펜테스팅 위키
  • Welcome
    • Home
  • 정보 수집
    • OSINT
      • Sub Domain
      • Google Hacking
      • Github
      • IP Address
      • Employees
    • 내부망
      • RID Cycling
      • Password Spraying
      • Password Must Change
      • Extension
        • xlsx/ods
        • pfx
        • vhd
        • pst
        • vbs
        • hc
      • Protocol
        • 21 - FTP
        • 22 - SSH
        • 25 - SMTP
        • 23 - Telnet
        • 53 - DNS
        • 80/443 - HTTP
        • 88 - Kerberos
        • 111 - RPC
        • 135 - msrpc
        • 139/445 - SMB
        • 389/636 - LDAP
        • 1433 - MSSQL
        • 5985/5986 - wsman
  • 초기 침투
    • CVEs
      • CVE-2025-31486
    • Phishing
      • Command File
      • EXE + LNK
      • wax
      • Microsoft Word
    • Web
      • Quary Language
        • SQL
        • GraphQL
      • File Upload
      • File Download
      • XSS
      • SSRF
      • CSRF
      • Open Redirect
      • SOP / CORS
    • ZIP Slip
  • 지속성
    • Active Directory
      • Golden Ticket
      • DC Shadow
      • RID Hijacking
    • Local
      • Task Scheduler
      • Startup Folder
      • Registry AutoRun
      • COM
      • WMI Event Subscription
      • SSH Key Injection
      • DLL Hijacking
      • DLL SideLoading
      • Create Account
  • 권한 상승
    • Active Directory
      • DACL
        • ReadGMSAPassword
        • ReadLAPSPassword
        • ForceChangePassword
        • AddSelf
        • WriteOwner
        • GenericAll
        • GenericWrite
        • WriteSPN
        • AddMembers
        • WriteProperty
        • WriteGPO
        • AddAllowedToAct
        • AllExtendedRights
      • AD CS
        • Abuse Permissions
        • ESC1
        • ESC2
        • ESC3
        • ESC4
        • ESC5
        • ESC6
        • ESC7
        • ESC8
        • ESC9
        • ESC10
        • ESC11
        • CVE-2022-26923
        • Non-PKINIT
      • MS14-068
      • Server Operators
      • DnsAdmins
      • noPac
      • Silver Ticket
      • KrbRelayUp
    • Windows
      • SeImpersonatePrivilege
      • Unquoted Service Path
      • Weak Service Permissions
      • Weak Service Binary Permissions
      • UAC Bypass
      • Always Install Elevated
      • Autoruns
      • Credential Manager
      • Local Service Account
  • 민감정보 탈취
    • Active Directory
      • Kerberoasting
      • Targeted Kerberoast
      • ASRep-Roasting
      • AS Requested Service Tickets
      • Unconstrained Delegation
      • Constrained Delegation
      • Alternate Service Name
      • Resource Based Constrained Delegation
      • DCSync
      • LSASS
      • Shadow Credentials
      • Backup Operators
      • SeEnableDelegationPrivilege
      • Domain Cached Credentials
    • Windows
      • Unattended File
      • DPAPI
      • Hard-coding Credentials
      • SeBackupPrivilege
  • 측면 이동
    • File Transfer
      • SCP
      • ZIP
      • ncat
      • Python
      • PowerShell
      • certutil
      • wget
      • SMB
      • Base64
      • FTP
      • WebDav
      • cURL
    • Pivoting
      • SOCKS
      • Proxyfier
      • Remote Port Forwarding
    • NTLM Relay
    • WinRM
    • PsExec
    • WMI
    • DCOM
    • RDP
    • Port Forwarding
    • Domain Trust Discovery
  • 사용자 가장
    • Pass the Hash
  • Pass the Ticket
  • Overpass the Hash
  • Token Impersonation
  • Make Token
  • Process Injection
  • ETC
    • CS
      • Kerberos
      • NTLM
      • PKINIT
      • Integrity
      • Registry
      • Active Directory Trusts
      • Delegation
      • OAuth 2.0
      • S4U
    • Tools
      • Cobalt Strike
      • BloodHound
      • Certipy-ad
      • LDAP Search
      • Hydra
      • Hashcat
Powered by GitBook
On this page
  • 대응 방안
  • References

Was this helpful?

Export as PDF
  1. 측면 이동

NTLM Relay

PreviousRemote Port ForwardingNextWinRM

Last updated 4 hours ago

Was this helpful?

NTLM Relay는 NTLM 프로토콜의 매커니즘을 악용한 공격입니다. 사용자 인증 시 서버는 클라이언트의 NTLM 해시로 암호화된 챌린지를 전달합니다. 클라이언트는 자신의 NTLM 해시를 이용해 이를 복호화하고 챌린지에 맞는 응답을 함으로써 사용자 인증이 이뤄지게 됩니다. Pass the Hash 기법에서 다루는 것처럼 공격자는 NTLM 해시만 획득하더라고 사용자로 활동이 가능한데, 이러한 이유 역시 자동화 도구에서는 모두 해시를 이용해 챌린지를 복호화하고, 그에 맞는 답을 암호화하여 전송하기 때문입니다.

단순하게 적용하자면 공격자 서버에서 Relay 공격을 위한 SMB 서버를 활성화하고, 피해자의 PC로 강제 인증 시도 혹은 사회공학기법을 활용해 이미지 태그/바로가기 링크 등으로 SMB 쉐어에 접속하도록 유도할 수 있습니다. 뿐만 아니라 피해자가 정상적인 서비스 접근을 위해 인증을 시도하면 리모트 포트 포워딩을 통해 해당 패킷을 가로채어 대신 서비스를 이용할 수도 있습니다.

다이어그램은 NTLM Relay 공격을 통한 측면이동 시나리오입니다. 다이어그램에 나온 순서에 대한 설명은 다음과 같습니다. 공격자는 PortBender를 사용하여 Beacon에서 실행되는 SMB(445)로 수신되는 트래픽을 8445 포트로 전송 합니다. 리모트 포트 포워딩을 통해 Beacon 8445로 수신된 트래픽은 Teamserver 445 포트로 전달됩니다. Teamserver에서는 ntlmrelayx가 실행 중이므로 중계자로서 Target에 대해 대신 인증합니다. Target이 Teamserver와 직접적으로 통신할 수 없는 상태라고 하더라도 Beacon에서의 SOCKS를 통해 통신할 수 있습니다. ntlmrelayx는 인증이 성공한다면 즉시 원격 명령을 실행할 수 있는 기능이 제공되는데, 이 기능을 통해 Beacon의 8080 포트로 접속하도록 유도할 수 있습니다. Beacon의 8080에 접속한 트래픽은 Teamserver의 80으로 전달되기 때문에 Target은 코발트 스트라이크 페이로드를 실행하게 되어 공격자는 비콘을 획득할 수 있습니다.

공격 순서에 따른 설명은 다음과 같습니다.

  1. 도메인 사용자가 비콘의 SMB 서비스에 접근(NTLM 인증 시작)

  2. 비콘은 445에 수신된 트래픽을 로컬 8445로 전송, 8445 트래픽은 팀서버 445로 전달

  3. 팀서버는 수신된 NTLM 메시지를 비콘에게 전달

  4. 비콘에서 실행된 SOCKS 프록시로 인해 해당 패킷은 타겟에게 전달되며 NTLM 인증 완료

위 시나리오 상 유의할 점은 두가지가 있습니다.

  1. PortBender를 통해 트래픽 리다이렉션 시, 비콘에서 실행되던 정상 SMB는 중단됨

  2. 리모트 포트 포워딩을 통해 리스닝을 할 때, 방화벽 정책에서 허용하지 않은 포트의 경우 사용자 PC에 방화벽 규칙 추가 알림이 전송됨

사용자에게 방화벽 허용 알림이 전송되는 것을 방지하기 위해서 포트 포워딩 전에 방화벽 규칙을 생성해야 합니다.

# Relay 공격에 사용할 방화벽 규칙 생성
beacon> powershell New-NetFirewallRule -DisplayName "8445-In" -Direction Inbound -Protocol TCP -Action Allow -LocalPort 8445
beacon> powershell New-NetFirewallRule -DisplayName "8080-In" -Direction Inbound -Protocol TCP -Action Allow -LocalPort 8080

# 리모트 포트 포워딩 규칙 생성
beacon> rportfwd 8080 127.0.0.1 80
beacon> rportfwd 8445 127.0.0.1 445

# Cobalt Strike > Script Manager > PortBender.cna 로드 후 트래픽 리다이렉션 설정
beacon> PortBender redirect 445 8445

# 타겟 -> 비콘 -> 공격자로의 네트워크 연결을 위한 SOCKS 프록시 실행
beacon> socks 1080

# 공격자 머신에서 SMB 서버 실행
sudo proxychains ntlmrelayx.py -t smb://<Target DC> -smb2support --no-http-server --no-wcf-server -c '<Command>'

대응 방안

NTLM Relay 공격을 방어하기 위해서는 SMB 서명을 강제하는 것이 가능하며 Windows Server 2022 도메인 컨트롤러는 기본적으로 디지털 서명을 활성화하여 릴레이 공격이 불가능합니다.

# 디지털 서명 통신(항상)
reg add "HKLM\System\CurrentControlSet\Services\LanManServer\Parameters" /v SecuritySignature /t REG_DWORD /d 1 /f

References

LogoConfigure SMB Signing with Confidence | Microsoft Community HubTECHCOMMUNITY.MICROSOFT.COM
LogoNTLM Relayhackndo
LogoWhat is SMB Signing and do I need it?InfoSec Governance -
NTLM Relay를 통한 측면이동 시나리오
https://en.hackndo.com/ntlm-relay/