A Practical guide for Linux Sysmon : Event and Utilization

1. 개요

이전 'A Practical guide for Linux Sysmon : Concept and install'에서 Linux Sysmon을 어떻게 설치할 수 있는지 알아봤다. 본 글에서는 Linux Sysmon이 기록하는 이벤트와 활용 방안에 대해 살펴본다.

Linux Sysmon은 프로세스 생성 이벤트를 포함해 총 9개 이벤트로 구성되어 있으며, 이를 통해 시스템 내에서 발생하는 다양한 활동을 모니터링할 수 있다. 각 이벤트는 시스템 변경 사항이나 의심스러운 활동을 탐지해 보안 위협을 분석하는 데 중요한 정보를 제공한다.

그러나, Linux Sysmon을 기본 설정으로 설치할 경우, 일부 중요한 이벤트가 기록되지 않을 수 있다. 반대로 모든 이벤트를 활성화할 경우, 너무 많은 이벤트가 기록되어 정작 중요한 이벤트를 놓치거나 분석에 어려움이 생길 수 있다. 따라서, 시스템의 용도와 보안 목표에 맞춰 Sysmon Configure File을 작성하는 것이 중요하다.


2. Linux Sysmon 이벤트

Linux Sysmon은 Windows Sysmon과 Configuration Schema를 공유하기 때문에 Sysmon 이벤트와 구성 항목이 같다. 하지만, 실제 Linux Sysmon에서는 Windows Sysmon에서 지원하는 29개 이벤트 중 9개 이벤트만 지원하고 있다.

이벤트 ID 이벤트 명 기본 활성화 여부
1 Process Create 활성화
3 Network connection detected 비활성화
4 Sysmon service state changed 활성화
5 Process terminated 활성화
9 RawAccessRead detected 비활성화
11 File created 비활성화
16 Sysmon config state changed 활성화
23 File Delete 비활성화
255 Error report 활성화

각 이벤트의 구성 항목에 대한 설명은 아래 글에서 확인할 수 있다.

A Practical guide for Sysmon : Event items
1. 개요 이전 ‘Sysmon 활용 가이드: 개념 및 설치 방법’에서 Sysmon이 무엇이며 어떻게 설치할 수 있는지 알아봤다. 본 글에서는 Sysmon이 기록하는 이벤트의 구성 항목을 살펴본다. Sysmon은 프로세스 생성을 포함해 총 29개의 이벤트로 구성되어 있으며, 목적에 맞게 이벤트를 활용하면 엔드포인트 보안을 보다 효과적으로 강화할 수 있다. Windows Vista 이상에서는 이벤트가 Microsoft-Windows-Sysmon%

Event ID 1. Process Create

Process Create 이벤트는 새로 생성된 프로세스에 대한 정보를 제공한다. 해당 이벤트는 프로세스가 어떤 인자 값과 부모 프로세스에 의해 생성됐는지 파악할 수 있어, 악성 프로세스를 탐지하는 데 활용할 수 있다. 특히, 웹 서버 프로세스(Apache, Nginx 등)와 계정에서 셸 프로세스(bash, sh 등)가 실행된 경우, 웹셸(WebShell)을 통한 원격 명령 실행 공격일 수 있기 때문에 시스템 용도에 따라 탐지 규칙을 설정해야 한다.

[그림 1] Process Create 이벤트 예시

Event ID 3. Network connection detected

Network connection detected 이벤트는 시스템의 TCP/UDP 연결을 기록한다. 해당 이벤트는 프로세스가 네트워크 통신한 이력을 파악할 수 있어, 백도어와 내부 이동 프로세스를 탐지하는 데 활용할 수 있다. 특히, 악성 C2 서버 IP 대역이나 내부 서버로 접근할 때 사용되는 프로토콜을 탐지할 수 있도록 규칙을 설정해야 한다.

[그림 2] Network connection detected 이벤트 예시

Event ID 4. Sysmon service state changed

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

[그림 3] Sysmon service state changed 이벤트 예시

Event ID 5. Process terminated

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

[그림 4] Process terminated 이벤트 예시

Event ID 9. RawAccessRead detected

RawAccessRead detected 이벤트는 프로세스가 드라이브에서 읽기 작업을 수행하는 경우 기록된다. 해당 이벤트는 데이터베이스 서버나 파일 서버에서 정상적인 애플리케이션 외의 프로세스가 드라이브에 직접 접근하는 데이터 탈취 행위를 탐지할 수 있다.

[그림 5] RawAccessRead detected 이벤트 예시

Event ID 11. File created

File created 이벤트는 프로세스가 파일을 생성하거나 덮어쓸 때 기록된다. 해당 이벤트는 프로세스가 어떤 파일을 생성했는지 파악할 수 있어, 악성 프로세스가 추가로 생성하는 파일을 탐지하는 데 활용할 수 있다. 특히, 명령어를 통해 외부에서 파일을 다운로드 받는 행위나, 웹 디렉터리에 실행 파일, 스크립트 파일이 생성되는 것을 탐지할 수 있도록 규칙을 설정해야 한다.

[그림 6] File created 이벤트 예시

Event ID 16. Sysmon config state changed

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

[그림 7] Sysmon config state changed 이벤트 예시

Event ID 23. File Delete

File Delete 이벤트는 시스템에서 파일이 삭제됐을 때 기록된다. 해당 이벤트는 프로세스가 어떤 파일을 삭제했는지 파악할 수 있어, 악성 프로세스가 시스템 내 중요한 파일이나 로그 파일을 삭제하는 것을 탐지할 수 있다. Windows Sysmon과 다르게 ArchiveDirectory를 지원하지 않아, 삭제된 파일을 복구하지 못한다.

[그림 8] File Delete 이벤트 예시

Event ID 255. Error report

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


3. Configure File 적용

Linux Sysmon의 Configure File 구성 방법은 Windows와 동일하지만, 지원하는 설정과 이벤트가 한정되어 있다. 또한, 이벤트로 탐지해야 하는 대상(프로세스, 실행 경로 등)이 달라 별도의 Linux Sysmon용 Configure File을 구성해 적용하는 것을 권장한다.

Configure File 구성 방법에 대한 설명은 아래 글에서 확인할 수 있다.

A Practical guide for Sysmon : Configure file fields and writing
1. 개요 이전 ‘Sysmon 활용 가이드: 이벤트 구성 항목’에서 Sysmon이 기록하는 이벤트의 구성 항목을 알아봤다. 본 글에서는 Sysmon Configure File의 구성과 작성 방법을 살펴본다. Sysmon을 기본 설정으로 설치하게 되면 기록하지 않는 이벤트가 존재하고, 설정을 모두 활성화하면 매우 많은 이벤트가 기록되어 정작 필요한 이벤트를 놓칠 수 있다. 따라서 시스템 용도에 따라

Configure File은 -i 또는 -c 옵션 뒤에 지정해 적용할 수 있다.

sudo sysmon -c BIT-sysmon-config-Linux_v1.0.xml
[그림 9] Sysmon Configure File 적용 명령어

현재 적용되어 있는 Configure File의 내용을 확인하기 위해서는 아래 명령어를 통해 확인할 수 있다.

sudo sysmon -c
[그림 10] Sysmon Configure File 적용 내용 확인 명령어

이외에도 적용한 Configure File의 내용이 복사된 구성 파일을 통해 확인할 수 있다.

sudo cat /opt/sysmon/config.xml
[그림 11] 현재 적용되어 있는 Configure File 복사본(/opt/sysmon/config.xml)

4. 이벤트 로그 확인 및 설정

4.1. Linux Sysmon 이벤트 로그 확인

Linux Sysmon 이벤트 로그는 /var/log/messages 또는 /var/log/syslog에 같이 저장된다. 하지만, 이벤트 로그가 한 라인으로 저장되기 때문에 가독성이 좋지 않다.

[그림 12] /var/log/messages에 저장되어 있는 Linux Sysmon 이벤트 로그 예시

따라서, Sysmon은 저장된 이벤트 로그를 가독성 있게 출력해주는 Log Viewer(sysmonLogView)를 제공하고 있다.

sudo cat /var/log/messages | /opt/sysmon/sysmonLogView
[그림 13] sysmonLogView를 통한 Linux Sysmon 이벤트 로그 출력 예시

4.2. Linux Sysmon 이벤트 로그 설정

기본 설정 시 Linux Sysmon 이벤트 로그가 시스템 로그 파일에 함께 저장되기 때문에 시스템 로그, 애플리케이션 로그 등과 구분되지 않아 분석이 어려워질 수 있다. 또한, Sysmon 이벤트 로그를 SIEM(Security Information & Event Management) 시스템과 같은 중앙 집중식 로그 관리 시스템으로 전달할 때 별도의 파일을 사용하는 것이 효율적이다.

아래 설정을 통해 별도의 로그 파일로 Linux Sysmon 이벤트 로그가 저장되도록 설정할 수 있다.

vi /etc/rsyslog.d/30-sysmon.conf
---
if $programname == 'sysmon' then /var/log/sysmon.log
& stop
---
sudo systemctl restart rsyslog

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.