A Practical guide for Sysmon : Event items

1. 개요

이전 'Sysmon 활용 가이드: 개념 및 설치 방법'에서 Sysmon이 무엇이며 어떻게 설치할 수 있는지 알아봤다. 본 글에서는 Sysmon이 기록하는 이벤트의 구성 항목을 살펴본다.

Sysmon은 프로세스 생성을 포함해 총 29개의 이벤트로 구성되어 있으며, 목적에 맞게 이벤트를 활용하면 엔드포인트 보안을 보다 효과적으로 강화할 수 있다.

Windows Vista 이상에서는 이벤트가 Microsoft-Windows-Sysmon%4Operational.evtx에 기록되고, 그 이전 버전에서는 System.evtx에서 확인할 수 있다.

[그림 1] 이벤트 뷰어에서 확인한 Sysmon 이벤트 로그
[그림 1] 이벤트 뷰어에서 확인한 Sysmon 이벤트 로그

Sysmon 이벤트 구성 항목의 설정값(이름, Type 등)은 "sysmon.exe -s" 명령을 사용해 확인할 수 있다.

[그림 2] sysmon.exe -s 결과 일부
[그림 2] sysmon.exe -s 결과 일부

2. Sysmon 이벤트

ID 1. Process Create

Process Create 이벤트는 새로 생성된 프로세스에 대한 정보를 제공한다.

[그림 3] Process Create 이벤트 예시
[그림 3] Process Create 이벤트 예시
  • 구성 항목
구성 항목 설명
RuleName 탐지된 Rule 이름(Configure File 내 작성된 RuleName)
UtcTime 이벤트가 기록된 시간을 UTC 표준 시간으로 출력
ProcessGuid 생성된 프로세스의 고유 식별자(Guid)
ProcessId 생성된 프로세스의 고유 식별자(ID)
Image 생성된 프로세스 이미지(경로)
FileVersion 실행된 프로세스 이미지 버전
Description 이미지에 대한 설명
Product 서비스 공급자 이름
Company 서비스 공급사 이름
OriginalFileName 실행된 프로세스 파일 이름
CommandLine 프로세스가 실행된 명령어(전달된 인수 포함)
CurrentDirectory 프로세스가 실행된 디렉토리 경로
User 이벤트가 발생한 PC(Domain) 및 User 이름
LogonGuid 로그온 세션을 식별하는 사용자 LogonGuid
LogonId 로그온 세션을 식별하는 사용자 LogonId
TerminalSessionId 사용자가 속한 세션의 Id
IntegrityLevel 프로세스에 할당된 무결성 Label
Hashes HashType 필드에 존재하는 알고리즘이 있는 이미지의 전체 Hash
ParentProcessGuid 해당 프로세스를 시작한 상위 프로세스의 고유 식별자(Guid)
ParentProcessId 해당 프로세스를 시작한 상위 프로세스의 고유 식별자(Id)
ParentImage 해당 프로세스를 시작한 상위 프로세스의 이미지(경로)
ParentCommandLine 해당 프로세스를 시작한 상위 프로세스의 실행된 명령어(전달된 인수 포함)
ParentUser 해당 프로세스를 시작한 상위 프로세스의 PC(Domain) 및 User 이름

ID 2. File creation time changed

File creation time changed 이벤트는 파일 생성 시간이 프로세스에 의해 수정될 때 기록된다. 공격자(또는 악성코드)는 악성 파일 등의 탐지 회피를 목적으로 파일 시간을 변조하는데, 해당 이벤트가 파일의 실제 생성 시간을 추적하는 데 도움이 된다.

[그림 4] File creation time changed 이벤트 예시
[그림 4] File creation time changed 이벤트 예시
  • 구성 항목
구성 항목 설명
RuleName 탐지된 Rule 이름(Configure File 내 작성된 RuleName)
UtcTime 이벤트가 기록된 시간을 UTC 표준 시간으로 출력
ProcessGuid 파일 생성 시간을 수정한 프로세스의 고유 식별자(Guid)
ProcessId 파일 생성 시간을 수정한 프로세스의 고유 식별자(ID)
Image 파일 생성 시간을 수정한 프로세스 이미지(경로)
TagetFilename 생성 시간이 수정된 파일 경로 및 이름
CreationUtcTime 수정된 파일 생성 시간(UTC)
PreviousCreationUtcTime 수정되기 전 파일 생성 시간(UTC)
User 파일 생성 시간을 수정한 PC(Domain) 및 User 이름

ID 3. Network connection detected

Network connection detected 이벤트는 시스템의 TCP/UDP 연결이 기록된다. 각 이벤트는 ProcessID 및 ProcessGuid 항목으로 네트워크 연결을 한 프로세스를 식별할 수 있다. 그러나 많은 이벤트가 발생 기본적으로 비활성화 되어 있으며, "sysmon.exe -c -n" 명령어로 활성화할 수 있다.

[그림 5] Network connection detected 이벤트 예시
[그림 5] Network connection detected 이벤트 예시
  • 구성 항목
구성 항목 설명
RuleName 탐지된 Rule 이름(Configure File 내 작성된 RuleName)
UtcTime 이벤트가 기록된 시간을 UTC 표준 시간으로 출력
ProcessGuid 네트워크 연결을 발생시킨 프로세스의 고유 식별자(Guid)
ProcessId 네트워크 연결을 발생시킨 프로세스의 고유 식별자(ID)
Image 네트워크 연결을 발생시킨 프로세스 이미지(경로)
User 프로세스가 동작한 PC(Domain) 및 User 이름
Protocol 네트워크 연결에 사용 중인 프로토콜
Initiated 프로세스가 TCP 연결을 시작했는지에 대한 여부(true/false)
SourceIsIpv6 Source IP가 Ipv6 주소를 사용하는지에 대한 여부(true/false)
SourceIp 네트워크 연결을 발생시킨 Source IP 주소
SourceHostname 네트워크에 연결한 호스트의 DNS 이름
SourcePort Source Port 번호
SourcePortName Source Port 이름
DestinationIsIpv6 Destination IP가 Ipv6 주소를 사용하는지에 대한 여부(true/false)
DestinationIp Destination IP 주소
DestinationHostname 네트워크에 연결된 호스트의 DNS 이름
DestinationPort Destination Port 번호
DestinationPortName Destination Port 이름

ID 4. Sysmon service state changed

Sysmon service state changed 이벤트는 Sysmon 서비스 상태(시작 또는 중지)를 기록한다.

[그림 6] Sysmon service state changed 이벤트 예시
[그림 6] Sysmon service state changed 이벤트 예시
  • 구성 항목
구성 항목 설명
UtcTime 이벤트가 기록된 시간을 UTC 표준 시간으로 출력
State Sysmon 서비스 상태(Started/Stopped)
Version Sysmon 바이너리 버전
SchemaVersion Sysmon Config 스키마 버전

ID 5. Process terminated

Process terminated 이벤트는 프로세스가 종료될 때 기록된다.

[그림 7] Process terminated 이벤트 예시
[그림 7] Process terminated 이벤트 예시
  • 구성 항목
구성 항목 설명
RuleName 탐지된 Rule 이름(Configure File 내 작성된 RuleName)
UtcTime 이벤트가 기록된 시간을 UTC 표준 시간으로 출력
ProcessGuid 종료된 프로세스의 고유 식별자(Guid)
ProcessId 종료된 프로세스의 고유 식별자(Id)
Image 종료된 프로세스의 이미지(경로)
User 프로세스를 종료한 PC(Domain) 및 User 이름

ID 6. Driver loaded

Driver loaded 이벤트는 시스템에 로드되는 드라이버 정보(드라이브 Hash, 서명 정보 등)가 기록된다. 드라이버 서명은 성능상의 이유로 비동기식으로 작성되며 로드 후 파일이 제거되었는지 여부를 나타낸다.

[그림 8] Driver loaded 이벤트 예시
[그림 8] Driver loaded 이벤트 예시
  • 구성 항목
구성 항목 설명
RuleName 탐지된 Rule 이름(Configure File 내 작성된 RuleName)
UtcTime 이벤트가 기록된 시간을 UTC 표준 시간으로 출력
ImageLoaded 로드된 드라이버의 이미지(경로)
Hashs 로드된 드라이버의 Hash 값
Signed 드라이버 로드가 서명됐는지에 대한 여부(true/false)
Signature 드라이버 서명자 이름
SignatureStatus 서명 상태(Valid/Invalid)

ID 7. Image loaded

Image loaded 이벤트는 프로세스에서 모듈이 로드될 때 기록된다. 모듈이 로드되는 프로세스, Hash 값과 서명 정보를 나타낸다. 서명은 성능상의 이유로 비동기식으로 작성되며 로드 후 파일이 제거되었는지 여부를 나타낸다. 이 이벤트는 기본적으로 비활성화 되어 있으며, sysmon.exe -c -l 명령어로 활성화할 수 있다. 모든 Image loaded 이벤트를 모니터링 하면 상당한 양의 로그가 기록되므로 신중하게 구성해야 한다.

[그림 9] Image loaded 이벤트 예시
[그림 9] Image loaded 이벤트 예시
  • 구성 항목
구성 항목 설명
RuleName 탐지된 Rule 이름(Configure File 내 작성된 RuleName)
UtcTime 이벤트가 기록된 시간을 UTC 표준 시간으로 출력
ProcessGuid 이미지를 로드한 프로세스의 고유 식별자(Guid)
ProcessId 이미지를 로드한 프로세스의 고유 식별자(Id)
Image 이미지를 로드한 프로세스의 이미지(경로)
ImageLoaded 로드된 이미지의 이미지(경로)
FileVersion 로드된 이미지의 파일버전
Description 로드된 이미지의 설명
Product 로드된 이미지가 속한 제품 이름
Company 로드된 이미지가 속한 제조사
OriginalFileName 컴파일 시 추가되는 PE 헤더의 OriginalFileName
Hashes 로드된 이미지의 Hash 값
Siged 로드된 이미지가 서명됐는지에 대한 여부(true/false)
Signature 이미지 서명자의 이름
SignatureStatus 서명 상태(Valid/Invalid)
User 이미지를 로드한 PC(Domain) 및 User 이름

ID 8. CreateRemoteTread detected

CreateRemoteTread detected 이벤트는 프로세스가 다른 프로세스에서 스레드를 생성할 때 기록된다. 이 행위는 공격자가 악성 코드를 다른 프로세스에 숨기기 위해 사용될 수 있다. 새 스레드에서 실행될 코드(StartAddress, StartModule, StartFunction)에 대한 정보를 제공한다. StartModule 및 StartFunction 항목은 유추되며, 시작 주소가 로드된 모듈 외부에 있으면 비어 있을 수 있다.

[그림 10] CreateRemoteThread detected 이벤트 예시
[그림 10] CreateRemoteThread detected 이벤트 예시
  • 구성 항목
구성 항목 설명
RuleName 탐지된 Rule 이름(Configure File 내 작성된 RuleName)
UtcTime 이벤트가 기록된 시간을 UTC 표준 시간으로 출력
SourceProcessGuid 다른 프로세스에서 스레드를 생성한 원본 프로세스의 고유 식별자(Guid)
SourceProcessId 다른 프로세스에서 스레드를 생성한 원본 프로세스의 고유 식별자(Id)
SourceImage 다른 프로세스에서 스레드를 생성한 원본 프로세스의 이미지(경로)
TargetProcessGuid 대상 프로세스의 고유 식별자(Guid)
TargetProcessId 대상 프로세스의 고유 식별자(Id)
TargetImage 대상 프로세스의 이미지(경로)
NewThreadId 대상 프로세스에서 생성된 새 스레드의 Id
StartAddress 새 스레드의 시작 주소
StartModule 스레드 시작 주소를 PEB Loaded module list에 매핑해 출력
StartFunction Export tables에서 Function이 일치하는 경우 출력
SourceUser 원격 스레드를 시작한 PC(Domain) 및 User 이름
TargetUser 새 스레드가 시작된 PC(Domain) 및 User 이름

ID 9. RawAccessRead detected

RawAccessRead detected 이벤트는 프로세스가 "\\.\" 표시를 사용해 드라이브에서 읽기 작업을 수행하는 경우에 기록된다. 이 기술은 종종 파일 액세스 감사 도구를 피할 뿐만 아니라 잠긴 파일의 데이터를 유출하려는 공격자(또는 악성 코드)가 사용할 수 있다.

[그림 11] RawAccessRead detected 이벤트 예시
[그림 11] RawAccessRead detected 이벤트 예시
  • 구성 항목
구성 항목 설명
RuleName 탐지된 Rule 이름(Configure File 내 작성된 RuleName)
UtcTime 이벤트가 기록된 시간을 UTC 표준 시간으로 출력
ProcessGuid 드라이브에서 읽기 작업을 수행한 프로세스의 고유 식별자(Guid)
ProcessId 드라이브에서 읽기 작업을 수행한 프로세스의 고유 식별자(Id)
Image 드라이브에서 읽기 작업을 수행한 프로세스의 이미지(경로)
Device 대상 디바이스
User 드라이브에 접근한 PC(Domain) 및 User 이름

ID 10. Process accessed

Process accessed 이벤트는 프로세스가 다른 프로세스에 접근할 때 기록된다. 이 작업에는 종종 정보 쿼리가 뒤따르거나 대상 프로세스의 주소 공간을 읽고 쓰는 작업이 포함된다. 이를 통해 Pass-the-Hash 공격에 사용되는 lsass.exe(Local Security Authority)와 같은 프로세스 메모리 내용을 읽는 악성 파일을 탐지할 수 있다.

[그림 12] Process accessed 이벤트 예시
[그림 12] Process accessed 이벤트 예시
  • 구성 항목
구성 항목 설명
RuleName 탐지된 Rule 이름(Configure File 내 작성된 RuleName)
UtcTime 이벤트가 기록된 시간을 UTC 표준 시간으로 출력
SourceProcessGuid 다른 프로세스에 접근한 원본 프로세스의 고유 식별자(Guid)
SourceProcessId 다른 프로세스에 접근한 원본 프로세스의 고유 식별자(Id)
SourceThreadId 다른 프로세스에 접근한 원본 프로세스 내부의 특정 Thread ID
SourceImage 다른 프로세스에 접근한 원본 프로세스의 이미지(경로)
TargetProcessGUID 대상 프로세스의 고유 식별자(Guid)
TargetProcessId 대상 프로세스의 고유 식별자(Id)
TargetImage 대상 프로세스의 이미지(경로)
GranteAccess 대상 프로세스에 대해 요청된 프로세스 권한에 관한 Access Flags(bitmask)
CallTrace 열린 프로세스를 호출하는 위치의 Stack trace(함수의 DLL 및 상대 가상 주소 포함)
SourceUser 다른 프로세스에 접근한 원본 프로세스를 실행하는 PC(Domain) 및 User 이름
TargetUser 접근할 대상 프로세스를 실행하는 PC(Domain) 및 User 이름

ID 11. File created

File created 이벤트는 프로세스가 파일을 생성하거나 덮어쓸 때 기록된다. 이 이벤트는 악성 프로그램이 생성됐다가 삭제되는 임시 및 다운로드 디렉터리를 모니터링하는 데 유용하다.

[그림 13] File created 이벤트 예시
[그림 13] File created 이벤트 예시
  • 구성 항목
구성 항목 설명
RuleName 탐지된 Rule 이름(Configure File 내 작성된 RuleName)
UtcTime 이벤트가 기록된 시간을 UTC 표준 시간으로 출력
ProcessGuid 파일을 생성한 프로세스의 고유 식별자(Guid)
ProcessId 파일을 생성한 프로세스의 고유 식별자(Id)
Image 파일을 생성한 프로세스의 이미지(경로)
TargetFilename 생성된 파일 이름
CreationUtcTime 파일이 생성된 시간을 UTC 표준 시간으로 출력
User 파일을 생성한 PC(Domain) 및 User 이름

ID 12. RegistryEvent, Object added or deleted

Object added or deleted 이벤트는 프로세스가 레지스트리 키 또는 값을 생성 및 삭제할 때 기록된다. 이 이벤트는 공격자(또는 악성 코드)의 레지스트리 수정을 모니터링 하는 데 유용하다.

[그림 14] RegistryEvent(Object added or deleted) 이벤트 예시
[그림 14] RegistryEvent(Object added or deleted) 이벤트 예시
  • 구성 항목
구성 항목 설명
RuleName 탐지된 Rule 이름(Configure File 내 작성된 RuleName)
EventType 이벤트 유형(CreateKey/DeleteKey/CreateValue/DeleteValue)
UtcTime 이벤트가 기록된 시간을 UTC 표준 시간으로 출력
ProcessGuid 레지스트리 객체를 생성하거나 삭제한 프로세스의 고유 식별자(Guid)
ProcessId 레지스트리 객체를 생성하거나 삭제한 프로세스의 고유 식별자(Id)
Image 레지스트리 객체를 생성하거나 삭제한 프로세스의 이미지(경로)
TargetObject 레지스트리 객체의 전체 경로
User 레지스트리 객체를 생성하거나 삭제한 PC(Domain) 및 User 이름

ID 13. RegistryEvent, Value set

Value set 이벤트는 레지스트리 값을 수정할 때 DWORD 및 QWORD 유형의 값이 기록된다.

[그림 15] RegistryEvent(Value set) 이벤트 예시
[그림 15] RegistryEvent(Value set) 이벤트 예시
  • 구성 항목
구성 항목 설명
RuleName 탐지된 Rule 이름(Configure File 내 작성된 RuleName)
EventType 이벤트 유형(SetValue)
UtcTime 이벤트가 기록된 시간을 UTC 표준 시간으로 출력
ProcessGuid 레지스트리 값을 수정한 프로세스의 고유 식별자(Guid)
ProcessId 레지스트리 값을 수정한 프로세스의 고유 식별자(Id)
Image 레지스트리 값을 수정한 프로세스의 이미지(경로)
TargetObject 수정된 레지스트리 키의 전체 경로
Details 수정된 값에 대한 세부 정보
User 레지스트리에 접근한 PC(Domain) 및 User 이름

ID 14. RegistryEvent, Object renamed

Object renamed 이벤트는 이름이 변경된 레지스트리 키 또는 값의 새 이름이 기록된다.

[그림 16] RegistryEvent(Object renamed) 이벤트 예시
[그림 16] RegistryEvent(Object renamed) 이벤트 예시
  • 구성 항목
구성 항목 설명
RuleName 탐지된 Rule 이름(Configure File 내 작성된 RuleName)
EventType 이벤트 유형(RenameKey)
UtcTime 이벤트가 기록된 시간을 UTC 표준 시간으로 출력
ProcessGuid 레지스트리 키 또는 값의 이름을 변경한 프로세스의 고유 식별자(Guid)
ProcessId 레지스트리 키 또는 값의 이름을 변경한 프로세스의 고유 식별자(Id)
Image 레지스트리 키 또는 값의 이름을 변경한 프로세스의 이미지(경로)
TargetObject 이름이 변경된 레지스트리 키의 전체 경로
NewName 레지스트리 키의 새 이름
User 레지스트리 키 또는 값의 이름을 변경한 PC(Domain) 및 User 이름

ID 15. File stream created

File stream created 이벤트는 명명된 파일 스트림이 생성될 때 기록된다. 명명된 스트림의 내용뿐만 아니라 스트림이 할당된 파일의 내용(이름 없는 스트림)의 Hash가 포함된 이벤트를 기록한다. 이 이벤트는 브라우저가 zone.Identifier mark of the web 스트림을 연결하는 것을 모니터링하는 것을 목표로 한다.

[그림 17] File stream created 이벤트 예시
[그림 17] File stream created 이벤트 예시
  • 구성 항목
구성 항목 설명
RuleName 탐지된 Rule 이름(Configure File 내 작성된 RuleName)
UtcTime 이벤트가 기록된 시간을 UTC 표준 시간으로 출력
ProcessGuid 명명된 파일 스트림을 생성한 프로세스의 고유 식별자(Guid)
ProcessId 명명된 파일 스트림을 생성한 프로세스의 고유 식별자(Id)
Image 명명된 파일 스트림을 생성한 프로세스의 이미지(경로)
TargetFilename 파일 이름 및 경로
CreationUtcTime 파일 다운로드 시간을 UTC 표준 시간으로 출력
Hash HashType 필드에 존재하는 알고리즘이 있는 파일의 전체 Hash
Contents Zone.Identifier 내용
User 파일을 만든 PC(Domain) 및 User 이름

ID 16. Sysmon config state changed

Sysmon config state changed 이벤트는 필터링 규칙이 변경된 경우와 같이 Sysmon 설정 변경 내용이 기록된다.

[그림 18] Sysmon config state changed - 필터링 규칙 변경 이벤트 예시
[그림 18] Sysmon config state changed - 필터링 규칙 변경 이벤트 예시
[그림 19] Sysmon config state changed - Configuration File 변경 이벤트 예시
[그림 19] Sysmon config state changed - Configuration File 변경 이벤트 예시
  • 구성 항목
구성 항목 설명
UtcTime 이벤트가 기록된 시간을 UTC 표준 시간으로 출력
Configuration 변경된 필터링 규칙 또는 Configuration File 이름 및 경로
ConfigurationFileHash 변경된 Configuration File의 Hash

ID 17. PipeEvent, Pipe Created

Pipe Created 이벤트는 명명된 파이프가 생성될 때 기록된다. 공격자(또는 악성 코드)는 종종 프로세스 간 통신에 명명된 파이프를 사용한다.

[그림 20] PipeEvent(Pipe Created) 이벤트 예시
[그림 20] PipeEvent(Pipe Created) 이벤트 예시
  • 구성 항목
구성 항목 설명
RuleName 탐지된 Rule 이름(Configure File 내 작성된 RuleName)
EventType CreatePipe
UtcTime 이벤트가 기록된 시간을 UTC 표준 시간으로 출력
ProcessGuid Pipe를 생성한 프로세스의 고유 식별자(Guid)
ProcessId Pipe를 생성한 프로세스의 고유 식별자(Id)
PipeName 생성된 Pipe의 이름
Image Pipe를 생성한 프로세스의 이미지(경로)
User Pipe를 생성한 PC(Domain) 및 User 이름

ID 18. PipeEvent, Pipe Connected

Pipe Connected 이벤트는 클라이언트와 서버 간에 명명된 파이프 연결이 이루어질 때 기록된다.

[그림 21] PipeEvent(Pipe Connected) 이벤트 예시
[그림 21] PipeEvent(Pipe Connected) 이벤트 예시
  • 구성 항목
구성 항목 설명
RuleName 탐지된 Rule 이름(Configure File 내 작성된 RuleName)
EventType ConnectPipe
UtcTime 이벤트가 기록된 시간을 UTC 표준 시간으로 출력
ProcessGuid Pipe를 연결한 프로세스의 고유 식별자(Guid)
ProcessId Pipe를 연결한 프로세스의 고유 식별자(Id)
PipeName 연결된 Pipe의 이름
Image Pipe를 연결한 프로세스의 이미지(경로)
User Pipe를 연결한 PC(Domain) 및 User 이름

ID 19. WmiEvent, WmiEventFilter activity detected

WmiEventFilter activity detected 이벤트는 WMI 이벤트 필터가 등록될 때 기록된다.

[그림 22] WmiEvent(WmiEventFilter activity detected) 이벤트 예시
[그림 22] WmiEvent(WmiEventFilter activity detected) 이벤트 예시
  • 구성 항목
구성 항목 설명
RuleName 탐지된 Rule 이름(Configure File 내 작성된 RuleName)
EventType WmiFilterEvent
UtcTime 이벤트가 기록된 시간을 UTC 표준 시간으로 출력
Operation Wmi Event Filter 작업 내용(Created 등)
User Wmi Filter를 생성한 PC(Domain) 및 User 이름
EventNamespace WMI Class의 Event Namespace
Name 생성된 Filter의 이름
Query Filter에 연결된 WMI Query

ID 20. WmiEvent, WmiEventConsumer activity detected

WmiEventConsumer activity detected 이벤트는 WMI Consumers가 등록될 때 기록된다.

[그림 23] WmiEvent(WmiEventConsumer activity detected) 이벤트 예시
[그림 23] WmiEvent(WmiEventConsumer activity detected) 이벤트 예시
  • 구성 항목
구성 항목 설명
RuleName 탐지된 Rule 이름(Configure File 내 작성된 RuleName)
EventType WmiConsumerEvent
UtcTime 이벤트가 기록된 시간을 UTC 표준 시간으로 출력
Operation Wmi Event Consumer 작업 내용(Created 등)
User Wmi Event Consumer를 생성한 PC(Domain) 및 User 이름
Name 생성된 Event Consumer의 이름
Type Event Consumer의 Type
Destination Consumer에 의해 실행된 프로세스

ID 21. WmiEvent, WmiEventConsumerToFilter activity detected

WmiEventConsumerToFilter activity detected 이벤트는 WMI Consumer가 필터에 바인딩될 때 기록된다.

[그림 24] WmiEvent(WmiEventConsumerToFilter activity detected) 이벤트 예시
[그림 24] WmiEvent(WmiEventConsumerToFilter activity detected) 이벤트 예시
  • 구성 항목
구성 항목 설명
RuleName 탐지된 Rule 이름(Configure File 내 작성된 RuleName)
EventType WmiBindingEvent
UtcTime 이벤트가 기록된 시간을 UTC 표준 시간으로 출력
Operation Event Consumer에 WMI Filter 바인딩 작업 내용(Created 등)
User WMI Event Consumer를 생성한 PC(Domain) 및 User 이름
Consumer 바인딩할 Consumer
Filter Consumer에 바인딩할 Filter

ID 22. DNSEvent, DNS query

DNS query 이벤트는 결과의 성공 여부와 관계없이 프로세스가 DNS 쿼리를 실행할 때, 캐시 되거나, 캐시 되지 않을 때 기록된다. 이 이벤트는 Windows 7 이전 버전에서는 사용할 수 없다.

[그림 25] DNSEvent(DNS query) 이벤트 예시
[그림 25] DNSEvent(DNS query) 이벤트 예시
  • 구성 항목
구성 항목 설명
RuleName 탐지된 Rule 이름(Configure File 내 작성된 RuleName)
UtcTime 이벤트가 기록된 시간을 UTC 표준 시간으로 출력
ProcessGuid DNS Query를 발생시킨 프로세스의 고유 식별자(Guid)
ProcessId DNS Query를 발생시킨 프로세스의 고유 식별자(Id)
QueryName 질의된 DNS Query 이름
QueryStatus 질의 결과 상태코드
QueryResults 질의 결과 내용
Image DNS Query를 발생시킨 프로세스의 이미지(경로)
User DNS Query를 수행한 PC(Domain) 및 User 이름

ID 23. FileDelete, File Delete archived

File Delete archived 이벤트는 시스템에서 파일이 삭제됐을 때 기록된다. 이벤트 기록 외에도 삭제된 파일이 ArchiveDirectory(기본값 C:\Sysmon)에 저장된다. ArchiveDirectory는 Configure File에서 지정하거나 -a 옵션으로 변경할 수 있다.

1) Configure File에서 ArchiveDirectory를 C:\Sysmondelete로 지정

<ArchiveDirectory>Sysmondelete</ArchiveDirectory>

2) ArchiveDirectory를 C:\Sysmondelete로 변경

sysmon.exe -c -a Sysmondelete

현재 설정된 ArchiveDirectory는 "sysmon.exe -c" 명령어로 확인할 수 있다.

[그림 26] 설정된 ArchiveDirectory 확인
[그림 26] 설정된 ArchiveDirectory 확인

삭제된 파일의 이름은 "[설정된 Hashes].[확장자]"로 구성되며, ArchiveDirectory는 시스템 ACL로 보호되어 직접적인 접근을 막고 있다.

[그림 27] ArchiveDirectory 접근 차단

ArchiveDirectory에 접근하기 위해서는 psexec를 사용해 접근할 수 있다.

psexec -sid cmd
cd C:\sysmondelete
[그림 27] ArchiveDirectory에 저장되어 있는 삭제된 파일들
[그림 28] ArchiveDirectory에 저장되어 있는 삭제된 파일들
[그림 29] File Delete archived 이벤트 예시
[그림 29] File Delete archived 이벤트 예시
  • 구성 항목
구성 항목 설명
RuleName 탐지된 Rule 이름(Configure File 내 작성된 RuleName)
UtcTime 이벤트가 기록된 시간을 UTC 표준 시간으로 출력
ProcessGuid 파일을 삭제한 프로세스의 고유 식별자(Guid)
ProcessId 파일을 삭제한 프로세스의 고유 식별자(Id)
User 파일을 삭제한 PC(Domain) 및 User 이름
Image 파일을 삭제한 프로세스의 이미지(경로)
TargetFilename 삭제된 파일의 이름 및 경로
Hashes HashType 필드에 존재하는 알고리즘이 있는 파일의 전체 Hash
IsExecutable 파일이 PE 파일인지에 대한 여부(true/false)
Archived 파일이 Archive Directory에 저장되었는지에 대한 여부(true/false)

ID 24. Clipboard changed

Clipboard changed 이벤트는 시스템 클립보드 내용이 변경될 때 기록된다. 이벤트 기록 외에도 변경된 데이터는 ArchiveDirectory(기본값 C:\Sysmon)에 저장된다. 클립보드 내용은 "CLIP-[설정된 Hashes]" 형식으로 저장된다.

[그림 30] ArchiveDirectory에 저장되어 있는 변경된 클립보드 데이터
[그림 30] ArchiveDirectory에 저장되어 있는 변경된 클립보드 데이터
[그림 31] Clipboard changed 이벤트 예시
[그림 31] Clipboard changed 이벤트 예시
  • 구성 항목
구성 항목 설명
RuleName 탐지된 Rule 이름(Configure File 내 작성된 RuleName)
UtcTime 이벤트가 기록된 시간을 UTC 표준 시간으로 출력
ProcessGuid 클립보드에 데이터를 변경한 프로세스의 고유 식별자(Guid)
ProcessId 클립보드에 데이터를 변경한 프로세스의 고유 식별자(Id)
Image 클립보드에 데이터를 변경한 프로세스의 이미지(경로)
Session Terminal Session ID
ClientInfo 원래 RDP host의 PC(Domain) 및 User 이름
Hashes HashType 필드에 존재하는 알고리즘이 있는 파일의 전체 Hash
Archived 파일이 Archive Directory에 저장되었는지에 대한 여부(true/false)
User 클립보드에 데이터를 변경한 PC(Domain) 및 User 이름

ID 25. Process Tampering

Process Tampering 이벤트는 'process hollowing', 'process herpaderping'과 같은 프로세스 변조 기술이 탐지될 때 기록된다.

[그림 32] Process Tampering 이벤트 예시
[그림 32] Process Tampering 이벤트 예시
  • 구성 항목
구성 항목 설명
RuleName 탐지된 Rule 이름(Configure File 내 작성된 RuleName)
UtcTime 이벤트가 기록된 시간을 UTC 표준 시간으로 출력
ProcessGuid 변조된 프로세스의 고유 식별자(Guid)
ProcessId 변조된 프로세스의 고유 식별자(Id)
Image 변조된 프로세스의 이미지(경로)
Type 탐지된 변조 유형
User 프로세스 변조가 실행된 PC(Domain) 및 User 이름

ID 26. File Delete logged

File Delete logged 이벤트는 파일이 삭제됐을 때 기록된다.

[그림 33] File Delete logged 이벤트 예시
[그림 33] File Delete logged 이벤트 예시
  • 구성 항목
구성 항목 설명
RuleName 탐지된 Rule 이름(Configure File 내 작성된 RuleName)
UtcTime 이벤트가 기록된 시간을 UTC 표준 시간으로 출력
ProcessGuid 파일을 삭제한 프로세스의 고유 식별자(Guid)
ProcessId 파일을 삭제한 프로세스의 고유 식별자(Id)
User 파일을 삭제한 PC(Domain) 및 User 이름
Image 파일을 삭제한 프로세스의 이미지(경로)
TargetFilename 삭제된 파일의 이름 및 경로
Hashes HashType 필드에 존재하는 알고리즘이 있는 파일의 전체 Hash
IsExecutable 파일이 PE 파일인지에 대한 여부(true/false)

ID 27. File Block Executable

File Block Executable 이벤트는 Sysmon이 실행파일 생성을 탐지하고 차단할 때 기록된다. Configure File에 실행파일 생성을 차단할 경로를 지정하면 해당 경로에 실행파일 생성 시 차단된다.

<RuleGroup name="" groupRelation="or">
		<FileBlockExecutable onmatch="include">
			<TargetFilename condition="contains all">C:\Users;Downloads</TargetFilename>
		</FileBlockExecutable>
	</RuleGroup>

▲ Rule 예시 : C:\Users\*\Downloads에 다운로드되는 실행파일 차단

[그림 34] 실행파일 다운로드 차단
[그림 34] 실행파일 다운로드 차단
[그림 35] File Block Executable 이벤트 예시
[그림 35] File Block Executable 이벤트 예시
  • 구성 항목
구성 항목 설명
RuleName 탐지된 Rule 이름(Configure File 내 작성된 RuleName)
UtcTime 이벤트가 기록된 시간을 UTC 표준 시간으로 출력
ProcessGuid 실행파일 다운로드가 차단된 프로세스의 고유 식별자(Guid)
ProcessId 실행파일 다운로드가 차단된 프로세스의 고유 식별자(Id)
User 실행파일 다운로드가 차단된 PC(Domain) 및 User 이름
Image 실행파일 다운로드가 차단된 프로세스의 이미지(경로)
TargetFilename 차단된 실행파일의 이름 및 경로
Hashes HashType 필드에 존재하는 알고리즘이 있는 파일의 전체 Hash

ID 28. File Block Shredding

File Block Shredding 이벤트는 SDelete와 같은 파일 완전 삭제 도구로 완전 삭제 시도하는 것을 탐지하고 차단할 때 기록된다. Configure File에 완전 삭제를 차단할 경로를 지정하면 해당 경로에 완전 삭제 시 차단된다. 하지만 일반적인 삭제는 차단되지 않는다.

<RuleGroup name="" groupRelation="or">
		<FileBlockShredding onmatch="include">
			<TargetFilename condition="contains all">C:\Users;Downloads</TargetFilename>
		</FileBlockShredding>
	</RuleGroup>

▲ Rule 예 : C:\Users\*\Downloads 경로 완전 삭제 차단

[그림 36] C:\Users\*\Downloads에 위치한 파일 완전 삭제 차단
[그림 36] C:\Users\*\Downloads에 위치한 파일 완전 삭제 차단
[그림 37] Rule에 포함되지 않은 파일 완전 삭제 성공
[그림 37] Rule에 포함되지 않은 파일 완전 삭제 성공
[그림 38] C:\Users\*\Downloads에 위치한 파일 일반 삭제 가능
[그림 38] C:\Users\*\Downloads에 위치한 파일 일반 삭제 가능
[그림 39] File Block Shredding 이벤트 예시
[그림 39] File Block Shredding 이벤트 예시
  • 구성 항목
구성 항목 설명
RuleName 탐지된 Rule 이름(Configure File 내 작성된 RuleName)
UtcTime 이벤트가 기록된 시간을 UTC 표준 시간으로 출력
ProcessGuid 완전 삭제를 실행한 프로세스의 고유 식별자(Guid)
ProcessId 완전 삭제를 실행한 프로세스의 고유 식별자(Id)
User 완전 삭제를 실행한 PC(Domain) 및 User 이름
Image 완전 삭제를 실행한 프로세스의 이미지(경로)
TargetFilename 완전 삭제하려는 파일의 이름 및 경로
Hashes HashType 필드에 존재하는 알고리즘이 있는 파일의 전체 Hash
IsExecutable 파일이 PE 파일인지에 대한 여부(true/false)

ID 255. Error report

Error report 이벤트는 Sysmon 내에서 아래와 같이 오류가 발생했을 때 기록된다.

  • 시스템 과부하가 걸려 특정 작업을 수행할 수 없는 경우
  • Sysmon 서비스에 버그가 발생한 경우
  • 특정 보안 및 무결성 조건이 충족되지 않은 경우
[그림 40] Error report 이벤트 예시
[그림 40] Error report 이벤트 예시
  • 구성 항목
구성 항목 설명
UtcTime 이벤트가 기록된 시간을 UTC 표준 시간으로 출력
ID 발생한 Error Code
Description 발생한 Error 설명

본 글에서는 Sysmon이 기록하는 이벤트의 구성을 살펴보고 어떤 정보를 얻을 수 있는지 알아봤다. 다음 글은 'Sysmon 활용 가이드: Configure File 구성과 작성 방법'으로 Sysmon Configure File을 어떻게 작성할 수 있는지 알아본다.

You've successfully subscribed to PLAINBIT
Great! Next, complete checkout to get full access to all premium content.
Error! Could not sign up. invalid link.
Welcome back! You've successfully signed in.
Error! Could not sign in. Please try again.
Success! Your account is fully activated, you now have access to all content.
Error! Stripe checkout failed.
Success! Your billing info is updated.
Error! Billing info update failed.