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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
autoharness — 라이브러리를 기반으로 퍼징 하네스를 자동으로 생성하는 도구 | Kitploit
도구/GitHubGitHub/parikhakshat/autoharness
Vulnerability AnalysisCode AnalysisFuzzingBinary Analysis
GitHubparikhakshat/autoharness

autoharness

라이브러리를 기반으로 퍼징 하네스를 자동으로 생성하는 도구

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

AutoHarness

제작: Akshat Parikh

이 도구는 무엇인가요?

AutoHarness는 퍼징 하니스를 자동으로 생성하는 도구입니다. 이 아이디어는 현재 퍼징 코드베이스에서 발생하는 문제에서 비롯되었습니다. 큰 코드베이스에는 수천 개의 함수와 코드 조각이 있으며, 이들은 라이브러리 깊숙이 내장되어 있습니다. 스마트 퍼저가 해당 코드 경로에 도달하는 것은 매우 어렵거나 때로는 불가능합니다. oss-fuzz와 같은 대규모 퍼징 프로젝트에서도 여전히 퍼징으로 커버되지 않는 코드베이스 부분이 있습니다. 따라서 이 프로그램은 이 문제를 어느 정도 완화하고 보안 연구원이 코드베이스를 초기에 테스트하는 데 사용할 수 있는 도구를 제공하고자 합니다. 이 프로그램은 C와 C++로 작성된 코드베이스만 지원합니다.

설정/데모

이 프로그램은 libfuzzer를 위해 llvm과 clang을, 함수 검색을 위해 Codeql을, 일반 프로그램을 위해 Python을 사용합니다. 이 프로그램은 Ubuntu 20.04에서 llvm 12와 python 3로 테스트되었습니다. 다음은 초기 설정입니다.

root@kitploit:~
sudo apt-get update;
sudo apt-get install python3 python3-pip llvm-12* clang-12 git;
pip3 install pandas lief subprocess os argparse ast;

Codeql 설치 절차는 https://github.com/github/codeql를 따르십시오. CLI 도구와 라이브러리를 설치해야 합니다. 제 테스트에서는 도구와 라이브러리를 모두 하나의 폴더에 저장했습니다. 마지막으로, 이 저장소를 클론하거나 릴리스를 다운로드하십시오. 다음은 nginx에서 다중 인자 모드를 설정하여 실행한 후의 프로그램 출력입니다. 제가 사용한 명령어입니다.

root@kitploit:~
python3 harness.py -L /home/akshat/nginx-1.21.0/objs/ -C /home/akshat/codeql-h/ -M 1 -O /home/akshat/autoharness/ -D nginx -G 1 -Y 1 -F "-I /home/akshat/nginx-1.21.0/objs -I /home/akshat/nginx-1.21.0/src/core -I /home/akshat/nginx-1.21.0/src/event -I /home/akshat/nginx-1.21.0/src/http -I /home/akshat/nginx-1.21.0/src/mail -I /home/akshat/nginx-1.21.0/src/misc -I /home/akshat/nginx-1.21.0/src/os -I /home/akshat/nginx-1.21.0/src/stream -I /home/akshat/nginx-1.21.0/src/os/unix" -X ngx_config.h,ngx_core.h

결과: image 컴파일을 더 디버깅하고 더 많은 헤더 파일을 추가하는 등으로 성공률을 높일 수 있습니다. nginx 프로젝트는 컴파일 후 공유 객체가 없다는 점에 유의하십시오. 하지만 이 프로그램에는 PIE 실행 파일을 공유 라이브러리로 변환하는 기능이 있습니다.

계획된 기능 (진행 순서)

  1. 구조체 퍼징

현재 프로그램에서 여러 인자를 가진 함수를 퍼징하기 위해 구현된 방법은 fuzzing data provider를 사용하는 것입니다. 이 통합에는 몇 가지 개선 사항이 있지만, 데이터 구조와 이 기능을 통합할 수 있다고 생각합니다. 코드 작성 중 겪은 문제는 codeql과 중첩 구조체에 관한 것입니다. 함수마다 다른 여러 쿼리를 작성하지 않으면 특히 어렵습니다. 요컨대, 이 기능은 더 많은 작업이 필요합니다. 또한 protobufs를 사용한 간단한 해결책도 고려 중입니다.

  1. 구현 기반 하니스 생성

codeql을 사용하면 함수의 매개변수가 어떻게 초기화되는지 매핑하는 제어 흐름 그래프를 생성할 수 있습니다. 해당 정보를 사용하여 더 나은 하니스를 만들 수 있습니다. 또 다른 방법은 라이브러리에 존재하는 함수의 구현을 찾고 그 정보를 사용하여 함수의 구현을 하니스로 추정하는 것입니다. 현재 이 작업에서 겪는 문제는 codeql로 제어 흐름 그래프를 생성하는 것입니다.

  1. 병렬 퍼징/거짓 양성 탐지

모든 하니스를 실행하고 ASAN을 사용하여 일반적인 거짓 양성을 감지하는 간단한 프로그램을 만들 수 있습니다. 또한 모든 하니스를 한 번에 실행하고 통계를 표시하는 새 인터페이스를 만들 수 있습니다.

기여/버그

이 프로그램에서 버그를 발견하면 이슈를 생성해 주십시오. 수정하도록 노력하겠습니다. 또한 새 기능이나 성능 업그레이드 또는 현재 계획된 기능 구현에 대한 아이디어가 있으면 풀 리퀘스트를 생성하거나 (contribution) 태그로 이슈를 생성해 주십시오.

PSA

이 도구는 일부 거짓 양성을 생성합니다. 충돌을 먼저 분석하여 유효한 버그인지 아니면 단순한 구현 버그인지 확인하십시오. 또한 일부 함수가 컴파일되지 않는 경우 디버그 모드를 활성화할 수 있습니다. 이렇게 하면 누락된 헤더 파일이 있는지 또는 링크 문제가 있는지 이해하는 데 도움이 됩니다. 작업 중인 프로젝트에 공유 라이브러리가 없고 실행 파일만 있는 경우, 실행 파일을 PIE 형태로 컴파일하여 이 프로그램이 공유 라이브러리로 변환할 수 있도록 하십시오.

참고 자료

  1. https://lief.quarkslab.com/doc/latest/tutorials/08_elf_bin2lib.html
도구 다운로드