Skip to content

Latest commit

 

History

History
296 lines (229 loc) · 15.7 KB

File metadata and controls

296 lines (229 loc) · 15.7 KB

Windows SMB Client NTLM reflection privilege escalation (CVE-2025-33073)

메타데이터

항목 내용
CVE ID CVE-2025-33073
영향 제품 Windows SMB Client
CVSS v3.1 8.8 (Important) - AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
공개일 2025-06-10
최신 MSRC 개정 2025-06-11
CWE CWE-284: Improper Access Control
비고 CISA KEV 등재일 2025-10-20. Microsoft는 MSRC 최초 공개 시점에는 exploited를 No로 표시했지만, CISA는 이후 알려진 악용 취약점으로 등재함

개요

CVE-2025-33073은 Windows SMB Client가 특수한 대상 이름을 처리할 때 NTLM/Kerberos 인증의 "로컬 대상" 판정과 SMB relay 방어 불변식이 어긋나면서 발생한 권한 상승 취약점이다. 인증된 공격자는 피해 시스템이 공격자 제어 SMB 서버로 인증하도록 유도한 뒤, 그 인증을 다시 피해 시스템의 SMB 서비스로 반사(reflection)할 수 있다. Synacktiv의 공개 분석 기준으로, SMB signing이 강제되지 않은 시스템에서는 이 흐름이 SYSTEM 권한의 원격 명령 실행으로 이어질 수 있다.

이 취약점은 단순한 "SMB가 위험하다" 문제가 아니다. 핵심은 Windows가 같은 호스트 내부의 인증을 빠르게 처리하기 위해 두는 예외 경로, 즉 local NTLM authentication과 Kerberos subkey 토큰 처리 모델이 네트워크 이름 정규화와 결합될 때 보안 경계가 어떻게 흐려지는지에 있다. Microsoft는 2025년 6월 보안 업데이트에서 SMB Client 쪽 대상 이름 검증을 강화했고, CISA는 2025년 10월 이 취약점을 KEV에 추가했다.

사전 지식

SMB Client와 SMB Server는 같은 컴퓨터 안에서도 분리된 역할이다

Windows에서 SMB는 단일 기능처럼 보이지만, 연결을 거는 쪽과 받는 쪽의 책임이 다르다.

파일 공유에 접근하는 프로세스
        │
        ▼
Windows SMB Client / LanmanWorkstation
        │  TCP 445, SMB2/SMB3
        ▼
원격 SMB Server / LanmanServer
        │
        ▼
공유, named pipe, 원격 서비스 관리 등

일반적인 원격 파일 공유 접근에서는 SMB Client가 대상 서버 이름을 바탕으로 SSPI 보안 컨텍스트를 초기화한다. 도메인 환경에서는 Kerberos가 선호되고, 조건이 맞지 않으면 NTLM이 사용될 수 있다. Microsoft의 NTLM 프로토콜 문서는 연결형 NTLM 인증이 NEGOTIATE, CHALLENGE, AUTHENTICATE 메시지 흐름으로 진행되며, 서버는 challenge-response를 검증해 클라이언트의 신원을 확인한다고 설명한다.

이때 중요한 점은 SMB 인증이 파일 공유만을 위한 것이 아니라는 점이다. SMB는 named pipe와 원격 관리 기능의 운반 계층으로도 쓰인다. 따라서 높은 권한 서비스가 SMB 인증을 수행하고 그 인증이 공격자에게 relay되면, 결과는 단순한 인증 시도 로그가 아니라 원격 레지스트리 접근, 서비스 제어, 명령 실행 같은 후속 동작으로 커질 수 있다.

NTLM relay와 reflection의 차이

NTLM relay는 공격자가 한 곳에서 받은 NTLM 인증을 다른 서버로 전달해 로그인하는 공격이다. reflection은 그 중에서도 원래 인증을 시작한 같은 컴퓨터로 다시 되돌리는 특수한 경우다.

일반 relay
  Victim Client ──NTLM──> Attacker ──NTLM──> Different Server

reflection
  Victim Host   ──NTLM──> Attacker ──NTLM──> Victim Host

reflection은 오래된 공격 기법이라 Windows에는 여러 방어가 들어가 있다. 예를 들어 "내가 나에게 접속하는 것"으로 판단되는 인증은 일반 원격 인증과 다르게 처리된다. 하지만 방어의 정확도는 "대상 이름이 정말 로컬 호스트인가"를 판정하는 정규화 로직에 의존한다. 이름 하나가 같은 호스트와 공격자 IP를 동시에 가리키는 것처럼 보이면, 인증 패키지와 SMB 계층이 서로 다른 현실을 보고 결정을 내릴 수 있다.

Local NTLM authentication은 challenge-response가 아니라 토큰 전달에 가깝다

Synacktiv 분석에서 핵심으로 등장하는 local NTLM authentication은 일반 NTLM 인증과 다르다. 일반 NTLM은 서버가 challenge를 보내고 클라이언트가 암호 기반 응답을 계산한다. 반면 로컬 인증에서는 클라이언트와 서버가 같은 컴퓨터 안에 있다고 판단되면 LSASS 내부의 컨텍스트를 통해 토큰을 연결한다.

일반 NTLM
  client ── NEGOTIATE ───────────────> server
  client <─ CHALLENGE(nonce) ───────── server
  client ── AUTHENTICATE(response) ──> server

local NTLM authentication
  server: "이건 local call이다" 플래그와 context id를 challenge에 넣음
  client: 같은 LSASS 안의 context에 현재 토큰을 연결
  server: authenticate 메시지 후 context에서 토큰을 꺼내 impersonation

정상 설계에서는 이 최적화가 네트워크 공격 표면이 아니다. 같은 컴퓨터 안에서 클라이언트와 서버가 통신한다고 보았기 때문이다. 그러나 공격자가 SMB Client에게 "대상은 로컬처럼 보이지만 실제 연결은 공격자 서버로 간다"는 이름을 먹일 수 있으면, 로컬 인증 예외가 네트워크 relay 체인 안으로 들어온다.

Marshalled target info와 특수 DNS 이름

Windows 자격 증명 API에는 대상 이름에 추가 target information을 직렬화해 붙이는 기능이 있다. Synacktiv는 srv11UWhRCAAAAAAAAAAAAAAAAAAAAAAAAAAAAwbEAYBAAAA 같은 DNS 레코드를 예로 들며, Windows가 이 문자열에서 marshalled target information을 제거한 뒤 srv1을 로컬 호스트명으로 판정하는 흐름을 분석했다. 같은 아이디어로 localhost1UWhRCAAAAAAAAAAAAAAAAAAAAAAAAAAAAwbEAYBAAAA 형식은 target information이 제거되면 localhost만 남는다.

보안 관점에서 이 이름은 두 얼굴을 가진다.

DNS 해석 관점
  srv11UWhRCA...  ──DNS──> 공격자 IP

Windows target-name 정규화 관점
  srv11UWhRCA...  ──target info 제거──> srv1
                                      └─ 현재 컴퓨터 이름과 일치

즉 네트워크는 공격자 서버로 가지만, 인증 패키지는 대상이 자기 자신이라고 판단할 수 있다. CVE-2025-33073의 학습 가치가 큰 이유는 바로 이 불일치다. 취약점은 암호 알고리즘을 깨는 것이 아니라, 여러 계층이 같은 문자열을 서로 다르게 해석할 때 생기는 접근 제어 실패다.

취약점 분석

확인된 공격 조건

Microsoft는 이 취약점을 Windows SMB Client 권한 상승으로 분류했고, 인증된 공격자가 피해 시스템을 공격자 제어 SMB 서버로 연결 및 인증하도록 유도할 수 있다고 설명한다. 성공 시 획득 가능한 권한은 SYSTEM이다. CISA도 공격자가 악성 스크립트로 피해 시스템을 SMB를 통해 공격 시스템에 다시 연결하고 인증하도록 강제할 수 있다고 요약했다.

Synacktiv의 공개 분석은 더 구체적이다. 연구진은 최신 Windows Server 2022 도메인 가입 시스템에서 SMB signing이 강제되지 않을 때, coercion 기법으로 SYSTEM 서비스가 공격자 서버에 인증하게 만들고 그 인증을 다시 같은 호스트의 SMB로 relay해 SAM hive dump까지 도달했다고 설명한다.

정상적으로 막혀야 하는 흐름

기본적인 SMB-to-SMB reflection은 막혀야 한다. 피해 호스트가 공격자에게 인증하더라도, 그 인증을 다시 피해 호스트로 던졌을 때 서버는 "내 컴퓨터에서 온 인증을 내 컴퓨터로 되돌린 것"이라는 위험한 상황을 거부해야 한다.

정상 방어 기대값

1. SYSTEM 서비스가 \\attacker\share 로 인증
2. 공격자가 그 인증을 \\victim\admin$ 로 relay
3. victim SMB Server가 reflection으로 보고 실패 처리

이 기대값은 인증 대상 이름과 실제 네트워크 대상이 같은 의미로 해석된다는 전제에 의존한다. CVE-2025-33073에서는 이 전제가 깨졌다.

취약한 동작 원리

Synacktiv가 분석한 NTLM 경로를 단순화하면 다음과 같다.

패치 전 흐름

[1] 공격자: 특수 DNS 레코드 등록
    srv11UWhRCA...  -> attacker IP

[2] 공격자: 인증 coercion
    피해 시스템의 SYSTEM 서비스가 \\srv11UWhRCA...\share 로 접근하게 유도

[3] SMB Client
    실제 TCP 연결은 attacker IP로 감
    SSPI target name은 cifs/srv11UWhRCA...

[4] LSASS / 인증 패키지
    marshalled target info 제거 후 target을 srv1로 판단
    현재 호스트명과 일치하므로 local authentication 가능 상태로 표시

[5] 공격자 relay 서버
    받은 인증을 피해 호스트의 SMB Server로 다시 전달

[6] 피해 호스트 SMB Server
    local NTLM context에서 SYSTEM 토큰을 얻어 impersonation
    SMB signing 미강제 환경에서는 원격 작업으로 이어질 수 있음

여기서 핵심 불변식은 "로컬 인증 예외는 실제 로컬 통신에만 적용되어야 한다"이다. 패치 전에는 SMB Client가 marshalled target information이 붙은 대상 이름을 SMB 연결 대상으로 받아들였고, 뒤쪽 인증 패키지는 그 이름을 정규화해 로컬 호스트로 판단했다. 그 결과 공격자 서버로 나간 연결이 로컬 인증 예외의 입력이 되었다.

Synacktiv는 Kerberos 경로도 분석했다. Negotiate가 Kerberos와 NTLM 중 어떤 메커니즘을 고르는지, Kerberos subkey와 SYSTEM/NETWORK SERVICE 토큰 처리가 어떻게 엮이는지까지 다루지만, 이 보고서의 핵심 결론은 동일하다. 공격자가 target name 해석 차이를 이용해 로컬 전용이어야 할 인증 토큰 연결 모델을 네트워크 relay에 끌어들였다는 점이다.

왜 SYSTEM까지 이어지는가

피해 시스템에서 인증을 시작하는 주체가 일반 사용자가 아니라 SYSTEM으로 동작하는 서비스라면, local authentication 컨텍스트에 연결되는 토큰도 SYSTEM이다. SMB Server가 relay된 인증을 받아들이고 그 토큰으로 impersonation하면, 공격자는 피해 호스트에서 높은 권한으로 SMB 기반 작업을 수행할 수 있다.

권한 흐름

LSASS 또는 SYSTEM 서비스
        │  현재 프로세스 토큰: SYSTEM
        ▼
SMB Client 인증 시작
        │
        ▼
local authentication context에 SYSTEM 토큰 연결
        │
        ▼
SMB Server가 relay된 인증을 수락
        │
        ▼
SYSTEM impersonation으로 원격 작업 가능

Microsoft의 공식 CVSS는 PR:L이다. 즉 공격자는 아무 권한도 없는 외부자가 아니라, 최소한 피해 환경에서 인증된 사용자의 위치에서 coercion이나 DNS 레코드 등록 같은 전제 조건을 만족해야 한다. 이 제약을 무시하고 "인터넷 원격 무인 RCE"처럼 표현하면 과장이다.

수정 방법

Microsoft의 2025년 6월 보안 업데이트가 기본 수정이다. 공개 패치 분석에 따르면 수정은 SMB Client의 mrxsmb.sys 쪽에서 이루어졌고, SMB 연결 생성 경로인 mrxsmb!SmbCeCreateSrvCall에 target name에 marshalled target information이 있는지 검사하는 로직이 추가되었다. Synacktiv는 CredUnmarshalTargetInfo가 정상 target information을 감지하면 연결을 거부하도록 바뀐 것으로 분석했다.

패치 전
  SMB Client target name = cifs/srv11UWhRCA...
        │
        ├─ SMB 연결 대상으로 허용
        └─ 인증 패키지에서 target info 제거 후 srv1/localhost로 판정 가능

패치 후(공개 패치 분석 기준)
  SMB Client target name = cifs/srv11UWhRCA...
        │
        ▼
  SMB Client가 marshalled target info 포함 여부 검사
        │
        ├─ 감지됨: SMB 연결 생성 거부
        └─ 감지 안 됨: 일반 SMB 연결 처리

이 수정은 취약점의 악용에 쓰인 DNS 이름 기법을 SMB Client 입구에서 차단한다. 다만 Microsoft가 소스 코드를 공개한 것은 아니므로, 위 함수명과 동작은 Synacktiv의 binary diff 분석에 근거한 것이다.

운영 완화책으로는 SMB signing 강제가 중요하다. Microsoft의 SMB signing 문서는 SMB 메시지에 세션 키 기반 서명을 붙여 변조, relay, spoofing 공격 방어에 도움을 준다고 설명한다. Synacktiv도 SMB signing을 강제하면 패치 전 시스템에서도 이 취약점의 SMB relay 악용을 막을 수 있다고 권고했다.

추가로 다음을 검토한다.

  • 2025년 6월 또는 이후 누적 보안 업데이트를 적용한다.
  • SMB signing을 서버와 클라이언트 정책에서 강제한다. 특히 중요 서버, 관리자 워크스테이션, 파일 서버, 도메인 컨트롤러 주변에서 우선 적용한다.
  • 일반 도메인 사용자가 임의 DNS 레코드를 등록할 수 있는지 점검한다. 공격 체인은 특수 DNS 레코드나 LLMNR poisoning 같은 이름 해석 조작에 의존할 수 있다.
  • NTLM 사용을 줄이고, 가능한 경로에서는 Kerberos와 SMB encryption/signing 정책을 강화한다.
  • SMBClient/SMBServer 감사 이벤트와 DNS 동적 업데이트 로그에서 1UWhRCA와 같이 target information이 붙은 의심스러운 이름, 예기치 않은 TCP 445 연결, coercion성 RPC 트래픽을 함께 확인한다.

PoC 관련 언급

공개 GitHub 저장소 https://github.com/mverschu/CVE-2025-33073는 이 취약점을 "NTLM reflection SMB flaw"로 설명하며, dnstool.py, ntlmrelayx, NetExec 등을 조합해 특수 DNS 레코드 등록, 인증 coercion, relay 후 명령 실행을 자동화하는 형태다. 저장소 README는 Synacktiv 분석을 원 자료로 링크하고, SMB signing이 켜진 환경에서 LDAPS relay 변형을 시도하는 내용도 포함한다.

정적 분석 관점에서 이 저장소는 취약점의 개념을 이해하는 데 도움이 되지만, 신뢰도는 제한적으로 두어야 한다. 자동화 도구는 외부 공격 도구와 환경 전제에 크게 의존하며, 이 보고서에서는 코드를 실행하지 않았다. 따라서 최종 근거는 Microsoft, CISA, Synacktiv 분석에 두고, PoC는 공격 체인이 어떤 단계로 자동화될 수 있는지 보여주는 보조 자료로만 취급한다.

미해결/불확실 지점

  • Microsoft는 Windows SMB Client 내부 소스나 공식 패치 diff를 공개하지 않았다. mrxsmb.sys 함수명과 패치 위치는 Synacktiv의 binary diff 분석에 따른 것이다.
  • CISA는 2025년 10월 KEV에 등재했지만, 공개적으로 확인 가능한 공격 캠페인 세부사항은 제한적이다.
  • SMB signing이 강제된 환경에서의 변형 가능성은 공개 PoC와 후속 글에서 논의되지만, CVE-2025-33073의 기본 패치 전 SMB reflection 경로와 구분해 검토해야 한다.

참고 자료