> For the complete documentation index, see [llms.txt](https://docs.panther.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.panther.com/ko/enrichment/stix-taxii.md).

# STIX/TAXII (베타)

## 개요

{% hint style="info" %}
STIX/TAXII 보강은 베타 버전입니다. 버그 보고와 기능 요청이 있으면 Panther 지원팀과 공유해 주세요.
{% endhint %}

[STIX](https://docs.oasis-open.org/cti/stix/v2.1/os/stix-v2.1-os.html) (Structured Threat Information Expression) 및 [TAXII](https://docs.oasis-open.org/cti/taxii/v2.1/os/taxii-v2.1-os.html) (Trusted Automated Exchange of Intelligence Information)는 위협 인텔리전스를 공유하기 위한 공개 표준입니다. Panther의 STIX/TAXII 보강은 액세스 권한이 있는 모든 TAXII 2.1 서버(상용, 오픈 소스 또는 자체 호스팅)에 연결하여 선택한 컬렉션에서 STIX Indicator 객체를 가져옵니다. Panther-managed STIX/TAXII 보강은 이러한 침해 지표(IoC)를 Panther로 수집된 로그 이벤트와 비교하여 고정밀 알림을 제공합니다.

일반적으로 API 키만 필요로 하는 Panther의 다른 보강 소스와 달리, STIX/TAXII는 Panther를 액세스 권한이 있는 TAXII 서버에 연결해야 합니다. discovery URL과 자격 증명을 제공하면 Panther가 서버의 API root를 순회하여 사용 가능한 컬렉션을 열거하고, 그중에서 선택할 수 있게 합니다.

## Panther에서 STIX/TAXII 보강이 작동하는 방식

기본적으로 STIX/TAXII 보강은 Panther 환경의 모든 로그 유형에 대해 실행되도록 구성되어 있습니다([필요한 경우 로그 유형별로 비활성화할 수도 있습니다](#enabling-disabling-or-modifying-stix-taxii-enrichment-for-a-log-type)). Panther는 모든 로그 유형의 각 수신 로그 이벤트를 디택션 엔진을 통과하기 전에 Panther-managed STIX/TAXII 보강과 일치시키려고 시도합니다.

만약 Panther가 [일치 항목을 식별하면](#how-a-match-between-a-log-event-and-stix-taxii-is-made) 수신 이벤트와 STIX/TAXII 항목 사이에서 일치 항목이 발견되면, STIX/TAXII 데이터는 매칭된 로그 이벤트의 최상위 수준 아래에 추가됩니다 `p_enrichment` 키에 추가됩니다. 이후 디택션 로직과 검색에서 참조할 수 있습니다.

Panther는 기본적으로 선택한 TAXII 서버의 각 컬렉션을 1시간마다 폴링합니다. 각 폴링은 마지막으로 성공한 폴링 이후 컬렉션에 추가된 indicator만 가져옵니다(TAXII 서버의 `X-TAXII-Date-Added-Last` 커서로 컬렉션별 추적됨). 따라서 이전에 가져온 indicator는 다시 가져오지 않습니다. indicator는 해당 `valid_until` 날짜가 지나거나 구성된 **최대 기간(일)** 설정을 초과하면 자동으로 필터링됩니다.

보강 소스를 사용한 디택션 작성에 대한 자세한 내용은 다음을 참조하세요: [사용자 지정 보강 데이터를 사용한 디택션 작성](/ko/enrichment/custom.md#writing-a-detection-using-custom-enrichment-data).

### 로그 이벤트와 STIX/TAXII가 일치하는 방식

로그 이벤트는 Panther-managed STIX/TAXII 보강 데이터로 보강됩니다( `p_enrichment`) 다음 항목 사이에서 일치가 발견되면:

* 연결된 각 로그 유형에 대해 구성된 Selector 필드의 값 중 하나.
  * 각 로그 유형에 대한 기본 Selector는 [Indicator 필드](/ko/search/panther-fields.md#indicator-fields) (로 표시되며 `p_any_*`) 보강 테이블의 기본 키에 지정된 indicator 필드와 연결됩니다(단, Selector는 구성 가능합니다). [이 자동 매핑에 대해 자세히 알아보려면 여기를 참조하세요.](/ko/enrichment/custom.md#option-2-let-log-types-and-selectors-be-automatically-mapped).
* Panther의 STIX/TAXII 테이블 항목에서 `value` 키의 값입니다.
  * `value` 는 STIX/TAXII 테이블의 기본 키이며 indicator 값(IP 주소, 도메인, URL, 파일 해시, 이메일 주소 또는 MAC 주소)을 포함합니다. 이는 STIX indicator의 `pattern`).
  * 다음의 예를 확인하세요: `value` 의 [예시 STIX/TAXII 보강 테이블 항목](#example-stix-taxii-enrichment-table-entry) 아래에서.

## STIX/TAXII 보강 설정

### 1단계: TAXII 서버 정보 수집

Panther에서 STIX/TAXII 보강을 구성하기 전에 TAXII 서버(또는 관리자)로부터 다음 정보를 수집하세요:

* 다음 항목: **discovery URL**, 이는 다음으로 끝나야 합니다 `/taxii2/` (TAXII 2.1 사양에 따름).
* 지원되는 두 인증 방법 중 하나에 대한 자격 증명:
  * **Bearer Token** — 단일 API 토큰.
  * **Basic Auth** — 사용자 이름(선택 사항, 서버에 따라 다름) 및 비밀번호.

{% hint style="warning" %}
TAXII 서버에서 Panther의 egress IP 주소도 허용해야 합니다. 이 IP는 설정 중에 표시됩니다(아래 2단계 참조).
{% endhint %}

### 2단계: Panther에서 STIX/TAXII 보강 생성

Panther에서 STIX/TAXII 보강을 구성하려면:

1. Panther Console의 왼쪽 탐색 모음에서 다음을 클릭하세요: **보강**.
2. 오른쪽 상단에서 다음을 클릭하세요: **새로 만들기**.
3. 클릭하세요: **STIX/TAXII**.

   ![“어떤 종류의 보강을 설정하시겠습니까” 화면에는 사용자 지정 보강 옵션이 표시되고, 이어서 Anomali, Open Threat Exchange, GreyNoise, Google Threat Intelligence, VirusTotal, STIX/TAXII(동그라미 표시), Snowflake Audit, Google Workspace, Okta를 포함한 지원되는 보강의 그리드가 표시됩니다.](/files/57bd490d2023c91c61d53f95111df79c731a2495)
4. 다음 **보강 설정** 단계에서 다음 필드의 값을 입력하세요:

   * **이름**: 통합을 설명하는 이름을 입력하세요.
   * **TAXII Discovery URL**: 서버의 discovery URL을 입력하세요(다음으로 끝나야 함 `/taxii2/`).
   * **인증 방법**: 선택하세요 **Bearer Token** 또는 **Basic Auth**.
     * 만약 **Bearer Token**, 다음을 입력하세요 **API 토큰**.
     * 만약 **Basic Auth**, 다음을 입력하세요 **사용자 이름** (선택 사항) 및 **비밀번호**.
   * **최대 기간(일)**: indicator가 보강 테이블에 유지되는 최대 기간(일)을 구성합니다. 이 기준보다 오래된 indicator는(각 indicator의 `valid_from` 날짜를 기준으로) 가져오지 않으며, 이전에 가져온 indicator 중 이 기준보다 오래된 항목은 각 새로고침 시 자동으로 필터링됩니다.
   * 표시된 **egress IP** 를 확인하고 TAXII 서버에서 허용되었는지 확인하세요.

   ![보강 설정 단계에는 이름, TAXII Discovery URL, 인증 방법(Bearer Token 또는 Basic Auth), API 토큰, Indicator TTL(최대 기간(일)) 필드와 Panther의 egress IP를 표시하는 알림이 나타납니다.](/files/4e641755a8f0c58a7c76aa98f8e51e1c47eb03be)
5. 클릭하세요: **계속**. Panther는 제공된 자격 증명으로 discovery URL에 연결을 시도합니다.
   * 연결에 실패하면 오류 배너가 표시되며 설정을 조정하고 다시 시도할 수 있습니다.
6. 다음 **컬렉션 선택** 단계에서 발견된 컬렉션 중 어느 컬렉션에서 indicator를 수집할지 선택하세요.

   * 필터 상자를 사용하여 컬렉션 이름 또는 설명으로 목록을 좁히세요.
   * 개별 컬렉션을 선택하거나 헤더 체크박스를 사용해 현재 필터링된 모든 컬렉션을 선택하세요.
   * 최대 50개의 컬렉션을 선택할 수 있습니다. 이 한도를 초과하면 인라인 경고가 표시되며 일부 컬렉션의 선택을 해제할 때까지 계속 진행할 수 없습니다.

   ![컬렉션 선택 단계에는 이전에 입력한 설정이 있는 보강 정보 사이드바와, 필터 상자 및 발견된 컬렉션 표가 있는 컬렉션 선택 패널이 표시되며 각 항목에는 체크박스, 컬렉션 이름, 설명이 있습니다.](/files/b2dcfe4497d8958fd20742766437b40031ff5f82)
7. 클릭하세요: **계속**.
8. 다음 **확인** 단계에서 통합이 성공적으로 생성되었는지 확인한 다음 다음을 클릭하세요: **보강 보기**.
   * 새 STIX/TAXII 구성은 **보강** 페이지에서 확인할 수 있습니다.

{% hint style="info" %}
STIX/TAXII 보강을 추가한 후, 수신 로그 데이터가 보강되기 시작하기까지 몇 분 정도 지연될 수 있습니다. 이는 초기 데이터 동기화가 완료될 시간을 제공하기 위함입니다.
{% endhint %}

### 설정 후 컬렉션 관리

언제든지 STIX/TAXII 보강이 수집하는 컬렉션을 확인하거나 변경할 수 있습니다:

1. Panther Console의 왼쪽 탐색 모음에서 다음을 클릭하세요: **보강**.
2. 관리하려는 STIX/TAXII 보강의 이름을 클릭하세요.
3. 다음을 클릭하세요: **컬렉션** 탭을 눌러 현재 이 통합에 대해 활성화된 컬렉션을 확인하세요.

   ![STIX/TAXII 보강의 컬렉션 탭에는 활성화된 컬렉션 표가 표시되며 각 항목에는 컬렉션 이름과 설명이 있고 오른쪽 상단에 컬렉션 편집 버튼이 있습니다.](/files/ee566c1d528fc1f059254e90a750c5365cb84505)
4. 클릭하세요: **컬렉션 편집** 다음으로 돌아가 **컬렉션 선택** 마법사의 단계로 돌아가 선택을 변경하세요.

{% hint style="info" %}
기존 STIX/TAXII 보강을 편집할 때는 자격 증명을 다시 입력할 필요가 없습니다 — 현재 저장된 값을 유지하려면 토큰/비밀번호 필드를 비워 두세요.
{% endhint %}

## 로그 유형에 대한 STIX/TAXII 보강 활성화, 비활성화 또는 수정

STIX/TAXII 보강은 Panther 인스턴스의 각 로그 유형에 기본적으로 활성화되어 있습니다.

특정 로그 유형에 대해 STIX/TAXII 보강을 비활성화(또는 나중에 다시 활성화)하거나 로그 유형의 selector를 변경하려면:

1. Panther Console의 왼쪽 탐색 모음에서 다음을 클릭하세요: **보강**.
2. 보강 목록에서 수정하려는 STIX/TAXII 소스를 찾아 이름을 클릭하세요.
3. 다음을 클릭하세요: **보강된 로그 유형** 탭.
4. 오른쪽에서 다음을 클릭하세요: **로그 유형 편집**.
   * 새 로그 유형에 이 보강을 활성화하려면 다음을 클릭하세요: **로그 유형 추가**.
     * 새로 추가된 행에서 다음을 선택하세요: **로그 유형** 그리고 **Selector** 필드에서 이벤트 필드를 최소 하나 선택하세요.
   * 로그 유형에 대해 이 보강을 비활성화하려면 해당 로그 유형의 행을 찾아 휴지통 아이콘을 클릭하세요.
     * 로그 유형이 보이지 않으면 다음 옆의 드롭다운 화살표를 클릭하세요: **자동 매핑된 로그 유형**. 로그 유형의 행을 찾아 편집 아이콘을 클릭하세요.
   * 로그 유형의 selector를 변경하려면 다음 필드를 클릭하세요: **Selector** 필드에 이벤트 필드 선택을 추가하거나 제거하세요.
5. 오른쪽 상단에서 다음을 클릭하세요: **저장**.

## 예시 STIX/TAXII 보강 테이블 항목

아래는 Panther가 TAXII를 통해 가져온 STIX Indicator 객체의 예시입니다. 선택한 컬렉션의 각 indicator는 자체 행을 생성하며, indicator 값은 `value` 필드에 저장됩니다.

```json
{
  "type": "indicator",
  "spec_version": "2.1",
  "id": "indicator--b3eb5e07-2f0e-4e04-9d21-38f4a2d0d20e",
  "created": "2025-03-10T14:00:00.000Z",
  "modified": "2025-03-10T14:00:00.000Z",
  "name": "C2 활동과 연관된 악성 IP",
  "indicator_types": ["malicious-activity"],
  "pattern": "[ipv4-addr:value = '198.51.100.42']",
  "pattern_type": "stix",
  "valid_from": "2025-03-10T14:00:00.000Z",
  "valid_until": "2025-09-10T14:00:00.000Z",
  "labels": ["c2", "malware"],
  "confidence": 85,
  "value": "198.51.100.42",
  "ioc_type": "ip_address",
  "p_event_time": "2025-03-10T14:00:00.000Z",
  "p_log_type": "STIX.Indicator",
  "p_parse_time": "2025-03-10T15:00:00.000Z",
  "p_row_id": "abc123def456ghi789",
  "p_schema_version": 0
}
```

### `STIX.Indicator` 스키마

다음은 Panther-managed `STIX.Indicator` 스키마로, TAXII를 통해 가져온 STIX Indicator 객체가 Panther에 저장되는 방식을 나타냅니다. 각 indicator는 자체 행이 됩니다.

```yaml
schema: STIX.Indicator
description: pattern 속성에서 추출된 IoC 값과 유형을 가진 STIX 2.1 Indicator 객체.
referenceURL: https://docs.oasis-open.org/cti/stix/v2.1/os/stix-v2.1-os.html#_muftrcpnf89v
fields:
  - name: type
    required: true
    description: 이 객체의 유형으로, 반드시 'indicator'여야 합니다.
    type: string
  - name: spec_version
    required: true
    description: 이 객체를 표현하는 데 사용된 STIX 사양의 버전.
    type: string
  - name: id
    required: true
    description: 이 Indicator의 고유 식별자.
    type: string
  - name: created_by_ref
    description: 이 Indicator를 생성한 Identity 객체의 id.
    type: string
  - name: created
    required: true
    description: 이 Indicator가 처음 생성된 시각.
    type: timestamp
    timeFormats:
      - rfc3339
  - name: modified
    required: true
    description: 이 특정 버전의 Indicator가 마지막으로 수정된 시각.
    type: timestamp
    timeFormats:
      - rfc3339
  - name: revoked
    description: 이 Indicator가 철회되었는지 여부.
    type: boolean
  - name: labels
    description: 이 Indicator를 설명하는 데 사용되는 용어 집합.
    type: array
    element:
      type: string
  - name: confidence
    description: 작성자가 자신의 데이터가 정확하다고 확신하는 정도(0-100).
    type: bigint
  - name: lang
    description: 이 객체의 텍스트 콘텐츠 언어.
    type: string
  - name: external_references
    description: STIX가 아닌 정보를 참조하는 외부 참조 목록.
    type: array
    element:
      type: object
      fields:
        - name: source_name
          description: external-reference가 정의된 소스의 이름.
          type: string
        - name: description
          description: 외부 참조에 대한 사람이 읽을 수 있는 설명.
          type: string
        - name: url
          description: 외부 리소스에 대한 URL 참조.
          type: string
          indicators:
            - url
        - name: hashes
          description: hash 알고리즘과 값의 딕셔너리 형태로 된, url 내용의 해시입니다.
          type: json
        - name: external_id
          description: 외부 참조 콘텐츠의 식별자.
          type: string
  - name: object_marking_refs
    description: 이 Indicator에 적용되는 marking-definition 객체 목록.
    type: array
    element:
      type: string
  - name: granular_markings
    description: 이 Indicator에 적용되는 세부 표시 집합.
    type: json
  - name: extensions
    description: 확장 식별자를 키로 하는 확장별 속성의 딕셔너리(STIX 2.1의 공급업체별 데이터 메커니즘).
    type: json
  - name: name
    description: 이 Indicator를 식별하는 데 사용되는 이름.
    type: string
  - name: description
    description: 이 Indicator에 대한 더 자세한 내용과 맥락을 제공하는 설명.
    type: string
  - name: indicator_types
    description: 이 Indicator에 대한 분류 집합(예: malicious-activity).
    type: array
    element:
      type: string
  - name: pattern
    required: true
    description: 이 Indicator의 디택션 패턴.
    type: string
  - name: pattern_type
    required: true
    description: pattern 속성에 사용된 패턴 언어(예: stix, yara).
    type: string
  - name: pattern_version
    description: pattern 속성에 사용된 패턴 언어의 버전.
    type: string
  - name: valid_from
    required: true
    description: 이 Indicator가 관련된 행위의 유효한 indicator로 간주되는 시작 시각.
    type: timestamp
    timeFormats:
      - rfc3339
    isEventTime: true
  - name: valid_until
    description: 이 Indicator가 더 이상 유효한 indicator로 간주되지 않아야 하는 시각.
    type: timestamp
    timeFormats:
      - rfc3339
  - name: kill_chain_phases
    description: 이 Indicator가 해당하는 kill chain 단계.
    type: array
    element:
      type: object
      fields:
        - name: kill_chain_name
          description: kill chain의 이름.
          type: string
        - name: phase_name
          description: kill chain의 단계 이름.
          type: string
  - name: value
    description: pattern에서 추출된 IoC 값; 보강 키.
    type: string
    indicators:
      - ip
      - domain
      - url
      - md5
      - sha1
      - sha256
      - email
      - mac
  - name: ioc_type
    description: 'pattern에서 추출된 IoC 유형(다음 중 하나: ip_address, domain_name, url, file, email, mac_address).'
    type: string
```

{% hint style="info" %}
STIX Indicator 객체(`type: indicator`) STIX 패턴 언어(`pattern_type: stix`)만 수집됩니다. 다른 STIX 객체 유형(예: `identity`, `malware`, `attack-pattern`) 및 non-STIX 패턴 언어(예: `yara`, `pcre`, `sigma`)는 건너뜁니다. Panther가 단일 IoC 값(IP 주소, 도메인, URL, 파일 해시, 이메일 주소 또는 MAC 주소)을 추출할 수 있는 패턴만 지원되며, 더 복잡하거나 지원되지 않는 패턴을 가진 indicator도 건너뜁니다.
{% endhint %}

## 디택션에서 STIX/TAXII 데이터를 사용하는 예시

STIX/TAXII 보강 데이터는 알려진 위협을 식별하기 위한 디택션 로직에서 사용할 수 있습니다. 다음 예시는 이벤트가 STIX/TAXII indicator와 일치하는지 확인하고 그 confidence와 labels를 표시합니다:

```python
def 룰(event):
    enrichment = event.get('p_enrichment', {})
    stix_data = enrichment.get('STIX.Indicator', {})

    if not stix_data:
        return False

    return stix_data.get('confidence', 0) >= 75


def title(event):
    stix_data = event.deep_get('p_enrichment', 'STIX.Indicator', default={})
    return f"STIX/TAXII indicator와의 일치 항목: {stix_data.get('name', stix_data.get('value'))}"
```

## STIX/TAXII 보강 문제 해결

### 일반적인 문제

* **설정 중 연결 실패**: discovery URL이 다음으로 끝나는지 확인하세요 `/taxii2/`, 자격 증명이 올바른지, 그리고 Panther의 egress IP가 TAXII 서버에서 허용되었는지 확인하세요.
* **데이터가 수집되지 않음**: 다음 단계에서 최소 하나의 컬렉션이 선택되어 있는지 확인하세요: **컬렉션 선택** 단계에서, 선택한 컬렉션에 지원되는 패턴을 가진 STIX Indicator 객체가 실제로 포함되어 있는지 확인하세요(위의 힌트를 참조). 또한 다음 항목도 확인하세요: **최대 기간(일)** 설정 — `valid_from` 이 기준보다 오래된 indicator는 수집 시 필터링됩니다.
* **일부 컬렉션에서 간헐적으로 데이터 누락**: 특정 폴링에서 도달하지 못한 컬렉션은 해당 주기에서는 건너뛰고 다음 폴링에서 다시 시도합니다. 다른 정상 컬렉션에는 영향이 없습니다. 컬렉션의 상태 점검이 지속적으로 실패하면 보강의 상세 페이지에서 unhealthy로 표시됩니다.
* **데이터 최신성**: STIX/TAXII 컬렉션은 1시간마다 폴링됩니다. 다음 설정을 확인하세요: **최대 기간(일)** 사용 사례에 적절한지 확인하세요.

추가 문제 해결을 위해 Panther Knowledge Base를 방문하여 [보강 관련 문서를 확인하고](https://help.panther.com/Enrichment) 자주 묻는 질문에 답하고 일반적인 오류와 문제를 해결하는 데 도움을 받으세요.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.panther.com/ko/enrichment/stix-taxii.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
