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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
xfg_analyzer — 무차별 대입(Brute-force)으로 얻은 XFG 해시를 사용해 정확한 함수 프로토타입을 복구하는 Binary Ninja 플러그인 | Kitploit
도구/GitHubGitHub/ea/xfg_analyzer
Static AnalysisReverse EngineeringBinary Analysis
GitHubea/xfg_analyzer

xfg_analyzer

무차별 대입(Brute-force)으로 얻은 XFG 해시를 사용해 정확한 함수 프로토타입을 복구하는 Binary Ninja 플러그인

저장소 보기
1622년 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

XFG 해시 무차별 대입을 통한 함수 프로토타입 복구

이 저장소에는 eXtended Flow Guard 해시를 생성하고 조회하기 위한 스크립트가 포함되어 있습니다.

이것이 작동하는 방식에 대한 확장된 글은 International Jouranl Of Proof Of Concept || GTFO 22호에서 볼 수 있습니다.

이 PoC에 대한 제 작업은 MS 컴파일러의 관련 부분을 광범위하게 리버스 엔지니어링한 Quarkslab 분들 덕분에 크게 간소화되었습니다. XFG 해시가 어떻게 계산되는지에 대한 그들의 심층 분석 글은 여기에서 읽을 수 있습니다: https://blog.quarkslab.com/how-the-msvc-compiler-generates-xfg-function-prototype-hashes.html

참고: 이것은 어떤 식으로도 XFG를 익스플로잇 완화로서 "깨뜨리지" 않으며, 단지 그 부수 효과를 악용하여 심볼이 없는 함수들을 조명할 뿐입니다.

요컨대, Windows에 구현된 XFG는 간접 함수 호출의 가능한 대상을 유효한 함수 진입점뿐만 아니라 일치하는 시그니처를 가진 함수로 제한함으로써 Control Flow Guard 익스플로잇 완화를 확장하고 더욱 엄격하게 만듭니다. 이를 위해 각 함수에 대해 XFG 해시가 계산되고 런타임 중에 이에 대한 검사가 수행됩니다. 해시는 함수 프로토타입(즉, 호출 규약, 인자 및 그 타입)만을 기반으로 합니다. 따라서 알려진 타입에 대해 해시를 미리 계산해 둔 다음, 알 수 없는 바이너리의 함수에 대해 나중에 조회할 수 있습니다.

조회에 성공하면 모든 인자의 정확한 개수와 타입은 물론 함수의 반환 값까지 100% 확신할 수 있습니다. 이는 공개 심볼이 없는 바이너리와 함수에 엄청나게 유용할 수 있습니다.

가까운 미러에서 제공되는 PoC||GTFO의 전체 기사를 읽어 보시기를 권합니다.

스크립트는 다음과 같습니다:

  • gen_function_prototypes.py - 주어진 타입들로 가능한 모든 프로토타입을 포함하는 파일을 출력합니다
  • gen_hash_from_ast.py - .c 파일을 읽고 파싱한 다음 해시를 계산하여 데이터베이스에 저장합니다 (gen_function_prototypes.py가 생성한 파일에 사용하도록 만들어졌습니다)
  • xfg_analyzer.py - 바이너리에서 XFG 해시를 검색하고 데이터베이스에서 조회하는 Binary Ninja 플러그인입니다
  • find_hash.py - 데이터베이스에서 주어진 해시를 조회하는 간단한 단축 스크립트입니다

이 스크립트를 사용하려면 먼저 gen_function_prototypes.py를 수정하여 분석 대상에 특화된 "기본 타입", 구조체 또는 열거형을 추가해야 합니다. 또한, 무차별 대입할 최대 인자 개수를 선택하게 될 것입니다. 최대 3개까지는 1분, 최대 4개까지는 하루가 걸립니다...

모든 조합의 함수 프로토타입이 생성된 후에는 gen_hash_from_ast.py를 실행하여 앞서 생성된 파일을 줄 단위로 파싱하고 해당 XFG 해시를 생성해야 합니다. 이 작업이 완료되면 일치하는 XFG 해시와 함께 함수 프로토타입의 SQLite 데이터베이스를 갖게 됩니다. 매우 간단한 Binary Ninja 플러그인이 xfg_analyzer.py에 포함되어 있습니다. XFG로 보호된 바이너리에 대해 실행하면 모든 XFG 해시를 찾아 데이터베이스에서 조회하고, 일치하는 항목이 발견되면 정의된 함수에 새 함수 프로토타입을 적용합니다.

이것은 단지 PoC일 뿐임을 알아 두십시오. 실제로 유용하려면 (가능하면 Windows 헤더 파일의 모든 구조체/열거형 이름으로 시드된) 거대한 해시 데이터베이스를 생성하여 온라인 조회가 가능하도록 만들어야 합니다. 또한, 이 아이디어를 C++ XFG 해시로 확장하는 것은 매우 재미있는 프로젝트가 될 것입니다.

이 저장소의 코드는 어떤 방식으로든 자유롭게 사용하셔도 좋습니다. 유용하게 사용하셨다면, 저에게 알려주시면 감사하겠습니다.

  • ea
도구 다운로드