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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
BinAbsInspector — Ghidra Pcode에 대한 추상 해석을 사용하는 정적 바이너리 취약점 스캐너입니다. Z3를 이용한 심볼릭 실행을 통해 버퍼 오버플로, use-after-free, 명령어 삽입과 같은 CWE 클래스를 탐지합니다. | Kitploit
도구/GitHubGitHub/keensecuritylab/binabsinspector
Static AnalysisVulnerability ScannersReverse EngineeringFuzzingBinary Analysis
GitHubkeensecuritylab/binabsinspector

BinAbsInspector

Ghidra Pcode에 대한 추상 해석을 사용하는 정적 바이너리 취약점 스캐너입니다. Z3를 이용한 심볼릭 실행을 통해 버퍼 오버플로, use-after-free, 명령어 삽입과 같은 CWE 클래스를 탐지합니다.

저장소 보기
1.7k24522년 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

BinAbsInspector란 무엇인가?

BinAbsInspector(바이너리 추상 검사기)는 바이너리에서 자동 역공학 및 취약점 스캔을 위한 정적 분석기로, Keenlab에서 인큐베이팅된 장기 연구 프로젝트입니다. Ghidra의 지원을 받아 추상 해석(abstract interpretation)을 기반으로 합니다. 어셈블리 대신 Ghidra의 Pcode에서 작동합니다. 현재 x86, x64, armv7 및 aarch64 바이너리를 지원합니다.

설치

  • Ghidra 문서에 따라 Ghidra 설치
  • Z3 설치 (테스트 버전: 4.8.15)
  • 참고: 일반적으로 Z3 라이브러리에는 두 부분이 있습니다. 하나는 Java 패키지이고 다른 하나는 네이티브 라이브러리입니다. Java 패키지는 이미 "/lib" 디렉토리에 포함되어 있지만, 버전 호환성을 위해 자체 Java 패키지로 교체할 것을 권장합니다.
    • Windows의 경우, 여기에서 미리 빌드된 패키지를 다운로드하고, zip 파일을 추출한 후 z3-${version}-win/bin을 가리키는 PATH 환경 변수를 추가합니다.
    • Linux의 경우, 패키지 관리자를 통한 설치는 권장되지 않습니다. 두 가지 옵션이 있습니다:
      1. 여기에서 적합한 미리 빌드된 패키지를 다운로드하고, zip 파일을 추출한 후 z3-${version}-glibc-${version}/bin/*.so를 /usr/local/lib/로 복사합니다.
      2. 또는 Building Z3 using make and GCC/Clang에 따라 z3를 빌드하고 설치합니다.
    • MacOS의 경우, Linux와 유사합니다.
  • 릴리즈 페이지에서 확장 zip 파일 다운로드
  • Ghidra 확장 노트에 따라 확장 설치

빌드

새로운 기능을 개발하려면 개발 가이드를 참조하여 확장을 직접 빌드하세요.

  • Ghidra 및 Z3 설치
  • Gradle 7.x 설치 (테스트 버전: 7.4)
  • 저장소 가져오기
  • 저장소 루트에서 gradle buildExtension 실행
  • 확장은 dist/${GhidraVersion}_${date}_BinAbsInspector.zip에 생성됩니다.

사용법

BinAbsInspector는 헤드리스 모드, GUI 모드 또는 Docker로 실행할 수 있습니다.

  • Ghidra 헤드리스 모드 사용.
root@kitploit:~
$GHIDRA_INSTALL_DIR/support/analyzeHeadless <projectPath> <projectName> -import <file> -postScript BinAbsInspector "@@<scriptParams>"

<projectPath> -- Ghidra 프로젝트 경로.
<projectName> -- Ghidra 프로젝트 이름.
<scriptParams> -- 분석기 인수로, 다음 옵션을 제공합니다:

  • Ghidra GUI 사용

    1. Ghidra를 실행하고 대상 바이너리를 프로젝트로 가져오기
    2. 기본 설정으로 바이너리 분석
    3. 분석이 완료되면 Window -> Script Manager를 열고 BinAbsInspector.java 찾기
    4. BinAbsInspector.java 항목을 더블 클릭하고 설정 창에서 매개변수를 설정한 후 확인 클릭
    5. 분석이 완료되면 콘솔 창에서 CWE 보고서를 볼 수 있으며, 보고서의 주소를 더블 클릭하면 해당 주소로 이동
  • Docker 사용

root@kitploit:~
git clone [email protected]:KeenSecurityLab/BinAbsInspector.git
cd BinAbsInspector
docker build . -t bai
docker run -v $(pwd):/data/workspace bai "@@<script parameters>" -import <file>

구현된 검사기

현재 BinAbsInspector는 다음 검사기를 지원합니다:

  • CWE78 (OS 명령 주입)
  • CWE119 (버퍼 오버플로우 (일반적인 경우))
  • CWE125 (버퍼 오버플로우 (범위를 벗어난 읽기))
  • CWE134 (외부 제어 형식 문자열 사용)
  • CWE190 (정수 오버플로우 또는 랩어라운드)
  • CWE367 (검사 시점 사용 시점 (TOCTOU))
  • CWE415 (이중 해제)
  • CWE416 (사용 후 해제)
  • CWE426 (신뢰할 수 없는 검색 경로)
  • CWE467 (포인터 유형에 sizeof() 사용)
  • CWE476 (NULL 포인터 역참조)
  • CWE676 (잠재적으로 위험한 함수 사용)
  • CWE787 (버퍼 오버플로우 (범위를 벗어난 쓰기))

프로젝트 구조

이 프로젝트의 구조는 다음과 같습니다. 자세한 내용은 기술 세부 사항 또는 중국어 버전 기사를 참조하세요.

root@kitploit:~
├── main
│   ├── java
│   │   └── com
│   │       └── bai
│   │           ├── checkers                       검사기 구현
│   │           ├── env
│   │           │   ├── funcs                      함수 모델링
│   │           │   │   ├── externalfuncs          외부 함수 모델링
│   │           │   │   └── stdfuncs               cpp std 모델링
│   │           │   └── region                     메모리 모델링
│   │           ├── solver                         분석 코어 및 그래프 모듈
│   │           └── util                           유틸리티
│   └── resources
└── test

gradle javadoc으로 javadoc을 빌드할 수도 있으며, API 문서는 ./build/docs/javadoc에 생성됩니다.

감사의 말

저희는 Ghidra를 기반으로 사용하고 있으며, 더 나은 성능을 위해 JImmutable Collections를 자주 활용합니다.
이에 대해 큰 도움을 주신 분들께 감사드립니다!

도구 다운로드
매개변수설명
[-K <kElement>]KSet 크기 제한 K
[-callStringK <callStringMaxLen>]호출 문자열 최대 길이 K
[-Z3Timeout <timeout>]Z3 시간 제한
[-timeout <timeout>]분석 시간 제한
[-entry <address>]진입점 주소
[-externalMap <file>]외부 함수 모델 설정
[-json]JSON 형식으로 출력
[-disableZ3]Z3 비활성화
[-all]모든 검사기 활성화
[-debug]디버깅 로그 출력 활성화
[-check "<cweNo1>[;<cweNo2>...]"]특정 검사기 활성화