Sandblaster - это инструмент для переворота (декомпилирование) бинарных профилей песочниц с яблочной коробкой. Профили песочниц Apple написаны на SBPL ( язык профиля песочницы ), на схему языка, а затем собираются в незарегистрированный бинарный формат и отправляются. В основном используемые на iOS, профили песочницы также присутствуют и на macOS. Sandblaster, насколько нам известно, является первым инструментом, который переворачивает профили двоичных песочниц на их первоначальный формат SBPL. Sandblaster работает над iOS с версии 7 и далее, включая iOS 11.
Технический отчет Sandblaster: Revversing The Apple Sandbox представляет обширную (хотя немного устаревшую) информацию о внутренних интернатах Sandblaster.
Sandblaster полагался на предыдущую работу Диониса Блазакиса и кода и слайдов Стефана Эссера.
Реверсер (в reverse-sandbox/ папке) и инструмент Helper (в helpers/ папке) работают на любой платформе Python, работающей.
Sandblaster может быть установлен и запустить автономный, хотя мы рекомендуем установить и запустить его из Iextractor. Проверьте документацию iextractor для получения информации.
Iextractor-это программное обеспечение с открытым исходным кодом, выпущенное по лицензии BSD с 3 пунктами.
Sandblaster требует Python2 для реверсий (в reverse-sandbox/ ), Python3 с библиотекой lief для Helper Script (в helpers/ ).
После клонирования хранилища Sandblaster вы должны установить lief для Python3:
pip3 install lief
Если установка lief не удается, вам нужно скомпилировать ее. Более подробную информацию о том, как скомпилировать его на странице вики.
Чтобы использовать Sandblaster, вам нужен доступ к профилям двоичной песочниц и операциям песочницы, набор строк, которые определяют специфические для песочницы действия. Операции песочницы и профили песочницы извлекаются с использованием сценария helpers/extract_sandbox_data.py . Профили песочницы извлекаются из расширения песочницы ядра (в качестве пакета для iOS 4 и 9-11) или из кэша ядра (в качестве пакета для iOS 12) или из файла sandboxd в файловой системе iOS (для iOS 5-8). Операции песочницы извлекаются либо из расширения ядра (для iOS 4-11), либо из кэша ядра (для iOS 12).
Таким образом, в качестве входных данных, Sandblaster требует ядра, расширения песочницы ядра и файла sandboxd . Информация и сценарии по извлечению их из общедоступного файла IPSW ( программное обеспечение iPhone ) представлены iextractor.
Ниже приведены шаги и команды, чтобы отменить профили песочницы для iOS 8.4.1, предполагая расширение ядра песочницы ( com.apple.security.sandbox.kext ) и файл sandboxd доступен:
# Extract sandbox operations from kernelcache.
cd helpers/
./extract_sandbox_data.py -o iPad2,1_8.4.1_12H321.sb_ops iPad2,1_8.4.1_12H321.com.apple.security.sandox.kext 8.4.1
# Extract binary sandbox profile files from sandboxd.
mkdir iPad2,1_8.4.1_12H321.sandbox_profiles
./extract_sandbox_data.py -O iPad2,1_8.4.1_12H321.sandbox_profiles/ iPad2,1_8.4.1_12H321.sandboxd 8.4.1
# Reverse all binary sandbox profiles.
cd ../reverse-sandbox/
mkdir iPad2,1_8.4.1_12H321.reversed_profiles
for i in ../helpers/iPad2,1_8.4.1_12H321.sandbox_profiles/*; do python reverse_sandbox.py -r 8.4.1 -o ../helpers/iPad2,1_8.4.1_12H321.sb_ops -d iPad2,1_8.4.1_12H321.reversed_profiles/ "$i"; done
Ниже приведены шаги и команды, чтобы отменить профили песочницы для iOS 9.3, предполагая расширение ядра песочницы ( com.apple.security.sandbox.kext ): Доступно:
# Extract sandbox operations from kernelcache.
cd helpers/
./extract_sandbox_data.py -o iPhone5,1_9.3_13E237.sb_ops iPhone5,1_9.3_13E237.com.apple.security.sandox.kext 9.3
# Extract sandbox profile bundle from kernel sandbox extension.
./extract_sandbox_data.py -O . iPhone5,1_9.3_13E237.com.apple.security.sandox.kext 9.3
cd ../reverse-sandbox/
# Reverse all binary sandbox profiles in sandbox bundle.
mkdir iPhone5,1_9.3_13E237.reversed_profiles
# Print all sandbox profiles in bundle.
python reverse_sandbox.py -r 9.3 -o ../helpers/iPhone5,1_9.3_13E237.sb_ops -d iPhone5,1_9.3_13E237.reversed_profiles/ ../helpers/sandbox_bundle -psb
# Do actual reversing.
python reverse_sandbox.py -r 9.3 -o ../helpers/iPhone5,1_9.3_13E237.sb_ops -d iPhone5,1_9.3_13E237.reversed_profiles/ ../helpers/sandbox_bundle
Извлечение профилей двоичной песочницы отличается между iOS <= 8 и iOS> = 9. Поскольку iOS> = 9 Профили двоичных песочниц хранятся в пакете песочницы в расширении песочницей ядра. Сценарий helpers/extract_sandbox_data.py извлекает их соответствующим образом в зависимости от версии iOS.
Параметр -psb для reverse_sandbox.py распечатывает профили песочницы в пакете песочницы, не выполняя фактическую реверсию.
Сценарий reverse_sandbox.py должен быть запущен в своем каталоге ( reverse-sandbox/ ), поскольку ему нужны другие модули Python и файл logger.config .
helpers/ подпапку содержат вспомогательные сценарии, которые обеспечивают более приятный интерфейс для внешних инструментов.
Фактический реверсион является частью reverse-sandbox/ папки. Файлы здесь могут быть классифицированы следующим образом:
reverse_sandbox.py . Он анализирует аргументы командной строки, делает базовый анализ бинарного файла ввода (извлекает разделы) и вызывает соответствующие функции из других модулей.operation_node.py . Он предоставляет функции для создания графа правил, соответствующего профилю песочницы, и конвертировать график в SBPL. Это вызвано reverse_sandbox.py .sandbox_filter.py и конфигурацией в filters.json , filter_list.py и filters.py . Функции специфических фильтров вызываются с помощью operation_node.py .sandbox_regex.py regex_parse.py regex_parse.py - это анализатор заднего фонаря, который преобразует двоичное представление в базовый график. sandbox_regex.py преобразует представление графа (автомат) в фактическое регулярное выражение (то есть строка символов и метахарактеров). Он вызывается reverse_sandbox.py для анализа регулярных выражений, причем полученный список регулярных выражений передается в функции, выявленные operation_node.py ; operation_node.py передает их в файлы обработки фильтра песочницей.reverse_string.py . Основной класс SandboxString в reverse_string.py используется в sandbox_filter.py .logger.config . По умолчанию INFO и сообщения более высокого уровня печатаются в консоли, в то время как DEBUG и сообщения более высокого уровня печатаются в файл reverse.log . Sandblaster работает в iOS версии 4 и далее, включая iOS 12. Apple вносит обновления в двоичном формате профилей песочницы: поскольку профили песочницы iOS 9 хранятся в пакете, так как строки iOS 10 объединяются в специальном бинальном формате. iOS 11 не принес никаких изменений в формат.
Присоединяйтесь к нам на Discord для живых дискуссий.