📚 네트워크 · 패킷 분석 › 02. 포트 · 프로토콜 분석 — 77편
이전 글: 76. RDP와 3389 포트 — 원격 접속 노출 위험 · 다음 글: 78. NTP와 로그 시간 동기화

1. 개념

WinRM(Windows Remote Management)은 Windows를 명령 단위로 원격 관리하는 서비스입니다. 표준 프로토콜인 WS-Management(SOAP 메시지를 HTTP로 전달)를 Microsoft가 구현한 것이며, PowerShell Remoting(Enter-PSSession, Invoke-Command)의 기본 통로입니다.

76. RDP와 3389 포트 — 원격 접속 노출 위험가 화면을 원격으로 보내는 방식이라면, WinRM은 명령과 결과를 주고받습니다. 화면이 없어 사용자 눈에 띄지 않고 여러 서버에 동시에 명령을 보낼 수 있어, 운영 자동화와 공격자의 내부 이동 양쪽에서 쓰입니다.

항목값
전송 계층TCP
기본 포트5985 (HTTP), 5986 (HTTPS)
과거 포트WinRM 1.1 시절 80/443 (현재 기본값 아님)
메시지 형식HTTP POST /wsman + SOAP(XML)
기본 인증도메인 환경은 Kerberos(Negotiate), 그 외 NTLM. Basic은 기본 비활성

2. 동작 원리

PowerShell Remoting 한 번이 WinRM 위에서 흘러가는 모습입니다.

관리 PC 192.168.10.80                         대상 서버 192.168.10.70
  │ Invoke-Command -ComputerName SRV01 ...
  │ ── TCP 5985 연결 ──────────────────────────→ │ WinRM 서비스(svchost) 리스너
  │ ── HTTP POST /wsman (인증 협상) ────────────→ │
  │ ←─ 401 + Negotiate → Kerberos/NTLM 인증 ──── │ → 원격 로그온 (Logon Type 3)
  │ ── SOAP: Shell 생성 요청 (메시지 암호화) ────→ │
  │                                              │ wsmprovhost.exe 생성
  │ ── SOAP: 명령 전달 ────────────────────────→ │ → PowerShell로 실행
  │ ←─ SOAP: 실행 결과 ────────────────────────── │
  │ ── SOAP: Shell 종료 ───────────────────────→ │ wsmprovhost.exe 종료
  ↓                                              ↓
  • 5985는 "HTTP"지만 본문이 평문은 아닙니다. Kerberos·NTLM 인증을 쓰면 SOAP 메시지를 메시지 수준에서 암호화하며, 암호화하지 않은 전송은 기본적으로 거부됩니다(AllowUnencrypted = false).
  • 5986은 TLS로 전송 구간 전체를 암호화하며, 대상 서버에 인증서가 필요합니다.
  • 대상 서버에서 원격 PowerShell 세션은 wsmprovhost.exe 프로세스로 실행됩니다.

3. 주요 특징

원격 관리 포트를 비교하면 WinRM의 위치가 분명해집니다.

비교WinRMRDPSMB 기반 원격 실행
포트5985 / 59863389445
전달 대상명령·결과(텍스트)화면·입력파일·서비스 제어
대상 쪽 프로세스wsmprovhost.exe사용자 세션(explorer 등)서비스·임시 실행 파일
로그온 유형3 (Network)10 (RemoteInteractive)3 (Network)
사용자 체감없음화면 세션 발생없음

활성화 상태는 버전·에디션에 따라 다릅니다.

환경일반적인 기본 상태
Windows Server 2012 이후WinRM 서비스 실행, 5985 리스너 활성(원격 관리 허용)
Windows 10/11 클라이언트서비스 기본 비활성, Enable-PSRemoting 등으로 켜야 함
5986 HTTPS 리스너기본 없음, 인증서와 함께 별도 구성

4. 예시

실습 예시 — 본인 소유 실습용 Windows Server VM(192.168.10.70)에서 관리자 PowerShell로 리스너와 포트를 확인합니다.

# 리스너 목록 (주소·포트·HTTP/HTTPS)
winrm enumerate winrm/config/listener

# 서비스 설정 중 암호화·인증 관련 값
winrm get winrm/config/service

# 5985/5986 리슨 확인
Get-NetTCPConnection -State Listen -LocalPort 5985,5986

# 방화벽 규칙
Get-NetFirewallRule -DisplayGroup "Windows Remote Management" | Select DisplayName,Enabled,Profile

# 관리 PC에서 응답 확인 (WS-Man 식별 정보)
Test-WSMan -ComputerName 192.168.10.70

리스너 출력 형식 예시(값은 환경마다 다름):

Listener
    Address = *
    Transport = HTTP
    Port = 5985
    Enabled = true
    URLPrefix = wsman
    ListeningOn = 192.168.10.70, 127.0.0.1, ::1

Address = *는 모든 인터페이스에서 받는다는 뜻입니다. 접근 범위는 결국 방화벽 규칙(원격 주소 제한)이 결정합니다.

📷 [실습 화면 삽입 위치] winrm enumerate winrm/config/listener와 Get-NetTCPConnection 결과로 5985 리슨을 확인한 화면


5. 보안 관점

  • 내부 이동 통로: 탈취한 관리자 자격 증명으로 5985에 접속하면 화면 없이 원격 명령을 실행할 수 있습니다. MITRE ATT&CK에서는 Remote Services: Windows Remote Management(T1021.006)로 분류됩니다.
  • 노출 범위: 서버에서 기본 활성인 만큼, 관리 서버·점프 호스트 외에는 5985/5986 접근을 막는 것이 기본입니다.
  • 약한 설정: AllowUnencrypted = true, Basic 인증 허용, TrustedHosts = * 같은 값은 자격 증명과 명령 노출 위험을 키웁니다.
  • PowerShell 로깅: 네트워크에서는 명령 내용을 볼 수 없으므로, Script Block Logging 같은 호스트 로그가 사실상 유일한 내용 증거입니다.

6. SOC 관점

흔적 위치확인할 수 있는 것
방화벽·NSM5985/5986 연결의 출발지·목적지, HTTP POST /wsman(5985)
대상 Security 로그4624 로그온 성공(Logon Type 3), 계정, 출발지 IP
대상 WinRM 로그Microsoft-Windows-WinRM/Operational (원격 Shell 생성 이벤트, 예: 91)
출발 PC WinRM 로그같은 로그의 세션 생성 이벤트(예: 6), 대상 이름
PowerShell 로그Microsoft-Windows-PowerShell/Operational 4104(Script Block, 설정 시)
EDR·Sysmonwsmprovhost.exe의 자식 프로세스 생성

관제자가 확인할 질문

  • 5985/5986 출발지가 등록된 관리 서버·점프 호스트인가? 일반 사용자 PC인가?
  • 한 출발지가 짧은 시간에 여러 서버의 5985로 접속했는가? (확산 가능성)
  • wsmprovhost.exe 아래에서 어떤 프로세스가 실행되었는가?
  • 로그온 계정이 평소 원격 관리를 하는 계정인가?

오탐 주의: SCCM·Ansible·모니터링 도구 등 정상 관리 솔루션이 WinRM을 주기적으로 사용합니다. 출발지 자산, 계정, 실행 주기가 일정한지 먼저 확인합니다(Windows 주요 포트 전체는 86. 내부망 주요 Port에서 다룸).


7. 핵심 정리

  • WinRM은 WS-Management(SOAP over HTTP)를 구현한 Windows 원격 관리 서비스로, 5985(HTTP)·5986(HTTPS)를 씁니다.
  • 5985도 Kerberos·NTLM 인증 시 메시지 수준 암호화가 기본이라 네트워크에서 명령 내용은 보이지 않습니다.
  • 대상 서버에서 원격 세션은 wsmprovhost.exe로 실행되고, 로그온 유형은 3입니다.
  • 서버 버전에서 기본 활성인 경우가 많아, 관리 서버 외 출발지의 5985 접근을 제한해야 합니다.
  • 관제에서는 방화벽 연결 기록과 4624·WinRM·PowerShell 로그, 프로세스 트리를 함께 봅니다.
profile
코드에 숨겨진 위협을 읽고 AI로 보안의 미래를 설계합니다. 프론트엔드 개발 경험을 자산 삼아 더 견고하고 지능적인 보안 운영 시스템을 구축해 나가는 과정을 기록합니다

0개의 댓글