
Ghidra를 통해 실행 파일을 디컴파일하고, Semgrep으로 의사 C 코드를 스캔하며, GPT-3.5-Turbo를 사용하여 결과를 검증해 거짓 양성을 줄이는 자동화된 바이너리 취약점 분석 도구입니다.
지능형 자동화 바이너리 취약점 분석 도구
데모:

Callisto는 지능형 자동화 바이너리 취약점 분석 도구입니다. 제공된 바이너리를 자동으로 디컴파일하고, 생성된 의사 C 코드에서 잠재적인 보안 취약점을 찾기 위해 해당 의사 코드 출력을 반복적으로 검사합니다. Ghidra의 헤드리스 디컴파일러가 바이너리 디컴파일 및 분석 부분을 담당합니다. 의사 코드 분석은 Semgrep SAST 도구에 의해 초기에 수행된 후, GPT-3.5-Turbo로 전송되어 Semgrep 결과를 검증하고 추가 취약점을 식별합니다.
이 도구의 목적은 바이너리 분석 및 제로데이 취약점 발견을 지원하는 것입니다. 출력 결과는 연구자가 바이너리에서 관심 영역이나 취약한 구성 요소를 식별하는 데 도움을 주며, 이후 동적 테스트를 통해 검증 및 익스플로잇을 수행할 수 있습니다. 모든 것을 잡아내지는 못하겠지만, Semgrep에서 GPT-3.5로의 이중 검증은 거짓 긍정을 줄이고 프로그램에 대한 더 깊은 분석을 가능하게 합니다.
도구를 빠른 헤드리스 디컴파일러로만 활용하려는 경우, 생성된 output.c 파일에는 바이너리에서 추출된 모든 의사 코드가 포함됩니다. 이 파일을 자신의 SAST 도구에 연결하거나 수동으로 분석할 수 있습니다.
Marco Ivaldi @0xdea님께 공개적으로 배포한 커스텀 Semgrep C 규칙과 디컴파일러의 의사 코드 출력을 활용한 취약점 발견 자동화 아이디어에 대해 깊이 감사드립니다. 그의 연구에 대한 자세한 내용은 다음에서 확인할 수 있습니다: Automating binary vulnerability discovery with Ghidra and Semgrep
요구 사항:
pip install semgreppip install -r requirements.txtconfig.txt 파일에 Ghidra 디렉터리의 올바른 경로가 설정되어 있는지 확인하세요.실행 방법:
python callisto.py -b <바이너리_경로> -ai -o <출력_파일_경로>
-ai => OpenAI GPT-3.5-Turbo 분석 활성화. config.txt 파일에 유효한 OpenAI API 키가 필요합니다.-o => 출력 파일을 지정합니다. 출력을 저장하려는 경우에 사용합니다.-ai 및 -o는 선택적 매개변수입니다.-all은 Semgrep 결과와 관계없이 모든 함수를 OpenAI 분석으로 실행합니다. 이 플래그는 사전에 -ai 플래그가 필요합니다.python callisto.py -b vulnProgram.exe -ai -o results.txtpython callisto.py -b vulnProgram.exe -ai -all -o results.txt프로그램 출력 예시:
