Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
ghidra — Ghidra는 소프트웨어 리버스 엔지니어링(SRE) 프레임워크입니다. | Kitploit
도구/GitHubGitHub/nationalsecurityagency/ghidra
Static AnalysisDynamic Analysis (Sandboxing)Exploit FrameworksVulnerability AnalysisReverse EngineeringScripting & AutomationDebuggersMalware AnalysisBinary AnalysisLearning & EducationFirmware Analysis
71.1k7.8k14일 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
GitHub
nationalsecurityagency/ghidra

ghidra

Ghidra는 소프트웨어 리버스 엔지니어링(SRE) 프레임워크입니다.

저장소 보기웹사이트

Dockerized Ghidra

빌드

Ghidra 릴리스의 루트 디렉터리에서 다음 명령을 실행하세요.

root@kitploit:~
./docker/build-docker-image.sh

이 명령은 Ghidra Docker 이미지를 Ghidra 릴리스 버전에 해당하는 태그로 빌드합니다.

MODE 환경 변수

Ghidra Docker 컨테이너는 다음 MODE 실행 방식을 지원합니다:

  • gui
  • headless
  • ghidra-server
  • bsim
  • bsim-server
  • pyghidra

MODE 환경 변수는 실행할 Ghidra의 진입점을 지정합니다.

entrypoint.sh 스크립트는 컨테이너 시작 시 실행됩니다.

컨테이너 구성

컨테이너 구성은 다른 Docker 컨테이너를 구성하는 것과 동일한 방식으로 수행됩니다. 볼륨을 마운트하고, 환경 변수를 설정하고, 포트를 컨테이너에서 호스트로 매핑하는 등의 작업이 가능합니다. 구성 단계는 컨테이너가 시작되는 MODE에 따라 크게 달라집니다.

컨테이너 내 Ghidra의 기본 디렉터리는 /ghidra입니다. Ghidra의 모든 기본 파일, 설정 등의 위치는 그 안에서 동일합니다. Ghidra는 컨테이너 내에서 ghidra 사용자(uid 1001, guid 1001)로 실행됩니다.

ghidra 사용자는 컨테이너 내에서 다음 디렉터리에만 권한을 가집니다:

  • /ghidra
  • /home/ghidra

컨테이너가 docker run 명령과 함께 전달된 인수가 없을 때, 실행된 MODE에 해당하는 명령줄 인터페이스(CLI)는 사용법을 표시합니다.

로컬 볼륨을 컨테이너에 매핑

컨테이너 내 볼륨은 그룹 ID 1001의 사용자가 접근할 수 없으면 권한 문제가 발생할 수 있습니다.

컨테이너의 기본 uid와 guid는 1001:1001입니다. 컨테이너에 매핑되는 볼륨은 이 uid/guid로 접근 가능해야 합니다.

호스트 머신의 사용자를 호스트의 그룹 1001에 추가하면 컨테이너에서 사용될 볼륨을 관리하는 데 도움이 됩니다. Linux에서는 sudo usermod -aG 1001 <user>를 실행하여 쉽게 추가할 수 있습니다.

Headless 모드 예시

root@kitploit:~
docker run \
    --env MODE=headless \
    --rm \
    --volume /path/to/myproject:/home/ghidra/myproject \
    --volume /path/to/mybinary:/home/ghidra/mybinary \
    ghidra/ghidra:<version> \
    /home/ghidra/myproject programFolder -import /home/ghidra/mybinary

이를 한 줄씩 설명하면:

  • docker run은 ghidra/ghidra:<version> 이미지를 사용하여 Docker 컨테이너를 시작합니다.
  • --env MODE=headless는 컨테이너 내 환경 변수 MODE를 headless 값으로 설정합니다.
  • --rm은 명령 완료 후 컨테이너를 제거합니다.
  • --volume /path/to/myproject:/home/ghidra/myproject는 호스트의 로컬 볼륨 /path/to/myproject를 컨테이너 내 /home/ghidra/myproject에 마운트합니다.
  • --volume /path/to/mybinary:/home/ghidra/mybinary는 호스트의 로컬 볼륨 /path/to/mybinary를 컨테이너 내 /home/ghidra/mybinary에 마운트합니다.
  • ghidra/ghidra:<version>은 Docker 이미지의 전체 참조이며, 는 이미지 그룹 및 이름, 은 태그입니다.

인수를 전달하지 않으면 headless 분석기의 사용법이 표시됩니다.

호스트의 /path/to/myproject는 guid 1001이 rwx 권한으로 접근 가능해야 합니다.

GUI 모드 예시

Docker 컨테이너에서 Ghidra의 그래픽 사용자 인터페이스(GUI)를 실행하는 것은 권장되는 방법이 아닙니다. GUI는 Docker화된 애플리케이션의 일반적인 사용 사례가 아닙니다.

root@kitploit:~
docker run \
    --env MODE=gui \
    -it \
    --rm \
    --net host \
    --env DISPLAY \
    --volume "$HOME/.Xauthority:/home/ghidra/.Xauthority" \
    ghidra/ghidra:<version>

이 모드에서 컨테이너는 X11 포워딩을 사용하여 GUI를 표시합니다. X11 구성은 다양할 수 있지만, 이 경우 호스트의 Xauthority 파일이 컨테이너에 마운트되고, 컨테이너는 호스트의 네트워크를 사용하도록 구성되며, DISPLAY 환경 변수가 컨테이너로 전달됩니다. 이를 통해 GUI를 호스트 머신의 디스플레이로 다시 포워딩할 수 있습니다. 바이너리가 포함된 볼륨과 Ghidra 프로젝트용 볼륨도 컨테이너에 마운트되어야 합니다.

호스트의 .Xauthority 파일은 적절한 권한을 가지고 있어야 합니다 - 그룹 :1001에 할당되고 그룹에 rw 권한이 있어야 합니다.

Ghidra 서버 모드 예시

root@kitploit:~
docker run \
    --env MODE=ghidra-server \
    --rm \
    -it \
    --volume /path/to/my/repositories:/ghidra/repositories \
    --volume /path/to/my/configs/server.conf:/ghidra/server/server.conf \
    -p 13100:13100 \
    -p 13101:13101 \
    -p 13102:13102 \
    ghidra/ghidra:<version>

서버 컨테이너에 저장소, 사용자를 저장하고 서버를 구성하기 위해 볼륨을 마운트해야 합니다.

svrAdmin을 사용하려면 실행 중인 Ghidra 서버 컨테이너에 exec(docker exec -it <container-id> bash)하여 컨테이너 내에서 bash 셸을 엽니다. 컨테이너에 exec한 후 Ghidra 서버의 관리 및 운영은 컨테이너화되지 않은 환경과 동일합니다.

컨테이너를 중지하려면 docker stop <container-id> 명령을 실행하세요.

참고: 호스트에서 Docker 컨테이너로 매핑하는 포트는 일치해야 합니다. server.conf 파일에서 -p<port> 옵션을 사용하여 기본 서버 포트(예: 13100)를 변경할 수 있습니다.

BSIM 서버 모드 예시

root@kitploit:~
docker run \
    --env MODE=bsim-server \
    --rm \
    -it \
    --volume /path/to/my/datadir:/ghidra/bsim_datadir \
    -p 5432:5432 \
    ghidra/ghidra:<version> \
    /ghidra/bsim_datadir

/ghidra/bsim_datadir은 컨테이너에서 bsim 데이터를 저장하는 데 사용되는 디렉터리입니다. 컨테이너에서 다른 디렉터리를 사용할 수도 있지만, 호스트 머신의 폴더가 그룹 :1001에 할당된 적절한 권한을 가지고 있는지 확인하세요.

이 예시는 단순히 bsim 서버를 시작합니다. bsim 서버를 구성하고 데이터로 채우는 것은 Ghidra 서버 관리와 유사한 방식으로 컨테이너 내에서 시작 후 수행할 수 있습니다. 관리자는 실행 중인 bsim 서버 컨테이너에 exec(docker exec -it <container-id> bash)해야 하며, 컨테이너에 exec한 후 Bsim 서버의 관리 및 운영은 컨테이너화되지 않은 환경과 동일합니다.

컨테이너를 중지하려면 docker stop <container-id> 명령을 실행하세요.

BSIM CLI 모드 예시

root@kitploit:~
docker run \
		--env MODE=bsim \
		--rm \
		 -it \
		 ghidra/ghidra:<version> \
		 generatesigs ghidra://ghidrasvr/demo /home/ghidra \
			 --bsim postgresql://bsimsvr/demo \
			 --commit --overwrite \
			 --user ghidra

이 예시에서는 bsim CLI를 사용하여 ghidrasvr에 호스팅된 Ghidra 서버에 연결하고, 해당 Ghidra 서버의 demo 저장소에 대한 서명을 생성하여 /home/ghidra에 저장한 다음, bsimsvr에 호스팅된 BSIM 서버의 demo 데이터베이스에 서명을 커밋합니다.

Pyghidra GUI 모드 예시

Docker 컨테이너에서 Ghidra의 그래픽 사용자 인터페이스(GUI)를 실행하는 것은 권장되는 방법이 아닙니다. GUI는 Docker화된 애플리케이션의 일반적인 사용 사례가 아닙니다.

root@kitploit:~
docker run \
    --env MODE=pyghidra \
    -it \
    --rm \
    --net host \
    --env DISPLAY \
    --volume="$HOME/.Xauthority:/home/ghidra/.Xauthority:rw" \
    ghidra/ghidra:<version> -c

이 모드에서 컨테이너는 X11 포워딩을 사용하여 GUI를 표시합니다. X11 구성은 다양할 수 있지만, 이 경우 호스트의 Xauthority 파일이 컨테이너에 마운트되고, 컨테이너는 호스트의 네트워크를 사용하도록 구성되며, DISPLAY 환경 변수가 컨테이너로 전달됩니다. 이를 통해 GUI를 호스트 머신의 디스플레이로 다시 포워딩할 수 있습니다. 바이너리가 포함된 볼륨과 Ghidra 프로젝트용 볼륨도 컨테이너에 마운트되어야 합니다.

호스트의 .Xauthority 파일은 적절한 권한을 가지고 있어야 합니다 - :1001이 소유하고 그룹에 rw 권한이 있어야 합니다.

Pyghidra Headless 모드 예시

root@kitploit:~
docker run \
    --env MODE=pyghidra \
    --rm \
    --volume /path/to/myproject:/myproject \
    --volume /path/to/mybinary:/mybinary \
    ghidra/ghidra:<version> -H \
    /myproject programFolder -import /mybinary

pyghidra headless 분석기에 인수를 전달하지 않으면 headless 분석기와 마찬가지로 도움말 메뉴가 표시됩니다.

이 사용 사례는 headless 모드의 예시와 매우 유사하지만, Ghidra 스크립트에 python3를 활용할 수 있는 추가 이점이 있습니다.

다시 말하지만, 이 예시에서는 /path/to/myproject 및 /path/to/mybinary에 대한 적절한 권한과 그룹 할당이 필요합니다. 그렇지 않으면 권한 문제가 발생할 수 있습니다.

도구 다운로드
ghidra/ghidra
<version>
  • /home/ghidra/myproject programFolder -import /home/ghidra/mybinary는 Ghidra headless 분석기의 명령줄 인터페이스에 전달되는 인수입니다.