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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
autoPwn — 퍼징을 위한 반복 작업을 자동화하세요 | Kitploit
도구/GitHubGitHub/bannsec/autopwn
ExploitationFuzzingBinary Analysis
GitHubbannsec/autopwn

autoPwn

퍼징을 위한 반복 작업을 자동화하세요

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Daily Build Trigger

경고

현재 완전히 다시 작성 중입니다. 초점은 우선 stdin에서만 입력을 받는 대화형 리눅스 애플리케이션에 맞춰질 것입니다. Shellphish의 Driller 및 Fuzzer 기능을 사용하려고 시도 중입니다.

현재 상태의 autoPwn은 제한된 형태로 이 작업을 수행합니다. autoPwn ./binary를 실행한 다음 Start 옵션을 선택하기만 하면 됩니다.

설치

여기서 모든 종속성 문제를 고려할 때, autoPwn을 실행하는 가장 쉬운 방법은 Docker 빌드를 사용하는 것입니다. --security-opt 및 --cap-add 문을 제거할 수 있지만 일부 퍼징 기능이 작동하지 않을 수 있습니다.

root@kitploit:~
$ sudo docker pull bannsec/autoPwn
$ sudo docker run -it -v $PWD:/mount --security-opt="apparmor=unconfined" --cap-add=SYS_PTRACE -e DISPLAY=$DISPLAY -v /tmp/.X11-unix/:/tmp/.X11-unix/ bannsec/autopwn

Docker 빌드에서는 모든 것이 준비되어 있어야 합니다. 다음 명령으로 도구를 간단히 시작할 수 있습니다:

root@kitploit:~
$ autoPwn ./file

퍼징을 위한 소스 컴파일

autoPwn은 프로젝트를 퍼징하기 위한 소스 컴파일을 더 쉽게 만들어 줍니다. 이를 돕기 위해 autoPwnCompile이 만들어졌습니다. 소스 코드를 지정하고 옵션을 제공하면 퍼징할 준비가 된 실행 파일이 출력됩니다.

root@kitploit:~
usage: autoPwnCompile [-h] [--file FILE] [--ASAN | --MSAN] [--UBSAN]
                      [--fuzzer FUZZER]

Compile source to binaries for use in autoPwn.

optional arguments:
  -h, --help       show this help message and exit
  --file FILE      Single file to compile.
  --ASAN           Enable ASAN (default off)
  --MSAN           Enable MSAN (default off)
  --UBSAN          Enable UBSAN (default off)
  --fuzzer FUZZER  (optional) What fuzzer to compile for. Options are:
                   ['AFL']. Default is AFL.

다음은 autoPwn의 이전 버전에 대한 내용입니다..

개요

autoPwn은 단순한 스크립트에 붙인 거창한 이름입니다. afl-fuzz로 퍼징할 때 동일한 작업을 계속 반복한다는 것을 알게 되었습니다. 그래서 다음과 같은 기능을 수행하는 스크립트를 만들고자 했습니다:

  1. 스마트 프롬프트를 통해 퍼저 시작 작업을 자동화 및 간소화
  2. 설정 파일을 통해 퍼저 재시작 작업을 자동화 및 간소화
  3. afl 큐 최소화 프로세스 완전 자동화
  4. 추출 가능한 모든 취약점 경로를 추출하고 최소화하는 프로세스 완전 자동화
  5. 일반적인 모든 경로를 추출하고 최소화하는 프로세스 완전 자동화
  6. 초기 경로 값 생성의 완전 또는 부분 자동화

현재까지 스크립트는 처음 5가지를 수행할 수 있습니다. 6번째는 아직 개발 중이며, angr 기호 실행 엔진을 활용하여 가능한 초기 경로를 생성하려고 시도 중입니다. 그 시점이 되면 스크립트는 이론적으로 간단한 퍼징 작업을 완전히 자동화할 수 있을 것입니다.

예제

TUCTF의 "WoO2"라는 최근 챌린지를 살펴보겠습니다. 필요한 익스플로잇을 반드시 찾는 것은 아니지만, autoPwn이 경로 발견을 간소화하는 데 어떻게 사용될 수 있는지 보여줍니다.

프로그램 기본 실행 과정입니다:

root@kitploit:~
$ ./e67eb287f23011a40ef5bd5c2ad2f48ca97834cf 
Welcome! I don't think we're in Kansas anymore.
We're about to head off on an adventure!
Select some animals you want to bring along.

Menu Options:
1: Bring a lion
2: Bring a tiger
3: Bring a bear
4: Delete Animal
5: Exit

Enter your choice:
1
Choose the type of lion you want:
1: Congo Lion
2: Barbary Lion
1
Enter name of lion:
Test
Menu Options:
1: Bring a lion
2: Bring a tiger
3: Bring a bear
4: Delete Animal
5: Exit

Enter your choice:
5

간단한 입력 테스트 케이스를 만들어 봅시다:

root@kitploit:~
$ cat in/1 
1
1
Test
5

이제 퍼저를 쉽게 시작할 수 있습니다:

root@kitploit:~
$ autoPwn 
Setting up fuzz configuration
Target Binary (full or relative path): e67eb287f23011a40ef5bd5c2ad2f48ca97834cf
Command line args: 
Number of cores (default: 8): 
Test Case Dir (default: 'in/'): 
Test Case Dir (default: 'out/'): 
Max memory (default: 200): 4096
Starting fuzz
autoPwn> s
status check tool for afl-fuzz by <[email protected]>

Individual fuzzers
==================

>>> SESSION007 (0 days, 0 hrs) <<<

  cycle 1, lifetime speed 1 execs/sec, path 0/1 (0%)
  pending 1/1, coverage 0.15%, no crashes yet

>>> SESSION000 (0 days, 0 hrs) <<<

  cycle 1, lifetime speed 1 execs/sec, path 0/1 (0%)
  pending 1/1, coverage 0.15%, no crashes yet

>>> SESSION002 (0 days, 0 hrs) <<<

  cycle 1, lifetime speed 1 execs/sec, path 0/1 (0%)
  pending 1/1, coverage 0.15%, no crashes yet

>>> SESSION006 (0 days, 0 hrs) <<<

  cycle 1, lifetime speed 1 execs/sec, path 0/1 (0%)
  pending 1/1, coverage 0.15%, no crashes yet

>>> SESSION004 (0 days, 0 hrs) <<<

  cycle 1, lifetime speed 1 execs/sec, path 0/1 (0%)
  pending 1/1, coverage 0.15%, no crashes yet

>>> SESSION001 (0 days, 0 hrs) <<<

  cycle 1, lifetime speed 1 execs/sec, path 0/1 (0%)
  pending 1/1, coverage 0.15%, no crashes yet

>>> SESSION005 (0 days, 0 hrs) <<<

  cycle 1, lifetime speed 1 execs/sec, path 0/1 (0%)
  pending 1/1, coverage 0.15%, no crashes yet

>>> SESSION003 (0 days, 0 hrs) <<<

  cycle 1, lifetime speed 1 execs/sec, path 0/1 (0%)
  pending 1/1, coverage 0.15%, no crashes yet

Summary stats
=============

       Fuzzers alive : 8
      Total run time : 0 days, 0 hours
         Total execs : 0 million
    Cumulative speed : 8 execs/sec
       Pending paths : 8 faves, 8 total
  Pending per fuzzer : 1 faves, 1 total (on average)
       Crashes found : 0 locally unique


autoPwn> h
autoPwn
     s == fuzzer (s)tatus
     e == collect (e)xploits
     a == collect (a)ll paths
     m == (m)inimize corpus
     q == (q)uit

여기서 발생한 일은 스크립트가 몇 가지 기본값(사용 가능한 코어 수 결정 포함)을 생성한 것입니다. QEMU에서 실행하기 위해 추가 메모리가 필요했기 때문에 기본값 하나를 변경했습니다. autoPwn은 설정 파일을 생성하여 afl-utils (https://github.com/rc0r/afl-utils)에 전달했습니다. 설정 파일에서는 CPU 선호도도 설정하여 기본적으로 최적의 퍼징이 이루어지도록 했습니다.

이 시점에서 컴퓨터는 퍼징을 열심히 수행하고 있습니다. 하지만 퍼징의 핵심 측면 중 하나는 코퍼스를 최소화하는 것입니다. 이러한 점을 고려하여 autoPwn은 afl-fuzz 인스턴스를 모니터링하여 변이 시리즈가 완료되는 시점을 감지합니다. 완료되면 퍼징을 중지하고(최적은 아니지만 지금은 괜찮습니다), 코퍼스를 최소화한 후 퍼징을 다시 시작합니다. 이 모든 과정이 사람의 개입 없이 자동으로 이루어지므로, 실행해두고 잊을 수 있습니다.

어느 시점에 afl이 찾은 경로를 확인하고 싶을 수 있습니다. "a" 명령을 실행하면 autoPwn이 알려진 모든 경로를 복사하고, 코퍼스를 최소화한 후 각 케이스 자체를 최소화하여 출력 디렉터리에 제공합니다.

도구 다운로드