1. Sysmon
Sysmon은 MS사의 Sysinternals suite에 포함된 시스템 모니터링 툴이다. 설치를 하게되면 시스템에 상주하며 작업들을 모니터링하고 windows 이벤트로그에 기록을 저장하게 된다. 이 뿐 아니라 Linux에도 적용이 가능하다.
기본적인 로그 보다 상세하게 저장을 하기에 단말기에서 발생하는 로그들을 식별하기 용이하고 이를 통해 침해사고 조사분석을 실시하거나, SIEM에 연동해 위협헌팅을 실시하게 된다.
2. Sysmon Event ID
Sysmon에는 다양한 이벤트가 있다.
이 중에서도 모든 로그를 보기보다는 핵심 행위를 보기 좋은 이벤트를 중심으로 보는 것이 좋다.
Event ID | Event Name | Description |
1 | Process create | 새로 생성된 프로세스에 정보이며 커맨드라인 컨텍스트와 전체 해시값 등을 제공 |
2 | A process changed a file creation time | 프로세스에 의해 파일의 작성 시간이 수정 |
3 | Network connection | 시스템의 TCP 및 UDP 연결을 기록하며
출발지와 목적지의 Hostname, IP 주소 등을 제공 |
5 | Process terminated | 프로세스 종료 |
10 | Process Access | 다른 프로세스에 의해 프로세스가 실행 됐을 떄 생성 |
11 | FileCreate | 새로운 파일이 생성되거나 기존 파일이 덮어쓰기 |
12-14 | RegistryEvent | 레지스트리 생성, 삭제, 값 지정, 키나 값의 변경 |
22 | DNS Event (DNS query) | 성공 여부에 상관없이 DNS 쿼리가 발생 |
23 | FileDelete | 파일이 삭제됨 |
3. Sysmon 주요 필드
Splunk에 연동한 결과를 기반으로 설명한다.
Sysmon App for Splunk를 기반으로 CIM(필드명)을 구성했다.
주요 필드 | 설명 / 예시 |
host | 로그가 수집된 단말기명 설정이름
WS1-BG01 |
dest
(dvc) | 이벤트가 발생한 단말기명
ws1-bg01.www.abc.com |
event_id | 이벤트 ID
1 |
event_description | 이벤트 ID 설명
Process Create |
event_creation_time | 이벤트 생성 시간
2023-04-13 09:54:17.901 |
CurrentDirectory | 이벤트 발생 경로
C:\Windows\system32\ |
Description | 이벤트 내용 간략 설명
Windows Defender SmartScreen |
TargetFileName | 파일 생성, 파일 삭제, 파일 복사 등의 파일 작업이 발생하면,
해당 파일 작업 이벤트에는 대상이 된 파일의 경로 정보 기록
C:\Program Files\SplunkUniversalForwarder\bin\splunk-regmon.exe |
Image | 실행된 프로세스의 경로 포함 이름 (실행 파일 경로 포함 이름)
C:\Windows\System32\winlogon.exe |
ParentImage | 실행된 프로세스의 부모 프로세스의 경로 포함 이름
C:\Windows\System32\winlogon.exe |
IMPHASH | PE 파일의 IAT(Import Address Table)을 해싱하여 생성된 값
PE 파일이 사용하는 DLL 파일 및 함수에 대한 정보를 포함하고 있으며,
보안 업체 및 해킹 그룹 등에서 사용되는 악성코드를 식별하는 데 사용
F34D5F2D4577ED6D9CEEC516C1F5A744 |
SHA256 | 파일/프로세스의 SHA256 해시 값
5CDB3991B6DC7C895DD559F3E1FAD13AE4CE330D8D4239170EDC6D4D9C1B4ADA |
MD5 | 파일/프로세스의 MD5 해시 값
77F27615601C9DA51054F84FDBA84F0E |
file_name | PE 파일 리소스 섹션에 있는 “파일 이름” (공격자 조작 가능)
EXPLORER.EXE |
file_company | PE 파일의 리소스 섹션에 있는 "회사 이름” (공격자 조작 가능)
Splunk Inc. |
file_product | PE 파일의 리소스 섹션에 있는 "제품 이름” (공격자 조작 가능)
splunk Application |
file_version | PE 파일의 리소스 섹션에 있는 “버전 정보” (공격자 조작 가능)
1.1.1.0 |
original_file_name | 파일이 최초로 작성될 당시의 파일 이름 (공격자 조작 가능)
explorer.exe |
process_name | 실행된 프로세스의 이름 (실행 파일 이름)
winlogon.exe |
process_id | 프로세스 id (운영 체제에서 할당한 고유한 식별자 0-65535)
1234 |
process_guid
| 프로세스 guid (시스템에서 생성된 전역적으로 고유한 식별자)
{54377aa0-0944-6438-1910-000000001d00} |
process_path
| 프로세스 실행 경로
C:\Windows\System32\winlogon.exe |
process_commandline
(CommandLine) | 실행 명령어
"c:\windows\system32\windowspowershell\v1.0\powershell.exe" -c "echo \‘hello\’” |
process_parent_* | 해당 프로세스의 부모 프로세스 정보
process_parent_name
process_parent_id
process_parent_guid
process_parent_path
process_parent_commandline(ParentCommandLine) |
User | Host명을 포함한 사용자명
NT AUTHORITY\SYSTEM |
user | 사용자명
SYSTEM |
ParentUser | 부모 프로세스 사용자명
NT AUTHORITY\SYSTEM |
user_logon_id | 사용자 계정에 할당된 고유한 식별자 (재로그인해도 바뀌지 않는다)
0x3e7 (SYSTEM) |
user_logon_guid | 사용자가 로그인할 때마다 새로 생성되는 GUID 값
{85b2b5aa-da17-6437-e703-000000000000} |
•
file_* 은 리소스 섹션에 있는 정보를 기반으로 한다.
파일명을 정확히 식별하고 싶다면 Image 정보를 보는 것이 맞으므로 혼동하지 말자.
4. 사용 예시
Top Images
index=sysmon event_description="Process Create" | top Image
JavaScript
복사
Top Command Line
index=sysmon event_description="Process Create" | top CommandLine
JavaScript
복사
Top Files Created
index=sysmon event_description="File Created" | top TargetFilename
JavaScript
복사
Top File Creation Processes
index=sysmon event_description="File Created" | top Image
JavaScript
복사
Top Process Creators
index=sysmon event_description="Process Create" | top User
JavaScript
복사