본문 바로가기
어플리케이션

흩어진 보안 위협 정보를 연결하는 지식 플랫폼(OpenCTI)

by forward error correction Circle 2026. 7. 31.
반응형

Ⅰ. OpenCTI 기술이란?

ⅰ. OpenCTI의 정의

  1. 여러 곳에 흩어져 있는 기술적·비기술적 위협 정보를 구조화하고 저장하며, 이를 조직의 지식으로 축적할 수 있도록 돕는 오픈소스 기반 CTI(사이버 위협 인텔리전스) 플랫폼입니다.
  2. 단순한 로그나 방화벽 차단 내역을 넘어, 해당 정보들이 알려진 위협과 어떤 관계가 있는지 맥락을 추가해 판단과 대응에 활용할 수 있는 인텔리전스로 변환합니다.

ⅱ. 도입 배경 및 필요성

  1. 사이버 공격 발생 시 시스템 접속 로그, 방화벽 차단 기록, 외부 위협 보고서 등 확인해야 할 데이터가 여러 시스템과 부서에 분산되어 있어 신속한 분석이 어렵습니다.
  2. IP, 도메인 등 단편적인 정보(IOC)를 넘어 누가, 왜, 어떻게 공격했는지에 대한 연관 관계를 추적하고 과거의 대응 지식을 재사용하기 위해 플랫폼이 필요해졌습니다.

Ⅱ. OpenCTI 기술 특징

ⅰ. 데이터 구조화 및 연결성 (Knowledge Graph)

  1. 각기 다른 형태의 데이터를 공통된 규격인 STIX 2.1 모델을 기반으로 표준화하여 Entity(객체)로 저장합니다.
  2. 노드(Entity)와 엣지(Relationship)로 구성된 지식 그래프(Knowledge Graph)를 형성하여, '공격 조직 → 악성코드 → 대상 산업 → 통신 IP' 등의 관계를 꼬리에 꼬리를 물고 탐색할 수 있습니다.

ⅱ. 정보의 생명주기 및 신뢰도 관리

  1. 데이터가 무작위로 쌓이는 것을 방지하기 위해 중복 데이터를 식별하고 병합(Upsert)하는 체계를 갖추고 있습니다.
  2. 특정 위협 지표(Indicator)의 유효기간과 시간에 따른 점수 감소(Decay)를 관리하여, 오래되거나 변경된 인프라 정보로 인한 오탐을 줄입니다.

Ⅲ. OpenCTI 기술 동작방식

ⅰ. 데이터 수집 및 확장 (Connector 생태계)

  1. Import Connector: 외부 위협 정보 서비스(Feed), 사내 분석 결과, 보안 보고서 등 다양한 출처에서 원시 데이터를 플랫폼으로 가져옵니다.
  2. Enrichment Connector: 플랫폼에 등록된 기본 IP나 도메인 정보에 위치, 외부 평판 데이터 등 부가적인 컨텍스트를 조회하여 자동으로 정보를 보강합니다.

ⅱ. 지식 그래프 구축 및 통합

  1. 수집된 원시 데이터(Observable)를 기반으로 실제 탐지 대상이 되는 지표(Indicator)를 식별합니다.
  2. 식별된 지표들을 공격 조직(Threat Actor), 악성코드(Malware), 공격 패턴(Attack Pattern)과 연계(Relationship 매핑)하여 조직만의 대응 지식으로 축적합니다.

Ⅳ. OpenCTI 기술 구성 및 흐름도

ⅰ. 시스템 구성 아키텍처

  1. 중심 역할을 하는 OpenCTI Core와 데이터를 담는 인프라(Elasticsearch, Redis, MinIO 등), 그리고 외부 통신을 담당하는 메세지 브로커(RabbitMQ)로 구성됩니다.
  2. 내/외부 시스템 간의 정보 교환은 독립된 Worker 형태인 Connector들이 비동기적으로 수행합니다.

ⅱ. 기술 동작 흐름도

  1. 위협 정보가 유입되어 지식으로 축적되고 타 시스템으로 전달되는 전체 데이터 처리 흐름은 아래와 같습니다.
┌───────────────────────────────────────────────────────────┐
│               [ External / Internal Data Sources ]        │
│   (CTI Feeds, Security Reports, Logs, MISP, Manual)       │
└─────────────────────┬─────────────────────────────────────┘
                      │ 1. Data Ingestion
                      ▼
┌───────────────────────────────────────────────────────────┐
│                    [ Connector Layer ]                    │
│ ┌──────────────┐  ┌──────────────────┐  ┌──────────────┐  │
│ │ Import Con.  │  │ Enrichment Con.  │  │ Export Con.  │  │
│ └──────┬───────┘  └────────┬─────────┘  └──────▲───────┘  │
└────────┼───────────────────┼───────────────────┼──────────┘
         │ 2. Structure      │ 3. Add Context    │ 6. Share
         ▼                   ▼                   │
┌────────────────────────────────────────────────┼──────────┐
│                   [ OpenCTI Core ]             │          │
│                                                │          │
│  ┌──────────────────────────────────────────┐  │          │
│  │ 4. Deduplication & Entity Resolution     │  │          │
│  └─────────────────────┬────────────────────┘  │          │
│                        ▼                       │          │
│  ┌──────────────────────────────────────────┐  │          │
│  │ 5. Knowledge Graph (STIX 2.1 Engine)     │──┘          │
│  │  [Threat Actor] ─uses─▶ [Malware]        │             │
│  │        │                   │             │             │
│  │     targets           communicates       │             │
│  │        ▼                   ▼             │             │
│  │    [Sector]             [ IP/URL ]       │             │
│  └──────────────────────────────────────────┘             │
└───────────────────────────────────────────────────────────┘

 

Ⅴ. OpenCTI 기술 설치 방법

ⅰ. 인프라 사전 준비

  1. 플랫폼은 다수의 마이크로서비스로 동작하므로 DockerDocker Compose 환경이 필수적으로 요구됩니다.
  2. Elasticsearch 운영을 위해 호스트 OS의 가상 메모리 설정(vm.max_map_count=262144) 변경 및 최소 16GB 이상의 여유 메모리를 확보해야 합니다.

ⅱ. Docker Compose 기반 배포

  1. OpenCTI 공식 GitHub 릴리즈에서 제공하는 최신 docker-compose.yml 및 .env.sample 파일을 다운로드합니다.
  2. .env 파일에 플랫폼 고유 UUID, 관리자 이메일, 암호, RabbitMQ 및 ElasticSearch 자격 증명 등을 설정한 후 docker-compose up -d 명령어를 통해 실행합니다.

Ⅵ. OpenCTI 기술 사용 방법

ⅰ. 단일 지표(IP, 도메인) 심층 조사

  1. 이상 징후가 발견된 IP나 도메인을 OpenCTI 검색창에 입력하여 과거 사내외에서 관측된 이력이 있는지 즉각 확인합니다.
  2. 해당 지표를 클릭하여 지식 그래프 뷰로 진입한 뒤, 어떤 공격 조직과 연관되어 있는지, 현재 유효성(신뢰도 점수)은 얼마나 되는지 시각적으로 탐색합니다.

ⅱ. 사고(Incident) 및 관측 결과 등록

  1. 운영 시스템에서 반복적인 인증 실패 공격 등이 발생했을 때, 해당 로그 정보를 새로운 Observable(관측 데이터)로 등록합니다.
  2. 과거 지식과 결합하여 'Credential Stuffing' 등의 패턴으로 식별하고, 판단 근거 및 대응 이력을 Relationship으로 연결해 후임자가 재사용할 수 있게 기록합니다.

Ⅶ. OpenCTI 기술 자주 쓰는 명령어

ⅰ. 시스템 및 컨테이너 관리

  1. docker-compose up -d : OpenCTI 플랫폼 및 백그라운드 인프라(DB, 큐, 워커) 일괄 실행
  2. docker-compose logs -f [서비스명] : 특정 모듈(예: opencti, elasticsearch)의 실시간 상태 및 에러 로그 모니터링
  3. docker-compose down -v : 시스템 정지 및 모든 볼륨(데이터) 삭제 (초기화 시 사용)

ⅱ. 커넥터 운영 및 트러블슈팅

  1. python3 -m pip install -r requirements.txt : 사용자 정의 커넥터를 위한 파이썬 의존성 패키지 설치
  2. python3 [connector_name].py : 특정 커넥터를 수동으로 실행하여 데이터 수집 연동 테스트 진행

Ⅷ. OpenCTI 기술 활용방안

ⅰ. 보안 관제 업무의 일원화 및 효율화

  1. 의심스러운 요청 발생 시 여러 평판 사이트나 엑셀 파일을 일일이 뒤질 필요 없이, OpenCTI 한 곳에서 과거 분석 이력과 외부 피드를 대조하여 즉각적인 의사결정을 내립니다.
  2. 검증된 악성 IP와 도메인 목록(Indicator)을 Export Connector를 통해 내부 방화벽이나 WAF(웹 방화벽) 블랙리스트로 자동 연동합니다.

ⅱ. AI 기술과의 결합 시너지

  1. AI를 활용해 장문의 비정형 위협 분석 보고서나 보안 메일에서 핵심 지표(IP, 도메인, 공격 조직 등)를 자동 추출하여 OpenCTI에 구조화된 데이터로 입력합니다.
  2. 반대로 OpenCTI에 축적된 복잡한 지식 그래프 데이터를 AI에 제공하여, 운영자가 즉시 이해할 수 있는 형태의 자연어 분석 보고서 초안을 자동 생성합니다.

Ⅸ. OpenCTI 기술 트러블 슈팅

ⅰ. 데이터베이스 및 메모리 이슈 해결

  1. 플랫폼이 느려지거나 구동되지 않을 경우 대부분 Elasticsearch의 OOM(Out of Memory) 현상이 원인이므로, .env 파일 내 JVM Heap 사이즈 리밋 설정을 상향 조정합니다.
  2. Redis나 MinIO에서 볼륨 권한 오류가 발생할 경우, 각 데이터 저장 폴더의 소유권(chown)이 Docker 컨테이너의 실행 유저와 일치하는지 확인합니다.

ⅱ. 커넥터 연동 및 동기화 지연 해결

  1. 외부 피드 수집이 멈췄을 때는 RabbitMQ의 큐(Queue)에 메시지가 적체되어 있는지 확인하고, 필요시 큐를 초기화(Purge)하여 데이터 흐름을 재개합니다.
  2. OpenCTI Core의 토큰(Token) 정보와 Connector 설정 파일의 토큰 정보가 불일치하여 인증 오류가 발생하는 경우가 많으므로, 구성 파일의 일치 여부를 최우선 점검합니다.
반응형