본 글에서는 국/내외에서 사이버 보안 위협 대응에 사용하고 있는 위협 인텔리전스 플랫폼 (Threat Intelligence Platform, TIP)과 서비스를 소개하고자 합니다. 위협 인텔리전스 플랫폼과 서비스 구축은 사이버 위협 대응에서는 필수이며, 위협 정보 공유를 통해 사이버 보안 사고를 신속하게 대응하기 위함입니다. 위협 인텔리전스 플랫폼으로 가장 많이 활용되고 있는 CIRCL의 MISP, Alien Vault의 OTX, 그리고 국내 KISA에서 운영하고 있는 C-TAS를 통해 위협 정보를 어떻게 공유하는지 알아보고, 적극 활용해보길 바랍니다.
Threat Intelligence Platform (TIP)
위협 인텔리전스 플랫폼(Threat Intelligence Platform, TIP)은 대체로 아래 그림과 같은 구조로 설계 및 구현 되고 다음과 같은 주요 핵심 기능이 필요합니다.
- 여러 인텔리전스들의 통합
- 데이터의 생성, 정규화, 위험 점수 표시
- 기존 보안 시스템과의 통합
- Threat Intelligence 의 분석 및 공유
그림 출처: https://www.anomali.com/resources/what-is-a-tip
위협 인텔리전스 플랫폼을 이해하기 전에, 인텔리전스 정보를 공유하는 데 기반이 되는 TAXII
와 STIX
를 간단하게 알아보겠습니다.
STIX에 대한 자세한 내용은 STIX 2.0을 참고 합니다.
TAXII, STIX 기본 이해
미국 국토안보부(DHS)는 사이버 위협에 대응하기 위한 표준화된 체계를 만들기 위해 마이터(MITRE)를 통해 2013년 4월에 사이버 위협 정보 전송 규격인 택시(TAXII)를 발표 했으며, 같은 해 10월에 사이버 위협 표현 규격인 스틱스(STIX)를 발표하면서 인텔리전스 공유 체계의 기반을 마련했습니다.
TAXII (Trusted Automated Exchange of Indicator Information)
- 택시는 위협 정보를 교환 할 때 각 업체와 파트너사에 도움을 주기 위해 설계 한 것입니다.
- 3가지 공유 모델이 있음: hub and spoke, source/subscriber, peer-to-peer
- HTTP(S) 기반 XML 메시지 통신
- 택시 서버: TAXII server 1.0 를 “Yeti(insecure version of Django. 더이상 지원안함)”라고 하며, 파이썬으로 택시 2.0 서버를 간단하게 구현한 것이 메달리온. 오아시스에서 만든 오픈소스이며 Flask로 구현됩니다.
- 택시 클라이언트: 파이썬 라이브러리 “libtaxii” 이용
- TAXII 상세설명
STIX (Structured Threat Information Expression)
- 사이버 위협 정보를 표현하기 위한 표준화된 커뮤니케이션 언어
- TAXII와 유사하지만 프로그램이나 도구가 아닌, 이를 지원해주는 컴포넌트
- 현재 표준 버전은 2.0 Committee Specification (19 July 2017)
- 최신 수정 버전은 2.1 Recent Committee Specification Draft Version 2.1 (26 July 2019)
현재 많은 위협 인텔리전스 플랫폼에서 STIX 2.0 포맷 기준으로 위협 정보를 공유하지만, 1.0 또한 여전히 사용중이므로 각 버전에 대한 포맷의 이해가 필요합니다. STIX 1.0은 XML
을 사용하며 8개 구성요소이고, STIX 2.0은 JSON
형태이며 12개의 구성요소라는 것이 다른점입니다. 다음에서 각 차이점을 좀 더 이해해보도록 하겠습니다.
STIX 1.0
다음은 STIX 1.0 을 요약한 것입니다.
- 예제 참고
- SDO (Domain Objects)
- Observable: 사이버공간에서 관찰 가능한 모든 이벤트 관련 구조체. CybOX로 표현하는 이벤트나 상태가 있는 속성. (파일 해시, 레지스트리키, 서비스모골그 IP 주소 등)
- Indicator: Observable 중 데이터 모음 표현. 시간, 정보 출처, 침입 탐지 룰 등 포함. (해킹된 도메인, 위조된 이메일, 트로이목마와 관련된 파일 해시)
- Incident: Indicator 중 사이버 공격으로 밝혀진 결과 표현. 유사한 공격을 진행한 공격 그룹의 행위 집합. (피해 시간, 육하원칙에 기반한 피해,공격 정보)
- Tactics, Techniques and Procedures (TTP): 그룹의 TTP. Incident 배후의 전략 및 기술
- Threat Actor: 공격 그룹. TTP 수행 주체
- Campaign: 관련 TTPs, indicators, incidents, exploit targets의 집합. Threat Actor의 의도가 담긴 한 개 이상의 Incident 또는 TTP
- Exploit Target: Threat Actor의 TTP에 악용되는 공격 대상의 취약점 (CVE 및 OSVDB, CVRF, CWE, CCE)
- Course of Action (COA): 위협 대응 방법 (prevention, remediation, mitigation)
STIX 2.0
다음은 STIX 2.0 을 요약한 것입니다.
- 예제 참고
- STIX2 Validator
- SDO (Domain Objects)
- Attack Pattern: 공격 패턴은 TTP의 한 형식
- Campaign: 관련 TTP 등 공격의 집합. 작전
- Course of Action: 위협 대응 방법
- ID(identity): 개인 또는 조직 식별자
- Indicator: 침해 지표
- Intrusion Set: 침입 그룹. 악성 행위나 캠페인 그룹
- Malware: 악성 소프트웨어
- Observed Data: 탐지 대상 (파일 해시, 레지스트리키, 서비스, IP 주소 등). 객체 구현은 cyber observable 포맷에 따름
- Report: 분석 결과 보고서나 인텔리전스 정보
- Threat Actor: 조직 정보
- Tool: 공격에 사용된 정상 소프트웨어
- Vulnerability: 취약점 정보
- SRO (Relationship Objects)
- Relastionship: SRO 간 관계를 표현 (targets, uses, indicates, mitigates, attributed-to, varient-of, impersonates) 상세
- Shighting: 탐지된 정보
- 기타
아래 그림을 통해 STIX 2.0 구조를 잘 이해할 수 있습니다. 각 도메인 객체 SDO간에 관계 SRO가 어떻게 연결되는지 표현한 것입니다. 예를 들어 상단에 빨간 박스 ADVERSARIES 는 공격자를 의미하며, 공격자는 Threat Actor, Intrusion Set, Campaign 객체로 설명됩니다. 그리고 이 공격자가 사용하고 있는 TTP는, 그림의 중간에 파란 박스로 표현되어 있는 부분입니다. TTP에는 Attack Pattern, Malware, Tool 객체로 구성되어 있고, 각 객체간 관계가 표현되어 있습니다.
그림 출처: https://freetaxii.github.io/
사이버 인텔리전스 정보 공유 플랫폼 및 서비스
국내외에서 가장 많이 활용되고 있는 사이버 인텔리전스 정보 공유 플랫폼 및 서비스를 살펴보겠습니다. 다음은 각 내용을 살펴보기에 앞서 MISP, OTX, C-TAS의 데이터 종류와 포맷, 수집 방법을 간단히 비교 정리한 것입니다.
그림 출처: 주식회사 쏘마 인텔리전스 팀
CIRCL - MISP (Malware Information Sharing Platform)
MISP는 CIRCL 에서 사이버 보안 지표, 악성코드 분석 정보를 저장하는 것 뿐만 아니라 ICT 인프라, 조직에 공격 및 위협을 공유해 탐지하고 예방하기 위해 만들어진 플랫폼입니다. 주요 사항은 아래와 같습니다.
- MISP 2.4.119 released (aka the quality of life release) - 2019/12/04
- 직접 구축할 수도 있고, vm 이미지 받아서 테스트 해 볼 수 있습니다.
- 기본적으로 제공하는 피드의 종류가 약 60 여개 https://www.misp-project.org/feeds/
- 피드 관리: Sync Actions > List Feeds
- 지표 조회: Home > List Attributes
- 분류 관리: Event Actions > List Taxonomies
- 태그 관리: Event Actions > List Tags
주요 기능
MISP에서 제공하는 주요 기능입니다.
-
export: Theat Intelligence를 IDS(Suricata, Snort, bro), OpenIOC, plain text, CSV ,MISP XML or JSON 형태로 제공
-
storing data: 사이버 보안 지표가 되는 다양한 Theat Intelligence를 자동적으로 구조화된 형태로 저장
-
user-interface: 이벤트 및 속성들을 업데이트 및 협업을 할 수 있는 직관적인 인터페이스와 이벤트와 관련된 상관 관계를 원할하게 탐색할 수 있는 그래픽 인터페이스를 지원
-
sharing functionality to ease data sharing using different model of distributions: 여러가지의 다른 Theat Intelligence의 공유 모델을 지원
-
data sharing: MISP를 사용하여 신뢰할 수 있는 그룹들간의 자동적으로 Theat Intelligence를 교환과 동기화를 지원
-
feed import: 여러 플렛폼으로 부터 MISP 피드 또는 OSINT 피드를 가져오고 통합 할 수 있도록 지원
-
API: PyMisp 클라이언트를 활용하여 다양한 어플리케이션을 개발 하여 활용 가능
MISP에서 분류 기반 침해 지표 점수 산정 방법
MISP와 같은 분산 형 위협 공유 모델에서 신뢰는 필수 요소입니다. 데이터의 출처에 대한 신뢰와 우선순위를 부여하기 위해 내부적으로 점수를 매기는 알고리즘을 적용하고 있습니다. 다음은 주요 내용을 요약한 것입니다.
- 현재(2020.02.25 기준) MISP에서 데이터에 가치를 부여하기 위해 110 개의 분류 기법(Taxonomy)을 사용.
- Event Actions > List Taxonomies 에서 조회 및 수정 가능
- 기본적으로는 모든 분류체계는 비활성화(disable) 상태.
- MISP에서 내부적으로 점수 산정하는 방법 예
- 수집처를 완전히 신뢰하는 경우 소스 신뢰도는 1로 설정. 신뢰가 없으면 소스 레벨은 0으로 설정.
- 많은 침입 탐지 시스템의 시그니처에 IP가 주로 이용되는데, 일반적으로 서버나 브라우저에 블랙리스트를 적용하는 데 48 시간이 걸린다는 가정하에 신뢰 점수는 2 일 후에 절반으로 줄어듦.
- 해시는 2개월 정도 이후 절반으로 신뢰도 감소
그림 출처: 주식회사 쏘마 인텔리전스 팀
다음은 주요 정부 기관에서 공유하는 정보에 분류 기법을 적용하기 위해, 활성화 하고 적용해 본 예입니다.
그림 출처: 주식회사 쏘마 인텔리전스 팀
AT&T alienVault - OTX (Open Threat eXchange)
OTX는 Open Threat eXchange의 약자로, AT&T에서 운영하는 오픈 위협 인텔리전스 서비스입니다. 아래와 같은 방법으로 데이터를 연동할 수 있습니다.
- API 이용
- 홈페이지에서 회원 가입 후, profile > API key 를 얻습니다.
- 사용자 가이드 문서 참고
- 에이전트에 직접 접속 하는 방법: AlienVault OSSIM, AlienVault USM, Bro IDS, TAXII agent 이용합니다.
- SDK를 통해 접속하는 방법: Java, Python3, Golang
- Curl 을 통해 바로 데이터를 가져올 수도 있습니다.
- 웹을 통한 침해지표 검색
- https://otx.alienvault.com/indicator/ip/224.242.44.208
다음은 Python3을 이용해 침해지표를 검색한 것으로 아래 코드를 참고 했습니다.
- https://github.com/AlienVault-OTX/OTX-Python-SDK
from OTXv2 import OTXv2
from OTXv2 import IndicatorTypes
otx = OTXv2("API_KEY")
# Get all the indicators associated with a pulse
indicators = otx.get_pulse_indicators("5e033ef137b56bf5fb937a05")
for indicator in indicators:
print(indicator["type"], indicator["indicator"])
# Get everything OTX knows about xxx.com
otx.get_indicator_details_full(IndicatorTypes.DOMAIN, "xxx.com")
OTX에서 수집 피드 Pulse 활용를 잘 활용하면 조직에 원하는 침해 지표를 얻을 수 있고, 본인의 침해 지표를 다른 사람이 공유해 가도록 설정할 수 있습니다. OTX Pulse 란 웹에서 pulse를 통해 본인의 지표를 공유하거나 다른 사용자들이 만든 pulse를 구독하는 것입니다. pulse 만들때 PDF, text, plain text log, STIX, or OpenIOC 파일 업로드 해서 만들 수도 있습니다.
- Pulse 예) https://otx.alienvault.com/pulse/5e033ef137b56bf5fb937a05
OTX ioc 전체는 아래 스크립트로 가져올 수 있습니다. 일 2000개 정도 수집되는 것으로 테스트 되었으나, 실시간으로 업데이트 되는 데이터는 아닙니다.
- https://github.com/Neo23x0/signature-base/blob/master/threatintel/get-otx-iocs.py
KISA C-TAS (Cyber Threats Analysis System)
C-TAS(Cyber Threats Analysis System)는 키사에서 제공하는 위협 정보 공유 서비스입니다. 키사에서 수집하거나 회원사가 공유하는 위협 정보 악성코드 해시, 공격지 IP, 유포지, C2 등을 제공합니다. 제공되는 정보와 방법은 아래와 같습니다.
- 위협 정보 이외 분석 보고서, 통계 정보 메일링 제공
- 웹, API 통해 XML / JSON / STIX2.0 포맷으로 정보 제공
- 회원 가입 및 정보 공유 방법
- ctashelp@krcert.or.kr 에 가입 문의
- 홈페이지 가입 > 보안 서약서 > 정보 제공 승인 처리
- 참여사 이름 밝힐지 여부
- 공유 범위 설정
- 키사측에서 제공하는 자바 프로그램 이용해 API 통한 실시간 Feed
그림 출처: 키사 홈페이지
이상으로 위협 인텔리전스 및 서비스의 종류와 특징, 그리고 이를 구성하는 기술들을 살펴보았습니다. 조직/기업에서 필요로 하는 정보의 특성 및 요구사항에 따라 필요한 정보들을 식별하고, 잘 관리하여 참조할 수 있다면 보안향상에 많은 도움을 얻을 수 있을 것이라 기대합니다.
참고
-
TAXII & STIX
-
MISP
-
OTX