
Linux: перечисление привилегий после эксплуатации
Enumy — это сверхбыстрый портативный исполняемый файл, который вы загружаете на целевую Linux-машину во время пентеста или CTF на этапе пост-эксплуатации. Запуск enumy перечисляет уязвимости системы для поиска распространённых уязвимостей безопасности.
Вы можете загрузить готовый бинарный файл из вкладки release x86 или x64. Статически слинкован с musl. Перенесите готовый бинарный файл enumy на целевую машину.
./enumy
$ ./enumy64 -h
▄█▀─▄▄▄▄▄▄▄─▀█▄ _____
▀█████████████▀ | __|___ _ _ _____ _ _
█▄███▄█ | __| | | | | | |
█████ |_____|_|_|___|_|_|_|_ |
█▀█▀█ |___|
https://github.com/luke-goddard/enumy
Enumy - Used to enumerate the target the target environment & look for
common security vulnerabilities and hostspots
----------------------------------------------------------------------
Output
-o <loc> OUTPUT results to location (default enumy.json)
Walking Filesystem
-i <loc> IGNORE files in this directory (usefull for network shares)
-w <loc> Only WALK files in this directory (usefull for devlopment)
Scan Options
-f run FULL scans (CPU intensive scan's enabled)
-t <num> THREADS (default 4)
Printing Options
-a Print all security AUDIT issues to screen (probably won't help duing a CTF)
Issues are ALWAYS logged in result files regardless of this flag being set.
-d <1|2> Print DEBUG mode (1 low, 2 high) to enable error being printed to screen.
-g <H|M|L> print to screen values GREATER than or equal to high, medium & low
-p <H|M|L|I> do not PRINT to screen high, medium, low & info issues (see below for example)
-m 1-100 MAXIMUM number of issues with same name to print to screen default (unlimited)
Для компиляции в режиме разработки требуются только make и библиотека libcap.
sudo apt-get install libcap-dev
make
Чтобы избавиться от зависимости от glibc и статически слинковать все библиотеки/скомпилировать с musl, сделайте следующее. Примечание: для этого вам понадобится установленный Docker, чтобы создать окружение сборки на Alpine.
./build.sh 64bit
./build.sh 32bit
./build.sh all
cd output

Ниже представлен постоянно растущий список реализованных сканирований.
Примечание: чтобы вывести на экран результаты, отмеченные ❌, включите режим аудита с помощью флага -a.
Это сканирование проверяет версию ядра на соответствие известным версиям с эксплойтами.
Идея этого сканирования — перечислить систему в поиске необычных или имеющих слабые права SUID/GUID-бинарников, которые могут быть использованы.
В последнее время ядро Linux поддерживает возможности — это предпочтительный способ дать файлу подмножество прав root для снижения риска. Хотя это гораздо безопаснее, если вам повезёт найти необычные возможности, установленные для файла, вполне возможно, что вы сможете использовать исполняемый файл для получения более высокого доступа. Enumy проверяет возможности, установленные для всех исполняемых файлов в системе.
Это более общее сканирование, которое пытается классифицировать файлы на основе их содержимого, расширения и имени. Enumy ищет файлы, такие как закрытые ключи, пароли и файлы резервных копий.
Файлы coredump — это тип ELF-файла, содержащего адресное пространство процесса при его неожиданном завершении. Представьте, если память этого процесса была читаемой и содержала конфиденциальную информацию. Или, что ещё интереснее, этот coredump может быть для внутреннего инструмента, который упал с segfault, что позволяет вам разработать эксплойт нулевого дня.
Некоторые файлы никогда не должны иметь установленный SUID-бит; часто ленивый системный администратор даёт файлу вроде docker, ionice, hexdump SUID, чтобы заставить работать bash-скрипт или облегчить свою жизнь. Это сканирование пытается найти некоторые известные "плохие" SUID-бинарники.
Sysctl используется для изменения параметров ядра во время выполнения. Также можно запросить эти параметры ядра и проверить, включены ли важные меры безопасности, такие как ASLR.
"Жизнь за счёт системы" — это техника, при которой атакующие используют то, что уже есть в системе. Они делают это для скрытности и по другим причинам. Это сканирование перечисляет файлы, которые искал бы атакующий.
Это сканирование анализирует ELF-файлы на предмет их зависимостей. Если у нас есть доступ на запись к любой из этих зависимостей или к значениям DT_RPATH и DT_RUNPATH, мы можем создать свой вредоносный разделяемый объект и внедрить его в исполняемый файл, потенциально скомпрометировав систему.
SSH — один из самых распространённых сервисов в реальном мире. Его также довольно легко неправильно настроить. Это сканирование проверяет, можно ли его как-то усилить.
Сканирование текущего пользователя просто анализирует /etc/passwd. С помощью этой информации мы находим учётные записи root, незащищённые и отсутствующие домашние каталоги и т.д.
Это сканирование находит файлы, доступные для записи всем, файлы с неравномерными правами и файлы без владельца. Вдохновение для этого сканирования см. здесь.
Это сканирование будет полезно для людей, пытающихся укрепить свою Linux-машину. Оно выявит такие проблемы, как незашифрованные диски и небезопасные конфигурации монтирования.
| Тип сканирования | Быстрое сканирование | Полное сканирование | Реализовано | Вывод на экран | Сохранение в журнал |
|---|
| Поиск эксплойтов ядра | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| Сканирование SUID/GUID | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| Сканирование возможностей файлов | ✔️ | ✔️ | ✔️ | ❌ | ✔️ |
| Сканирование интересных файлов | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| Сканирование coredump | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| Сканирование бинарников для выхода | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| Сканирование конфигурации SSHD | ✔️ | ✔️ | ✔️ | ❌ | ✔️ |
| Сканирование sysctl | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| Сканирование "жизни за счёт системы" | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| Сканирование текущего пользователя | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| Сканирование внедрения *.so | ❌ | ✔️ | ✔️ | ❌ | ✔️ |
| Сканирование прав доступа | ❌ | ✔️ | ✔️ | ❌ | ✔️ |
| Сканирование файловой системы | ❌ | ✔️ | ✔️ | ❌ | ✔️ |
| Сканирование Docker | ✔️ | ✔️ | ❌ | ✔️ | |
| Сканирование окружения | ✔️ | ✔️ | ❌ | ✔️ | |
| Сканирование привилегированного доступа | ✔️ | ✔️ | ❌ | ✔️ | |
| Сканирование сети | ✔️ | ✔️ | ❌ | ✔️ | |
| Сканирование информации о системе | ✔️ | ✔️ | ❌ | ✔️ | |
| Сканирование информации о версиях | ✔️ | ✔️ | ❌ | ✔️ | |
| Сканирование стандартных слабых учётных данных | ✔️ | ✔️ | ❌ | ✔️ | |
| Сканирование слабой криптографии | ❌ | ✔️ | ❌ | ✔️ |