STIX
더 많은 작업
STIX(Structured Threat Information Expression)는 사이버 위협 인텔리전스(Cyber Threat Intelligence, CTI)를 일관되고 기계가 처리할 수 있는 형태로 표현하기 위한 표준화된 언어 및 데이터 모델이다.
공격자, 악성코드, 공격 캠페인, 침해지표(IOC), 취약점, 공격 기법 등의 정보를 각각 객체로 표현하고 이들 사이의 관계를 구조화할 수 있다.
현재 STIX는 국제 표준화 기구인 OASIS(Organization for the Advancement of Structured Information Standards)에서 표준을 관리하고 있다.
사이버 위협정보는 여러 보안업체와 기관에서 생성되지만 각 조직이 서로 다른 형식으로 정보를 표현하면 자동화된 정보 공유와 분석이 어렵다.
STIX는 이러한 문제를 해결하기 위해 위협정보를 공통된 데이터 모델로 표현한다.
예를 들어 단순히 다음과 같은 정보가 존재할 수 있다.
- 특정 IP 주소가 공격에 사용됨
- 특정 악성코드가 발견됨
- 특정 공격 조직이 해당 악성코드를 사용함
- 해당 조직이 특정 산업을 공격함
STIX에서는 각각의 정보를 객체로 만들고 객체 사이의 관계를 연결할 수 있다.
공격 조직
↓ uses
악성코드
↓ communicates-with
명령제어 서버
또는
공격 캠페인
↓ uses
공격 기법
↓ targets
특정 조직
과 같은 구조로 표현할 수 있다.
따라서 STIX는 단순한 악성 IP나 파일 해시 목록을 교환하는 형식보다 훨씬 복잡한 위협정보를 표현할 수 있다.
STIX에서는 위협정보를 여러 종류의 객체로 표현한다.
객체는 크게 다음과 같이 구분할 수 있다.
- STIX Domain Objects
- STIX Cyber-observable Objects
- STIX Relationship Objects
- STIX Meta Objects
STIX Domain Object(SDO)는 위협 인텔리전스에서 의미를 갖는 주요 개념을 표현하는 객체다.
STIX 2.1에서 정의하는 주요 SDO는 다음과 같다.
| 객체 | 설명 |
|---|---|
| Attack Pattern | 공격자가 사용하는 공격 방법이나 기법을 표현한다. MITRE ATT&CK의 공격 기법도 Attack Pattern 객체로 표현할 수 있다. |
| Campaign | 특정 목적을 가지고 일정 기간 수행되는 일련의 공격 활동을 표현한다. |
| Course of Action | 특정 위협이나 공격에 대응하기 위한 조치를 표현한다. |
| Grouping | 특정 맥락에서 여러 STIX 객체를 하나의 그룹으로 묶어 표현한다. |
| Identity | 개인, 조직, 그룹 등 위협정보에서 식별할 필요가 있는 주체를 표현한다. |
| Incident | 발생한 보안 사고나 침해사고를 표현한다. |
| Indicator | 악성 활동이나 침해를 탐지하는 데 사용할 수 있는 패턴을 표현한다. IP 주소, 도메인, 파일 해시 등의 침해지표를 탐지 조건으로 표현할 수 있다. |
| Infrastructure | 명령제어 서버, 피싱 서버, 악성코드 배포 서버 등 공격 수행에 사용되는 인프라를 표현한다. |
| Intrusion Set | 동일한 공격자 또는 공격 조직이 수행한 것으로 판단되는 일련의 악성 활동을 표현한다. APT 그룹 등의 활동을 표현하는 데 사용할 수 있다. |
| Location | 위협정보와 관련된 지리적 위치를 표현한다. |
| Malware | 악성코드와 그 유형·기능 등의 정보를 표현한다. |
| Malware Analysis | 특정 악성코드 샘플에 대한 분석 결과를 표현한다. |
| Note | 다른 STIX 객체에 대한 설명이나 추가 정보를 기록한다. |
| Observed Data | 특정 시점에 실제로 관찰된 사이버 관련 데이터를 표현한다. |
| Opinion | 다른 STIX 객체나 분석 결과에 대한 평가 또는 의견을 표현한다. |
| Report | 여러 위협정보 객체를 하나의 보고서 형태로 묶어 표현한다. |
| Threat Actor | 사이버 위협 행위를 수행하는 개인이나 집단을 표현한다. |
| Tool | 공격에 사용되는 소프트웨어 도구를 표현한다. 정상적인 관리도구가 공격에 악용되는 경우도 포함할 수 있다. |
| Vulnerability | 보안 취약점을 표현한다. CVE와 같은 외부 식별자를 연결할 수 있다. |
STIX Cyber-observable Object(SCO)는 컴퓨터나 네트워크에서 실제로 관찰할 수 있는 기술적인 데이터를 표현한다.
대표적인 객체에는 다음과 같은 것들이 있다.
- IPv4 Address
- IPv6 Address
- Domain Name
- URL
- Email Address
- Email Message
- File
- Directory
- Process
- Network Traffic
- Windows Registry Key
- User Account
- X.509 Certificate
- MAC Address
- Artifact
예를 들어 악성코드의 SHA-256 해시가 발견됐다면 File 객체에 해당 해시를 기록할 수 있다.
공격에 사용된 IP 주소는 IPv4 Address 또는 IPv6 Address 객체로 표현할 수 있다.
STIX의 중요한 특징 중 하나는 객체 사이의 관계를 표현할 수 있다는 점이다.
예를 들어 다음과 같은 관계를 표현할 수 있다.
Threat Actor
│
│ uses
▼
Malware
또는
Intrusion Set
│
│ targets
▼
Identity
STIX에서는 이러한 관계를 Relationship 객체로 표현한다.
대표적인 관계에는 다음과 같은 의미가 사용될 수 있다.
- uses
- targets
- indicates
- attributed-to
- exploits
- mitigates
- communicates-with
- delivers
- downloads
객체 간 관계를 연결하면 단순한 IOC 목록이 아니라 공격 생태계 전체를 구조적으로 분석할 수 있다.
Sighting은 특정 STIX 객체가 실제 환경에서 관찰됐다는 정보를 표현한다.
예를 들어 특정 악성코드나 Indicator가 특정 시점에 발견됐다는 사실을 기록할 수 있다.
여러 조직에서 동일한 위협이 관찰되는지 분석하는 데 활용할 수 있다.
STIX의 Indicator 객체는 특정 악성 활동을 탐지할 수 있는 패턴을 표현한다.
예를 들어 특정 IPv4 주소를 탐지하는 패턴은 개념적으로 다음과 같이 표현할 수 있다.
{
"type": "indicator",
"spec_version": "2.1",
"pattern_type": "stix",
"pattern": "[ipv4-addr:value = '203.0.113.10']"
}
파일 해시 역시 다음과 같은 방식으로 표현할 수 있다.
[file:hashes.'SHA-256' = '...']
이처럼 STIX Indicator는 단순히 값을 저장하는 것뿐 아니라 어떤 데이터를 탐지해야 하는지를 패턴으로 표현할 수 있다.
여러 STIX 객체를 하나의 데이터 묶음으로 전달할 때 Bundle을 사용할 수 있다.
예를 들어 특정 공격 캠페인에 대한 정보를 다음과 같이 하나의 Bundle에 포함할 수 있다.
- Threat Actor
- Campaign
- Malware
- Indicator
- Infrastructure
- Vulnerability
- Relationship
Bundle 자체는 위협 인텔리전스의 의미를 갖는 객체라기보다 여러 STIX 객체를 함께 전달하기 위한 컨테이너 역할을 한다.
STIX와 TAXII는 함께 언급되는 경우가 많지만 서로 다른 역할을 한다.
| 구분 | STIX | TAXII |
|---|---|---|
| 역할 | 위협정보를 표현하는 데이터 모델 | 위협정보를 교환하기 위한 응용 계층 프로토콜 |
| 목적 | 정보의 구조와 의미 표준화 | 시스템 간 정보 전달 |
| 비유 | 어떤 형식으로 정보를 작성할 것인가 | 작성된 정보를 어떻게 전달할 것인가 |
즉 STIX로 작성된 위협정보를 TAXII를 이용해 다른 조직이나 시스템으로 전달할 수 있다.
반드시 두 기술을 함께 사용해야 하는 것은 아니며 STIX 데이터를 파일이나 API 등 다른 방법으로 전달할 수도 있다.
STIX를 단순한 침해지표(IOC) 교환 형식으로 이해하는 경우가 있지만 STIX가 표현할 수 있는 범위는 훨씬 넓다.
IOC는 다음과 같은 정보를 중심으로 한다.
- IP 주소
- 도메인
- URL
- 파일 해시
STIX는 이러한 기술적 지표뿐 아니라 다음과 같은 정보까지 표현할 수 있다.
- 공격자
- 공격 조직
- 공격 캠페인
- 공격 인프라
- 악성코드
- 취약점
- 공격 기법
- 대응조치
- 객체 사이의 관계
따라서 STIX는 하나의 IOC 형식이라기보다 사이버 위협 인텔리전스 전체를 구조화하기 위한 데이터 모델에 가깝다.
MITRE ATT&CK의 데이터도 STIX 형식으로 제공된다.
ATT&CK의 공격 기법, 공격 조직, 소프트웨어 및 이들 사이의 관계를 STIX 객체로 표현할 수 있기 때문에 보안제품이나 분석 시스템에서 ATT&CK 데이터를 자동으로 처리하는 데 활용된다.
예를 들어 ATT&CK의 Technique은 STIX의 Attack Pattern 객체로 표현된다.
이를 이용하면 위협 인텔리전스 플랫폼에서 특정 공격 조직과 관련된 ATT&CK Technique을 자동으로 연결해 분석할 수 있다.
MISP는 위협정보를 저장·분석·공유하기 위한 오픈소스 위협 인텔리전스 플랫폼이다.
MISP는 자체 데이터 모델을 사용하지만 STIX 형식의 위협정보를 가져오거나 내보낼 수 있어 다른 CTI 시스템과 정보를 교환하는 데 활용할 수 있다.
STIX는 다양한 사이버보안 시스템에서 활용할 수 있다.
- 위협 인텔리전스 플랫폼(TIP)
- SIEM
- SOAR
- EDR
- 위협 헌팅 시스템
- 침해사고 대응 시스템
- 악성코드 분석 시스템
- 위협정보 공유 시스템
예를 들어 한 기관에서 발견한 공격자의 IP, 악성코드, 취약점, 공격 기법 등을 STIX로 구조화해 다른 기관에 전달하면 수신 기관의 시스템에서 해당 정보를 자동으로 처리할 수 있다.
STIX의 주요 장점은 서로 다른 조직과 보안제품에서 생성된 위협정보를 공통된 형태로 표현할 수 있다는 점이다.
또한 단순한 IOC뿐 아니라 공격자·악성코드·취약점·공격기법과 이들의 관계까지 표현할 수 있어 복잡한 사이버 공격을 구조적으로 분석할 수 있다.
기계가 처리할 수 있는 형식으로 설계되어 위협정보 공유와 보안 자동화에도 활용할 수 있다.
STIX는 위협정보의 표현 방법을 표준화하지만 정보 자체의 정확성을 보장하지는 않는다.
잘못된 공격자 귀속이나 부정확한 IOC가 STIX 형식으로 작성됐다고 해서 해당 정보의 신뢰도가 높아지는 것은 아니다.
또한 복잡한 위협정보를 세밀하게 표현할수록 객체와 관계가 많아져 데이터 관리가 복잡해질 수 있다.
따라서 실제 운영에서는 데이터 출처, 신뢰도, 관찰 시점, 분석 근거 등을 함께 관리하는 것이 중요하다.