A Practical guide for Sysmon : Concept and install

1. 개요

코로나19 이후, 비대면 원격근무 환경이 확산되면서 보안에 취약할 수 있는 PC, 프린터 등 엔드포인트(EndPoint) 기기를 노린 침해사고가 증가하고 있다. 또한 사이버 공격 도구를 거래하는 플랫폼의 확산으로 공격 도구에 대한 접근성이 높아지면서 침해사고가 더욱 증가할 것으로 보인다. 실제로 과학기술정보통신부에서 발표한 ‘2023년 사이버 보안 위협 전망 보고서’에 따르면 국내 침해사고 건수가 전년 대비 약 1.6배 증가해 사이버 위협이 지속적으로 증가하고 있는 것을 알 수 있다.

기본적으로 Windows에서는 시스템의 성능, 오류, 경고, 운영 정보 등의 중요한 정보를 이벤트 로그로 저장해 침해사고 발생 시 이벤트 로그 분석으로 공격자나 악성코드의 행위를 식별하고 대응하는데 활용된다.

Sysmon(System Monitor)은 MS사의 Sysinternals suite에 포함된 시스템 모니터링 도구로, 시스템에서 일어나는 이벤트 행위(프로세스 생성, 네트워크 연결 등)를 더 자세하게 기록한다. 이벤트 로그가 남기지 않은 정보를 추가로 기록할 수 있기 때문에 공격자(또는 악성코드)가 수행한 악성 행위와 시스템 이상 징후 원인 등을 식별하는데 많은 도움이 된다.


2. Sysmon 주요 기능

  • 현재 프로세스와 부모 프로세스의 프로세스 생성 정보 기록
  • 여러 Hash 알고리즘(SHA1(기본 값), MD5, SHA256, IMPHASH)을 사용해 프로세스 이미지 파일의 Hash 값을 기록
  • 여러 Hash 알고리즘을 동시에 사용 가능
  • 프로세스 생성 이벤트에 프로세스 GUID를 포함해 Windows에서 프로세스 ID를 재사용하는 경우에도 이벤트의 상관관계 분석 가능
  • 각 이벤트에 세션 GUID를 포함해 동일한 로그온 세션의 이벤트 상관 관계 분석 가능
  • 드라이버 또는 DLL 로드를 서명 및 Hash 정보와 함께 기록
  • 디스크 및 볼륨의 Raw Access Read에 대한 이벤트가 존재
  • 네트워크 연결을 시도하는 Source 프로세스, IP 주소, Port 번호, 호스트 명, Port 정보 기록
  • 공격자(또는 악성코드)가 변조하는 파일 생성 시간 탐지
  • 레지스트리에서 설정이 변경된 경우 Configuration을 자동으로 다시 로드
  • 필터링 규칙을 이용해 특정 이벤트를 포함하거나 제외
  • 부팅 절차부터 Sysmon이 동작해 시스템 프로세스의 작업 모니터링

3. Sysmon 동작 프로세스

모든 모니터링은 Sysmon이 설치하는 SysmonDrv.sys 드라이버가 수행하며, 서비스에 등록되어 자동실행 된다.

시스템의 다른 드라이버와 비교해 드라이버 로드 순서를 결정하는 Altitude Number 385201번을 사용한다. 시스템에서 Sysmon 동작을 숨기기 위해 Altitude Number를 레지스트리에서 변경할 수도 있지만, 오류를 발생할 수 있어 기존 Altitude Number를 사용하는 것을 권장하고 있다.

SysmonDrv.sys는 Windows API에 연결하고 ETW(Windows 용 이벤트 추적)를 활용해 모니터링하려는 작업 정보를 캡처한다. 커널 개체에 여러 Callback을 설정하고 시스템의 모든 볼륨에 Minifilter Driver로 설정해 파일 시스템에서 처리하기 전 API가 수행한 모든 작업을 볼 수 있다.

Sysmon 동작 프로세스 (https://rootdse.org/posts/understanding-sysmon-events/)
[그림 1] Sysmon 동작 프로세스 (출처 https://rootdse.org/posts/understanding-sysmon-events/)

4. Sysmon 설치 및 삭제

4.1. 설치 파일 다운로드

Sysmon 설치 파일은 Sysmon 다운로드 페이지나 PowerShell로 다운로드 할 수 있다.

Client OS는 Windows 8.1 이상, Server OS는 Windows Server 2012 이상에서 사용이 가능하다.

1) Sysmon 다운로드 페이지

Sysmon - Sysinternals
Windows 이벤트 로그를 통해 주요 시스템 활동을 모니터링하고 보고합니다.

2) Sysmon 다운로드 명령어(PowerShell)

iwr https://download.sysinternals.com/files/Sysmon.zip -outfile sysmon.zip

expand-archive sysmon.zip

4.2. Sysmon 설치 방법

Sysmon은 기본 설정으로 설치하는 방법과 커스텀하게 정의하여 설치하는 방법이 있다.

기본 설정으로 설치하면 프로세스 생성, 드라이버 다운로드 등 기본적인 정보만 로깅하고 커스텀하게 정의하여 설치하면 각 환경에 맞게 로깅 하고자 하는 이벤트만 로깅이 가능하다.

4.2.1. Sysmon 기본 설정으로 설치

Sysmon을 기본 설정으로 설치하려면 아래 명령어로 설치한다.

sysmon.exe -i

기본 설정으로 설치 시 아래와 같은 이벤트들을 SHA-1 Hash로 기록한다.

  • Process create
  • Process terminate
  • Driver loaded
  • File creation time changed
  • RawAccessRead
  • CreateRemoteThread
  • Sysmon service state changed

4.2.2. Sysmon 사용자 정의 설치

[그림 2] sysmon.exe -h
[그림 2] sysmon.exe -h

아래 표의 다양한 옵션을 적용하여 커스텀하게 설정이 가능하다.

옵션 설명
-i 서비스 및 드라이버 설치. 필요한 경우 설정파일 호출
-c 설치된 Sysmon 드라이버의 구성을 업데이트 하거나 다른 인수가 제공되지 않은 경우 현재 구성을 폐기, 필요한 경우 설정파일 호출
-m 이벤트 매니페스트를 설치(서비스 설치 시에도 수행)
-t 디버그 모드
-s 스키마 정보 출력
-nologo sysmon 로고를 표시하지 않음
-accepteula 소프트웨어 사용자 동의인 EULA(End User License Agreement)를 자동 수락
-u 서비스 및 드라이버 삭제
-h 이미지 식별에 필요한 해쉬 알고리즘을 설정 (MD5, SHA1, SHA256, IMPHASH 제공, Default : SHA1),
전체 알고리즘 4개를 모두 사용하고자 하는 경우는 *로 설정해서 사용
-r 인증서 서명 해지여부를 확인
-n 네트워크 연결 로그 기록 및 필요한 경우 프로세스 목록 추적 가능
-k 지정된 프로세스/프로세스 메모리가 액세스되는 시기를 추적
-l 로딩된 모듈을 기록하고 필요한 경우 프로세스 목록을 추적
-d 설치 중 Sysmon 드라이버 이름 바꾸기(8자 제한)

옵션을 사용해 설치하려면 아래 명령어로 설치한다.

sysmon.exe -i [options]

이미 Sysmon이 설치되었는데 옵션을 변경하기 위해서는 재설치 하거나, sysmon.exe -c [options] 명령어를 이용하여 설정을 업데이트 해주면 된다.

설정 정보를 확인하기 위해서는 sysmon.exe -c 명령어를 사용하면 현재 설정된 값을 확인할 수 있다.

4.3. Sysmon 설치 확인

Sysmon 설치를 확인하기 위해서는 세 가지 방법이 있다.

  • 레지스트리로 확인
  • 서비스로 확인
  • 이벤트 로그로 확인

1) 레지스트리로 확인

Sysmon을 설치하면 레지스트리 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services에 Sysmon과 SysmonDrv 키가 생성된다.

[그림 3] HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Sysmon64, SysmonDrv
[그림 3] HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Sysmon64, SysmonDrv

2) 서비스로 확인

Sysmon64 서비스가 등록되어 자동 실행된다.

[그림 4] Sysmon Service
[그림 4] Sysmon64 Service

3) 이벤트 로그로 확인

Sysmon 이벤트는 C:\Windows\System32\winevt\Logs\Microsoft-Windows-Sysmon%4Operational.evtx에 저장된다.

[그림 5] C:\Windows\System32\winevt\Logs\Microsoft-Windows-Sysmon%4Operational.evtx
[그림 5] C:\Windows\System32\winevt\Logs\Microsoft-Windows-Sysmon%4Operational.evtx

4.4. Sysmon 삭제

Sysmon은 아래 명령어로 서비스를 중지할 수 있다.

sysmon.exe -u

Sysmon을 완전히 삭제하기 위해서는 아래 파일들을 삭제한다.

  • Sysmon 구성 파일(sysmon.exe, Configure File)
  • ArchiveDirectory
  • Sysmon 이벤트 로그

5. 로그 크기 설정

Sysmon 설치 시 기본 로그 설정은 아래와 같다.

  • 로그 크기 : 64 MB
  • 로그 백업 : 덮어쓰기

Sysmon 설정에 따라 프로세스 생성과 네트워크 연결 로그가 다수 발생하기 때문에 Sysmon 기본 로그 크기인 64MB로는 2~3일 정도의 로그만 남게 된다.

침해사고 발생 시 공격자가 사전에 시스템에 침투하여 실행한 악성 행위를 추적하기 위해서는 적어도 1GB 이상으로 설정하는 것을 권고한다.

아래 명령을 통해 Sysmon Log의 Max Size를 1GB(1073741824 byte)로 변경한다.

wevtutil sl Microsoft-Windows-Sysmon/Operational /ms:1073741824

본 글에서는 Sysmon이 무엇이며 어떻게 설치할 수 있는지 알아봤다. 다음 글은 'Sysmon 활용 가이드: 이벤트 구성 항목'으로 Sysmon이 기록하는 이벤트들의 구성 항목을 알아본다.


Reference

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.