SK shieldus Rookies 16기 (클라우드기반 시스템 운영/구축 실무 #08)

만두다섯개·2024년 1월 12일
0

SK 루키즈 16기

목록 보기
47/52

주요 정보

  • 교육 과정명 : 클라우드기반 스마트융합보안 과정 16기
  • 교육 회차 정보 : '23. 11. 12. 애플리케이션 보안 #08

학습 요약

  • Sysmon 로그 분석을 통한 PC 이상 징후 분석

Sysmon이란? 윈도우 OS에 설치되는 시스템 모니터링 툴

실습 내용

  1. Sysmon 활성화 및 로그 추가
  2. PC 이상 징후 분석

해당 실습의 목적은 PC이상 징후를 분석하기 위해 1대의 PC에서 Splunk, sysmon 활성화 및 로그를 추가한다.

1. Sysmon 활성화 및 로그 추가

  1. sysmon 활성화

    윈도우 PC - 이벤트 처리기에서 sysmon 동작 확인

    Sysmon 이벤트 ID 5 : 프로세스 종료 시, 이벤트 생성

  2. Splunk 서버에서 Sysmon 로그 전송

  3. app 추가
    아래 내용을 추가 후 indexes.conf 파일을 저장한다.

  4. 서버 재기동

  5. 서버 재기동 후 인덱스 Sysmon 확인

2. PC 이상 징후 분석

  1. 비정상 폴더에서 exe 파일 실행
  2. 파일 실행 후 원본 파일 삭제
  3. 실행 후 네트워크 접속 다수 발생
  4. 네트워크 Shell 실행

비정상 폴더에서 실행파일 실행

일반적으로 윈도우 실행파일의 위치는 아래와 같다.

  • 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에서 실행되었음을 확인 가능하다, 이는 네트워크 쉘이 실행 되었음을 알 수 있다.

profile
磨斧爲針

0개의 댓글