--- title: Ghidra — 보안 분석 및 진단 date: 2026-10-18 time: 12:00 model: admin category: programs author_type: human summary: NSA가 공개한 리버싱 프레임워크. 다중 아키텍처 디컴파일과 협업 분석 서버를 제공합니다. tags: 프로그램, 보안 분석 및 진단, ghidra --- 미국 NSA가 공개한 오픈소스 소프트웨어 리버싱 프레임워크로, 디컴파일러와 협업 분석 서버를 갖춘 분석 환경입니다. ## 기본 정보 | 프로그램 이름 | Ghidra (깃드라) | | --- | --- | | 한 줄 소개 | 미국 NSA가 공개한 오픈소스 소프트웨어 리버싱 프레임워크로, 디컴파일러와 협업 분석 서버를 갖춘 분석 환경입니다. | | 개발·유지 | National Security Agency (NSA) | | 공식 홈페이지 | https://ghidra-sre.org/ | | 공식 문서 | https://ghidra-sre.org/ghidra_docs/ | | 공식 다운로드 | https://github.com/NationalSecurityAgency/ghidra/releases | | 지원 운영체제 | Windows, macOS, Linux (Java 21 이상 필요) | | 라이선스 | Apache-2.0 / 공공영역(public domain) | | 안정 버전 | 12.1.4 (2026-08-18 출시) — 확인일 2026-10-18 | | GitHub 저장소 | https://github.com/NationalSecurityAgency/ghidra | | 분류 | 보안 분석 및 진단 (태그: 리버싱, 디컴파일, 바이너리 분석, NSA, 보안) | ## 이 프로그램은 무엇인가? Ghidra는 미국 국가안보국(NSA)이 2019년에 공개한 소프트웨어 역공학(Reverse Engineering) 프레임워크입니다. PE·ELF 같은 실행 파일을 열면 어셈블리로 분해하고, C에 가까운 의사 코드(pseudo-code)로 변환해 프로그램 동작을 파악할 수 있게 해 줍니다. radare2처럼 명령 기반으로도 쓰지만, 기본 제공되는 GUI 디컴파일러와 다중 분석가가 같은 바이너리를 동시에 열 수 있는 Ghidra Server가 강점입니다. 보안 연구, 취약점 분석, 악성코드 조사에서 널리 쓰입니다. ## 어떤 문제를 해결하는가? - ('리버싱 작업에서', '폐쇄형 바이너리의 내부 로직을 소스 코드 없이 파악해야 할 때', '어셈블리와 의사 코드를 비교하며 함수 역할을 유추할 수 있습니다.') - ('취약점 분석에서', '제품·라이브러리에서 메모리 취약점을 찾을 때', '함수 그래프와 문자열 참조를 따라가며 문제 지점을 좁힐 수 있습니다.') - ('악성코드 조사에서', '의심스러운 실행 파일의 행위를 사전 분석할 때', '네트워크·파일 조작 API 호출 흐름을 한눈에 확인할 수 있습니다.') ## 주요 기능 ### 디컴파일 선택한 함수를 어셈블리에서 고수준 의사 코드로 번역 - **활용 상황**: 피벗팅이나 난독화된 함수를 읽을 때 - **얻는 결과**: 함수 인자·변수 역할을 코드 형태로 확인 - **제한 사항**: 완벽한 복원이 아니므로 난독화 코드는 판단이 어려울 수 있습니다. ### 다중 아키텍처 지원 x86·ARM·MIPS·PowerPC 등 수십 종 아키텍처를 디스어셈블 - **활용 상황**: 임베디스·모바일 바이너리를 분석할 때 - **얻는 결과**: 같은 도구로 여러 플랫폼 바이너리를 취급 - **제한 사항**: 희귀 아키텍처는 지원 오프셋·플러그인이 필요할 수 있습니다. ### Ghidra Server(협업) 여러 분석가가 같은 프로젝트를 동시 분석 - **활용 상황**: 팀 단위 악성코드 조사·공동 리버싱 - **얻는 결과**: 분석 결과(주석·라벨)가 서버에 공유됨 - **제한 사항**: 서버 운영과 프로젝트 관리가 추가로 필요합니다. ### 디버거 연동 GDB·LLDB·WinDbg와 연결해 실행 중인 프로세스를 추적 - **활용 상황**: 정적 분석으로 모호한 흐름을 확인할 때 - **얻는 결과**: 런타임 값으로 가정을 검증 - **제한 사항**: 디버거 설정과 대상 프로세스 준비가 필요합니다. ## 설치 및 실행 ### Linux (Ubuntu / Debian) OpenJDK 21을 먼저 설치한 뒤 공식 ZIP을 풀어 실행합니다. Java가 필요한 이유는 Ghidra 본체가 Java로 작성되어 있기 때문입니다. ``` sudo apt update sudo apt install openjdk-21-jdk # ghidra-sre.org 또는 GitHub releases에서 ZIP 내려받기 후 unzip ghidra_12.14_PUBLIC_*.zip cd ghidra_12.14_PUBLIC ./ghidraRun ``` ### Windows 64비트 OpenJDK 21을 설치한 뒤 공식 ZIP을 풀고 ghidraRun.bat을 실행합니다. ``` # adoptium.net에서 Temurin 21 설치 후 ghidraRun.bat ``` ### macOS brew로 OpenJDK 21을 설치한 뒤 공식 ZIP을 풀고 ghidraRun을 실행합니다. ``` brew install openjdk@21 unzip ghidra_12.14_PUBLIC_*.zip ./ghidraRun ``` ## 실제 사용 예제 ### 새 프로젝트 만들기 File > New Project로 프로젝트를 만들고, File > Import File로 분석할 실행 파일을 넣습니다. 프로젝트는 분석 결과와 주석을 저장하는 단위입니다. ``` File > New Project… > Non-Shared > /home/analyst/proj File > Import File… > sample.bin ``` ### 디컴파일로 함수 읽기 CodeBrowser가 열리면 왼쪽 목록에서 함수를 고르고, 오른쪽 Decompiler 창에서 의사 코드를 확인합니다. x·d 키로 디스어셈블/디컴파일을 오갈 수 있습니다. ``` Listing: sample.bin · Decompiler: main() int main(int argc,char **argv){ ... network_connect(); } ``` ### 문자열·교차 참조 확인 Search > For Strings로 문자열을 모으고, 선택한 문자열의 xref(참조 위치)를 눌러 사용처로 이동합니다. ``` Search > For Strings… ( minLength=5 ) String: "http://192.0.2.10/upload" → xref 3건 ``` ## 장점과 한계 ### 장점 - 무료·오픈소스(Apache-2.0)로 상업용 도구 없이 리버싱 환경 구성 가능 - GUI 디컴파일러가 기본 내장 — 어셈블리를 잘 몰라도 함수 흐름 파악이 쉬움 - 다중 아키텍처·다중 분석가 협업 서버 지원 - GDB·LLDB 연동으로 정적·동적 분석을 하나의 환경에서 처리 ### 사용 전에 고려할 점 - Java 기반이라 첫 실행 로딩이 느리고 메모리를 많이 씁니다(최소 RAM 4GB 이상 권장). - GUI 위주라 대량 파일을 명령으로 일괄 분석하기에는 스크립팅 부담이 있습니다(Headless 모드는 있음). - 초반 프로젝트·워크스페이스 개념 학습 곡선이 있습니다. ## 비슷한 프로그램과 비교 | 프로그램 | 특징 | 이런 경우에 적합 | | --- | --- | --- | | radare2 / Cutter | 명령 기반 경량, 커맨드라인 친화. Cutter는 radare2 GUI | 스크립트·자동화 중심 분석이나 저사양 환경 | | IDA Pro(상용) | 상용 디컴파일러·플러그인 생태계가 풍부 | 상업 예산이 있고 특정 아키텍처 플러그인이 필요할 때 | | Binary Ninja(상용) | 깔끔한 UI와 중간 표현(IL) 분석 | 디컴파일 결과를 코드로 재작성하는 워크플로 | ## 공식 자료 및 추가 학습 - [공식 홈페이지](https://ghidra-sre.org/) — https://ghidra-sre.org/ - [공식 문서 / 지식베이스](https://ghidra-sre.org/ghidra_docs/) — https://ghidra-sre.org/ghidra_docs/ - [공식 다운로드](https://github.com/NationalSecurityAgency/ghidra/releases) — https://github.com/NationalSecurityAgency/ghidra/releases - [릴리스 노트](https://github.com/NationalSecurityAgency/ghidra/blob/master/Ghidra/Configurations/Public_Release/src/global/docs/ChangeHistory.md) — https://github.com/NationalSecurityAgency/ghidra/blob/master/Ghidra/Configurations/Public_Release/src/global/docs/ChangeHistory.md - [소스 / 개발 자료](https://github.com/NationalSecurityAgency/ghidra) — https://github.com/NationalSecurityAgency/ghidra 버전·지원 환경 정보는 2026-10-18 기준으로 공식 사이트에서 확인한 값입니다. 설치 명령은 사용하는 배포판과 버전에 따라 달라질 수 있으므로 공식 설치 문서를 함께 확인하세요. ## 실제 실행 화면 아래는 사용 흐름을 이해하기 위해 만든 합성 예시 화면입니다(실제 실행 결과 아님). 화면은 합성 예시이며 실제 실행 결과가 아닙니다. ![Ghidra 분석 세션 예시: headless 임포트, 자동 분석 완료, 디컴파일 결과 출력](https://games.cursorai.co.kr/assets/ghidra-demo.png) 실제 운영 중인 서버 --- 원문(HTML): https://games.cursorai.co.kr/programs/apps/security/ghidra.html