Packet Analyzer MCP

Packet Analyzer MCP

Enables network packet capture, analysis, and threat detection via distributed client-server architecture with RabbitMQ, PostgreSQL, and external security APIs (NVD CVE, MITRE ATT&CK, AbuseIPDB).

Category
Visit Server

README

Packet Analyzer MCP

네트워크 패킷을 캡처하고 분석하는 MCP (Model Context Protocol) 서버 시스템입니다. 클라이언트-서버 아키텍처로 구성되어 있으며, 여러 호스트에서 패킷을 수집하여 중앙에서 분석할 수 있습니다.

개요

이 프로젝트는 네트워크 보안 모니터링 및 분석을 위한 분산 시스템입니다:

  • 클라이언트: 각 호스트에서 tcpdump로 패킷을 캡처하고 Kafka로 전송
  • 서버: Kafka에서 패킷을 수집하고 PostgreSQL에 저장한 후 외부 보안 API로 분석
  • RAG 시스템: 취약 IP 정보를 벡터 데이터베이스에 저장하고 시맨틱 검색으로 매칭

시스템 아키텍처

┌─────────────────┐
│   Client 1      │──┐
│  (Host A)       │  │
└─────────────────┘  │
                     │
┌─────────────────┐  │     ┌─────────────────┐     ┌──────────────────┐
│   Client 2      │──┼────▶│   Kafka         │────▶│   Server         │
│  (Host B)       │  │     │   Message Queue │     │  - Packet Store  │
└─────────────────┘  │     └─────────────────┘     │  - Analyzer      │
                     │                             │  - RAG System    │
┌─────────────────┐  │                             └──────────────────┘
│   Client N      │──┘                                      │
│  (Host N)       │                                         ▼
└─────────────────┘                                ┌──────────────────┐
                                                   │   PostgreSQL     │
                                                   │   + pgvector     │
                                                   │   Database       │
                                                   └──────────────────┘
                                                            │
                                                            ▼
                                                   ┌──────────────────┐
                                                   │  External APIs   │
                                                   │  - NVD CVE       │
                                                   │  - MITRE ATT&CK  │
                                                   │  - AbuseIPDB     │
                                                   └──────────────────┘

주요 기능

클라이언트 (Packet Capture)

  • tcpdump를 사용한 실시간 패킷 캡처
  • Scapy를 사용한 패킷 파싱 (TCP, UDP, ICMP)
  • BPF 필터 지원
  • pcap 파일 파싱 및 전송
  • Kafka를 통한 배치 전송
  • 여러 네트워크 인터페이스 지원

서버 (Packet Analysis)

  • Kafka 컨슈머로 패킷 수집
  • PostgreSQL + pgvector에 패킷 저장 및 인덱싱
  • 외부 보안 API 통합
    • NVD CVE 데이터베이스 검색
    • MITRE ATT&CK 프레임워크 매핑
    • AbuseIPDB 위협 인텔리전스
  • 자동 패킷 분석
    • 악의적 IP 탐지
    • 포트 스캔 탐지
    • 안전하지 않은 프로토콜 탐지
    • 비정상 트래픽 탐지
  • RAG 기반 취약 IP 관리
    • 벡터 임베딩을 통한 시맨틱 검색
    • 취약 IP 데이터베이스 구축
    • 실시간 패킷-위협 매칭
  • 통계 및 리포팅
    • 프로토콜 분포
    • Top Talkers
    • 위협 요약

설치

1. 프로젝트 클론

git clone <repository-url>
cd packet-analyzer-mcp

2. Python 패키지 설치

uv를 사용하는 경우:

uv sync

또는 pip를 사용하는 경우:

pip install -e .

3. 인프라 설정

PostgreSQL 설치 및 설정

# Ubuntu/Debian
sudo apt-get install postgresql postgresql-contrib

# macOS
brew install postgresql
brew services start postgresql

# 데이터베이스 생성
sudo -u postgres psql
CREATE DATABASE packet_analyzer;
CREATE USER packet_user WITH PASSWORD 'your_password';
GRANT ALL PRIVILEGES ON DATABASE packet_analyzer TO packet_user;
\q

RabbitMQ 설치 및 설정

# Ubuntu/Debian
sudo apt-get install rabbitmq-server
sudo systemctl start rabbitmq-server
sudo systemctl enable rabbitmq-server

# macOS
brew install rabbitmq
brew services start rabbitmq

# 웹 관리 콘솔 활성화 (선택사항)
sudo rabbitmq-plugins enable rabbitmq_management
# http://localhost:15672 (guest/guest)

4. 환경 변수 설정

서버 설정 (server/.env)

POSTGRES_HOST=localhost
POSTGRES_PORT=5432
POSTGRES_DB=packet_analyzer
POSTGRES_USER=packet_user
POSTGRES_PASSWORD=your_password

RABBITMQ_HOST=localhost
RABBITMQ_PORT=5672
RABBITMQ_USER=guest
RABBITMQ_PASSWORD=guest
RABBITMQ_QUEUE=packet_queue

# 선택사항: 외부 API 키
NVD_API_KEY=your_nvd_api_key
ABUSEIPDB_API_KEY=your_abuseipdb_api_key

클라이언트 설정 (client/.env)

RABBITMQ_HOST=your_server_ip
RABBITMQ_PORT=5672
RABBITMQ_USER=guest
RABBITMQ_PASSWORD=guest
RABBITMQ_QUEUE=packet_queue

CLIENT_ID=laptop-01

사용법

서버 실행

python -m server.server

클라이언트 실행

python -m client.client

Claude Desktop과 통합

Claude Desktop 설정 파일 (claude_desktop_config.json)에 추가:

{
  "mcpServers": {
    "packet-analyzer-server": {
      "command": "python",
      "args": ["-m", "server.server"],
      "cwd": "/path/to/packet-analyzer-mcp",
      "env": {
        "POSTGRES_HOST": "localhost",
        "POSTGRES_DB": "packet_analyzer",
        "POSTGRES_USER": "packet_user",
        "POSTGRES_PASSWORD": "your_password",
        "RABBITMQ_HOST": "localhost"
      }
    },
    "packet-analyzer-client": {
      "command": "python",
      "args": ["-m", "client.client"],
      "cwd": "/path/to/packet-analyzer-mcp",
      "env": {
        "RABBITMQ_HOST": "localhost",
        "CLIENT_ID": "my-laptop"
      }
    }
  }
}

사용 예시

클라이언트 사용 예

사용 가능한 네트워크 인터페이스를 보여줘
→ list_interfaces 도구 실행

eth0 인터페이스에서 HTTP 트래픽 100개를 캡처해서 서버로 전송해줘
→ capture_and_send 도구 실행 (interface: eth0, filter: "tcp port 80", packet_count: 100)

/home/user/capture.pcap 파일을 분석을 위해 서버로 전송해줘
→ send_pcap_file 도구 실행

서버 사용 예

최근 1시간 동안의 패킷을 분석해줘
→ analyze_packets 도구 실행

192.168.1.100 IP의 위협 정보를 알려줘
→ query_threats 도구 실행

오늘 패킷 통계를 보여줘 (프로토콜 분포, Top Talkers)
→ get_statistics 도구 실행

SMB 취약점을 검색해줘
→ search_cve 도구 실행 (keyword: "SMB")

포트 스캔 관련 MITRE ATT&CK 기법을 알려줘
→ check_mitre_technique 도구 실행 (keyword: "port scanning")

최근 HIGH 심각도 위협 목록을 보여줘
→ get_recent_threats 도구 실행 (severity: "HIGH")

보안 고려사항

권한 관리

  • 패킷 캡처는 관리자 권한이 필요합니다
  • 최소 권한 원칙을 따르세요
  • 프로덕션 환경에서는 전용 사용자 계정을 사용하세요

데이터 보안

  • 캡처된 패킷에는 민감한 정보가 포함될 수 있습니다
  • 저장된 데이터에 대한 접근 제어를 구현하세요
  • 불필요한 데이터는 정기적으로 삭제하세요
  • 데이터베이스 암호화를 고려하세요

네트워크 보안

  • RabbitMQ와 PostgreSQL에 대한 접근을 제한하세요
  • TLS/SSL을 사용하여 통신을 암호화하세요
  • 방화벽 규칙을 적절히 구성하세요

준수 사항

  • 조직의 보안 정책을 준수하세요
  • 법적 요구사항을 확인하세요 (예: GDPR, HIPAA)
  • 패킷 캡처 전에 적절한 승인을 받으세요

기술 스택

구성 요소 기술
언어 Python 3.11+
MCP SDK mcp
데이터베이스 PostgreSQL 12+
메시지 큐 RabbitMQ 3.8+
패킷 캡처 tcpdump, Scapy
외부 API NVD CVE, MITRE ATT&CK, AbuseIPDB
패키지 관리 uv

프로젝트 구조

packet-analyzer-mcp/
├── server/                 # 서버 패키지
│   ├── __init__.py
│   ├── server.py          # MCP 서버
│   ├── database.py        # PostgreSQL 연결
│   ├── message_queue.py   # RabbitMQ 컨슈머
│   ├── analyzers.py       # 패킷 분석 로직
│   ├── external_apis.py   # 외부 API 클라이언트
│   └── README.md          # 서버 문서
├── client/                # 클라이언트 패키지
│   ├── __init__.py
│   ├── client.py         # MCP 클라이언트
│   ├── packet_capture.py # tcpdump 래퍼
│   ├── message_queue.py  # RabbitMQ 프로듀서
│   └── README.md         # 클라이언트 문서
├── pyproject.toml        # 프로젝트 설정
├── main.py               # 기존 엔트리 포인트
└── README.md             # 이 파일

문제 해결

일반적인 문제

  1. Permission Denied (tcpdump)

    • sudo 권한 확인
    • setcap로 권한 부여: sudo setcap cap_net_raw,cap_net_admin=eip /usr/sbin/tcpdump
  2. RabbitMQ 연결 실패

    • 서비스 상태 확인: sudo systemctl status rabbitmq-server
    • 포트 확인: sudo netstat -tlnp | grep 5672
    • 방화벽 규칙 확인
  3. PostgreSQL 연결 실패

    • 서비스 상태 확인: sudo systemctl status postgresql
    • 인증 설정 확인: /etc/postgresql/.../pg_hba.conf
    • 데이터베이스 및 사용자 확인
  4. 패킷이 캡처되지 않음

    • 네트워크 트래픽 존재 확인
    • BPF 필터 구문 확인
    • 인터페이스 이름 확인: ip link show

디버깅

# RabbitMQ 큐 상태 확인
sudo rabbitmqctl list_queues

# PostgreSQL 연결 테스트
psql -h localhost -U packet_user -d packet_analyzer

# 패킷 캡처 테스트
sudo tcpdump -i any -c 10

# Python 모듈 테스트
python -c "import mcp, asyncpg, pika, scapy.all"

성능 최적화

데이터베이스

  • 인덱스가 적절히 생성되었는지 확인
  • 정기적으로 VACUUM 실행
  • 오래된 데이터는 아카이브 또는 삭제

RabbitMQ

  • 메시지 크기 최적화
  • 배치 전송 사용
  • 적절한 QoS 설정

패킷 캡처

  • BPF 필터로 불필요한 패킷 제외
  • 패킷 수 제한
  • 페이로드 크기 제한

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured