반응형
Ⅰ. OpenCTI 기술이란?
ⅰ. OpenCTI의 정의
- 여러 곳에 흩어져 있는 기술적·비기술적 위협 정보를 구조화하고 저장하며, 이를 조직의 지식으로 축적할 수 있도록 돕는 오픈소스 기반 CTI(사이버 위협 인텔리전스) 플랫폼입니다.
- 단순한 로그나 방화벽 차단 내역을 넘어, 해당 정보들이 알려진 위협과 어떤 관계가 있는지 맥락을 추가해 판단과 대응에 활용할 수 있는 인텔리전스로 변환합니다.
ⅱ. 도입 배경 및 필요성
- 사이버 공격 발생 시 시스템 접속 로그, 방화벽 차단 기록, 외부 위협 보고서 등 확인해야 할 데이터가 여러 시스템과 부서에 분산되어 있어 신속한 분석이 어렵습니다.
- IP, 도메인 등 단편적인 정보(IOC)를 넘어 누가, 왜, 어떻게 공격했는지에 대한 연관 관계를 추적하고 과거의 대응 지식을 재사용하기 위해 플랫폼이 필요해졌습니다.
Ⅱ. OpenCTI 기술 특징
ⅰ. 데이터 구조화 및 연결성 (Knowledge Graph)
- 각기 다른 형태의 데이터를 공통된 규격인 STIX 2.1 모델을 기반으로 표준화하여 Entity(객체)로 저장합니다.
- 노드(Entity)와 엣지(Relationship)로 구성된 지식 그래프(Knowledge Graph)를 형성하여, '공격 조직 → 악성코드 → 대상 산업 → 통신 IP' 등의 관계를 꼬리에 꼬리를 물고 탐색할 수 있습니다.
ⅱ. 정보의 생명주기 및 신뢰도 관리
- 데이터가 무작위로 쌓이는 것을 방지하기 위해 중복 데이터를 식별하고 병합(Upsert)하는 체계를 갖추고 있습니다.
- 특정 위협 지표(Indicator)의 유효기간과 시간에 따른 점수 감소(Decay)를 관리하여, 오래되거나 변경된 인프라 정보로 인한 오탐을 줄입니다.
Ⅲ. OpenCTI 기술 동작방식
ⅰ. 데이터 수집 및 확장 (Connector 생태계)
- Import Connector: 외부 위협 정보 서비스(Feed), 사내 분석 결과, 보안 보고서 등 다양한 출처에서 원시 데이터를 플랫폼으로 가져옵니다.
- Enrichment Connector: 플랫폼에 등록된 기본 IP나 도메인 정보에 위치, 외부 평판 데이터 등 부가적인 컨텍스트를 조회하여 자동으로 정보를 보강합니다.
ⅱ. 지식 그래프 구축 및 통합
- 수집된 원시 데이터(Observable)를 기반으로 실제 탐지 대상이 되는 지표(Indicator)를 식별합니다.
- 식별된 지표들을 공격 조직(Threat Actor), 악성코드(Malware), 공격 패턴(Attack Pattern)과 연계(Relationship 매핑)하여 조직만의 대응 지식으로 축적합니다.
Ⅳ. OpenCTI 기술 구성 및 흐름도
ⅰ. 시스템 구성 아키텍처
- 중심 역할을 하는 OpenCTI Core와 데이터를 담는 인프라(Elasticsearch, Redis, MinIO 등), 그리고 외부 통신을 담당하는 메세지 브로커(RabbitMQ)로 구성됩니다.
- 내/외부 시스템 간의 정보 교환은 독립된 Worker 형태인 Connector들이 비동기적으로 수행합니다.
ⅱ. 기술 동작 흐름도
- 위협 정보가 유입되어 지식으로 축적되고 타 시스템으로 전달되는 전체 데이터 처리 흐름은 아래와 같습니다.
┌───────────────────────────────────────────────────────────┐
│ [ 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 기술 설치 방법
ⅰ. 인프라 사전 준비
- 플랫폼은 다수의 마이크로서비스로 동작하므로 Docker 및 Docker Compose 환경이 필수적으로 요구됩니다.
- Elasticsearch 운영을 위해 호스트 OS의 가상 메모리 설정(vm.max_map_count=262144) 변경 및 최소 16GB 이상의 여유 메모리를 확보해야 합니다.
ⅱ. Docker Compose 기반 배포
- OpenCTI 공식 GitHub 릴리즈에서 제공하는 최신 docker-compose.yml 및 .env.sample 파일을 다운로드합니다.
- .env 파일에 플랫폼 고유 UUID, 관리자 이메일, 암호, RabbitMQ 및 ElasticSearch 자격 증명 등을 설정한 후 docker-compose up -d 명령어를 통해 실행합니다.
Ⅵ. OpenCTI 기술 사용 방법
ⅰ. 단일 지표(IP, 도메인) 심층 조사
- 이상 징후가 발견된 IP나 도메인을 OpenCTI 검색창에 입력하여 과거 사내외에서 관측된 이력이 있는지 즉각 확인합니다.
- 해당 지표를 클릭하여 지식 그래프 뷰로 진입한 뒤, 어떤 공격 조직과 연관되어 있는지, 현재 유효성(신뢰도 점수)은 얼마나 되는지 시각적으로 탐색합니다.
ⅱ. 사고(Incident) 및 관측 결과 등록
- 운영 시스템에서 반복적인 인증 실패 공격 등이 발생했을 때, 해당 로그 정보를 새로운 Observable(관측 데이터)로 등록합니다.
- 과거 지식과 결합하여 'Credential Stuffing' 등의 패턴으로 식별하고, 판단 근거 및 대응 이력을 Relationship으로 연결해 후임자가 재사용할 수 있게 기록합니다.
Ⅶ. OpenCTI 기술 자주 쓰는 명령어
ⅰ. 시스템 및 컨테이너 관리
- docker-compose up -d : OpenCTI 플랫폼 및 백그라운드 인프라(DB, 큐, 워커) 일괄 실행
- docker-compose logs -f [서비스명] : 특정 모듈(예: opencti, elasticsearch)의 실시간 상태 및 에러 로그 모니터링
- docker-compose down -v : 시스템 정지 및 모든 볼륨(데이터) 삭제 (초기화 시 사용)
ⅱ. 커넥터 운영 및 트러블슈팅
- python3 -m pip install -r requirements.txt : 사용자 정의 커넥터를 위한 파이썬 의존성 패키지 설치
- python3 [connector_name].py : 특정 커넥터를 수동으로 실행하여 데이터 수집 연동 테스트 진행
Ⅷ. OpenCTI 기술 활용방안
ⅰ. 보안 관제 업무의 일원화 및 효율화
- 의심스러운 요청 발생 시 여러 평판 사이트나 엑셀 파일을 일일이 뒤질 필요 없이, OpenCTI 한 곳에서 과거 분석 이력과 외부 피드를 대조하여 즉각적인 의사결정을 내립니다.
- 검증된 악성 IP와 도메인 목록(Indicator)을 Export Connector를 통해 내부 방화벽이나 WAF(웹 방화벽) 블랙리스트로 자동 연동합니다.
ⅱ. AI 기술과의 결합 시너지
- AI를 활용해 장문의 비정형 위협 분석 보고서나 보안 메일에서 핵심 지표(IP, 도메인, 공격 조직 등)를 자동 추출하여 OpenCTI에 구조화된 데이터로 입력합니다.
- 반대로 OpenCTI에 축적된 복잡한 지식 그래프 데이터를 AI에 제공하여, 운영자가 즉시 이해할 수 있는 형태의 자연어 분석 보고서 초안을 자동 생성합니다.
Ⅸ. OpenCTI 기술 트러블 슈팅
ⅰ. 데이터베이스 및 메모리 이슈 해결
- 플랫폼이 느려지거나 구동되지 않을 경우 대부분 Elasticsearch의 OOM(Out of Memory) 현상이 원인이므로, .env 파일 내 JVM Heap 사이즈 리밋 설정을 상향 조정합니다.
- Redis나 MinIO에서 볼륨 권한 오류가 발생할 경우, 각 데이터 저장 폴더의 소유권(chown)이 Docker 컨테이너의 실행 유저와 일치하는지 확인합니다.
ⅱ. 커넥터 연동 및 동기화 지연 해결
- 외부 피드 수집이 멈췄을 때는 RabbitMQ의 큐(Queue)에 메시지가 적체되어 있는지 확인하고, 필요시 큐를 초기화(Purge)하여 데이터 흐름을 재개합니다.
- OpenCTI Core의 토큰(Token) 정보와 Connector 설정 파일의 토큰 정보가 불일치하여 인증 오류가 발생하는 경우가 많으므로, 구성 파일의 일치 여부를 최우선 점검합니다.
반응형
'어플리케이션' 카테고리의 다른 글
| 가트너가 주목한 사이버 보안 프레임워크: CTEM이란 무엇이고 어떻게 구축할까? (0) | 2026.07.20 |
|---|---|
| 파이썬으로 완성하는 실시간 스트리밍: Bytewax (1) | 2026.07.16 |
| 백그라운드 잡 분열의 끝, Postgres 위 분산 큐 Hatchet (0) | 2026.07.03 |
| VPN·점프호스트의 끝, 제로트러스트 액세스 플랫폼 Teleport (0) | 2026.07.02 |
| Kong의 PG 의존·5초 Reload를 끝낸다, Apache APISIX (0) | 2026.06.30 |