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은 사전 빌드된 패키지의 일부로 사전 컴파일된 상태로 제공됩니다. 또는 직접 Z3을 빌드하거나 Linux 배포판 패키지를 사용할 수도 있습니다.
Ghidra를 시작하고 열기 창에서 File > Install Extension
메뉴를 선택합니다. 확장 창 상단에 있는 더하기 기호를 클릭하고 파일 브라우저에서 .zip 파일을 탐색하여 선택한 다음 확인을 누르세요. 확장이 설치되고 창의 확장 이름 옆에 확인란이 표시되어 해당 확장이 설치되어 준비되었음을 알려줍니다.
인터페이스는 확장 기능 사용을 시작하기 위해 Ghidra를 다시 시작하라는 메시지를 표시합니다. 간단히 다시 시작하면 Kaiju의 추가 기능을 대화형으로 또는 스크립트로 사용할 수 있습니다.
일부 기능을 사용하려면 Kaiju 플러그인을 활성화해야 할 수도 있습니다. 이렇게 하려면 코드 브라우저를 열고 File > Configure
메뉴로 이동합니다. 팝업 창에서 "CERT Kaiju" 카테고리 아이콘 아래의 Configure
링크를 클릭하세요. 공개적으로 출시된 모든 Kaiju 플러그인이 팝업으로 표시됩니다. 활성화하려는 플러그인을 선택한 다음 확인을 누르세요. 이제 대화형 플러그인 기능에 액세스할 수 있습니다.
플러그인이 활성화된 후 즉시 표시되지 않으면 코드 브라우저의 Window
메뉴 아래에서 플러그인을 찾을 수 있습니다.
테스트하려는 경우 향후 도구의 실험적 "알파" 버전을 "실험적" 범주에서 사용할 수 있습니다. 그러나 이러한 플러그인은 확실히 실험적이며 지원되지 않으며 프로덕션 용도로 권장되지 않습니다. 하지만 조기 피드백을 환영합니다!
Kaiju와 같은 Ghidra 확장 프로그램은 Ghidra 설치의 적절한 디렉터리에 확장 프로그램 콘텐츠의 압축을 풀어 수동으로 설치할 수도 있습니다. 자세한 내용은 Ghidra 설치 가이드를 참조하세요.
소스 코드에서 직접 Kaiju 확장을 빌드할 수도 있습니다. 카이주 소스 디렉토리 상위에 포함된 INSTALL.md
파일을 참고하세요.
Kaiju의 도구는 대화형 그래픽 방식으로 사용하거나 일괄 작업에 더 적합한 "헤드리스" 모드를 통해 사용할 수 있습니다. 일부 도구는 도구의 특성상 그래픽 또는 헤드리스 용도로만 사용할 수 있습니다.
Kaiju는 Java Swing 및 Ghidra의 플러그인 아키텍처를 활용하여 Ghidra 내에서 대화형 그래픽 인터페이스(GUI)를 생성합니다.
Kaiju 도구의 대부분은 실제로 분해할 새 실행 파일을 가져올 때 또는 코드 브라우저 창에서 Analysis > Auto Analyze...
을 직접 선택하여 "자동 분석" 옵션을 선택할 때 자동으로 실행되는 분석 플러그인입니다. 자동 분석 도구에서 기본적으로 선택된 여러 CERT 분석 플러그인을 볼 수 있지만 원하는 대로 활성화/비활성화할 수 있습니다.
그러나 다양한 GUI 도구가 작동하려면 먼저 분석 도구를 실행해야 합니다. 일부 특수한 경우에는 자동 분석을 두 번 실행하여 모든 메타데이터가 생성되어 올바른 분할 및 분해 정보를 생성하고 결과적으로 해싱 결과에 영향을 미칠 수 있는지 확인하는 것이 도움이 될 수도 있습니다.
분석기는 Ghidra의 분석 단계에서 자동으로 실행되며 다음을 포함합니다.
GUI 도구에는 다음이 포함됩니다.
Kaiju > GhiHorn
선택하세요. CTRL-G
눌러 플러그인을 시작할 수도 있습니다.Window > CERT Function Hash Viewer
선택하여 이 도구를 시작하세요. 해시 및 기타 데이터 테이블을 표시하는 새 창이 나타납니다. 창 상단에 있는 버튼을 사용하면 테이블을 새로 고치거나 데이터를 파일 또는 YARA 서명으로 내보낼 수 있습니다. 이 창은 다른 플러그인과 함께 더 쉽게 사용할 수 있도록 기본 Ghidra CodeBrowser에 도킹될 수도 있습니다. 도구를 사용할 때 Ghidra의 Help > Contents
메뉴에서 더 광범위한 사용 문서를 찾을 수 있습니다.Kaiju > OOAnalyzer Importer
선택하세요. 가져오려는 JSON 파일을 찾으라는 간단한 대화 상자 팝업이 표시됩니다. 도구를 사용할 때 Ghidra의 Help > Contents
메뉴에서 더 광범위한 사용 문서를 찾을 수 있습니다.Ghidra는 또한 대화형 GUI를 사용하지 않고도 일부 상황에서 도구를 실행할 수 있는 "헤드리스" 모드를 지원합니다. 따라서 이러한 명령은 많은 수의 파일에 대한 스크립팅 및 "배치 모드" 작업에 활용될 수 있습니다.
헤드리스 도구는 주로 Ghidra의 GhidraScript 기능에 의존합니다.
헤드리스 도구에는 다음이 포함됩니다.
단일 실행 파일의 모든 함수에 대한 함수 해시를 출력하는 것과 같은 간단한 시나리오를 위해 이러한 헤드리스 명령을 실행하기 위해 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
파일을 참조하세요.
보다 포괄적인 문서와 도움말은 두 가지 형식 중 하나로 제공됩니다.
Markdown 형식의 문서와 모든 Kaiju 도구 및 구성 요소에 대한 도움말은 docs/
디렉터리를 참조하세요. 이러한 문서는 명령줄에서도 쉽게 유지 관리하고 편집하고 읽을 수 있습니다.
또는 Ghidra에 내장된 도움말 시스템에서 동일한 문서를 찾을 수도 있습니다. 이러한 도움말 문서에 액세스하려면 Ghidra 메뉴에서 Help > Contents
로 이동한 다음 도움말 창 왼쪽에 있는 트리 탐색에서 CERT Kaiju
선택하세요.
Ghidra 도움말 문서는 docs/
디렉터리에 있는 Markdown 파일과 내용이 똑같다는 점에 유의하세요. In-tree Gradle 플러그인 덕분에 Gradle은 빌드 프로세스 중에 Markdown을 자동으로 구문 분석하고 Ghidra HTML로 내보냅니다. 이를 통해 훨씬 더 간단한 유지 관리(두 곳이 아닌 한 곳에서 문서 업데이트)가 가능하고 두 곳을 동기화할 수 있습니다.
모든 새로운 문서는 docs/
디렉토리에 추가되어야 합니다.
이 소프트웨어는 Carnegie Mellon University의 Software Engineering Institute에서 단순화된 BSD 스타일 라이센스에 따라 라이센스를 받았습니다. 이 라이센스에 대한 자세한 내용과 이 프로젝트에 사용된 종속성에 대한 라이센스 조건은 이 저장소의 루트에 있는 LICENSE.md
파일에서 확인하세요.
CERT Kaiju 로고는 원래 Creative Commons Attribution-Share Alike 4.0 International 라이센스 조건에 따라 출시된 Cameron Spahn이 제작한 아트를 기반으로 합니다.