linux-exploit-suggester


Описание linux-exploit-suggester

Linux Exploit Suggester — инструмент аудита возможности повышения прав (привилегий) на Linux.

Часто во время тестирования на проникновение, аналитик безопасности сталкивается с проблемой идентификации векторов атак на повышение привилегий на тестируемых компьютерах с Linux. Одним из важных векторов атак является использование публичного известного эксплойта Linux для получения привилегий root на тестируемой машине. Конечно, для того, чтобы сделать это, аналитику необходимо идентифицировать правильный PoC-эксплойт, убедиться, что его цель подвержена соответствующей уязвимости, и, наконец, модифицировать его, чтобы он соответствовал его целевой машине. Инструмент linux-exploit-suggester.sh разработан, чтобы помочь с этими действиями.

Инструмент был вдохновлён скриптом Linux_Exploit_Suggester и содержит все имеющиеся там эксплойты (для ядер 2.6+), а также все более поздние эксплойты ядра Linux.

Домашняя страница: https://github.com/mzet-/linux-exploit-suggester

Автор: Mariusz Ziulek (mzet)

Лицензия: GPLv3

Справка по linux-exploit-suggester

Использование:

linux-exploit-suggester.sh [ОПЦИИ]

Опции:

 -V | --version              - показать версию скрипта
 -h | --help                 - показать справку
 -k | --kernel <версия>      - указать информацию о ядре
 -u | --uname <строка>       - указать строку 'uname -a'
 --skip-more-checks          - не выполнять дополнительные проверки (конфигурация ядра, sysctl) при определении применимости эксплойта
 --skip-pkg-versions         - пропустить проверку точной версии пакета для пользовательского пространства (помогает избежать ложных подтверждений)
 -p | --pkglist-file <файл>   - указать файл с содержимым вывода 'dpkg -l' или 'rpm -qa'
 --cvelist-file <файл>        - указать файл со списком Linux kernel CVEs
 --checksec                  - список особенностей вашего железа/ядра, имеющих отношение к безопасности
 -s | --fetch-sources        - автоматически загружать исходный код для подошедших эксплойтов
 -b | --fetch-binaries       - автоматически загружать исполнимые файлы для подошедших эксплойтов если они доступны
 -f | --full                 - показать полную информацию о подошедших эксплойтах
 -g | --short                - показать сокращённую информацию о подошедших эксплойтах
 --kernelspace-only          - показать только уязвимости ядра
 --userspace-only            - показать только уязвимости пользовательского пространства
 -d | --show-dos             - в результатах показать также DoS

Руководство по linux-exploit-suggester

Страница man отсутствует.

Обзор

Этот инструмент предназначен для того, чтобы помочь аналитику безопасности в его тестировании возможностей повышения привилегий на компьютере с Linux, и предоставляет следующие возможности:


«Удалённый» режим (переключатели --kernel или --uname)

В этом режиме аналитик просто предоставляет версию ядра (переключатель --kernel) или вывод команды uname -a (переключатель --uname) и получает список возможных эксплойтов для данной версии ядра.

Используя этот режим, можно также проверить возможные варианты использования пространства пользователя (с помощью ключа --pkglist-file), если у него есть доступ к списку установленных пакетов (вывод команд dpkg -l/rpm -qa) исследуемой системы.

«Прямой» режим (запуск по умолчанию)

Основная идея этого режима та же, что и ранее, но кроме того, чтобы создать более релевантный список возможных вариантов, инструмент также выполняет ряд дополнительных проверок (таких как: параметры сборки ядра известные как CONFIG_*, sysctl пункты и другие определённые проверки, специфичные для каждого эксплойта), чтобы исключить эксплойты, которые наверняка не будут применимы из-за настройки ОС. Очевидно, чтобы воспользоваться этим режимом, инструмент должен быть запущен непосредственно на целевой машине. Например, для эксплойта af_packet, требования которого выглядят так:

Reqs: pkg=linux-kernel,ver>=3.2,ver<=4.10.6,CONFIG_USER_NS=y,sysctl:kernel.unprivileged_userns_clone==1

скрипт (в дополнение к проверке версии ядра) проверит, было ли целевое ядро создано с помощью CONFIG_USER_NS и включена ли sysctl запись kernel.unprivileged_userns_clone. При желании эти дополнительные проверки можно пропустить, запустив с ключом командной строки --skip-more-check.

По умолчанию инструмент также проверяет применимость эксплойтов пользовательского пространства, когда дистрибутив является одним из Debian, Ubuntu, RHEL/CentOS, Fedora. Чтобы пропустить проверки эксплойтов пространства пользователя, можно запустить с ключом --kernelspace-only.

Режим «CVE list» (ключ -cvelist-file)

В этом режиме аналитик уже имеет частичный/полный список CVE, который влияет на его целевое ядро, и хочет проверить, есть ли какие-либо общеизвестные эксплойты против этих CVE. Конечно, эффективность этого режима сильно зависит от полноты предоставленного списка CVE. Такой список обычно создаётся путём ручного изучения и изучения журнала изменений дистрибутива для данной версии ядра. В качестве альтернативы для большинства популярных дистрибутивов Oracle Ksplice Inspector может быть использован для ускорения этого процесса. Например, следующая команда работает довольно хорошо для меня:

(uname -s; uname -m; uname -r; uname -v) | curl -s https://api-ksplice.oracle.com/api/1/update-list/ -L -H "Accept: text/text" --data-binary @- | grep CVE | tr ' ' '\n' | grep -o -E 'CVE-[0-9]+-[0-9]+' | sort -r -n | uniq

ПРЕДУПРЕЖДЕНИЕ. По умолчанию, в дополнение к сравнению идентификаторов CVE, этот режим также выполняет дополнительные проверки, чтобы исключить эксплойты, которые не будут применяться из-за настройки ОС (настройки сборки ядра, также называемые CONFIG_*, записи sysctl и другие пользовательские настройки). Поэтому для достижения наилучших результатов его следует запускать непосредственно на тестируемом компьютере или, в качестве альтернативы, использовать ключ командной строки --skip-more-check, если запуск на цели невозможен/нежелателен.

Режим «Проверки безопасности» (ключ --checksec)

ПРЕДУПРЕЖДЕНИЕ. В настоящее время этот режим находится в бета-версии.


Этот режим призван стать современным продолжением функциональности checksec.sh запущенного с ключом --kernel.

В этом режиме linux-exploit-suggester.sh перечисляет в целевой системе различные функции безопасности ядра/оборудования (KASLR, SMEP и т. д.) в настроек. Он проверяет, доступен ли данный механизм защиты (встроен в ядро): [ Available ] и (если применимо) проверяет, можно ли его отключить/включить без перекомпиляции ядра (с помощью записи sysctl или другими способами): [ Enabled/Disabled ] или показывает [ N/A], если отключение/включение невозможно/не поддерживается.

Советы, ограничения, предостережения

  • Помните, что этот сценарий предназначен только для помощи аналитику в его аудиторской деятельности. Он не сделает всю работу за него!
  • Требуется дополнительная аналитическая работа для определения, не была ли целевая машина пропатчена для противодействия составленному списку эксплойтов (скрипт не проверяет уровень пропатченности системы — то есть очевидно, что эту работу он не сделает за вас).
  • Выбранный эксплойт почти наверняка потребует некоторой настройки в соответствии с вашей целью (как минимум: правильные указатели commit_creds/prepare_kernel_cred), поэтому необходимо знание методов эксплуатации ядра

Примеры запуска linux-exploit-suggester

Запуск по умолчанию на целевой машине (версия ядра, версии пакетов и дополнительные проверки, как описано выше) приведёт к получению списка возможных эксплойтов:

./linux-exploit-suggester.sh

Как и раньше, но проверяются только эксплойты пользовательского пространства:

./linux-exploit-suggester.sh --userspace-only

Проверка, доступны ли эксплойты для указанных в списке CVE ID:

./linux-exploit-suggester.sh --cvelist-file <cve-listing-file> --skip-more-checks

Создание списка CVE целевого ядра для проверки существования эксплойтов под них (также выполняются дополнительные проверки):

(uname -s; uname -m; uname -r; uname -v) | curl -s https://api-ksplice.oracle.com/api/1/update-list/ -L -H "Accept: text/text" --data-binary @- | grep CVE | tr ' ' '\n' | grep -o -E 'CVE-[0-9]+-[0-9]+' | sort -r -n | uniq > <cve-listing-file>
./linux-exploit-suggester.sh --cvelist-file <cve-listing-file>

Вывести доступные механизмы безопасности железа/ядра для целевой машины:

./linux-exploit-suggester.sh --checksec

Запуск с опцией -k полезно, если мы хотим быстро исследовать, какие эксплойты потенциально могут быть применены для данной версии ядра (это также режим совместимости с Linux_Exploit_Suggester):

./linux-exploit-suggester.sh -k 3.1

С --uname можно указать немного больше информации (uname -a вывод от целевой машины) в linux-exploit-suggester.sh и получить более специфичный список возможных эксплойтов (например, при генерирования списка эксплойтов также принять во внимание архитектуры x86|x86_64).

./linux-exploit-suggester.sh --uname "Linux taris 3.16.0-30-generic #40~14.04.1-Ubuntu SMP Thu Jan 15 17:43:14 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux"

Опционально можно указать --pkglist-file <file> к -k или --uname, чтобы также проверить на эксплойты пользовательского пространства:

На удалённой машине:

dpkg -l > dpkgOutput.txt

На машине проверяющего:

./linux-exploit-suggester.sh --uname "Linux taris 3.16.0-30-generic #40~14.04.1-Ubuntu SMP Thu Jan 15 17:43:14 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux" --pkglist-file dpkgOutput.txt

По сгенерированному списку эксплойтов он идентичен выполнению (непосредственно на данной удаленной машине):


./linux-exploit-suggester.sh --skip-more-checks

Иногда желательно проверить только список пакетов (в этом случае выполняются проверки только на эксплойты для пользовательского пространства):

На удалённой машине:

dpkg -l > dpkgOutput.txt

На машине проверяющего:

./linux-exploit-suggester.sh --pkglist-file dpkgOutput.txt

Как и ранее, но управление версиями пакетов не выполняется (удобно для быстрой предварительной проверки наличия установленного пакета, для которого доступен эксплойт):

./linux-exploit-suggester.sh --pkglist-file dpkgOutput.txt --skip-pkg-versions

Номер версии ядра взят из текущей ОС, источники для возможных эксплойтов загружены в текущий каталог (рассматриваются только эксплойты пространства ядра):

./linux-exploit-suggester.sh --fetch-sources --kernelspace-only

Номер версии ядра взят из командной строки, приведены полные сведения (например, требования к версии ядра, комментарии и URL-адрес, указывающий на объявление/технические подробности об эксплойте) о соответствующих эксплойтах:

./linux-exploit-suggester.sh -k 4.1 --full

Номер версии ядра берётся из текущей ОС, двоичные файлы для соответствующих эксплойтов загружаются (если доступны) в текущий каталог, дополнительные проверки пропускаются:

./linux-exploit-suggester.sh --fetch-binaries --skip-more-checks

Однако обратите внимание, что --fetch-binaries не рекомендуется, поскольку он загружает двоичные файлы из обычно ненадёжных источников, и, скорее всего, эти двоичные файлы не были скомпилированы для вашей цели. Его следует использовать как последний вариант, когда у вас заканчивается время во время проверки безопасности, и на вашей цели нет доступного компилятора.

Установка linux-exploit-suggester

Установка в Kali Linux

wget https://raw.githubusercontent.com/mzet-/linux-exploit-suggester/master/linux-exploit-suggester.sh -O les.sh

Установка в BlackArch

sudo pacman -S linux-exploit-suggester.sh

Установка в любой дистрибутив Linux

wget https://raw.githubusercontent.com/mzet-/linux-exploit-suggester/master/linux-exploit-suggester.sh -O les.sh

Информация об установке в другие операционные системы будет добавлена позже.

Скриншоты linux-exploit-suggester

Инструкции по linux-exploit-suggester

Ссылки на инструкции будут добавлены позже.



Близкие программы:

  • Orc (100%)
  • LinEnum (77.2%)
  • Social-Engineer Toolkit (SET) (53.3%)
  • Maltego (52.5%)
  • Sn1per (52.5%)
  • Amass (RANDOM - 52%)
  • Рекомендуется Вам:

    Comments are Closed