콤푸타/해킹&보안

[windows] 윈도우 이벤트 분석 (2) - RDP(원격 연결) & 로그온 기록 분석

어둠의다크 2025. 1. 18. 01:03

 

 감사, 포렌식 그리고 침해사고 분석에서 어떤 컴퓨터에 누가 로그온을 했는지 또 어떤 IP 가 접근했는지 파악하는 것이 굉장히 중요하다.

 윈도우에서는 이러한 로그온 기록들을 security.evtx 에 기록하고 있다. 사실 security 이벤트에는 계정 생성이나 삭제 로그온 실패 로그오프 등 좀더 다양하고 많은 정보들이 기록된다. 또 원격지에서 로그인 한 IP는 Local Session Manager-Operational.evtx 에서 확인 가능하다. 이번 포스팅에서 우리는 컴퓨터 로그온 기록과 원격지 접속 기록을 분석하는 방법을 확인 해 볼 것이다.

 이번 포스팅에서 우리가 분석할 이벤트는 이 두개다.

 

1. Security.evtx 분석

 지난 포스팅에서 security 이벤트의 각 칼럼이 나타내는 내용들을 간단하게 정리했었다. 사용자 로그온, 로그온 실패, 로그오프 관련 이벤트 ID는 4624, 4625, 4634 다. 다른 몇 가지 중요한 기능들과 같이 표로 정리해보면 다음과 같다.

구분 이벤트 ID
로그온 성공 4624
로그온 실패 4625
로그오프 4634
계정 생성 4720
계정 비밀번호 변경 4724
계정 삭제 4726

 윈도우 보안 이벤트 분석을 할때 위 6가지 이벤트 ID는 꼭 기억하길 바란다. 실제로 똑같이 확인되는지 이벤트 로그를 한번 확인해보자. 필자는 지난 포스팅에서 소개했던 message analyzer를 사용할 것이다.

security 이벤트를 열어 필터식으로 필터링 하였다. 위 이미지에서 4624, 4625, 4634 이벤트가 어떤 내용과 연결되는지를 확인해보라.

필자가 사용한 필터링 식은 다음과 같다.

EventLog.EventID == 4625 or EventLog.EventID == 4634 or EventLog.EventID == 4720 or EventLog.EventID == 4724 or EventLog.EventID == 4726 or
(EventLog.EventID == 4624 and (EventLog.EventData["LogonType"] == 2 or EventLog.EventData["LogonType"] == 3 or EventLog.EventData["LogonType"] == 7 or EventLog.EventData["LogonType"] == 10))

 

1-1. 4624 로그온 성공 유형 분류

4624 로그온 성공 이벤트에는 로그온 유형이라는 것이 존재한다. 이 로그온 유형은 1~13 값을 가지는데, 다음 표를 참고하라. 참고로 다음 표는 이글루 시큐리티의 원격 데스크톱(RDP) 악용 침해사고 이벤트 로그 분석 글을 참조했다. 링크는 마지막에 있는 참조를 확인하면 되겠다.(굉장히 잘 정리된 글이니 참고하면 도움이 많이 될 것이다)

로그온
유형
로그온 제목 설 명
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

 일반적으로 사용자와 상호작용으로 인해 발생하는 이벤트는 2, 3, 7, 10 네 개 이므로 필자는 네 개 로그온 유형에 대해서 필터링을 진행했다. 

 각 항목이 어떤의미를 가지는지에 대해서는 지난 포스팅에서 설명했기때문에 생략하도록 하겠다.

 

2. Local Session Manager 분석

 로컬세션매니저 이벤트의 전체 이름은 Microsoft-windows-Terminalservices-LocalSessionManager%4Operational.evtx 다. 이 이벤트에서는 외부에서 현재 컴퓨터로 RDP 연결을 수행한 이력을 확인할 수 있다.

 이 로컬 세션 매니저에서 우리가 주의깊게 살펴봐야 할 이벤트 ID 는 다음과 같다.


구분 이벤트 ID
세션 로그온 성공 21
셸 시작 알림 받음 22
세션 로그오프 성공 23
세션 연결 끊김 24
세션 다시 연결 25
의도적 연결 해제 39
세션 연결 끊김&재 연결 40

 사실 이 중에서 가장 주의깊게 볼 이벤트는 21, 24,25, 40 네 가지다. 다음 그림을 보자

 로컬 세션 매니저 로그에서는 IP 주소와 로그온 계정 세션 정보 등을 확인할 수 있다. 사용된 필터식은 아래 코드를 보라.

EventLog.EventID == 21 or EventLog.EventID == 22 or EventLog.EventID == 23 or  EventLog.EventID == 24 or EventLog.EventID == 25 or EventLog.EventID == 39 or EventLog.EventID == 40

 

2-1. 21 세션 로그온 성공

 윈도우 데스크탑 환경은 세션 단위로 구분되며 사용자에게 제공된다. 즉 사용자가 어떤 credential을 사용해 사용자 인증에 성공하였고, 세션이 생생되었음을 의미한다. 여기서는 세션 ID, 로그온 계정 그리고 로그온 IP를 확인할 수 있다.

 

2-2. 24 세션 연결 끊김 & 25 세션 다시 연결

 사용자가 연결을 끊거나 다시 연결한 경우에 기록된다. 여기서도 세션 ID, 로그온 계정 그리고 로그온 IP를 확인할 수 있다. 이 연결이 끊어지는 경우에는 다양한 사유가 있다. 예시를 몇 가지 들어보겠다.

  • RDP 창을 최소화 한 경우
  • 오른쪽 상단의 창닫기(X)를 눌러 종료한 경우
  • RDP 연결(로그온) 된 상태에서 새롭게 RDP 연결 한 경우
  • 네트워크 불안정

등 다양한 케이스가 있다.

 

2-3. 39 의도적 연결 해제

RDP 연결시 종료 아이콘에서 위 사진과 같이 '연결 끊기' 기능을 확인할 수 있다. 이 연결 끊기 기능을 사용해 연결을 종료한 경우 39번 이벤트가 남는다.(라고한다) 사실 이렇게 종료하는 경우가 굉장히 드물기 때문에 잘 보기 힘든 이벤트 이기도 하다.

필자의 경우에는 2개가 남아있는데, 아마 예전에 심심해서 몇 번 해본것 같다.(잘 기억안남)

 

2-4. 40 세션 연결 끊김 & 재 연결

 해당 이벤트는 연결 해제와 재 연결 모두와 관련이 있다. 다음 표를 참고하자

 이유 코드 설 명 비 고
0 추가 정보를 확인할 수 없습니다. 사용자가 비공식적으로 (사용자가  원격 데스크톱창에서 X를 클릭) 원격 데스크톱 세션을 종료한 경우 (이벤트 ID : 24 관련 있음)
5 클라이언트의 연결이 다른 연결로 대체되었습니다. 사용자가 원격 데스크톱 세션에 재연결 했을 경우
(
이벤트 ID : 25 관련 있음)
11 사용자 활동이 연결 해제를 시작했습니다. 사용자가 정상적으로 (: 시작 > 전원 > 연결 해제 클릭) 원격 데스크톱 세션을 종료한 경우 (이벤트 ID : 39 관련 있음)
12 로그오프를 시작했습니다. 세션을 로그오프하여 연결이 끊어졌음

 

3. 생각하며 분석하기

3-1. 넓은 시각 가지기

 사용자가 로그온 한 기록을 확인하려면 가장 먼저 security.evtx 를 확인해야한다. 이 외에도 사용자가 로그온 했음을 추정할 수 있는 이벤트가 몇 가지 더 있다.

 예를 들면 레지스트리 이벤트에서 ntuser 레지스트리가 로드되었다는 이벤트가 발생하면 실제 로그온이 발생하였다고 추정할 수 있다. 다만 이러한 이벤트 기록은 로그온을 간접적으로 추정할 수 있는 기록일 뿐이다. 가장 정확하고 좋은 것은 security.evtx 에서 기록을 확인하는 것이다.

 다만 이 security.evtx 에는 치명적인 단점이 존재한다. 다음을 보라

  • 갱신이 굉장히 빈번하다.
  • 기록되는 이벤트가 너무 많다.
  • 이벤트 로그의 크기가 제한되어있다.
  • 따라서 overwrite가 발생한다.

이런 이유때문에 기록을 확인할 수 없는 경우가 굉장히 많다. 가장 좋은 방법은 이벤트로그 용량을 키워놓거나, 용량이 가득 차면 별도 파일로 백업하도록 설정하는 것이지만, 모든 사용자가 이러한 기능들을 적용 하였을것이라 기대하기는 힘들다. 

 그럴 때 우리는 local session manager 이벤트를 참고할 수 있다. 원격 연결에 대해서 직접 로그온한 기록을 남기는 것이므로 공격자 또는 사용자의 활동 내역을 추정할 수 있는 근거가 된다. 즉 각 이벤트 로그들을 서로 별개라고 생각하지말고 서로를 연관지어 생각할 수 있다면 분석의 깊이가 훨씬 넓어질 것이라는 의미다.

 

3-2. 로그온 기록에 따른 사용자 구분

 만약 어떤 서버나 PC가 해킹당했다고 한다면 공격자는 어떤 방법으로든 원격지에서 해당 컴퓨터로 원격 접속을 수행하였을 것이다. 따라서 우리는 공격자의 행동 을 로그온 성공 ~ 로그오프 사이 시간으로 확정지을 수 있다. 또한 같은 PC를 여러명이 사용하는 환경에서도 로그온이 발생한 기록으로 어떤 사용자가 어느 시간대에 컴퓨터를 사용 하였는지 구분 가능할 것이다.

 

4. 참조

security 이벤트 관련 MSDN
https://learn.microsoft.com/ko-kr/previous-versions/windows/it-pro/windows-10/security/threat-protection/auditing/basic-audit-logon-events

 

Audit logon events - Windows 10

Determines whether to audit each instance of a user logging on to or logging off from a device.

learn.microsoft.com

 

이글루 시큐리티 참고글
https://www.igloo.co.kr/security-information/%EC%9B%90%EA%B2%A9-%EB%8D%B0%EC%8A%A4%ED%81%AC%ED%86%B1rdp-%EC%95%85%EC%9A%A9-%EC%B9%A8%ED%95%B4%EC%82%AC%EA%B3%A0-%EC%9D%B4%EB%B2%A4%ED%8A%B8-%EB%A1%9C%EA%B7%B8-%EB%B6%84%EC%84%9D/

 

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

    01. 개요   원격 데스크톱(Remote Desktop Protocol : RDP)은 마이크로소프트사 Windows OS의 구성요소로 ITU-T.128 어플리케이션 프로토콜의 확장이다. 최초 1996년 Windows NT 4.0에서 Terminal Service Client로 출

www.igloo.co.kr

 

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

 

ExtendedDisconnectReasonCode 열거형 - Win32 apps

컨트롤의 연결 끊김 이유에 대한 확장 정보를 정의합니다.

learn.microsoft.com

https://learn.microsoft.com/en-us/archive/technet-wiki/37874.rds-session-host-server-disconnect-codes

 

RDS Session Host Server Disconnect Codes

RDS Session Host Server Disconnect Codes Article 1/17/2024 In this article --> Summary: This article contains the current Remote Desktop Server client disconnect codes and reasons. These events are logged on the machine hosting the Remote Desktop Session.

learn.microsoft.com