보안정보

전문화된 보안 관련 자료, 보안 트렌드를 엿볼 수 있는
차세대 통합보안관리 기업 이글루코퍼레이션 보안정보입니다.

원격 데스크톱(RDP) 악용 침해사고 이벤트 로그 분석

2022.03.02

50,511

 

 




01. 개요

 

원격 데스크톱(Remote Desktop Protocol : RDP)은 마이크로소프트사 Windows OS의 구성요소로 ITU-T.128 어플리케이션 프로토콜의 확장이다. 최초 1996년 Windows NT 4.0에서 Terminal Service Client로 출시되었고, 이후 2009년 Remote Desktop Service(RDS)에 포함되게 되었으며, 원격의 다른 컴퓨터에 그래픽 사용자 인터페이스를 제공한다. 원격 데스크톱은 원격근무 지원 , 시스템 관리자, 엔지니어 등에게 편의를 제공하기 위해서 다양한 조직에서 사용하고 있다. 그러나 원격 데스크톱은 공격자들이 기업 시스템이나 개인 PC등에 침투하는 데 악용되고 있다. 해커들은 시스템에 흔적을 남길 수 있는 커맨드 라인 기반의 백도어보다 안정성과 기능성의 이점을 가진 원격 데스크톱을 선호한다. 

 

 

  

[그림 1] RDP 공격 현황 (출처 : Kaspersky)

 

 

[그림 1]은 Kaspersky에서 2020년 4월에 발표한 원격 데스크톱에 대한 무차별 대입 공격의 국가별 현황을 나타낸 것이다. COVID-19이후 원격 근무가 활발해지는 2020년 3월 이후부터 원격 데스크톱에 대한 공격이 급증한 것을 확인할 수 있으며, 원격 데스크톱에 대한 공격은 높은 위험도를 가진 보안 위협이고 현재까지도 지속적으로 발생하고 있다. 

 

 

  

[표 1] 원격데스트톱(RDP)관련 로그 ID 및 로그 위치, 로그 파일 위치

 

 

원격데스크톱(RDP) 악용한 침해 사고 시 Windows XP, Windows Vista 이후에 가장 일반적으로 접할 수 있는 이벤트 로그 ID, 로그의 위치는 [표 1]과 같으며, 해당 이벤트 로그 ID가 의미하는 바를 아래 흐름으로 알아보고자 한다.

 


 

더 나아가 공격자가 측면이동(Lateral Movement)을 위해 원격데스크톱을 이용할때 이벤트 로그가 어떻게 생성되는지 함께 알아보자.

 

 

02. 네트워크 연결 (Network Connection)

 

1) 이벤트 ID : 1149 - 사용자 인증 성공 (User authentication succeeded)

 

이벤트 ID : 1149는 실제로는 많은 사람들이 생각하는 ID, Password를 입력하여 사용자 인증을 성공했다는 것을 의미하는 것은 아니다. 여기서 의미하는 '인증'이란 네트워크 인증 성공을 말한다. 즉 원격 시스템에 대한 인증이 성공했다는 것을 보여주는 것이 아니라 원격 데스크톱 네트워크 접속이 성공했다는 것을 보여주는 것이다.

 

예를 들어 [그림 2]와 같이 RDP Desktop Connection 프로그램을 실행한 후 원격 시스템 IP를 입력하고 Enter 키를 누르면 원격 시스템에 대한 자격 정보를 입력하는 화면을 볼 수 있을 것이다.

 

 

 

[그림 2] 원격 데스크톱 연결 : 자격증명

 

 

이때 기록되는 이벤트가 이벤트 ID : 1149이며, 획득 가능한 세부 정보는 [표 2]와 같다 

 

필드명

설 명

사용자

원격데스크톱(RDP) 세션을 요청한 사용자 계정

도메인

사용자 도메인

원본 네트워크 주소

원격데스크톱(RDP) 연결 시도가 수행된 IP 주소

 

[표 2] 이벤트 ID : 1149 세부 정보

 

 

원격데스크톱(RDP)을 악용한 침해사고 분석 시 [그림 3]를 살펴보면, 2021년 xx월 xx일 5시 44분 20초경에 192.168.107.1 IP에서 secu라는 사용자 계정을 이용하여 원격 데스크톱 연결을 시도했다고 분석할 수 있다. 

 

  

 

[그림 3] 이벤트 ID : 1149 - 사용자 인증 성공

 

 

만일 [그림 4]와 같이 사용자 계정, 도메인 정보가 존재하지 않는 이벤트 ID : 1149를 확인하였다면 원격 데스크톱에 대해서 RestrictedAdmin Mode(제한된 관리자 모드)를 활성화되어 있는 시스템에 원격 데스크톱 연결을 시도한 경우에 기록된다. RestrictedAdmin Mode (제한된 관리자 모드)는 2014년 10월에 출시되었으며, 재사용 가능한 자격 증명이 잠재적으로 손상될 수 있는 원격 서버의 메모리에 저장되지 않도록 하여 관리자 계정을 보호하도록 설계되었다. 하지만 RestrictedAdmin Mode(제한된 관리자 모드)는 관리자 계정에만 적용되며, 관리자가 아닌 계정으로 원격 시스템에 로그온 할 때 사용할 수 없다는 단점을 가지고 있다.

 

  

 

[그림 4] 이벤트 ID : 1149 - RestrictedAdmin 모드를 활성화

 

 

하나 재미있는 사실은 rdesktop이라는 Windows 원격 데스크톱 서비스에 연결하기 위한 오픈 소스 UNIX 클라이언트를 이용하여 원격 데스크톱을 연결하는 경우 정상적으로 연결되더라도 이벤트 ID : 1149가 기록되지 않는다는 점이다.

 

 

  

[그림 5] rdesktop 로그인 화면

 

 

03. 인증 (Authentication)

 

1) 이벤트 ID : 4624 - 계정이 성공적으로 로그온 되었습니다. (An account was successfully logged on)

 

이벤트 ID : 4624는 사용자 계정 및 도메인 이름을 사용하여 원격, 로컬 상관없이 로그온이 정상적으로 성공하는 경우 기록된다. 이벤트 ID : 4624에서 주의 깊게 살펴볼 세부 정보는 [표 3]과 같다. 로그온 유형 필드는 발생한 로그온의 종류를 나타내며, 가장 일반적인 유형은 2와 3이다. 새 로그온 필드는 새  로그온을 만든 계정, 즉 로그온 된 계정을 나타내며, 네트워크 정보 필드는 원격 로그온 요청이 시작된 위치를 나타낸다. 워크스테이션 이름은 항상 기록되는게 아니기에 해당 필드가 비워져 있을 수도 있다.

 

필드명

설 명

로그온

정보

로그온 유형

수행된 로그온 유형

새 로그온

계정 이름

로그온이 수행된 계정

계정 도메인

주체의 도메인 또는 컴퓨터 이름

로그온  ID

이 이벤트를 동일한 로그온 ID를 포함할 수 있는 최근 이벤트와 상관 관계에 도움이 되는 16진수 값

네트워크

정보

워크스테이션 이름

로그온 시도가 수행된 컴퓨터 이름

원본 네트워크 주소

로그온 시도가 수행된 IP 주소

 

[표 3] 이벤트 ID : 4624 세부 정보 일부

 

 

이벤트 ID : 4624는 원격, 로컬 상관없이 로그온이 정상적으로 성공하는 경우 기록되기 때문에 어떤 방식으로 로그온이 되었는지 정보는 로그온 유형에서 확인할 수 있으며, [표 4]은 로그온 유형에 대한 설명이다.

 

로그온

유형

로그온 제목

설 명

0

System

시스템 시작과 같이 시스템 계정에서만 사용

2

Interactive

사용자가 로그온한 경우

3

Network

네트워크에서 로그온한 사용자 또는 컴퓨터

4

Batch

직접적인 개입 없이 사용자를 대신하여 프로세스가 실행될 수 있는  일괄 처리 서버에서 사용

5

Service

서비스 제어 관리자가 서비스를 시작

7

Unlock

잠금 해제된 경우

8

NetworkCleartext

사용자가 네트워크에서 로그온한 경우로, 사용자의 암호가 인증 패키지에 전달된 언해시(unhash) 양식

9

NewCredentials

호출자에서 현재 토큰을 복제하고 아웃바운드 연결에 대한 새 자격 증명을 지정한 경우 (새 로그온 세션은 로컬 ID가 동일하지만 다른 네트워크 연결에 대해 서로 다른 자격 증명을 사용)

10

RemoteInteractive

사용자가 터미널 서비스 또는 원격 데스크톱을 사용하여 원격 로그온

11

CachedInteractive

사용자가 컴퓨터에 로컬로 저장된 네트워크 자격 증명을 사용하여 로그온한 경우 (도메인 컨트롤러에 연결하여 자격 증명을 확인하지 못함)

12

CachedRemoteInteractive

RemoteInteractive와 동일 (내부 감사에 사용)

13

CachedUnlock

Workstation logon

 

[표 4] 로그온 유형

 

 

[표 4] 로그온 유형만으로 봤을 때 원격 데스크톱을 악용한 공격을 확인하기 위해서는 로그온 유형 10만 찾으면 된다. 하지만 네트워크 수준 인증(Network Level Authentication : NLA)을 사용하고 있는 경우 로그온 유형 10이 될 수 있고 로그온 유형 3이 될 수 있어 두 유형 모두 확인해야 된다.

 

  

 

[그림 6] 이벤트 ID : 4624 - 로그온 유형 비교

 

 

또한 이전에 원격 데스크톱을 실행하고 정상적으로 로그오프 하지 않은 상태에서 다시 원격 데스크톱으로 로그온 하는 경우 로그온 유형 7로 기록된다. 이때 역시 로그온 유형만으로는 원격 데스크톱 잠금 해제와 로컬 잠금 해제를 구분하기 어렵기에 추가적으로 네트워크 정보 필드에서 원본 네트워크 주소를 확인하여야 한다. 원격 데스크톱 연결에서 잠금 해제하는 경우 원격 네트워크 주소에 원격지 IP가 존재하는 반면에 로컬에서 잠금 해제하는 경우 127.0.0.1로 기록된다.

 

  

 

[그림 7] 원격 데스크톱 잠금 해제(좌)와 로컬에서 잠금 해제(우) 비교

 

 

2) 이벤트 ID : 4625 - 계정을 로그온 하지 못했습니다. (An account failed to log on)

 

 

이벤트 ID : 4625는 사용자 계정 및 도메인 이름을 사용하여 원격, 로컬 상관없이 로그온이 실패할 경우 기록된다. 이벤트 ID : 4625 역시 원격, 로컬 상관없이 기록되기 때문에 로그온 유형을  확인 해야 하며, 주의 깊게 살펴볼 세부 정보는 [표 5]와 같다. 로그온 유형 필드는 이벤트 ID : 4624와 같이 요청한 로그온의 유형을 나타내며, 로그온을 실패한 계정 필드는 로그온을 시도했지만 실패한 사용자를 식별한다.네트워크 정보 필드는 원격 로그온 요청이 시작된 위치를 나타내며, 워크스테이션 이름은 항상 기록되는게 아니기에 해당 필드가 비워져 있을 수도 있다.

 

필드명

설 명

로그온 유형

수행된 로그온 유형

로그온을 실패한 계정

보안 ID

로그온 시도에 지정된 계정의 SID 이벤트 뷰어는 자동으로 SID를 확인하고 계정 이름을 표시하려고 시도한다. SID를 확인할 수 없는 경우 비어 있어가 NULL SID를 기록

계정 이름

로그온이 수행된 계정

계정 도메인

주체의 도메인 또는 컴퓨터 이름

오류 정보

오류 이유

로그온 실패에 대한 설명

네트워크 정보

 

워크스테이션 이름

로그온 시도가 수행된 컴퓨터 이름

원본 네트워크 주소

로그온 시도가 수행된 IP 주소

 

[표 5] 이벤트 ID : 4625 세부 정보 일부

 

 

왜 로그온 실패 이벤트를 확인해야 할까? 실패 이벤트가 발생하였다고 모두 공격에 의해 발생한 것은 아니다. 그 이유는 패스워드 기한 만료 등 정상적인 장애로 인해 실패할 수 있기 때문이다. 어떤 이유에 의해서 실패하였는지는 오류 이유 필드의 내용을 토대로 분석해야 한다.

 

상태코드

설 명

0xC000006A

잘못된 암호 또는 잘못된 암호를 사용하여 사용자 로그온

0XC000006D

원인은 잘못된 사용자 이름 또는 인증 정보입니다

0xC000006F

권한이 부여된 시간 외의 사용자 로그온

0xC0000071

만료된 암호로 사용자 로그온

0xC0000072

관리자가 사용하지 않도록 설정한 계정에 대한 사용자 로그온

0xC0000193

만료된 계정으로 사용자 로그온

0XC0000224

사용자가 다음 로그온할 때 암호를 변경해야 합니다

0xC0000234

계정이 잠겨 있는 사용자 로그온

0XC0000413

로그온 실패: 로그온하는 컴퓨터는 인증 방화벽에 의해 보호됩니다.

지정된 계정이 컴퓨터 인증을 허용하지 않습니다.

 

[표 6] 오류 필드 내용 일부

 

 

  

[그림 8] 이벤트 ID 4625 - 오류 이유 비교

 

 

원격데스크톱(RDP)을 악용한 침해사고 분석 시 실패 이벤트는 공격자가 언제부터 시도했는지 확인하는 데 도움이 된다. 만일 짧은 시간 동안 많은 실패 이벤트가 존재한다면 무차별 대입 공격 (Brute-force Attack), 사전 대입 공격 (Dictionary Attack) 가능성이 매우 크다.

 

  

 

[그림 9] 무차별 대입 공격 (Brute-force Attack) 시 로그온 실패 이벤트

 

 

실패 역시 로그온 유형만으로 봤을 때 원격 데스크톱을 악용한 공격을 확인하기 위해 로그온 유형 10만 찾으면 된다. 하지만 네트워크 수준 인증(Network Level Authentication : NLA)을 사용하고 있는 경우 로그온 유형 10이 될 수 있고 로그온 유형 3이 될 수 있다.

 

 

04. 로그온 (Logon)

 

로그온 섹션에서는 성공적인 인증 및 시스템 로그온 시 발생하는 인증 후 이벤트에 대해 살펴본다. 여기서 원격 데스크톱의 경우 세션 ID를 주의 깊게 봐야 한다. 그 이유는 세션 ID는 추가 이벤트 로그 활동을 추적하거나 이 사용자의 원격 데스크톱 세션과 연결하기 위한 수단이 된다.

 

1) 이벤트 ID : 21 - 원격 데스크톱 서비스: 세션 로그온 성공 (Remote Desktop Services: Session logon succeeded)

 

이벤트 ID : 21은 이벤트 ID : 22 바로 앞에 기록되며, 원격 데스크톱 로그인과 세션 인스턴스화가 성공했다는 것을 의미한다. 이벤트 ID : 21에서 획득 가능한 정보는 [표 7]과 같다

 

필드명

설 명

사용자

원격 데스크톱 로그인과 세션 인스턴스화가 성공한 계정

세션 ID

원격 데스크톱 로그인과 세션 인스턴스화가 성공한 세션 ID

원본 네트워크 주소

원격 데스크톱 로그인과 세션 인스턴스화가 성공한 IP 주소

 

[표 7] 이벤트 ID : 21 세부 정보

 

 

"원본 네트워크 주소"가 "LOCAL"인 경우 로컬 로그온을 의미하며, 시스템 (재)부팅/초기화 시 에도 "소스 네트워크 주소"가 "LOCAL"을 가진 이벤트가 기록된다.

 

  

[그림 10] 이벤트 ID : 21 - 원격 데스크톱, 로컬 로그온 비교 

 

 

2) 이벤트 ID : 22 - 원격 데스크톱 서비스: 셀 시작 알림 받음 (Remote Desktop Services: Shell start notification received)

 

이벤트 ID : 22는 이벤트 ID : 21 바로 뒤에 기록되며, 원격 데스크톱 로그인과 셸(Windows GUI Desktop 등)의 개시에 성공한 것을 의미한다. 이벤트 ID : 22에서 획득 가능한 정보는 [표 8]과 같다.

 

필드명

설 명

사용자

원격 데스크톱 로그인과 셸(Windows GUI Desktop )의 개시에 성공한 계정

세션 ID

원격 데스크톱 로그인과 셸(Windows GUI Desktop )의 개시에 성공한 세션 ID

원본 네트워크 주소

원격 데스크톱 로그인과 셸(Windows GUI Desktop )의 개시에 성공한  IP 주소

  

[표 8] 이벤트 ID : 22 세부 정보

 

 

"원본 네트워크 주소"가 "LOCAL"인 경우 로컬 로그온을 의미하며, 시스템 (재)부팅/초기화 시 에도 "소스 네트워크 주소"가 "LOCAL"을 가진 이벤트가 기록된다.

 

 

 

[그림 11] 이벤트 ID : 22 - 원격 데스크톱(좌), 로컬 로그온(우) 비교 

 

 

05. 세션 연결 해제 / 재연결 (Session Disconnect/Reconnect)

 

세션 연결 해제/재연결 섹션에서는 시스템 유휴 상태, 네트워크 연결 끊기 또는 사용자의 의도적인 상황 (원격 데스크톱 창에서 X 클릭, 시작 > 전원 > 연결 끊기, 다른 사용자에 의해 시작됨 등)으로 인해 발생할 수 있는 다양한 세션 연결 끊기/재연결 시 원격 데스크톱 관련 이벤트가 어떻게 기록되는지 살펴보자. 이 부분에서 "원본 네트워크 주소"는 주의 깊게 살펴봐야 하며, 여기서 살펴보는 이벤트 ID는 이벤트 ID : 40과 쌍을 이룬다. 또한 원격 데스크톱 로그온의 경우 세션 ID는 추가 이벤트 로그 활동을 추적하거나 이 사용자의 원격 데스크톱 세션과 연결하기 위한 수단 된다. 

 

1) 이벤트 ID : 24 - 원격 데스크톱 서비스: 세션 연결 끊김 (Remote Desktop Services: Session has been disconnected)

 

이벤트 ID : 24는 원격 데스크톱 세션과 연결을 끊은 것을 의미한다. 이벤트 ID : 24에서 획득 가능한 정보는 [표 9]와 같다.

 

필드명

설 명

사용자

원격 데스크톱 세션과 연결이 끊긴 계정

세션 ID

원격 데스크톱 세션과 연결이 끊긴 세션 ID

원본 네트워크 주소

원격 데스크톱 세션과 연결이 끊긴 IP 주소

 

[표 9] 이벤트 ID : 24 세부 정보

 

 

"원본 네트워크 주소"가 "LOCAL"인 경우 로컬 로그온을 의미하며, 시스템 (재)부팅/초기화 시 에도 "소스 네트워크 주소"가 "LOCAL"을 가진 이벤트가 기록된다.

 

  

[그림 12] 이벤트 ID : 24 - 원격 데스크톱(좌), 로컬 로그온(우) 비교 

 

 

2) 이벤트 ID : 25 - 원격 데스크톱 서비스: 세션 다시 연결 성공 (Remote Desktop Services: Session reconnection succeeded)

 

이벤트 ID : 25는 원격 데스크톱 세션이 재 연결 된 것을 의미한다. 이벤트 ID : 24에서 획득 가능한 정보는 [표 10]과 같다. 

  

필드명

설 명

사용자

원격 데스크톱 세션이 재연결된 계정

세션 ID

원격 데스크톱 세션이 재연결된 세션 ID

원본 네트워크 주소

원격 데스크톱 세션이 재연결된 IP 주소

 

[표 10] 이벤트 ID : 25 세부 정보

 

 

"원본 네트워크 주소"가 "LOCAL"인 경우 로컬 세션 재연결을 나타내며, 원격 데스크톱 세션 재연결을 나타내는 것이 아니다.

 

 

  

[그림 13] 이벤트 ID : 25 - 원격 데스크톱(좌), 로컬 로그온(우) 비교 

 

 

만일 침해사고 분석 시 [그림 14]와 같이 “원본 네트워크 주소”가 127.0.0.1 또는 분석하고 있는 시스템의 IP로 되어 있는 경우가 있을 수 있다. 이 경우 공격자는 악성코드 등을 이용하여 127.0.0.1 또는 시스템 IP로 지정한 후 포트 포워딩(Port Forwarding)을 이용해서 원격 데스크톱 연결을 했다는 의미이다.

 

 

  

[그림 14] 포트 포워딩 예 및 이벤트 로그

 

 

3) 이벤트 ID : 39 - X 세션에서 X 세션의 연결을 끊었습니다. (Session X has been disconnected by session X)

 

이벤트 ID : 39는 사용자가 원격 데스크톱 창에서 X를 클릭하여 연결 해제하는 것과 달리 [그림 15]와 같이 의도적인 연결 해제를 통해 원격 데스크톱 세션에서 공식적으로 연결을 끊었음을 나타낸다. 

 

 

  

[그림 15] 연결 끊기

 

 

일반적으로 세션 ID는 동일하나 세션 ID가 다른 경우, 특정 세션을 가진 사용자에 의해 원격 데스크톱 세션 연결이 끊어졌음을 나타낸다. 

 

 

  

[그림 16] 이벤트 ID : 39

 

 

4) 이벤트 ID : 40 - X 세션의 연결이 끊어졌습니다. 이유 코드 X (Session [X] has been disconnected, reason code [X])

 

이벤트 ID : 40은 Microsoft의 설명은 "세션 연결이 끊어졌습니다"이지만 이 이벤트는 연결 해제 뿐만 아니라 다시 연결을 나타낸다. 여기서 가장 유용한 정보는 이유 코드로 이유 코드 값에 따라 세션 연결이 끊긴 이유를 확인할 수 있다. 

 

  

[

그림 17] 이벤트 ID : 40

 

 

[표 11]은 세션 연결이 끊어진 이유 코드에 대한 설명 일부 이며, 보다 자세한 이유 코드는 Microsoft 설명서 를 참고 바란다.

 

 이유 코드

설 명

비 고

0

추가 정보를 확인할 수 없습니다.

사용자가 비공식적으로 (사용자가  원격 데스크톱창에서 X를 클릭) 원격 데스크톱 세션을 종료한 경우 (이벤트 ID : 24 관련 있음)

5

클라이언트의 연결이 다른 연결로 대체되었습니다.

사용자가 원격 데스크톱 세션에 재연결 했을 경우
(
이벤트 ID : 25 관련 있음)

11

사용자 활동이 연결 해제를 시작했습니다.

사용자가 정상적으로 (: 시작 > 전원 > 연결 해제 클릭) 원격 데스크톱 세션을 종료한 경우 (이벤트 ID : 39 관련 있음)

12

로그오프를 시작했습니다.

세션을 로그오프하여 연결이 끊어졌음

 

[표 11] 세션 연결이 끊어진 이유 코드 일부

 

 

5) 이벤트 ID : 4778 - 세션이 윈도우 스테이션에 다시 연결되었습니다 (A session was reconnected to a Window Station)

 

이벤트 ID : 4778는 사용자가 기존 원격 데스크톱 세션에 다시 연결하거나 빠른 사용자 전환을 사용하여 기존 데스크톱으로 전환할 때 기록되며, 이벤트 ID : 25와 쌍을 이룬다. 이벤트 ID : 4778에서 획득 가능한 정보는 [표 12]와 같으며, 계정 이름, 클라이언트 주소 및 로그온 ID는 관련 활동을 식별하는 데 유용할 수 있다.

 

 

필드명

설 명

주체

계정 이름

세션을 다시 연결한 계정

계정 도메인

주체의 도메인 또는 컴퓨터 이름

로그온 ID

동일한 로그온 ID를 포함할 수 있는 최근 이벤트와

이 이벤트의 상관 관계를 지정할 수 있는 16진수 값

세션

세션 이름

사용자가 다시 연결한 세션의 이름으로, RDP-Rcp#N으로 기록됨
(
여기서 N은 일반적인 RDP 세션 이름)

추가정보

클라이언트 이름

사용자가 다시 연결한 컴퓨터 이름

클라이언트 주소

사용자가 다시 연결한 컴퓨터의 IP 주소

 

[표 12] 이벤트 ID 4778 세부 정보

 

 

"클라이언트 네트워크 주소"가 "::1 또는 127.0.0.1"인 경우 로컬 호스트를 의미하며, “LOCAL"인 경우 콘솔세션을 의미한다. 

 

 

  

[그림 18] 이벤트 ID : 4478

 

 

6) 이벤트 ID : 4779 - 세션이 윈도우 스테이션 연결이 끊어졌습니다. (A session was disconnected from a Window Station)

 

이벤트 ID : 4779는 사용자가 원격 데스크톱 세션에서 연결을 끊을 때 기록되며, 이벤트 ID : 24, 이벤트 ID : 39, 이벤트 ID : 40과 쌍을 이룬다. 이벤트 ID : 4779에서 획득 가능한 정보는 [표 5-13]과 같으며, 계정 이름, 클라이언트 주소 및 로그온 ID는 관련 활동을 식별하는 데 유용할 수 있다.

 

필드명

설 명

주체

계정 이름

세션 연결이 끊어진 계정

계정 도메인

주체의 도메인 또는 컴퓨터 이름

로그온 ID

동일한 로그온 ID를 포함할 수 있는 최근 이벤트와

이 이벤트의 상관 관계를 지정할 수 있는 16진수 값

세션

세션 이름

연결이 끊어진 세션으로, RDP-Rcp#N으로 기록됨

(여기서 N은 일반적인 RDP 세션 이름)

추가정보

클라이언트 이름

세션 연결이 끊어진 컴퓨터 이름

클라이언트 주소

세션 연결이 끊어진 컴퓨터의 IP 주소

 

[표 13] 세션 연결이 끊어진 이유 코드 일부

 

 

"클라이언트 네트워크 주소"가 "::1 또는 127.0.0.1"인 경우 로컬 호스트를 의미하며, “LOCAL"인 경우 콘솔세션을 의미한다. 

 

 

  

[그림 19] 이벤트 ID : 4479

 

 

06. 로그 오프 (Logoff)

 

1) 이벤트 ID : 23 - 원격 데스크톱 서비스: 세션 로그오프 성공 (Remote Desktop Services: Session logoff succeeded)

 

이벤트 ID : 23은 원격 데스크톱 세션에서 사용자가 [그림 20]과 같이 로그오프를 했을 때 기록되며, 이벤트 ID : 4634 (로그오프)와 쌍을 이룬다. 이벤트 ID : 23에서 획득 가능한 정보는 [표 14]와 같다.

 

필드명

설 명

사용자

로그오프 된 원격 데스크톱 세션 계정

세션 ID

로그오프 된 원격 데스크톱 세션 ID

 

[표 14] 이벤트 ID : 23 세부 정보

 

  

[그림 20] 원격 데스크톱 세션 로그 오프(좌) 및 이벤트 ID : 23(우) 

 

 

2) 이벤트 ID : 4634 - 계정이 로그오프 되었습니다. (An account was logged off)

 

이벤트 ID : 4634는 사용자가 단순히 원격 데스크톱 세션에서 연결을 끊거나 [그림 18]과 같은 공식적으로 로그오프 할 때마다 기록되며, 이벤트 ID : 4634와 이벤트 ID : 4647(사용자가 로그오프를 시작했습니다)의 차이점은 로그오프 함수를 사용하여 특정 계정에서 로그오프 프로시저를 시작할 때 이벤트 ID : 4647 이벤트가 생성되고, 이벤트 ID : 4634는 세션이 종료되어 더 이상 존재하지 않을 때 생성된다는 점이다. 

 

이벤트 ID : 4634는 이벤트 ID : 21 (원격 데스크톱 세션 로그오프)과 쌍을 이룬다. 이벤트 ID : 4634에서 획득 가능한 정보는 [표 15]와 같다. 

 

필드명

설 명

주체

계정 이름

로그오프된 계정

계정 도메인

주체의 도메인 또는 컴퓨터 이름

로그온 ID

동일한 로그온 ID를 포함할 수 있는 최근 이벤트와

이 이벤트의 상관 관계를 지정할 수 있는 16진수 값

로그온 유형

사용된 로그온 유형

 

[표 15] 이벤트 ID : 4634 세부 정보

 

 

이벤트 ID : 4634는 이벤트 ID : 4624 (성공적인 인증)과 동시에 기록된다. 두 이벤트 ID의 상호 관련은 로그온 ID로 구분할 수 있수 있으며, 동일한 컴퓨터에서 시작할 때 에만 고유하다.

 

  

 

[그림 21] 이벤트 ID : 4634 

 

 

3) 이벤트 ID : 4647 - 사용자가 로그오프를 시작했습니다. (User initiated logoff)

 

이벤트 ID : 4647은 사용자가 시스템 로그오프를 시작할 때 기록되며, 반드시 원격 데스크톱와 관련이 있는 것은 아니다. 사용자가 표준 메서드를 사용하여 로그오프한 경우 대화형 및 RemoteInteractive 로그온 유형에는 이벤트 ID : 4647이 더 일반적이나, 통상적으로 사용자가 로그오프 프로시저를 시작하면 이벤트 ID : 4647과 이벤트 ID : 4634 모두 볼 수 있다.

 

이벤트 ID : 4647에서 획득 가능한 정보는 [표 16]와 같다. 

 

필드명

설 명

주체

계정 이름

로그오프된 계정

계정 도메인

주체의 도메인 또는 컴퓨터 이름

로그온 ID

동일한 로그온 ID를 포함할 수 있는 최근 이벤트와

이 이벤트의 상관 관계를 지정할 수 있는 16진수 값

로그온 유형

사용된 로그온 유형

 

[표 16] 이벤트 ID : 4647 세부 정보

 

 

 

이벤트 ID : 4647는 이벤트 ID : 4624 (성공적인 인증)와 상호 관련이 있다. 두 이벤트 ID의 상호 관련은 로그온 ID로 구분할 수 있수 있으며, 동일한 컴퓨터에서 시작할 때 에만 고유하다.

 

 

 
[그림 22] 이벤트 ID : 4647 

 

 

 

07. 원격 데스크톱을 악용하여 측면 이동 (Lateral Movement)

 

측면 이동(Lateral Movement)은  공격자가 초기 접근 권한을 얻은 후 민감한 데이터 및 기타 가치가 높은 자산을 찾기 위해 네트워크 안으로 더 깊이 이동하기 위해 사용하는 기술을 말한다. 공격자는 초기 접근 권한을 얻은 시스템을 통해 이동하고 다양한 도구를 사용하여 증가된 권한을 얻음으로써 지속적인 액세스를 유지하려 하며, 측면 이동(Lateral Movement) 단계에서 원격 데스크톱을 많이 악용하는 것으로 확인되었다. 원격 데스크톱을 악용하여 측면 이동(Lateral Movement)을 하는 경우 이벤트가 어떻게 기록되는지 살펴보자.

 

1) 이벤트 ID : 4688 - 새 프로세스가 만들어졌습니다. (A new process has been created)

 

이벤트 ID : 4688은 실행된 프로그램과 프로그램을 실행한 사용자 및 해당 프로세스를 시작한 프로세스를 기록하며, 일반적으로 이벤트 ID : 4689 (프로세스가 종료되었습니다)와 쌍을 이룬다. 이벤트 ID : 4688은 [로컬 보안정책] - [감사 정책] - [프로세스 추적 감사] 정책을 사용해야만 이벤트를 기록하며, 프로세스 추적 감사 보안 설정은 프로세스 생성, 프로세스 종료, 핸들 복제 및 간접 개체 액세스 같은 프로세스 관련 이벤트를 감사할지 여부를 결정한다. 이벤트 ID : 4688에서 주의 깊게 살펴볼 세부 정보는 [표 17]과 같다. 

 

필드명

설 명

생성자 주체

계정 이름

"프로세스 만들기" 작업을 요청한 계정

계정 도메인

주체의 도메인 또는 컴퓨터 이름

로그온 ID

동일한 로그온 ID를 포함할 수 있는 최근 이벤트와

이 이벤트의 상관 관계를 지정할 수 있는 16진수 값

프로세스 정보

새 프로세스 ID

새 프로세스의 프로세스 ID (16 진수 값)

새 프로세스 이름

프로세스에 대한 실행 프로그램의 전체 경로 및 이름

 

[표 17] 이벤트 ID : 4688 세부 정보 일부

 

프로그램은 시작할 때부터 프로그램이 종료할 때까지 프로세스를 만들며, 이 프로세스는 프로세스 ID로 식별된다. 프로그램이 종료된 시간을 확인하려면 동일한 프로세스 ID를 가진 이벤트 ID : 4689을 찾으면 된다. 만약 공격자가 원격 데스크톱을 악용하여 측면 이동(Lateral Movement)을시도했다면, [그림 23]과 같이 새 프로세스 이름 필드에서 C:WindowsSystem32mstsc.exe를 확인할 수 있다.

 

  

 

[그림 23] 이벤트 ID : 4688 

 

 

1) 이벤트 ID : 4689 - 프로세스가 종료되었습니다. (A process has exited)

 

이벤트 ID : 4689은 프로세스가 종료될 때 기록하며, 이벤트 ID : 4689 역시 프로세스 추적 감사 정책을 사용해야만 이벤트가 기록 되며, 이벤트 ID : 4689에서 획득 가능한 정보는 [표 18]과 같다. 

 

필드명

설 명

주체

보안 ID

프로세스 종료작업을 요청한 계정의 ISD로 이벤트 뷰어는 자동으로
SID
를 확인하고 계정 이름을 표시

계정 이름

프로세스 종료“  작업을 요청한 계정

계정 도메인

주체의 도메인 또는 컴퓨터 이름

로그온 ID

동일한 로그온 ID를 포함할 수 있는 최근 이벤트와 이 이벤트의 상관 관계를 지정할 수 있는 16진수 값

프로세스 정보

프로세스 ID

종료된 프로세스의 프로세스 ID (16진수 값)

프로세스 이름

종료된 프로세스의 전체 경로 및 실행 이름

종료 상태

종료 코드 (16진수 값)

 

[표 18] 이벤트 ID : 4689 세부 정보

 

 

이벤트 ID : 4689는 이벤트 ID : 4688 (새 프로세스가 만들어졌습니다.)와 상호 관련이 있으며, 두 이벤트 ID의 상호 관련은 프로세스 ID로 구분할 수 있수 있다. 프로그램이 시작된 시간을 확인하려면 동일한 프로세스 ID를 가진 이전 이벤트 ID : 4688을 찾으면 된다.

 

 

 

[그림 24] 이벤트 ID : 4689 

 

 

이벤트 로그만으로는 어떤 시스템에 원격 데스크톱 연결을 했는지 확인하기는 어렵기에, 추가로 레지스트리를 확인해야된다. 

 

  

원격데스톱(RDP)를 연결 기록 확인 가능하며, MRU0 (가장 마지막으로 연결된 시스템의 IP) ~ MRU9 까지 기록됨 

 

 

 

 

 

마지막으로 액세스한 계정 도메인 및 사용자 이름이 기록됨

 

 

 

 

08. 마무리

 

지금까지 원격 데스크톱 관련 이벤트 로그들을 살펴 보았다. [그림 19]은 지금까지 살펴본 각 이벤트 ID 별  정리한 CheatSheet 이다.

 

  

[그림 25] 이벤트 ID CheatSheet 

 

 

원격 데스크톱 악용으로 인한 침해사고 조사 시 가장 먼저 상단에 있는 이벤트 ID 부터 검색해서 로그인 성공, 실패, 종료 여부를 확인하고 하단으로 내려가면서 세부 정보를 확인한다면, 사고분석을 조금 더 빠르게 진행할 수 있을 것이다.

 

 

09. 참고 자료

 

[1] RDP 흐름도

https://www.13cubed.com/downloads/rdp_flowchart.pdf

[2] Windows Security Log Events

https://www.ultimatewindowssecurity.com/securitylog/encyclopedia

[3] Forensic Lunch Test Kitchen

https://www.hecfblog.com/2018/10/daily-blog-516-forensic-lunch-test.html

https://www.hecfblog.com/2018/10/daily-blog-517-forensic-lunch-test.html

https://www.hecfblog.com/2018/10/daily-blog-518-forensic-lunch-test.html

[4] ExtendedDisconnectReasonCode 열거형

https://docs.microsoft.com/ko-kr/windows/win32/termserv/extendeddisconnectreasoncode?redirectedfrom=MSDN

[5] RDS Session Host Server Disconnect Codes

https://social.technet.microsoft.com/wiki/contents/articles/37874.rds-session-host-server-disconnect-codes.aspx