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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
uniFuzzer — Unicorn과 LibFuzzer 기반의 비공개 소스 바이너리 퍼징 도구 | Kitploit
도구/GitHubGitHub/pagalaxylab/unifuzzer
Embedded Systems SecurityIoT SecurityFuzzingBinary Analysis
GitHubpagalaxylab/unifuzzer

uniFuzzer

Unicorn과 LibFuzzer 기반의 비공개 소스 바이너리 퍼징 도구

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

uniFuzzer

uniFuzzer는 Unicorn과 LibFuzzer를 기반으로 한 폐쇄형 바이너리용 퍼징 도구입니다. 현재 ARM/MIPS의 32비트 LSB ELF 파일(주로 IoT 기기에서 볼 수 있음)을 퍼징할 수 있습니다.

中文介绍

특징

  • 거의 해킹이 필요 없으며 빌드가 쉽습니다.
  • 지정된 함수나 코드 조각을 대상으로 할 수 있습니다.
  • 상당한 속도로 커버리지 기반 퍼징을 수행합니다.
  • 의존성이 자동으로 해결되고 로딩됩니다.
  • PRELOAD를 통한 라이브러리 함수 오버라이드

빌드

  1. 대상 바이너리를 리버스 엔지니어링하여 퍼징할 흥미로운 함수를 찾습니다.

  2. callback 디렉토리에 .c 파일을 생성합니다. 이 파일은 다음 콜백을 포함해야 합니다.

    • void onLibLoad(const char *libName, void *baseAddr, void *ucBaseAddr): 각 의존 라이브러리가 Unicorn에 로드될 때 호출됩니다.
    • int uniFuzzerInit(uc_engine *uc): 모든 바이너리가 Unicorn에 로드된 직후 호출됩니다. 여기서 스택/힙/레지스터를 설정할 수 있습니다.
    • int uniFuzzerBeforeExec(uc_engine *uc, const uint8_t *data, size_t len): 각 퍼징 실행 라운드 전에 호출됩니다.
    • int uniFuzzerAfterExec(uc_engine *uc): 각 퍼징 실행 라운드 후에 호출됩니다.
  3. make를 실행하면 uf라는 퍼징 도구가 생성됩니다.

실행

uniFuzzer는 다음 환경 변수를 매개변수로 사용합니다.

  • UF_TARGET: 대상 ELF 파일의 경로
  • UF_PRELOAD: 프리로드 라이브러리의 경로. 라이브러리가 대상과 동일한 아키텍처인지 확인하십시오.
  • UF_LIBPATH: 의존 라이브러리가 있는 경로. 여러 경로는 :로 구분합니다.

그리고 다음 명령어를 사용하여 퍼징을 시작할 수 있습니다.

root@kitploit:~
UF_TARGET=<target> [UF_PRELOAD=<preload>] UF_LIBPATH=<libPath> ./uf

데모

기본 사용법을 위한 데모가 제공됩니다. 데모에는 다음 파일이 포함됩니다.

  • demo-vuln.c: 퍼징 대상입니다. 스택/힙 오버플로에 취약한 간단한 함수 vuln()을 포함합니다.
  • demo-libcpreload.c: PRELOAD 후킹용입니다. 빈 printf()와 단순화된 malloc()/free()를 정의합니다.
  • callback/demo-callback.c: 데모 vuln() 함수를 퍼징하는 데 필요한 콜백을 정의합니다.

먼저, mipsel용 gcc를 설치하십시오 (데비안에서는 gcc-mipsel-linux-gnu 패키지). 데모를 빌드합니다:

root@kitploit:~
# the target binary
# '-Xlinker --hash-style=sysv' tells gcc to use 'DT_HASH' instead of 'DT_GNU_HASH' for symbol lookup
# since currently uniFuzzer does not support 'DT_GNU_HASH'
mipsel-linux-gnu-gcc demo-vuln.c -Xlinker --hash-style=sysv -no-pie -o demo-vuln

# the preload library
mipsel-linux-gnu-gcc -shared -fPIC -nostdlib -Xlinker --hash-style=sysv demo-libcpreload.c -o demo-libcpreload.so

또는 위 명령어로 컴파일된 demo-vuln 및 demo-libcpreload.so 파일을 사용할 수 있습니다.

다음으로, make를 실행하여 uniFuzzer를 빌드합니다. MIPS 데모를 직접 컴파일한 경우 일부 주소가 미리 빌드된 것과 다를 수 있으므로 demo-callback.c를 그에 맞게 업데이트해야 합니다.

마지막으로, MIPS의 libc 라이브러리가 준비되었는지 확인합니다. 데비안에서는 libc6-mipsel-cross 패키지를 설치한 후 /usr/mipsel-linux-gnu/lib/에 있으며, 이것이 UF_LIBPATH로 설정되어야 합니다.

root@kitploit:~
UF_TARGET=<path to demo-vuln> UF_PRELOAD=<path to demo-libcpreload.so> UF_LIBPATH=<lib path for MIPS> ./uf

Hack on Unicorn

Unicorn은 이 이슈로 인해 QEMU의 JIT 캐시를 지우므로, 각 실행 라운드마다 대상 바이너리를 JIT 재컴파일해야 하므로 퍼징 속도가 느려집니다.

성능을 위해 해당 이슈에 설명된 대로 tb_flush(env);를 주석 처리할 수 있습니다.

할 일

  • 시스템 콜 지원
  • 다른 아키텍처 및 바이너리 형식 지원
  • GNU_HASH 지원
  • IFUNC 지원
  • 환경 설정 통합 및 API 제공
도구 다운로드