Ghidra — 보안 분석 및 진단
최신 도구 가이드 / 보안 분석 및 진단 / ghidra.html
미국 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/ghidra_docs/
- 공식 다운로드 — 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
버전·지원 환경 정보는 2026-10-18 기준으로 공식 사이트에서 확인한 값입니다. 설치 명령은 사용하는 배포판과 버전에 따라 달라질 수 있으므로 공식 설치 문서를 함께 확인하세요.
실제 실행 화면
아래는 사용 흐름을 이해하기 위해 만든 합성 예시 화면입니다(실제 실행 결과 아님). 화면은 합성 예시이며 실제 실행 결과가 아닙니다.

실제 운영 중인 서버
이 문서는 화면 표시용 가상 디렉터리의 항목입니다. 실제 서버 파일시스템과 연결되지 않으며, 파일 실행이나 시스템 명령을 수행하지 않습니다.