Ghidra와 LLM을 MCP로 연결하는 오픈소스 바이너리 역공학 도구 'GhidraMCP'

LaurieWired의 오픈소스 도구 GhidraMCP는 Ghidra의 디컴파일, 심볼 리네이밍, 임포트·익스포트 조회 기능을 MCP 서버로 노출해 Claude Desktop과 Cline 등 AI 클라이언트에서 바이너리 역공학을 자율 수행하도록 지원합니다.

tau · 2026년 10월 6일

#Ghidra #GhidraMCP #MCP #리버스엔지니어링 #바이너리분석 #ClaudeDesktop #Cline #보안

Ghidra와 LLM을 MCP로 연결하는 오픈소스 바이너리 역공학 도구 'GhidraMCP'

소프트웨어 보안 점검과 악성코드 분석, 레거시 바이너리 복구 과정에서 컴파일된 실행 파일의 제어 흐름과 데이터 구조를 분석하는 리버스 엔지니어링은 고도의 전문 지식과 긴 분석 시간을 요구합니다. 대표적인 오픈소스 소프트웨어 역공학 프레임워크인 기드라(Ghidra)의 핵심 분석 기능을 Model Context Protocol(MCP) 서버로 노출하여 대형 언어 모델(LLM)이 자율적으로 바이너리를 분석할 수 있도록 지원하는 오픈소스 프로젝트 'GhidraMCP'(LaurieWired/GhidraMCP)가 개발자 커뮤니티의 관심을 모으고 있습니다.

Ghidra 분석 인터페이스와 LLM을 연결하는 GhidraMCP 도구 구조 화면

이미지 출처: @_vmlops via X

기존에는 보안 연구원이 기드라 GUI에서 어셈블리 명령어와 디컴파일된 C 의사코드를 일일이 확인하며 함수 이름과 변수를 수동으로 추적해야 했습니다. GhidraMCP는 기드라 내부 분석 엔진을 표준화된 MCP 도구 세트로 외부에 개방하여, Anthropic의 Claude Desktop이나 VS Code 기반의 Cline 등 표준 프로토콜을 준수하는 AI 클라이언트가 바이너리 분석 작업을 프로그래밍 방식으로 직접 제어하도록 만듭니다.

Ghidra 플러그인과 Python MCP 브리지: 시스템 아키텍처와 핵심 도구 역량

GhidraMCP의 핵심 설계는 기드라 런타임에 직접 상주하는 자바 플러그인과 외부 AI 클라이언트와 통신하는 파이썬 MCP 브리지(bridge_mcp_ghidra.py)의 이원화 구조에 기반합니다.

기드라 내부에서 구동되는 플러그인은 로컬 HTTP 서버(기본 포트 8080)를 열어 바이너리 데이터베이스에 대한 직접적인 분석 명령을 처리하며, 파이썬 브리지는 이를 MCP 규격의 표준 도구 인터페이스로 변환합니다. 이를 통해 지원되는 주요 기능은 다음과 같습니다.

  • 바이너리 디컴파일 및 제어 흐름 분석: AI 클라이언트가 기드라에 로드된 실행 파일의 특정 함수 주소를 지정해 C 언어 의사코드로 디컴파일하고, 내부 제어 흐름과 로직 구조를 직접 질의할 수 있습니다.
  • 메서드 및 데이터 심볼 자율 리네이밍: 디컴파일된 의사코드를 바탕으로 LLM이 난독화되거나 기본값(예: FUN_00401000)으로 표기된 함수 및 데이터 변수의 역할을 추론한 뒤, 기드라 데이터베이스 내 심볼 이름을 자동으로 갱신합니다.
  • 구조체 및 심볼 테이블 조회: 바이너리에 포함된 메서드, 클래스, 임포트(Import) 및 익스포트(Export) 테이블 목록을 조회하여 외부 라이브러리 의존성과 핵심 진입점을 신속하게 식별할 수 있습니다.

클라이언트 연동 환경 구성: Claude Desktop·Cline·5ire 설정 절차

GhidraMCP는 공식 GitHub 릴리즈(LaurieWired/GhidraMCP)를 통해 기드라 플러그인 확장 파일과 파이썬 MCP 브리지 스크립트를 함께 제공하며, 표준 MCP 프로토콜을 지원하는 다양한 클라이언트와 호환됩니다.

사용자는 릴리즈 패키지에서 다운로드한 플러그인을 기드라 확장(Extension)으로 직접 임포트한 뒤 환경 설정을 완료하면 주요 AI 클라이언트에 연결할 수 있습니다.

  • Claude Desktop 연동: 데스크톱 설정 파일(claude_desktop_config.json)의 mcpServers 항목에 파이썬 커맨드와 bridge_mcp_ghidra.py의 절대 경로를 등록하고, 인자로 기드라 로컬 서버 주소(--ghidra-server http://127.0.0.1:8080/)를 지정하여 구동합니다.
  • Cline 연동: VS Code 환경의 Cline과 연동할 때는 파이썬 브리지를 SSE(Server-Sent Events) 모드로 먼저 실행합니다. python bridge_mcp_ghidra.py --transport sse --mcp-host 127.0.0.1 --mcp-port 8081 --ghidra-server http://127.0.0.1:8080/ 명령으로 브리지를 띄운 후, Cline의 MCP 서버 메뉴에서 원격 서버(Remote Server) 주소로 http://127.0.0.1:8081/sse를 등록합니다.
  • 5ire 연동: 복수 백엔드 모델을 지원하는 5ire 클라이언트에서는 도구 설정 메뉴에서 키 값 ghidra, 이름 GhidraMCP, 실행 명령으로 python /ABSOLUTE_PATH_TO/bridge_mcp_ghidra.py를 지정해 연동할 수 있습니다.

실무 분석 효용성과 도입 시 점검해야 할 기술적 제약

GhidraMCP는 리버스 엔지니어링 실무에서 가장 많은 시간이 소요되는 초기 함수 탐색과 반복적인 심볼 라벨링 작업을 AI에게 위임할 수 있다는 점에서 보안 분석가의 생산성을 대폭 개선합니다. 그러나 실제 분석 파이프라인에 적용하기 위해서는 다음과 같은 기술적 제약과 운영 주의사항을 명확히 인지해야 합니다.

  • 로컬 기드라 및 자바 런타임 종속성: 본 도구는 단독으로 실행되는 분석 엔진이 아니며, 분석 대상 바이너리가 로컬 기드라 환경에 사전 임포트 및 분석(Auto-Analysis) 완료된 상태여야 정상 작동합니다. 따라서 Java 실행 환경과 기드라의 로컬 설치가 필수적입니다.
  • LLM 추론의 환각(Hallucination) 검증 필요: LLM이 디컴파일 결과를 해석하여 부여하는 함수 명칭이나 데이터 구조체 추론은 확률적 모델 특성상 오판이나 환각이 발생할 수 있습니다. 특히 악성코드 판정이나 취약점 분석 등 정밀성이 요구되는 작업에서는 분석가의 교차 검증이 반드시 수반되어야 합니다.
  • 프로젝트 원본 상태 백업 권장: 함수 및 데이터 이름을 일괄 수정하는 자율 리네이밍 작업은 기드라 프로젝트 데이터베이스를 직접 수정하므로, 자동화 작업을 실행하기 전 원본 기드라 프로젝트나 바이너리 사본을 백업해 두는 것이 안전합니다.

출처