End Point 로그분석

1=1·2024년 1월 12일
0

SK shieldus 16

목록 보기
9/10

EndPoint 로그

  • endpoint에서 발생하는 이벤트를 보여줌 ( endpoint client 정보와 사용자 )

  • endpoint 로그 관리의 어려움

    • 엔드포인트 수량이 많아서 대용량 로그 생성
    • pc 호스트별, 사용별 로그 수집 후 분류

Sysmon

  • microsoft 의 sysinternal suite에 포함된 시스템 모니터링 툴
  • 프로세스 생성, 네트워크 연결, 파일 생성 시간 변경 등의 정보를 추출한 후 윈도우 이벤트 저장소에 저장

sysmon 기능

  • 실행 프로세스와 부모 프로세스의 전체 명령줄을 로그로 저장
  • 여러 종류의 해시 값을 동시에 기록
  • 네트워크 연결에서 ip 주소, 포트 번호, 호스트명, 포트명 등 기록

sysmon 생성 이벤트 목록

1) Process creation
- 새로운 프로세스가 만들어지면 생성 되는 로그
- 프로세스가 실행됐을 때 사용된 명령어의 전체줄을 이벤트로 기록

  • 프로그램 vs 프로세스
    프로그램 : 하드디스크에 저장되어 있다 (정적)
    프로세스 : 프로그램 + CPU + RAM => 실행중인 프로그램

2) A process changed a file creation time
- 프로세스가 파일 생성 시간을 수정 시 기록
- 공격자가 백도어 파일을 설치 하면서 운영 체제 파일을 위장한 것 탐지 가능

3) Network Connection
- 호스트에서 TCP/UDP 연결 기록을 이벤트로 생성
- 어느 프로세스가 네트워크 접속을 시도했는지 파악할 수 있으며 호스트명, IP 주소, 포트번호 등 정보 제공

4) Process terminated
- 프로세스가 종료되면 이벤트를 생성

PC 이상 분석

1) 비정상 폴더 (ex. recycle)에서 exe 파일 실행

  • 일반적으로 공격에 사용되는 악성코드는 단독 실행 파일로 동작
    ( 시스템 폴더에 설치되지 않음 )
  • index=sysmon sourcetype="WinEventlog: Microsoft-Windows-Sysmon/Operational" EventCode=1

➡️ 프로세스 실행이 된 파일들의 로그검색
✔️ EventCode=1 : 프로세스 생성을 의미 (exe 파일이 정상적으로 실행 되었음을 의미)


  • (CurrentDirectory!="Program Files" AND CurrentDirectory!="system32")
    (Image!="system32" AND Image!="Program Files" AND Image!="SysWOW64*")

➡️ programfile, system32인 디렉토리 명에 있는 로그들은 검색 대상에서 제외 ( 정상 범위이기 때문 )
✔️ CurrentDirecory : 실행 파일이 들어 있는 디렉토리, Imagefiled : 폴더와 실행파일 명 저장


  • [ search index=sysmon sourcetype="WinEventLog:Microsoft-Windows-Sysmon/Operational"
    EventCode=1
    | rare CurrentDirectory limit=10 showperc=f showcount=f ]

✔️
• search : 하위 검색을 나타냄, 2차 검색으로 들어감 (하위검색을 사용하는 이유? 검색범위줄이기)
• 시스템 폴더 외에서 실행되고 있는 파일들을 검색
• 악성코드는 소수만이 감염되므로 rare를 이용 (rare 빈도가 낮은 것들을 최상위에 배치(top반대))
• showperc(점유율)과 showcount(점유개수)는 보지 않음(false)


  • 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

실행 결과


2) 파일 실행 후 원본 파일 삭제

  • 하드 디스크에 저장된 악성코드(프로그램 상태)는 프로세스 상태가 되어야 PC들을 감염시킬 수 있음
  • 악성코드 파일 실행 후 원본 파일을 디스크에서 삭제해서 분석을 회피하기도 함 ( 정상행위 x )
    - 프로그램 loading: 하드디스크에 저장되어 있는 파일이 ram으로 이동하는 작업


  • index=sysmon sourcetype="WinEventLog:Microsoft-Windows-Sysmon/Operational"
    EventCode=1 ParentImage="c:\windows\explorer.exe"

➡️ 하드디스크에서 실행된 파일 중 win 탐색기를 통해 파일이 실행된 로그 출력


  • [ search index=sysmon sourcetype="WinEventLog:Microsoft-Windows-Sysmon/Operational"
    | where NOT isnull(Image) AND NOT isnull(ParentImage) | search CommandLine=" del "

➡️
| search CommandLine="* del *" : 명령줄(CommandLine)에 "del"이라는 문자열을 포함하는 이벤트를 검색
rename ParentImage AS Image : 원래 파일 이름 그대로 출력

  • Image : 실행 파일 경로

✔️ Source program (악성코드)는 실행 중에 자신을 삭제하는 것이 아니라 다른 프로그램을 모두 실행 시킨후 , 다른 프로그램을 호출해서 원본 파일을 삭제한다 또한 악성코드는 cmd.exe를 호출해서 지우는 방식을 많이 볼 수 있다


실행결과


3) 실행 후 네트워크 접속 다수 발생

  • 다른 과다 접속들을 유발하는 트래픽 프로그램 검색

    index=sysmon sourcetype="WinEventLog:Microsoft-Windows-Sysmon/Operational"
    EventCode=1 (Image!="C:\windows" AND Image!="Program Files*")

"C:\\windows*" : 해당 프로세스 위치에서 실행된 것(정상) 로그 제외


  • 실행 경로가 아닌 곳에서 실행되는 프로세스들을 검색

    [ search index=sysmon sourcetype="WinEventLog:Microsoft-Windows-Sysmon/Operational“
    EventCode=3 (DestinationIp!="10.0.0.0/8" AND DestinationIp!="172.16.0.0/12" AND
    DestinationIp!="192.168.0.0/16")

EventCode=3 : 네트워크 접속 경로 중에서
DestinationIp! : 목적지가 해당 IP면 제외 ( 사내망은 사설 IP 사용 -> 목적지가 공인 IP인 로그들만 검색 )


  • EventCode=3에서 (네트워크 정보를 가진로그) 인터넷 접속만을 대상으로 검색한다면
    목적지 주소가 사설주소가 아닌 결과만 검색

    | stats count(DestinationIp) AS total_count dc(DestinationIp) AS uniq_count by Image


  • total_count 50건, uniq_count가 20건 이상 이러한 똑같은 트래픽을 다수 보냄 ( 악성코드 의심 ) -DDos 공격

    stats count(DestinationIp) AS total_count dc(DestinationIp) AS uniq_count by Image
    | where total_count > 50 OR uniq_count > 20
    | table Image]


실행결과


4) 네트워크 shell 실행

net.exe

  • 현재 실행 중인 컴퓨터의 네트워크 구성을 표시하거나 수정할 수 있는 명령줄 스크립팅 유틸리티
  • 관리자는 netsh을 이용하여 자동 스크립트를 구성하고 배포

  • "sysmon" 인덱스에서 "WinEventLog:Microsoft-Windows-Sysmon/Operational" 소스 유형의 데이터를 검색하고, 이벤트 코드가 1이며 "Image" 필드가 "netsh.exe"로 끝나는 이벤트를 선택합니다. 또한 "ParentImage" 필드가 널(null)이 아닌 경우에 해당하는 이벤트를 테이블로 출력

    index=sysmon sourcetype="WinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode=1
    | where match(Image, "netsh.exe$")
    | where NOT isnull(ParentImage)
    | table ParentImage, Image, COmmandLine

실행결과

0개의 댓글