Monster Agent: Collects Events for Threat Hunters
2017, Dec 17  
김태홍

Introduction

Monster agentMonster Threat Hunting Cloud 의 이벤트 수집을 담당하는 구성요소로 Threat hunting 에 최적화된 각종 시스템 이벤트(예. 프로세스, 네트워크, 시스템 정보 등)를 능동적으로 수집합니다. Monster agentMonster Threat Hunting Cloud 뿐만 아니라 syslog, kafka 등의 프로토콜을 통해 이미 사용중인 분석 시스템과 쉽게 연동 할 수 있습니다. 수집된 이벤트는 시스템에 유입된 악성코드 행위 추적, 비 정상적인 네트워크 활동 탐지 등 다양한 분야에 활용 할 수 있습니다.


Features

  • 능동적인 이벤트 수집

    Monster agent 는 Threat Hunting에 필요한 이벤트(예. 프로세스, 네트워크, 파일, 레지스트리 이벤트 등)를 수집하는데 최적화 되어있습니다. 기본적으로 내부 이벤트 수집 정책에 따라서 이벤트를 선별 수집하며, 외부 설정 파일을 통해 지정된 조건에 부합하는 이벤트를 수집 할 수도 있습니다.

  • 실시간 데이터 수집

    Threat hunting 에 필요한 시스템 이벤트를 실시간으로 수집하고, Monster cloud 또는 연동가능한 이벤트 수집 시스템에 전송합니다.

  • Event Blocks

    시스템에서 발생하는 방대한 양의 파일, 레지스트리, 네트워크 I/O 같은 이벤트를 실시간으로 추적하고, 필요한 정보들을 축약시켜 Event Block이라는 가상의 단위로 처리합니다.

    생성된 각각의 Event Block은 설정에 따라 TSV 포맷의 파일로 저장되거나 외부 시스템으로 전송됩니다. Event block은 발생한 행위들에 대한 요약 정보와 상세 정보로 구성되어 있습니다. Event block은 고유한 키값을 가지고 있으며 수집된 이벤트들을 분석할 때 Event block 키를 사용하여 프로세스에서 발생한 행위를 쉽게 추적할 수 있습니다.

  • 시스템 연동

    기존 분석 시스템과 쉽게 연동하기 위해 syslog, kafka 등 프로토콜을 통해 수집된 이벤트들을 전송할 수 있습니다. 연동 가능한 시스템의 예는 다음과 같습니다.

    • ELK(Elasticsearch, Logstash, Kibana) 스택
    • 하둡 에코시스템(Hadoop EcoSystem)
    • RDB(MySQL, MariaDB)
    • Graph Database
    • Casandra DB

Event Examples

TSV


Events

Monster Collector에 의해 수집 되는 이벤트는 다음과 같습니다.

  • Event ID 1500: Process Create

    프로세스의 생성 이벤트가 발생했을 때 프로세스 정보(생성시간, 프로세스 ID, 프로세스 부모 ID, 서명 정보 등)를 전송합니다. 전송된 데이터 중 command line, Current Directory, User, Groups를 통해 프로세스 실행의 모든 흐름을 파악할 수 있습니다.

  • Event ID 1501: Process Exit

    종료 이벤트가 발생 했을 때 프로세스 정보(프로세스 시작, 종료시간 PID)를 전송합니다.

  • Event ID 1502: Image Load

    프로세스에서 모듈이 로드될 때 이벤트를 수집 합니다. 이미지 로드 이벤트는 로드 되는 모듈의 상세 정보(해시, 서명정보, 모듈명 등)를 수집합니다.

  • Event ID 1503: Image Unload

    프로세스에 로드된 모듈이 언로드될 때 이벤트를 전송합니다.

  • Event ID 2500: File Event Block

    파일 이벤트(쓰기, 생성, 경로 변경) 시작부터 종료까지의 통계 정보입니다. 파일의 쓰기 IO에 대한 정보 및 파일의 이름을 수집합니다. 파일 이벤트 시작 전과 시작 후의 파일명이 달라진 경우 변경 후의 이름을 수집하며 파일 이벤트가 끝난 후 해당 파일이 삭제 여부에 관한 정보도 수집합니다.

  • Event ID 2012: File Create

    파일 생성 이벤트가 발생했을 때 타겟 파일의 정보(파일명, 파일 크기, 파일 생성 시간, 파일 수정 시간, 파일 속성, 버전 등)를 수집합니다. 파일 열기 이벤트는 CreateOptions, CreateDisposition를 사용하여 파일 이벤트에 대한 상세 정보를 확인할 수 있습니다.

  • Event ID 2014: File Close

    파일 이벤트가 종료 될 때 이벤트를 수집하며 타겟 파일 정보의 상세정보는 파일 핸들 생성 이벤트 일 때 전송을 했기 때문에 FileCose 이벤트 일 때는 수집 하지 않습니다.

  • Event ID 2027: File Rename Path

    파일 경로명 변경 이벤트가 발생 했을 때 이벤트를 수집합니다.

  • Event ID 2030: File Create New File

    새로운 파일 생성 이벤트가 발생 했을 때 이벤트를 수집합니다. CreateNewFile 이벤트의 플래그 값이 외부 장치에서 쓰기인 경우 PNP 장치로 파일을 복사하여 내부 자료 유출 탐지에 활용 할 수 있습니다.

  • Event ID 3500: Netowork Connect

    내부 시스템에서 외부와 연결을 시작할 때 이벤트를 수집합니다. 네트워크 연결에 관한 상세정보를 수집합니다.

  • Event ID 3501: Netowork Accept

    Network Connect는 내부 시스템에서 외부 시스템과의 통신에 관한 이벤트를 수집한 경우입니다. Accept 이벤트는 외부 시스템에서 내부 시스템으로 연결 요청이 수락된 이후의 이벤트를 수집합니다.

  • Event ID 4500: Registry Block

    레지스트리 이벤트(레지스트리 키 생성/삭제, 레지스트리 값 쓰기/삭제)시작부터 종료까지의 통계 정보 입니다. 레지스트리 이벤트가 총 이벤트 수, 레지스트리의 전체 경로를 전송합니다.

  • Event ID 4001: Registry Create Key

    레지스트리 서브키를 생성 할 때 이벤트를 수집합니다. 레지스트리 키값 생성, 삭제 이벤트를 활용하여 악성코드, 공격도구에 의해 특정 레지스트리 키값의 변화를 모니터링하는데 유용합니다.

  • Event ID 4002: Registry Open Key

    레지스트리 키값을 읽을 때 이벤트를 수집합니다.

  • Event ID 4003: Registry Delete

    레지스트리 키값을 삭제할 때 이벤트를 수집합니다.

  • Event ID 4005: Registry Set Value Key

    레지스트리 값을 수정할 때 이벤트를 수집하며, 이전 값을 바꾸는 경우 이전 레지스트리 값의 타입과 값을 함께 수집 합니다.

  • Event ID 4006: Registry Delete Value Key

    레지스트리 값을 삭제할 때 이벤트를 수집합니다.

  • Event ID 4013: Registry Close Key

    레지스트리 이벤트가 종료 될 때 이벤트를 수집합니다.

  • Event ID 6500: PNP Device Inject/Eject

    PNP 장치 연결 또는 해제 할 때 이벤트를 수집합니다.

  • Event ID 7500: Raw Access Read

    프로세스가 디스크에서 직접 파일 읽기 작업을 수행 할 때 이벤트를 수집합니다. 악성 프로그램이 MBR, VBR를 영역을 삭제하거나 레지스트리 SAM 파일을 획득 후 로컬 계정 탈취와 같은 공격 행위를 탐지 하는데 유용합니다.

  • Event ID 8500: Host Info BLock

    몬스터 에이전트 최초 실행시 시스템 정보(IP주소, MAC 주소, 컴퓨터명, 시스템 내의 계정 정보, 설치 프로그램)을 수집합니다. 몬스터 에이전트가 다시 시작을 할 때 시스템 정보에 변화가 있는 경우 업데이트된 정보를 수집합니다.

  • Event ID 9001: Process Access

    프로세스가 다른 프로세스의 주소 공간을 읽고 쓰는 작업을 수행할 때 이벤트를 수집합니다. Pass-the-Hash 공격에 사용할 계정의 토큰을 훔치기 위해 Lsass.exe 와 같은 프로세의 메모리 내용을 읽는 공격 도구를 탐지 할 수 있습니다.

  • Event ID 9002: Process Handle Duplicate

    프로세스가 다른 프로세스의 핸들을 제3의 프로세스에서 사용 하기 위해 복제 할 때 이벤트를 수집합니다.


Configuration Entries

Monster agent 의 행위를 제어하기 위해서 json 포맷의 configuration 을 사용합니다. 여기서 설명하지 않는 설정값들은 Monster agent 내부적으로 사용되는 값들이므로 가급적 수정하지 않는 것이 좋습니다.

  • export 설정

    외부 시스템과의 연동에 필요한 설정입니다. 설정은 enabled 값을 1 로 변경하여 수집된 이벤트를 전송(kafka, syslog)하거나 로컬(tsv)에 저장할 수 있습니다.

      {
      ...
      "export": {
          "tsv": {
           "enabled": 1
          },
    
          "kafka": {
              "enabled": 0,
              "servers": "localhost",
              "topic": "monster",
              "acks": "0",
              "codec": "lz4",
              "partition": -1,
              "retries": 3,
              "max_msg_queue": 1000000
          },
    
          "syslog": {
              "enabled": 0,
              "server": "localhost",
              "port": 514
          }
      }
      }
    
  • Monster Event Filtering Entries

    몬스터 에이전트는 프로세스 생성 후 발생하는 모든 행위를 추적하여 수집합니다. 수집된 이벤트들은 블럭 단위로 구성하여 TSV 파일에 저장하거나 외부 시스템으로 전송합니다. trace_policy 을 사용하여 프로세스의 이벤트를 필터링하여 수집할 수 있습니다. 수집 되는 이벤트 필터들은 아래와 같은 포맷을 가지고 있으며 프로세스명, 파일 경로, 파일 확장자, 레지스트리 경로, 네트워크 목적지 IP, PORT를 include 하거나 exclude 할 수 있습니다.

      {
      ...
      "trace_policy": {
          "process_image_name": {
              "include": [],
              "exclude": [
                  "procexp64.exe",
                  "taskmgr.exe",
                  "dbgview.exe"
              ]
          },
    
          "file_path": {
              "include": [],
              "exclude": []
          },
    
          "file_ext": {
              "include": [],
              "exclude": []
          },
    
          "registry_key": {
              "include": [],
              "exclude": []
          },
    
          "net_target_ip": {
              "include": [],
              "exclude": []
          },
    
          "net_target_port": {
              "include": [],
              "exclude": []
          }
      }
      ...
      }
    

Conclusion

Monster agentMonster Threat Hunting Cloud 의 주요 구성요소로서 시스템의 위협탐지에 필요한 이벤트를 실시간으로 수집합니다. Monster agent 독립적으로도 사용 가능하며 수집한 이벤트는 다른 분석 시스템과 쉽게 연동 할 수 있고, 수집된 이벤트들을 통해

  • 악성코드 혹은 공격도구의 상세 행위를 파악 및 위협정보 생성
  • 감염된 호스트 시스템의 유입, 실행, 전파와 같은 공격의 모든 흐름 추적
  • 호스트에서 발생한 네트워크 트래픽을 분석하여 비정상적인 트래픽을 탐지

등에 쉽게 활용할 수 있습니다.