
Сканер перехвата приложений для macOS

boko.py — это сканер приложений для macOS, который ищет и выявляет потенциальные уязвимости dylib-перехвата (dylib hijacking) и слабых dylib для исполняемых файлов приложений, а также скрипты, используемые приложением, которые могут быть потенциально бэкдорированы. Инструмент также отмечает интересные файлы и выводит их список вместо ручного просмотра файловой системы для анализа. Благодаря функции активного обнаружения больше не нужно гадать, уязвим ли исполняемый файл для dylib-перехвата!
Причина создания этого инструмента — желание получить больший контроль над данными, которые обнаруживает Dylib Hijack Scanner. Большинство общедоступных сканеров прекращают работу после обнаружения первого случая уязвимого dylib, не раскрывая остальные rpath. Поскольку иногда первый результат раскрывается в несуществующем файле в защищённой области SIP, мне хотелось получить и остальные раскрытые пути. Из-за этого возникают ложные срабатывания, поэтому инструмент присваивает каждому элементу поле уверенности (certainty).
| Уверенность | Описание |
|---|---|
| Определённая | Уязвимость на 100% эксплуатируема |
| Высокая | Если уязвимость связана с основным исполняемым файлом, а rpath находится вторым в порядке загрузки, есть большая вероятность, что уязвимость эксплуатируема |
| Потенциальная | Присваивается dylib и скриптам, которые можно бэкдорировать; стоит проверить, но может быть неэксплуатируемой |
| Низкая | Низкая вероятность эксплуатации из-за позднего порядка загрузки, но знание — сила |
Основа этого инструмента — scan.py из DylibHijack от Patrick Wardle (@synack).
boko.py [-h] (-r | -i | -p /path/to/app) (-A | -P | -b) [-oS outputfile | -oC outputfile | -oA outputfile] [-s] [-v]
Рекомендуется только использовать активный режим (-A) с флагом -p и выбором конкретной программы. Также имеет смысл использовать -v с -oS или -oA, если вы не ищете только уязвимости с определённой уверенностью.
Предупреждение:
Настоятельно не рекомендуется запускать этот инструмент с флагами -i и (-A или -b) одновременно. Эта комбинация будет открывать каждый исполняемый файл в системе на 3 секунды. Я не несу ответственности за сбой или замедление работы вашей системы в результате такого запуска. Кроме того, если в вашей системе есть бездействующее вредоносное ПО, оно будет выполнено. Также я рекомендую не сканировать всю директорию /Applications, если у вас установлен Xcode, потому что это занимает очень много времени.
python -m pip install psutil| Аргумент | Описание |
|---|
| -h, --help | Показать это справку и выйти |
| -r, --running | Проверить текущие запущенные процессы |
| -i, --installed | Проверить все установленные приложения |
| -p /file.app | Проверить конкретное приложение, например /Application/Safari.app |
| -A, --active | Запускает обнаруженные исполняемые файлы для активного выявления перехватываемых dylib |
| -P, --passive | Выполняет проверки только путём просмотра заголовков файлов (по умолчанию) |
| -b, --both | Выполняет оба метода тестирования уязвимостей |
| -oS outputfile | Выводит стандартный вывод в файл .log |
| -oC outputfile | Выводит результаты в файл .csv |
| -oA outputfile | Выводит результаты в файл .csv и стандартный лог |
| -s, --sipdisabled | Использовать, если SIP отключена в системе, для поиска в обычно доступных только для чтения путях |
| -v, --verbose | Выводить все результаты в подробном режиме во время работы скрипта; без этого флага на консоль отображаются только уязвимости с определённой уверенностью |