Cyberprobe
전체 문서는 https://cybermaggedon.github.io/cyberprobe-docs/ 에 있습니다.
요약
Cyberprobe는 네트워크 실시간 모니터링을 위한 네트워크 패킷 검사 툴킷(심층 패킷 검사)입니다. 이는 네트워크 모니터링, 침입 탐지, 포렌식 분석, 방어 플랫폼으로 활용됩니다. Cyberprobe 패킷 검사는 물리적 네트워크뿐만 아니라 클라우드 VPC에서도 작동합니다. 클라우드 규모 배포를 가능하게 하는 기능이 있습니다.
이것은 바로 사용할 수 있는 단일한 모놀리식 침입 탐지 툴킷이 아닙니다. 그런 것이 필요하다면 다른 도구를 찾아보시길 권장합니다. 대신, Cyberprobe는 다양한 패킷 검사 작업을 관리하기 위해 여러 방식으로 결합할 수 있는 유연한 구성 요소 집합입니다. 맞춤형 네트워크 분석을 구축하려면 이를 간단하게 만들어주는 많은 인터페이스가 있습니다.
이 프로젝트는 다음을 포함한 여러 구성 요소를 유지 관리합니다:
- cyberprobe: 데이터 패킷을 수집하여 실시간으로 네트워크 스트림 프로토콜로 전달합니다. 패킷 수집은 IP 주소, CIDR 범위 또는 전체 수집으로 대상을 지정할 수 있습니다. 수집된 패킷은 장치 식별자로 태깅됩니다. cyberprobe는 Snort와 통합되어 Snort 규칙이 트리거될 때 IP 주소를 동적으로 대상 지정할 수 있습니다.
- cybermon: 수집된 패킷 스트림을 수신하여 상태 저장 처리를 수행하고 네트워크 이벤트를 설명하는 관측 스트림을 생성합니다. 이벤트는 다양한 방식으로 소비될 수 있습니다. 예를 들어, 이벤트는 pub/sub 시스템에 전달되거나 gRPC 서비스에 제공될 수 있습니다. 이벤트 처리는 Lua로 작성된 함수로 구현되므로 사용자 정의 이벤트 처리를 추가할 수 있습니다.
- 수집된 데이터를 활용하는 데 사용할 수 있는 구독자 집합입니다. 예를 들어 ElasticSearch, BigQuery 또는 Gaffer에 저장합니다.
Cyberprobe
프로브 cyberprobe는 다음과 같은 기능이 있습니다:
- 인터페이스에서 패킷을 수집하고 구성 가능한 주소 목록과 일치하는 패킷을 전달하도록 작업을 할당할 수 있습니다. 주소 목록은 개별 IP 주소, CIDR 범위 또는 전체 수집 작업('0.0.0.0/0')이 될 수 있습니다.
- Snort 알림을 수신하도록 구성할 수 있습니다. 이 구성에서 Snort로부터 알림이 수신되면 해당 알림과 연관된 IP 소스 주소가 구성 가능한 시간 동안 동적으로 대상 지정됩니다. 이는 예를 들어 Snort 규칙을 트리거하여 잠재적 공격자로 식별된 네트워크 행위자로부터 데이터를 수집하는 데 유용합니다.
- 선택적으로 상태의 원격 조회 및 구성 변경을 허용하는 관리 API를 제공할 수 있습니다. 이를 통해 대상 맵을 동적으로 변경하고 다른 시스템과 통합할 수 있습니다.
- 두 가지 표준 스트림 프로토콜 중 하나로 전달하도록 구성할 수 있습니다.
- 구성 가능한 기간의 패킷 수집 지연 라인을 삽입할 수 있습니다. 이는 예를 들어 Snort 알림 트리거와 함께 사용하여 알림을 트리거하는 모든 패킷이 수집되도록 하는 데 유용할 수 있습니다.
Cybermon
모니터 도구 cybermon은 다음과 같은 기능이 있습니다:
- 하나 이상의 cyberprobe 인스턴스에서 ETSI 스트림 프로토콜로 전달된 패킷을 분석합니다.
- 여러 패킷 프로토콜을 디코딩하여 네트워크 이벤트를 감지하며, 이는 거의 실시간으로 구성에 전달됩니다.
- 디코딩된 정보는 사용자 구성 가능한 로직(Lua로 작성)에 제공되어 디코딩된 데이터가 처리되는 방식을 정의합니다. RabbitMQ에 JSON으로 전달, gRPC 엔드포인트로 전달, Redis 큐로 전달하는 샘플 구성 파일이 제공됩니다.
- TCP 연결 재설정 및 DNS 응답 위조를 허용하는 패킷 위조 기술이 포함되어 있습니다. 이는 Lua 구성에서 호출할 수 있습니다.
- IP, TCP, UDP, ICMP, HTTP, DNS, SMTP, FTP, TLS 등을 지원합니다. 코드는 Linux 플랫폼을 대상으로 하지만 다른 UN*X 계열 플랫폼에도 적용할 수 있을 정도로 일반적입니다.
구독자
cybermon의 이벤트 스트림은 JSON 형식으로 RabbitMQ에 제공될 수 있으며, 이후 추가 분석에 전달될 수 있습니다:
- evs-alert는 이벤트에서 지표 적중을 표준 출력으로 보고합니다.
- evs-cassandra는 이벤트를 Cassandra에 로드합니다.
- evs-detector는 이벤트에서 지표 존재 여부를 연구합니다. 관찰된 지표 적중이 있으면 이벤트에 주석이 추가됩니다.
- evs-dump는 원시 이벤트 JSON을 표준 출력으로 덤프합니다.
- evs-elasticsearch는 이벤트를 ElasticSearch에 로드합니다.
- evs-gaffer는 네트워크 정보를 Gaffer(그래프 데이터베이스)에 로드합니다.
- evs-geoip는 GeoIP에서 IP 주소를 조회하고 이벤트에 위치 정보를 주석으로 추가합니다.
- evs-monitor는 이벤트 정보를 표준 출력으로 출력합니다.
확장
아키텍처는 AWS Traffic Mirroring을 지원하며, 클라우드 규모 배포를 지원합니다:
- 여러 cyberprobe 인스턴스는 로드 밸런서 뒤에 있는 여러 cybermon 인스턴스 간에 부하를 분산할 수 있습니다.
- cybermon의 이벤트 스트림은 pub/sub 시스템에 전달되어 부하를 분산하고 확장을 허용할 수 있습니다.
추가 정보
소프트웨어를 배우는 가장 쉬운 방법은 Quick Start 튜토리얼을 따르는 것입니다.