작성일 : 25-06-20 23:40
신박한 네이버 플레이스 전화번호 DB 추출 자동수집기 여러분의 영업 파트너
 글쓴이 : Brianna
조회 : 99   추천 : 0  

아래 DB수집기 댕이댕이 채널을 구독해주시면 포스팅에 힘이 됩니다.​​​OpenCTI 최근에 회사에서 OpenCTI로 프로젝트를 할 일이 생겼다. 관련하여 문서를 찾아보는데, 국내 자료는 거의 없고 대부분 해외 유튜브 영상 혹은 docs 밖에 없었다. 이에, 내가 직접 블로그에 작성하여 OpenCTI에 대해 리뷰하여 TI 데이터를 효율적으로 관리 해볼 수 있도록 해볼 예정이다. 내가 조사한 바가 맞다면 OpenCTI를 세부적으로 포스팅하는 것은 내가 최초일 듯 싶다.​OpenCTI는 기본적으로 사이버 위협 인텔리전스(Cyber Threat Intelligence, CTI) 플랫폼이다.플랫폼은 데이터를 수집해주고 이를 관리해줄 수 있다. 그치만, OpenCTI 플랫폼은 TI(Threat Intelligence) 데이터에 특화 되어있다. TI 데이터 특성상 데이터가 상호 연관이 된 케이스가 많은데 (예를들어, HASH와 C2 IP 등) 이러한 특징을 기반으로 데이터 타입을 정의한 것이 Stix 데이터 표준 타입이다 (Stix에 대한 설명은 뒤에서)​OpenCTI는 이러한 데이터 타입을 기반으로 데이터를 수집 DB수집기 및 관리를 한다. 또한, 플랫폼 답게 여러 데이터 파이프라인 미들웨어(RabbitMQ 같은)를 통해 데이터 수집에 대한 핸들링을 안정성 있게 해준다.​이러한 플랫폼을 사용하는 이유는 Threat Intelligence 데이터를 효율적으로 관리하는 플랫폼을 만듦으로서 기업 내 보안 관제 운영 업무에 있어 SIEM 장비/SOAR 오케스트레이션과 연계 할 시 아래와 같은 효과를 기대할 수 있다.분석가 능력 상향 표준화 : 분석가에게 TI 정보에 대한 지표를 제공업무 자동화 처리 : 신뢰된 TI 정보가 존재 시 이를 보안관제에서는 자동 정/오탐 구분을 할 수 있는 Key가 되어 분석가의 피로도를 낮출 수 있음​다만, 이러한 플랫폼의 경우 오픈 소스 기반이다보니 기업에서는 선듯 구축을 하기 어렵다.오픈 소스라는 점에 의해 취약점 노출가능보안 전문인 및 관리직인 직군일 시 쉽게 구축할 수 없음​하지만, 규모가 큰 기업에 입장에서는 이미 여러 TI 업체와 DB수집기 계약을 한 경우가 많은데 이러한 데이터를 제대로 활용하지 못하는 경우가 다반사이다. 그 이유는 TI 데이터를 제공해주나 이를 제대로 쌓지는 못하는 경우가 많다. 또한, 데이터를 쌓긴 하여도 이를 쌓는 개발자가 데이터에 대한 타입을 이해하지 못하여, 데이터에 대한 중요성을 알 수가 없다.이러한 상황을 해소시켜주는 것이 OpenCTI와 같은 TI 플랫폼이다.​​OpenCTI (Open Cyber Threat Intelligence)OpenCTI는 사이버 위협 인텔리전스를 관리하고 분석하기 위한 오픈 소스 플랫폼입니다. 주로 다음과 같은 기능을 제공합니다위협 데이터 통합 : 다양한 소스에서 위협 데이터를 수집하고 이를 통합하여 관리합니다.분석 및 시각화 : 수집된 데이터를 분석하고 시각화하여 이해하기 쉽게 제공합니다.협업 : 보안 팀 내에서 위협 정보를 공유하고 협업할 수 있는 기능을 제공합니다.API 및 확장성 : 다른 보안 도구와 통합할 수 있는 API를 제공하며, 커스터마이징이 가능합니다.OpenCTI는 주로 조직 내 DB수집기 보안 팀이 위협 인텔리전스 데이터를 효율적으로 관리하고 분석하는 데 사용됩니다.​OpenCTI ConnectorOpenCTI Connector는 타 플랫폼과의 연동을 위한 도구이다.타 플랫폼으로의 Export, 타 플랫폼으로부터 Import라는 기능을 지원한다.위 링크를 가서 봐보면 정말 많은 커넥터를 지원한다AlienVaultCVECrowdStrikeCybercrime TrackerFiereyeKasperskyMalPediaLastinfoSecMISPMITRE ATT&CKOpenCTI DatasetsValhalla 등등..지원가능 타 플랫폼 데이터 임포트 ​데이터 저장 방식​1. TI 데이터 타입​OpenCTI​- 위협 행위자 (Threat Actors)- 공격 인프라 (Attack Infrastructure)- 취약점 (Vulnerabilities)- 지표 (Indicators)- 사건 (Incidents)- 전술, 기법 및 절차 (Tactics, Techniques, and Procedures, TTPs)- 관계 (Relationships between entities)​2. 데이터 공통 타입​버전: STIX 2.x용도: 위협 인텔리전스 데이터를 표현하고 교환하기 위한 구조화된 언어로, 위협 행위자, 캠페인, 공격 패턴, 지표, 공격 인프라 등 다양한 위협 요소를 상세히 기술할 수 있습니다.특징: JSON 기반의 포맷으로 높은 확장성과 상호 운용성을 제공하며, 위협 데이터를 표준화된 방식으로 저장 DB수집기 및 공유할 수 있습니다.​2. OpenCTI 데이터 모델OpenCTI는 STIX 표준을 따르며, 데이터를 위협 행위자, 지표, 인프라, 사건, 캠페인 등으로 구조화합니다.각 데이터 요소는 STIX 객체로 표현되며, OpenCTI는 이러한 객체들을 연결하고 관계를 맺어 위협 인텔리전스의 전반적인 맥락을 제공합니다.TI 수집 구조이번에 장기적으로 해볼 포스팅은 OpenCTI를 아래와 같이 docker-compose로 구축한 뒤 MISP(이후 포스팅에서 설명) 및 여타 다른 TI 데이터 제공 서비스로 부터 데이터를 수집하여, OpenCTI UI에 수집 된 데이터를 띄우는 것이다.​대략적인 구조는 아래와 같다.​ElasticSearch : TI에 대한 데이터를 Stix 형태로 저장하는 데이터베이스(검색엔진)이다.Kibana : ElasticSearch에 데이터가 정상적으로 쌓일 수 있는 화면을 제공한다.MinIO : 수집 된 데이터 중 파일 형태 바이너리 데이터를 저장한다.RabbitMQ : 데이터 수집이 대량으로 들어올 시 job 내용을 Queue에 쌓아 worker가 처리할 업무를 순차적으로 처리할 수 있도록 해준다.OpenCTI DB수집기 Worker : RabbitMQ Job Task를 읽어들여 파싱/DB저장/전처리 업무 등을 수행한다. 본 포스팅에서는 worker의 replica를 총 3개 띄울 것이다.​​Docker-Compose를 통한 OpenCTI 설치Docker에 대한 자세한 설치 과정은 생략한다.[설치 링크를 남겨드리겠습니다 (Windows 기준)]Docker Desktop is collaborative containerization software for developers. Get started and download Docker Desktop today on Mac, Windows, or Linux.​​docker 간 연결 통신 설정Docker Network 설정이 필요한 이유는 docker-compose 내 여러 docker container에 대해 상호간 연결이 필요하므로, 별도의 network 공간을 만들어서 openCTI 컨테이너간 통신을 할 수 있도록 한다.​이를 위해 docker 컨테이너 내부를 오버레이 네트워크로 구성한다.​Global Scope (Overlay) 네트워크여러 Docker 호스트에서 네트워크를 사용하려면 Docker Swarm 클러스터를 설정하고 Overlay 네트워크를 사용해야 한다.아래는 Overlay 네트워크를 사용하는 예제​a. Docker Swarm 초기화 먼저b. Overlay 네트워크 생성c. network 확인​OpenCTI 설치 ​OpenCTI DB수집기 Docker github 이동 OpenCTI Docker deployment helpers. Contribute to OpenCTI-Platform/docker development by creating an account on GitHub.2. git clone 수행 혹은 zip 으로 source 코드 받기전체적인 파일 구조​3. env 파일 명 수정 및 데이터 수정env 파일 내 패스워드 부분과 token 부분 uuid 작성OPENCTI_ADMIN_TOKEN*_ID​Online UUID Generator Your Version 4 UUID: 1245dc1d-5174-4d80-9fde-cc04cbf883eb Copy Refresh page to generate another. Version 4 UUID Generator Generate a version 4 UUID Bulk Version 4 UUID Generation How Many? Generate Download to a file What is a version 4 UUID? A Version 4 UUID is a universally u...​4. OpenCTI yml 파일 수정docker-compose.yml 파일에 추가적인 정보 입력. 수정 된 정보는 아래와 같음Kibana 추가RabbitMQ manage port 외부 연결network 설정 추가Volume 데이터 마운트 공간 DB수집기 수정MISP container 추가(자세한 내용은 다음 포스팅에서)​아래부턴 docker-compose.yml 파일임.5. openCTI 실행실행까지 10~15분 소요 가능docker container간 network 통신 정상 유무 확인 의도하는 docker container name들이 정상 적으로 opencti_overlay_net에 포함 되어있으면 성공적으로 통신하는 것임.​설치 된 컨테이너 확인OpenCTI 접근하지만, 아직 데이터가 아무것도 없다. 데이터 수집기가 아직 연결이 되질 않았으므로 정상이다. 데이터 수집기와의 연결은 다음 포스팅에서 진행하겠다.​2. kibana 접근아직 데이터가 없으므로 확인 할 수 있는 데이터는 없으나 아래와 같이 index를 생성해서 데이터에 대한 테이블을 확인할 수 있다.3. RabbitMQ데이터가 수집 될 시 RabbitMQ로 먼저 실행해야 될 Job 이 생성되고 Queue에 쌓인 뒤 Worker가 이를 consume하여, Job Task를 실행한다.위치는 localhost:15672 로 계정 정보는 .env에서 정의함.끝. 다음 포스팅은 아래와 같이 진행할 예정이다.OpenCTI API 통한 데이터 수집 수동 반영OpenCTI 플랫폼 성능 최적화 방법

DB수집기