Предупреждение
Полностью переписываю это прямо сейчас. Основное внимание будет уделено интерактивным приложениям Linux, которые только для начала получают ввод от стандартного ввода. Попытка использовать функциональность Shellphish Driller и
Ссылка скрыта от гостей
.autoPwn в своем текущем состоянии сделает это в ограниченной форме. Просто запустите и autoPwn ./binary выберите опцию «Пуск».
Установка
Учитывая все проблемы с зависимостями, самый простой способ запустить и запустить autoPwn - это использовать сборку Docker. Обратите внимание, что вы можете удалить операторы --security-opt и --cap-add, но некоторые
Ссылка скрыта от гостей
аспекты могут не сработать.
Код:
$ sudo docker pull bannsec/autoPwn
$ sudo docker run -it -v $PWD:/mount --security-opt="apparmor=unconfined" --cap-add=SYS_PTRACE bannsec/autoPwn
В сборке Docker все должно быть готово к работе. Вы можете просто запустить инструмент с:
Код:
$ autoPwn ./file
Компиляция источника для фаззинга
autoPwn пытается упростить компиляцию источника для фаззинга проекта. Чтобы помочь с этим,
[B]autoPwnCompile[/B]
был создан. Просто укажите его на свой исходный код и задайте ему параметры, и он выведет исполняемый файл, готовый к распылению.
Код:
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 - хорошее имя для простого скрипта. Работая с fuzzing и afl-fuzz, я заметил, что буду выполнять одни и те же задачи снова и снова. Имея это в виду, я хотел создать скрипт, который бы выполнял следующее:
- Автоматизируйте и упростите задачу запуска фаззера с помощью интеллектуальных подсказок.
- Автоматизируйте и упростите задачу перезапуска фаззера через файл конфигурации
- Полностью автоматизировать процесс минимизации всех очередей
- Полностью автоматизировать процесс извлечения и минимизации всех возможных путей использования
- Полностью автоматизировать процесс извлечения и минимизации всех возможных путей в целом.
- Полностью или частично автоматизировать генерацию начальных значений пути.
Ссылка скрыта от гостей
angr для создания возможных начальных путей. На этом этапе сценарий теоретически может полностью автоматизировать простые задачи фаззинга.Пример
Давайте посмотрим на недавний вызов TUCTF под названием «WoO2». Хотя он не обязательно находит нужный эксплойт, он показывает, как autoPwn можно использовать для упрощения обнаружения пути.
Вот основной прогон через программу:
Код:
$ ./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
Код:
$ cat in/1
1
1
Test
5
Теперь мы можем легко запустить фаззер:
Код:
$ 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
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. AutoPan создал конфигурационный файл, который затем передал afl-utils ( ). В файле config он также устанавливает аффинность ЦП, так что fuzzing будет оптимальным по умолчанию.
В этот момент ваш компьютер отцепляется от раздувания. Однако одним из ключевых аспектов фузирования является минимизация корпуса. С учетом этого autoPwn наблюдает за экземпляром afl-fuzz, чтобы следить за тем, когда последовательность мутаций завершена. Когда это произойдет, он прекратит фузирование (неоптимальное, но пока прекрасно), минимизирует корпус, затем вновь начнет фузирование. Он делает это без вмешательства человека.
В какой-то момент вы, возможно, захотите взглянуть на то, какие пути за спиной нашли. При выполнении команды "a" autoPan копирует все известные пути, минимизирует корпус, а затем минимизирует сами случаи и предоставляет их в выходной каталог.
Ссылка скрыта от гостей