Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
autoPwn — 自动化模糊测试中的重复性任务 | Kitploit
工具/GitHubGitHub/bannsec/autopwn
漏洞利用模糊测试二进制分析
GitHubbannsec/autopwn

autoPwn

自动化模糊测试中的重复性任务

查看仓库
1263055年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Daily Build Trigger

警告

目前正在完全重写此工具。重点将是交互式Linux应用程序,这些程序最初仅从stdin读取输入。尝试使用Shellphish的Driller和Fuzzer功能。

autoPwn当前状态可以有限地执行此操作。只需运行autoPwn ./binary,然后选择“开始”选项。

安装

考虑到这里所有的依赖问题,让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将复制所有已知路径,最小化语料库,然后最小化各个测试用例,并将它们提供在一个输出目录中。

下载工具