Sysmon이란? 윈도우 OS에 설치되는 시스템 모니터링 툴
해당 실습의 목적은 PC이상 징후를 분석하기 위해 1대의 PC에서 Splunk, sysmon 활성화 및 로그를 추가한다.
sysmon 활성화
윈도우 PC - 이벤트 처리기에서 sysmon 동작 확인
Sysmon 이벤트 ID 5 : 프로세스 종료 시, 이벤트 생성
Splunk 서버에서 Sysmon 로그 전송
app 추가
아래 내용을 추가 후 indexes.conf 파일을 저장한다.
서버 재기동
서버 재기동 후 인덱스 Sysmon 확인
일반적으로 윈도우 실행파일의 위치는 아래와 같다.
- C:\Program Files, C:\Program Files(x86), C:\Windows, C:\Window\system32
그러나 일반적으로 공격에 사용되는 악성코드는 단독 실행 파일로 동작해 시스템 폴더에 설치되지 않는다. 즉, 프로그램 실행 경로를 판단하면 이상징후를 판별 가능하다.
인터넷에서 다운로드한 악성코드는 처음부터 시스템 폴더에 복사되지 않는다. 따라서 최초 실행 폴더 기반 탐지 방법을 사용한다.
악성코드가 다운로드 후 실행되었다면, 프로세스가 생성되므로 Sysmon EventCode 1에서 해당 이벤트를 찾을 수 있다.
참고: 백도어 프로그램은 윈도우 정상 파일의 대체로 C:\Windows\System32에 설치되기도 함
splunk 검색 명령어
index=sysmon sourcetype="WinEventLog:Microsoft-Windows-Sysmon/Operational”
EventCode=1
EventCode =1은 프로세스 생성을 의미하고, exe 파일이 정상적으로 실행 되었음을 의미한다.
아래 사진은 실행 파일이 정상적인 경로에서 실행되었음을 Image 필드로 확인 가능하다.
그러나, 아래 검색 명령어를 사용한 결과에서는, 휴지통에서 파일을 실행했음을 확인 가능하다.
index=sysmon sourcetype="WinEventLog:Microsoft-Windows-Sysmon/Operational"
EventCode=1
(CurrentDirectory!="*Program Files*" AND CurrentDirectory!="*system32*")
(Image!="system32*" AND Image!="*Program Files*" AND Image!="*SysWOW64*")
[ search index=sysmon sourcetype="WinEventLog:Microsoft-Windows-Sysmon/Operational"
EventCode=1 | rare CurrentDirectory limit=10 showperc=f showcount=f]
| table Image
하드 디스크의 악성 코드는 프로세스 상태가 되어야 PC 감염이 가능하다. 악성코드 파일이 실행 후 디스크에서 악성코드를 삭제해 분석을 회피한다. 따라서 프로그램을 실행 후 원본 파일을 디스크에서 삭제하는 행위는 정상행위가 아니다.
splunk 검색 명령어
index=sysmon sourcetype="WinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode=1
ParentImage="c:\\windows\\explorer.exe"
[ search index=sysmon sourcetype="WinEventLog:Microsoft-Windows-Sysmon/Operational"
| where NOT isnull(Image) AND NOT isnull(ParentImage)
| search CommandLine="* del *"
| table ParentImage
| rename ParentImage AS Image ]
| table Image
악성코드는 다른 프로그램을 모두 실행 후 원본 파일(악성코드)를 삭제한다. 악성코드는 cmd.exe를 호출해 지우는 방식을 자주 사용한다.
과도한 접속을 유발하는 트래픽 프로그램이 존재하고, 이 프로그램이 실행되었다고 가정한다.
악성코드는 일반적인 실행 경로가 아닌 곳에서 실행될 것이다. 이 로그 중, 네트워크 정보를 가진 로그(EventCode=3)와 인터넷 접속 대상 중
폴더와 실행파일명이 저장된 Image가 20보다 크고, 중복을 제거한 목적지 IP의 개수가 50개 보다 큰 Image 목록을 보여준다.
• Image : 실행 파일 경로
splunk 검색 명령어
index=sysmon sourcetype="WinEventLog:Microsoft-Windows-Sysmon/Operational"
EventCode=1
(Image!="C:\\windows*" AND Image!="*Program Files*")
[ search index=sysmon sourcetype="WinEventLog:Microsoft-WindowsSysmon/Operational" EventCode=3
(DestinationIp!="10.0.0.0/8" AND DestinationIp!="172.16.0.0/12" AND
DestinationIp!="192.168.0.0/16")
| stats count(DestinationIp) AS total_count dc(DestinationIp) AS uniq_count by Image
| where total_count > 50 OR uniq_count > 20
| table Image]
|table Image
netsh.exe이란? 현재 실행 중 컴퓨터 네트워크 구성 표시 또는 수정할 수 있는 명령줄 스크립팅 유틸리티 이다. 관리자는 netsh를 이용해 자동 스크립트를 구성 및 배포한다.
splunk 검색 명령어
index=sysmon sourcetype="WinEventLog:Microsoft-Windows-Sysmon/Operational"
EventCode=1
| where match(Image, "netsh.exe$")
| where NOT isnull(ParentImage)
| table ParentImage, Image, CommandLine
Image가 netsh.exe 와 일치하고, ParentImage가 존재하는 로그 검색한다. 아래 명령어 결과로써, csrss.exe 가 CommandLine에서 실행되었음을 확인 가능하다, 이는 네트워크 쉘이 실행 되었음을 알 수 있다.