Главная » Пентест » Повышение привилегий в Linux

Повышение привилегий в Linux

Повышение привилегий в Linux

В этой статье вас ждет обзор и примеры применения наиболее известных и, что немаловажно, рабочих утилит для повышения привилегий Linux. Я расскажу, как манипулировать системой и стать рутом. Мы также поговорим про защиту и рассмотрим лучшие утилиты для проверки и защиты системы от техник постэксплуатации, которые могут быть полезны, как в защите Linux, так и в пентесте.

Еще по теме: Сайты для поиска уязвимостей

Повышение привилегий в Linux

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

Статья предназначена для профессиональных пентестеров, руководителей службы CISO (информационной безопасности), а так же для «белых хакеров». Ни автор статьи, ни редакция сайта spy-soft.net не несут ответственности за любой возможный вред, причиненный материалами данной статьи.

PXEnum

Основная задача данного скрипта — функция перечисления (англ. Enumeration). Он вытаскивает всю доступную информацию о системе. Скрипт создан для настоящих лентяев. Хорошо, если высказаться более политкорректно, то «для тех, кто ценит свое время». Встроенные команды позволяют также угонять хеши паролей, содержание директорий, все сведения о системе, наличие application-серверов, приложений, соединений, юзеров.

Для запуска скрипта не требуются права root, он работает в стандартном терминале. Перед установкой скачиваем инструмент с помощью Wget:

Установка PXEnum:

Другой вариант запуска PXEnum:

Повышение привилегий Linux

MIDA Multitool

Другой интересный инструмент — MIDA Multitool, созданный на базе менее популярных собратьев SysEnum и RootHelper, но предлагающий гораздо больше возможностей.

По воле разработчика MIDA Multitool объединяет в себе отдельные функции своих предшественников, а именно:

  • SysEnum — Bash-скрипт, предназначенный для получения основной информации о системе, включая следующие данные: текущий пользователь, IP-конфигурация, таблицы ARP, запущенные процессы;
  • RootHelper — призван помочь в деле эскалации привилегий в системе, которая была скомпрометирована, при помощи выполнения ряда перечислений и использования доверительных сценариев.

Установка MIDA Multitool в систему с GitHub:

Запускаем скрипта MIDA Multitool :

Меню выбора действий после запуска MIDA Multitool
Меню выбора действий после запуска MIDA Multitool

Вывод некоторой информации по системе:

Данные об учетных записях в текущей системе
Данные об учетных записях в текущей системе

MimiPenguin

Очень хорошо известный в узких кругах пентестеров скрипт под названием MimiPenguin. Основная задача утилиты — сброс пароля на вход в систему от текущего пользователя Linux (то есть непривилегированного). В некотором роде это аналог утилиты mimikatz для дампа пароля в Windows-системах.

Кроме того, MimiPenguin поддерживает такие приложения, как VSFTPd (активные подключения клиента FTP), Apache 2 (активные/старые сеансы HTTP BASIC AUTH, но для этого требуется Gcore) и OpenSSH-сервер (активные подключения SSH с использованием команды sudo). И вообще, необходимо сказать, что MimiPenguin нередко становится частью эксплоитов под Linux, так что тулза очень и очень востребована.

Установка MimiPenguin с репозитория GitHub:

Окно терминала, отображающее процесс установки MimiPenguin
Окно терминала, отображающее процесс установки MimiPenguin

Если у вас еще не установлен GitHub, то используйте эти команды:

Переходим в директорию MimiPenguin и запускаем скрипт:

Результат работы MimiPenguin — все пароли как на ладони
Результат работы MimiPenguin — все пароли как на ладони

Auto-Root-Exploit

Сингловый скрипт, созданный для одной-единственной цели — получить права root на текущую учетную запись, под которой он был запущен с помощью эксплуатации известных багов. Поддерживает версии ядра, начиная с Linux Kernel 2.6 и до 4.8.0-41-generic, а также часть ОС семейства *BSD.

Установка Auto-Root-Exploit в систему:

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

Получение сведений о версии ядра ОС в Kali Linux
Получение сведений о версии ядра ОС в Kali Linux

Использование Auto-Root-Exploit:

Стартовое меню выбора в Auto-Root-Exploit
Стартовое меню выбора в Auto-Root-Exploit
Результат работы Auto-Root-Exploit — получение root-прав на систему
Результат работы Auto-Root-Exploit — получение root-прав на систему

LARE

И напоследок еще один довольно простой скрипт, который позволяет с помощью использования известных уязвимостей в ядре ОС получать привилегии root удаленно с атакующей машины. Скрипт использует локальные эксплоиты для получения root-прав для версий ядра Linux Kernel v2.6 — v4.8.

Кстати, этот инструмент очень часто находит свое применение в различных War Games и CTF-соревнованиях, например hackthebox.gr, или даже на сертификационном экзамене OSCP.

Устанавка LARE в систему:

Пример локального запуска LARE:

или

Запуск LARE на локальной машине
Запуск LARE на локальной машине

Запуск скрипта на целевой машине в сети:

Атака на удаленную машину в локальной сети
Атака на удаленную машину в локальной сети

Запуск на машине с подключением к базе данных эксплоитов на GitHub:

Проверка и защита системы от техник постэксплуатации

Кроме традиционных мер, таких как установка патчей и минимизация привилегий, безопасность системы дополнительно обеспечивают специальные утилиты для проверки системы. В противовес популярному мнению (согласно которому к постэксплуатации ведут только зиродеи или устаревший софт) к грандиозному факапу ведут и ошибки конфигурации — предоставление избыточных прав доступа, пароли по умолчанию, системные каталоги и файлы в общем доступе, выключенные опции безопасности в программах, работающих из коробки, и прочие огрехи.

Ниже будут представлены утилиты (скрипты) быстрого анализа системы и проверки ее на факт выполнения несанкционированных и потенциально опасных действий со стороны непривилегированных пользователей.

Bashark

Bashark — популярный скрипт, который помогает пентестерам и исследователям в области информационной безопасности тестить возможности управления системой после успешной эксплуатации.

Фирменные фичи и возможности, заявленные разработчиком:

  • быстрый запуск, мгновенная реакция;
  • мультиплатформенность: Unix, OS X, Solaris и другие;
  • отсутствие зависимостей от версии ядра ОС или установленных пакетов;
  • иммунитет к эвристическому и поведенческому анализу (обход средств защиты);
  • встроенные алиасы к популярным командам;
  • расширение стандартной оболочки bash-командами для постэксплуатации;
  • процедура заметания следов после завершения работы (Stealthy);
  • расширяемость — возможность дописывать свои команды и юзать из терминала;
  • поддержка табуляции при наборе команд.

Итак, качаем скрипт Bashark с помощью Git:

Установка Bashark в систему
Установка Bashark в систему

Переходим в соответствующую директорию и даем права на выполнение:

Запускаем Bashark:

Вывод информации о системе — краткий вариант
Вывод информации о системе — краткий вариант

В чем еще уникальность Bashark? С помощью опции portscan мы можем сканировать внутреннюю сетку из-под одной скомпрометированной машины. Чтобы получить все файлы конфигурации с другой взломанной машины на Linux, можно использовать опцию getconf. Команда позволяет извлекать все файлы конфигурации, хранящиеся в каталоге /etc. Точно так же легко и просто можно использовать опцию getprem для просмотра всех двоичных файлов на целевой системе.

Сканируем удаленную машину с помощью Bashark:

Получаем конфиги:

Получаем файлы:

Получаем реверс-шелл:

Получение реверсивной оболочки на удаленной машине
Получение реверсивной оболочки на удаленной машине

Еще одна приятная мелочь — это фича самоочистки (удаления следов работы в системе). Например, если вы создавали файлы или каталоги во время работы в контексте Bashark с помощью опции -t (создать файл) или -mkd (создать каталог), подпрограмма quit (то есть завершение работы) будет активировать директиву cleanup, затирающую все следы присутствия в системе.

Заметание следов при завершении работы скрипта
Заметание следов при завершении работы скрипта

LinEnum

Данный скрипт представляет собой экспресс-тест по таким позициям, как Kernel and distribution release details, System Information, Privileged access, Jobs/Tasks, Services, Default/Weak Credentials, Searches, Platform/software specific tests.

Скрипт LinEnum успешно протестирован на различных версиях дистрибутивов Ubuntu, Debian, Red Hat и CentOS. Программа не ищет и не пытается выполнять эксплоиты, как некоторые другие аналогичные рассмотренные в статье инструменты повышения привилегий в Linux, — она только собирает информацию и делает проверки возможных векторов эскалации привилегий.

Установка LinEnum в систему:

Простой запуск с вызовом списка ключей:

Пример запуска LinEnum с опциями (ключами):

Описание ключей LinEnum:

  • -k — ввести ключевое слово
  • -e — указать директорию для экспорта отчета
  • -t — включить в отчет «длинные» тесты (дополнительные тесты)
  • -s — произвести проверку эскалации текущей учетки sudo perms
  • -r — задать имя итогового отчета
  • -h — вызвать встроенную справку по программе
  • -k — опциональный переключатель, с которым можно указать ключевое слово для поиска файлов по нескольким расширениям

Запуск без опций означает ограниченное сканирование без файла вывода.

Стартовое меню LinEnum
Стартовое меню LinEnum
Результаты запуска скрипта LinEnum
Результаты запуска скрипта LinEnum

LinuxPrivChecker

Еще один полезный в эскалации привилегий скрипт, написанный на Python. Этот инструмент предназначен для локального выполнения в системе с целью перечисления базовой системной информации и поиска общих векторов повышения привилегий, таких как общедоступные файлы, неверные конфигурации демонов и библиотек, пароли, хранимые в виде открытого текста, и баги, соответствующие наиболее популярным эксплоитам.

Основные области проверки:

  • основная информация о системе (ОС, ядро, имя системы и так далее);
  • информация о сети (ifconfig, route, netstat и т. д.);
  • разная информация о файловой системе (mount, fstab, cron jobs);
  • информация о пользователе (текущий пользователь, все пользователи, суперпользователи, история команд);
  • права доступа к файлам и каталогам (доступные для записи файлы/каталоги, файлы suid, корневой домашний каталог);
  • файлы, содержащие незашифрованные пароли;
  • интересные файлы, процессы и приложения (все процессы и пакеты, все процессы, запускаемые пользователем root и связанные пакеты, версия sudo, файл конфигурации Apache);
  • все установленные языки и инструменты (GCC, Perl, Python, Nmap, Netcat, Wget, FTP и так далее);
  • все соответствующие эксплоиты повышения привилегий (с использованием базы данных эксплоитов с применимыми версиями ядра, пакетами/процессами программного обеспечения).

Проверка на эскалацию привилегий производится в следующих программах:

Итак, качаем скрипт LinuxPrivChecker:

Запускаем LinuxPrivChecker с помощью всего лишь одной команды:

Или другой вариант запуска LinuxPrivChecker:

Результаты запуска скрипта LinuxPrivChecker
Результаты запуска скрипта LinuxPrivChecker

Unix-privesc-check

Unix-privesc-checker — это мощный скрипт, работающий в Unix-системах (протестирован на Solaris 9, HPUX 11, различных Linux 3.х и FreeBSD 6.2+). После запуска скрипт пытается найти неправильные твики конфигурации системы, процессы, которые могут позволить локальным непривилегированным пользователям повышать привилегии других юзеров или получать доступ к локальным приложениям, например базам данных MySQL.

Основные области проверки:

  • слабые пароли и значения по умолчанию;
  • конфигурация стека IP (без ненужного использования IPv6, без форвардинга IP-пакетов и так далее);
  • некорректные права доступа к файлам (чтение/изменение конфиденциальных данных);
  • настройка локальных приложений (просмотр sshd_config, httpd.conf);
  • другие полезные вещи (например, удаленное ведение журнала, использование небезопасных протоколов TCP/IP).

Основное внимание разработчики данного скрипта уделяют проверке на предмет распространенных ошибок в конфигурации системы и некорректно настроенных разрешений на доступ к директориям и файлам. Важно отметить, что скрипт не проверяет наличие отсутствующих патчей для ядра ОС или установленных пакетов, но это и не его задача, ведь для ее решения существуют более сложные утилиты, о которых мы рассказывали в нашем предыдущем материале про аудит Linux.

Скрипт может запускаться как от имени обычного пользователя, так и от имени root. В последнем случае у скрипта больше привилегий и он может выполнить ряд тестов, недоступных из-под учетной записи непривилегированного пользователя. Для регулярного мониторинга запуск скрипта можно прописать как задание cron.

Пример запуска скрипта Unix-privesc-check:

Запуск unix-privesc-check в терминале
Запуск unix-privesc-check в терминале

Полезные ссылки

Поскольку объем нашей статьи не умещает всего, что еще можно было сказать по заявленной теме, вам, предоставляется счастливая возможность попрактиковаться в самостоятельном изучении и заценить вот этот список дополнительных материалов.

  • Linux Post Exploitation Command List — шпаргалка по основным командам постэксплуатации, которые можно самостоятельно вводить в терминале. Ничего необычного, стандартные команды, известные любому мало-мальски знающему Linux пользователю.
  • Post Exploitation Collection — репозиторий GitHub, представляющий собой огромную коллекцию трюков постэксплуатации для Windows, Linux, Mac, *BSD, а также .msf4 & Metasploit scripts.
  • Basic Linux Privilege Escalation — одностраничный гайд по основным векторам атак на фазе постэксплуатации.
  • GitBook Post Exploitation — лютый GitBook по теме Privilege Escalation. Рассматривается куча техник эксплуатации: Kernel exploits, Programs running as root, Inside service, Suid misconfiguration, Abusing sudo-rights, Bad path configuration, Cronjob, Unmounted filesystems. Примеры готовых скриптов на Python.
  • Cheeat map — еще один вариант хендбука по теме постэксплуатации с примерами команд и кода на скриптовых языках.

Заключение

Сегодня в материале мы рассмотрели самые популярные и, главное, рабочие инструменты, которые используются в фазе постэксплуатации. Приведенный набор инструментов пригодится как участникам War Games и различных CTF-соревнований, так и опытным пентестерам, проверяющим на прочность безопасность корпоративного периметра. Также в нашем обзоре мы привели еще несколько утилит, которые позволят прочекать доверенные вам системы на факт возможности повышения привилегий Linux и использования других техник постэксплуатации. Теперь вы вооружены!

Еще по теме: Повышение привилегий в Windows

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *