
CERT Kaiju는 Ghidra 소프트웨어 리버스 엔지니어링 제품군을 위한 바이너리 분석 프레임워크 확장 기능입니다. 이 저장소는 "미러"입니다 — 티켓, 버그 리포트 또는 풀 리퀘스트는 @CERTCC의 업스트림 홈페이지(https://github.com/certcc/kaiju)에 제출해 주세요.
CERT Kaiju는 Ghidra용 바이너리 분석 도구 모음입니다.
이는 CERT Pharos 바이너리 분석 프레임워크의 일부 기능, 특히 함수 해싱 및 악성코드 분석 도구를 Ghidra/Java로 구현한 것입니다. 하지만 시간이 지나면서 새로운 도구와 기능이 추가될 것으로 예상됩니다.
이 구현은 새로운 노력이기 때문에 아직 ROSE 기반의 원래 C++ 구현과 완전한 기능적 동등성을 갖추지 못했습니다. 그러나 Java 및 Ghidra로의 전환은 원래 프레임워크에서는 사용할 수 없는 몇 가지 새로운 기능을 가능하게 했습니다. 특히 비-x86 아키텍처 처리 개선이 그 예입니다. 프레임워크와 도구의 상당한 재설계가 진행 중이고, Java와 Ghidra로의 전환이 C++ 구현과는 다른 기능을 제공하기 때문에, 구현 간 혼동을 줄이기 위해 새로운 브랜드를 사용하기로 결정했습니다.
가까운 미래에는 원래 Pharos 프레임워크와 Kaiju를 병행 유지할 예정입니다. 두 프레임워크 모두 고유한 기능과 역량을 제공할 수 있기 때문입니다.
경고: 프로토타입이므로, 이 플러그인이 생성하는 함수 해시를 평가할 때 여러 문제가 발생할 수 있습니다. 예를 들어, Pharos 구현과 달리 Kaiju의 함수 해싱 모듈은 매우 작은 함수(예: RET 같은 단일 명령어만 있는 함수)에 대해서도 해시를 생성하여 의도치 않은 충돌이 훨씬 많이 발생할 수 있습니다. 따라서 분석 결과는 이 플러그인과 Pharos fn2hash 간에 다를 수 있습니다.
사전 빌드된 Kaiju 패키지를 사용할 수 있습니다. Ghidra 버전에 해당하는 ZIP 파일을 다운로드하여 아래 지침에 따라 설치하면 됩니다. Ghidra의 그래픽 인터페이스를 통해 설치하는 것이 좋지만, 적절한 디렉토리에 수동으로 압축을 풀어 설치할 수도 있습니다.
CERT Kaiju에는 다음과 같은 런타임 종속성이 필요합니다.
Z3는 사전 빌드된 패키지의 일부로 미리 컴파일되어 제공되거나, 직접 빌드하거나 Linux 배포판의 패키지를 사용할 수 있습니다.
Ghidra를 시작하고, 초기 창에서 메뉴에서 File > Install Extension을 선택합니다. 확장 프로그램 창 상단의 더하기 기호를 클릭하고, 파일 브라우저에서 .zip 파일을 찾아 선택한 후 OK를 누릅니다. 확장 프로그램이 설치되고, 창에서 확장 프로그램 이름 옆에 체크박스가 표시되어 설치 및 준비 완료 상태를 알려줍니다.
인터페이스에서 확장 프로그램 사용을 위해 Ghidra를 다시 시작하라고 요청합니다. 다시 시작하면 Kaiju의 추가 기능을 대화형 또는 스크립트에서 사용할 수 있습니다.
일부 기능을 사용하려면 Kaiju 플러그인을 활성화해야 할 수 있습니다. 이렇게 하려면 코드 브라우저를 열고 메뉴에서 File > Configure로 이동합니다. 나타나는 창에서 "CERT Kaiju" 카테고리 아이콘 아래의 Configure 링크를 클릭합니다. 팝업 창에 공개적으로 사용 가능한 모든 Kaiju 플러그인이 표시됩니다. 활성화하려는 플러그인을 선택하고 OK를 누릅니다. 이제 대화형 플러그인 기능에 액세스할 수 있습니다.
플러그인이 활성화된 후 바로 표시되지 않으면 코드 브라우저의 Window 메뉴에서 해당 플러그인을 찾을 수 있습니다.
향후 도구의 실험적인 "알파" 버전은 테스트하고 싶다면 "Experimental" 카테고리에서 사용할 수 있습니다. 그러나 이 플러그인들은 분명히 실험적이며 지원되지 않으며 프로덕션 사용에는 권장되지 않습니다. 하지만 초기 피드백은 환영합니다!
Kaiju와 같은 Ghidra 확장 프로그램은 확장 프로그램 내용을 Ghidra 설치의 적절한 디렉토리에 압축을 풀어 수동으로 설치할 수도 있습니다. 자세한 내용은 Ghidra 설치 가이드를 참조하십시오.
소스 코드에서 직접 Kaiju 확장 프로그램을 빌드할 수도 있습니다. 자세한 내용은 Kaiju 소스 디렉토리 최상위에 있는 INSTALL.md 파일을 참조하십시오.
Kaiju 도구는 대화형 그래픽 방식 또는 배치 작업에 더 적합한 "headless" 모드로 사용할 수 있습니다. 일부 도구는 도구의 특성상 그래픽 또는 headless 전용으로만 사용 가능할 수 있습니다.
Kaiju는 Java Swing 및 Ghidra의 플러그인 아키텍처를 활용하여 Ghidra 내에서 대화형 그래픽 인터페이스(GUI)를 생성합니다.
대부분의 Kaiju 도구는 실제로 "Auto Analysis" 옵션을 선택할 때(새 실행 파일을 가져와 디스어셈블할 때 또는 코드 브라우저 창에서 직접 Analysis > Auto Analyze...를 선택할 때) 자동으로 실행되는 분석 플러그인입니다. Auto Analyze 도구에서 기본적으로 선택된 여러 CERT 분석 플러그인이 표시되지만, 원하는 대로 활성화/비활성화할 수 있습니다.
분석 도구는 다양한 GUI 도구가 작동하기 전에 먼저 실행되어야 합니다. 일부 극단적인 경우에는 올바른 파티셔닝 및 디스어셈블 정보(해싱 결과에 영향을 미칠 수 있음)를 생성하기 위해 Auto Analysis를 두 번 실행하는 것이 도움이 될 수도 있습니다.
분석기는 Ghidra 분석 단계 중에 자동으로 실행되며 다음을 포함합니다.
GUI 도구는 다음을 포함합니다.
Kaiju > GhiHorn을 선택하여 이 도구에 액세스합니다. CTRL-G를 눌러 플러그인을 실행할 수도 있습니다.Window > CERT Kaiju Function Hash Viewer를 선택하여 이 도구를 시작합니다(이미 표시되어 있지 않은 경우). 해시 및 기타 데이터 테이블을 표시하는 새 창이 나타납니다. 창 상단의 버튼을 사용하여 테이블을 새로 고치거나 데이터를 파일이나 YARA 시그니처로 내보낼 수 있습니다. 이 창은 더 쉬운 사용을 위해 기본 Ghidra CodeBrowser에 도킹할 수도 있습니다. 더 자세한 사용 설명서는 도구 사용 시 Ghidra의 Help > Contents 메뉴에서 찾을 수 있습니다.Kaiju > OOAnalyzer Importer를 선택하여 이 도구를 시작합니다. 간단한 대화 상자 팝업에서 가져올 JSON 파일을 찾도록 요청합니다. 더 자세한 사용 설명서는 도구 사용 시 Ghidra의 Help > Contents 메뉴에서 찾을 수 있습니다.Ghidra는 대화형 GUI를 사용하지 않고도 도구를 실행할 수 있는 "headless" 모드를 지원합니다. 따라서 이러한 명령은 많은 수의 파일을 스크립팅 및 "배치 모드" 작업에 활용할 수 있습니다.
Headless 도구는 주로 Ghidra의 GhidraScript 기능에 의존합니다.
Headless 도구는 다음을 포함합니다.
단일 실행 파일의 모든 함수에 대한 함수 해시를 출력하는 간단한 시나리오를 위해 kaijuRun이라는 간단한 셸 실행 스크립트가 포함되어 있습니다. GHIDRA_INSTALL_DIR 변수가 설정되어 있다고 가정하면, 예를 들어 다음과 같이 단일 실행 파일에서 실행 스크립트를 실행할 수 있습니다.
$GHIDRA_INSTALL_DIR/Ghidra/Extensions/kaiju/kaijuRun fn2hash example.exe
이 명령은 결과를 자동으로 명명된 파일 example.exe.Hashes.csv로 출력합니다.
kaijuRun 스크립트의 기본 도움말은 다음을 실행하여 볼 수 있습니다.
$GHIDRA_INSTALL_DIR/Ghidra/Extensions/kaiju/kaijuRun --help
이 모드 및 kaijuRun 실행 스크립트 사용에 대한 자세한 내용은 저장소의 docs/HeadlessKaiju.md 파일을 참조하십시오.
보다 포괄적인 문서와 도움말은 두 가지 형식 중 하나로 제공됩니다.
모든 Kaiju 도구 및 구성 요소에 대한 Markdown 형식의 문서와 도움말은 docs/ 디렉토리를 참조하십시오. 이 문서는 유지 관리 및 편집이 쉽고 명령줄에서도 읽을 수 있습니다.
또는 Ghidra 내장 도움말 시스템에서 동일한 문서를 찾을 수 있습니다. 이 도움말 문서에 액세스하려면 Ghidra 메뉴에서 Help > Contents로 이동한 다음 도움말 창 왼쪽의 트리 탐색에서 CERT Kaiju를 선택하십시오.
참고: Ghidra 도움말 문서는 docs/ 디렉토리의 Markdown 파일과 정확히 동일한 내용입니다. 트리 내 gradle 플러그인 덕분에 gradle은 빌드 프로세스 중에 Markdown을 자동으로 구문 분석하여 Ghidra HTML로 내보냅니다. 이로 인해 유지 관리가 더 간단해지고(문서를 두 곳이 아닌 한 곳에서만 업데이트) 두 문서가 동기화됩니다.
모든 새 문서는 docs/ 디렉토리에 추가해야 합니다.
이 소프트웨어는 Carnegie Mellon University 소프트웨어 공학 연구소(Software Engineering Institute)의 단순화된 BSD 스타일 라이선스에 따라 라이선스가 부여됩니다. 이 라이선스의 전체 내용과 이 프로젝트에서 사용된 종속성의 라이선스 조건은 이 저장소의 루트에 있는 LICENSE.md 파일에서 확인할 수 있습니다.
CERT Kaiju 로고는 Cameron Spahn이 만든 아트워크를 기반으로 하며, 원래 Creative Commons Attribution-Share Alike 4.0 International 라이선스 조건에 따라 공개되었습니다.