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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
obfuscation_detection — 난독화된 코드 및 기타 흥미로운 코드 구조를 식별하는 Binary Ninja 플러그인 | Kitploit
도구/GitHubGitHub/mrphrazer/obfuscation_detection
Static AnalysisReverse EngineeringMalware AnalysisBinary AnalysisFirmware Analysis
GitHubmrphrazer/obfuscation_detection

obfuscation_detection

난독화된 코드 및 기타 흥미로운 코드 구조를 식별하는 Binary Ninja 플러그인

저장소 보기
672743개월 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

난독화 탐지 (v2.4)

저자: Tim Blazytko

자동으로 난독화된 코드 및 기타 흥미로운 코드 구조를 탐지합니다

설명:

_난독화 탐지(Obfuscation Detection)_는 바이너리에서 난독화된 코드와 흥미로운 코드 구조(예: 상태 머신)를 탐지하는 Binary Ninja 플러그인입니다. 바이너리가 주어지면 이 플러그인은 리버스 엔지니어링 중에 더 자세히 살펴볼 가치가 있는 코드 위치를 식별하여 분석을 용이하게 합니다.

다양한 휴리스틱을 기반으로 이 플러그인은 복잡하거나 일반적이지 않은 코드 구조를 포함하는 함수를 식별합니다. 이러한 코드 구조는 다음을 구현할 수 있습니다.

  • 난독화된 코드
  • 상태 머신 및 프로토콜
  • C&C 서버 통신
  • 문자열 복호화 루틴
  • 암호화 알고리즘

다음 블로그 게시물은 기본 휴리스틱에 대한 자세한 정보를 제공하고 사용 사례를 보여줍니다.

  • 제어 흐름 평탄화의 자동 탐지
  • 난독화 코드의 자동 탐지
  • 비일반 코드 탐지를 위한 통계 분석
  • 바이너리 내 API 함수 식별

몇 가지 예제 사용 사례는 examples에서 찾을 수 있습니다. 또한 REcon 강연 "바이너리에서 코드 탐지 전략을 사용하여 비밀 밝히기"는 몇 가지 사용 사례를 보여줍니다. 슬라이드는 여기에서 찾을 수 있으며, 녹화 영상은 여기에서 찾을 수 있습니다.

핵심 기능

  • 대규모 바이너리에서 흥미로운 코드 구조를 식별합니다
  • Binary Ninja의 그래프 뷰에서 정렬되지 않은 명령어를 강조 표시합니다
  • 효율적이고 아키텍처에 독립적인 구현
  • 백그라운드 작업으로 실행됩니다
  • 식별된 함수에 해당 휴리스틱 또는 유틸리티 태그를 자동으로 추가합니다
  • UI 및 헤드리스 모드에서 사용할 수 있습니다

설치

이 도구는 Binary Ninja의 플러그인 관리자를 사용하여 설치할 수 있습니다.

헤드리스 버전의 경우 다음 단계를 따르세요:

root@kitploit:~
git clone https://github.com/mrphrazer/obfuscation_detection.git
cd obfuscation_detection

# install obfuscation_detection
pip install .

사용법

플러그인은 사용자 인터페이스와 헤드리스 모드에서 사용할 수 있습니다.

사용자 인터페이스

개별 휴리스틱을 실행하려면 Plugins -> Obfuscation Detection을 선택하고, 개별 유틸리티 탐지를 실행하려면 Plugins -> Obfuscation Detection -> Utils를 선택하세요. Plugins -> Obfuscation Detection -> All 명령은 모든 휴리스틱과 모든 유틸리티를 함께 실행합니다.

플러그인 메뉴

결과는 로그 창에 표시됩니다:

Binary Ninja 로그

식별된 함수 주소를 클릭하면 Binary Ninja가 선택한 함수로 이동합니다.

헤드리스

헤드리스 모드에서 플러그인을 사용하려면 scripts/detect_obfuscation.py를 실행하세요:

root@kitploit:~
$ python3 scripts/detect_obfuscation.py <binary>

이 명령은 모든 휴리스틱과 모든 유틸리티를 실행합니다. 기계가 읽을 수 있는 출력을 원하면 --json을 전달하세요:

root@kitploit:~
$ python3 scripts/detect_obfuscation.py --json <binary>

JSON 페이로드는 detections 키 아래에 모든 결과를 포함합니다. 각 탐지에는 자동화를 위한 안정적인 id와 사람이 읽을 수 있는 name이 있습니다. 각 태그된 함수 발견에는 Binary Ninja 플러그인에서 사용되는 태그 유형과 설명이 포함됩니다.

헤드리스 모드에서 상태 머신 휴리스틱만 실행하려면 scripts/detect_state_machine.py를 사용하세요:

root@kitploit:~
$ python3 scripts/detect_state_machine.py [--json] <binary>

탐지 휴리스틱

플러그인은 다양한 코드 구조를 탐지하기 위해 여러 탐지 휴리스틱을 구현합니다. 다음에서는 각 휴리스틱을 간략히 설명하고 사용법을 설명합니다.

큰 기본 블록

큰 기본 블록 휴리스틱은 기본 블록당 평균 명령어 수가 가장 많은 상위 10%의 함수를 식별합니다. 이를 통해 다음을 탐지할 수 있습니다.

  • 풀린 코드(unrolled code)
  • 암호화 구현
  • 초기화 루틴
  • 산술 난독화 / 혼합 부울-산술

복잡한 함수

복잡한 함수 휴리스틱은 가장 복잡한 제어 흐름 그래프(순환 복잡성 기준)를 가진 상위 10%의 함수를 식별합니다. 이를 통해 다음을 식별할 수 있습니다.

  • 복잡한 디스패칭 루틴 및 프로토콜
  • 상태 머신
  • 불투명 술어로 난독화된 함수

상태 머신

상태 머신 휴리스틱은 그래프 이론 속성을 사용하여 상태 머신을 구현하는 함수를 식별합니다. 일반적으로 이러한 상태 머신은 루프에서 디스패치되는 switch 문으로 표현될 수 있습니다. 이 휴리스틱은 다음을 식별할 수 있습니다.

  • 네트워크 프로토콜 디스패칭
  • 파일 구문 분석 로직
  • C&C 서버 통신 / 명령 디스패칭
  • 제어 흐름 평탄화

비일반 명령어 시퀀스

비일반 명령어 시퀀스 휴리스틱은 통계 분석을 수행하여 코드 패턴이 사전 계산된 기준과 차이가 있는 상위 10%의 함수를 식별합니다. 이 방식을 통해 휴리스틱은 다음을 식별할 수 있습니다.

  • 암호화 구현
  • 부동 소수점 연산의 집중적인 사용
  • 산술 난독화 / 혼합 부울-산술
  • 일반적인 난독화 패턴

중첩 명령어

중첩 명령어 휴리스틱은 정렬되지 않은 명령어(명령어 바이트가 두 개의 다른 명령어에 의해 공유됨)가 있는 함수를 식별합니다. 이 휴리스틱은 다음을 식별합니다.

  • 깨진 디스어셈블리(예: 코드로 표시된 데이터)
  • 다른 명령어로 점프하는 불투명 술어

휴리스틱이 Binary Ninja의 사용자 인터페이스에서 사용되는 경우, 중첩 명령어는 그래프 뷰에서도 강조 표시됩니다.

가장 많이 호출된 함수

가장 많이 호출된 함수 휴리스틱은 서로 다른 함수로부터 가장 많은 호출을 받은 상위 10%의 함수를 식별합니다. 이 방식을 통해 휴리스틱은 다음을 식별할 수 있습니다.

  • 문자열 복호화 루틴
  • 정적으로 링크된 바이너리의 라이브러리 함수

루프 빈도

이 휴리스틱은 루프 수가 많은 함수를 식별합니다. 이러한 종류의 함수는 다음을 구현할 수 있습니다.

  • 구조화된 데이터 형식에 대한 복잡한 구문 분석 로직
  • 집중적인 알고리즘 연산

이 휴리스틱은 잠재적인 성능 병목 현상을 찾는 데도 도움이 됩니다.

축소 불가능 루프

이 휴리스틱은 일반적으로 다음을 암시하는 드물고 복잡한 루프 구조를 가진 함수를 식별합니다.

  • 적극적인 컴파일러 최적화
  • 수작업 어셈블리
  • goto 문 사용
  • 난독화된 코드

XOR 복호화 루프

이 휴리스틱은 루프 내에서 상수로 XOR 연산을 수행하는 함수를 식별합니다. 이 방식을 통해 휴리스틱은 다음을 식별할 수 있습니다.

  • 문자열 복호화 루틴
  • 코드 복호화 스텁
  • 암호화 구현

복잡한 산술 표현식

이 휴리스틱은 표현식에 둘 이상의 산술 연산과 하나의 부울 연산이 동시에 있는 함수를 식별합니다. 이 방식을 통해 휴리스틱은 다음을 식별할 수 있습니다.

  • 혼합 부울-산술 난독화
  • 초기화 루틴
  • 암호화 구현

중복 서브그래프

이 휴리스틱은 반복적인 컨텍스트 해싱 접근 방식을 사용하여 각 함수의 제어 흐름 그래프 내에서 반복되는 다중 블록 구조를 탐지합니다. 각 블록의 opcode 시그니처와 해당 후속 블록의 시그니처를 비교하여 단일 함수에서 중복되거나 거의 중복된 서브그래프를 식별합니다. 이를 통해 다음을 찾는 데 도움이 됩니다.

  • 여러 번 복제된 작은 상태 머신 또는 디스패처 블록과 같은 난독화 스텁
  • 컴파일러 최적화로 인해 도입된 펼쳐지거나 인라인된 루프
  • 범위 분할기 및 결정 트리와 같은 다중 분기 로직
  • 반복되는 암호화 또는 체크섬 스텁

유틸리티

또한 플러그인은 흥미로운 함수 및 코드 영역에 대한 더 좁은 유틸리티를 포함합니다. 이러한 유틸리티는 Utils 하위 메뉴에서 계속 사용할 수 있으며, All 명령은 더 넓은 휴리스틱과 함께 실행됩니다.

진입 함수

이 도우미는 알려진 호출자가 없는 함수를 식별합니다. 이러한 함수는 다음과 같을 수 있습니다.

  • 바이너리의 진입점
  • 디스어셈블러가 호출 계층을 복구할 수 없었던 간접 점프 대상

리프 함수

이 도우미는 다른 함수를 호출하지 않는 함수를 식별합니다. 이러한 종류의 함수는 예를 들어 다음과 같은 함수일 수 있습니다.

  • 다양한 코드 위치에서 사용되는 기능을 구현하기 위해 컴파일러에 의해 아웃라인된 함수
  • 다른 함수로의 트램펄린
  • 코드 난독화 체계의 일부(예: 제어 흐름 난독화를 위한 아웃라인된 계산)

재귀 함수

이 도우미는 재귀 함수(직접 또는 간접적으로 자신을 호출하는 함수)를 식별합니다. 재귀 함수는 다음을 나타낼 수 있습니다.

  • 트리 또는 그래프 순회와 같은 알고리즘 구현
  • 정적 분석을 복잡하게 하기 위해 설계된 난독화된 코드
  • 수학적 알고리즘 또는 복잡한 구문 분석 루틴의 구현
  • 깊은 재귀로 인한 잠재적인 스택 오버플로 취약점

섹션 엔트로피

이 도우미는 각 섹션의 엔트로피를 평가합니다. 엔트로피는 0에서 8 사이의 값을 갖는 무작위성의 통계적 측정값입니다. 엔트로피가 8에 가까운 섹션은 높은 수준의 무작위성을 나타내며 다음을 암시할 수 있습니다.

  • 패킹되거나 압축된 코드
  • 암호화된 데이터 또는 코드
  • 임의의 데이터

RC4

이 도우미는 일반적으로 RC4의 키 스케줄링 알고리즘(KSA) 및 의사 난수 생성 알고리즘(PRGA)과 관련된 휴리스틱 마커를 사용하여 잠재적인 RC4 알고리즘 구현을 탐지합니다. RC4는 다음과 같은 목적으로 맬웨어에서 널리 사용됩니다.

  • 문자열 및 기타 데이터 페이로드 복호화
  • 명령 및 제어(C&C) 통신 난독화

연락처

자세한 내용은 @mr_phrazer에게 문의하세요.

도구 다운로드