Az - Arc vulnerable GPO Deploy Script
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Azure Arc дозволяє інтеграцію нових внутрішніх серверів (приєднаних до домену) в Azure Arc за допомогою методу об'єкта групової політики. Для цього Microsoft надає набір інструментів для розгортання, необхідний для ініціювання процедури приєднання. У файлі ArcEnableServerGroupPolicy.zip можна знайти такі скрипти: DeployGPO.ps1, EnableAzureArc.ps1 та AzureArcDeployment.psm1.
При виконанні скрипт DeployGPO.ps1 виконує такі дії:
Створює GPO для приєднання серверів Azure Arc у локальному домені.
Копіює скрипт приєднання EnableAzureArc.ps1 на вказану мережеву папку, створену для процесу приєднання, яка також містить пакет установника Windows.
При запуску цього скрипта адміністраторам систем потрібно надати два основні параметри: ServicePrincipalId та ServicePrincipalClientSecret. Крім того, потрібні інші параметри, такі як домен, FQDN сервера, що хостить спільний доступ, та ім'я спільного доступу. Додаткові деталі, такі як ідентифікатор орендаря, група ресурсів та інша необхідна інформація також повинні бути надані скрипту.
Зашифрований секрет генерується в каталозі AzureArcDeploy на вказаному спільному доступі за допомогою шифрування DPAPI-NG. Зашифрований секрет зберігається у файлі з назвою encryptedServicePrincipalSecret. Доказ цього можна знайти у скрипті DeployGPO.ps1, де шифрування виконується шляхом виклику ProtectBase64 з $descriptor та $ServicePrincipalSecret як вхідними даними. Дескриптор складається з SID груп комп'ютерів домену та контролерів домену, що забезпечує, що ServicePrincipalSecret може бути розшифрований лише контролерами домену та групами безпеки комп'ютерів домену, як зазначено в коментарях до скрипту.
Ми маємо наступні умови:
Ми успішно проникли в внутрішню мережу.
У нас є можливість створити або взяти під контроль обліковий запис комп'ютера в Active Directory.
Ми виявили мережевий ресурс, що містить каталог AzureArcDeploy.
Існує кілька методів отримання облікового запису машини в середовищі AD. Один з найпоширеніших - це експлуатація квоти облікових записів машин. Інший метод полягає в компрометації облікового запису машини через вразливі ACL або різні інші неправильні налаштування.
Якщо обліковий запис машини отримано, можна аутентифікуватися, використовуючи цей обліковий запис. Ми можемо або використовувати команду runas.exe з прапором netonly, або використовувати pass-the-ticket з Rubeus.exe.
Маючи TGT для нашого облікового запису комп'ютера, ми можемо використовувати наступний скрипт для розшифрування секрету службового принципала.
Альтернативно, ми можемо використовувати SecretManagement.DpapiNG.
На цьому етапі ми можемо зібрати залишкову інформацію, необхідну для підключення до Azure з файлу ArcInfo.json, який зберігається на тому ж мережевому загальному доступі, що й файл encryptedServicePrincipalSecret. Цей файл містить такі деталі, як: TenantId, servicePrincipalClientId, ResourceGroup та інше. З цією інформацією ми можемо використовувати Azure CLI для автентифікації як скомпрометований сервісний принципал.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)