共用方式為


快速入門:使用 Azure PowerShell 將韌體映射上傳至韌體分析

本文說明如何使用 Azure PowerShell 將韌體映射上傳至韌體分析。

韌體分析是一種工具 ,可分析韌體映像,並瞭解韌體映射中的安全性弱點。

必要條件

本快速入門假設對韌體分析有基本的瞭解。 如需詳細資訊,請參閱裝置建立器的韌體分析。 如需支援的文件系統清單,請參閱 韌體分析的常見問題。

準備 Azure PowerShell 的環境

  1. 安裝 Azure PowerShell 或使用 Azure Cloud Shell

  2. 執行 Connect-AzAccount 命令來登入 Azure PowerShell。 如果您使用 Cloud Shell,請略過此步驟。

  3. 如果這是您第一次使用韌體分析的 Azure PowerShell,請安裝擴充功能:

    Find-Module -Name Az.FirmwareAnalysis | Install-Module
    
  4. 將您的訂用帳戶上線 至韌體分析。

  5. 執行 Set-AzContext,將您的訂用帳戶 設定為在目前的會話中使用。 選取您要上傳韌體映像的訂用帳戶。

將韌體映像上傳至工作區

  1. 建立要上傳的韌體映像。 插入資源群組名稱、工作區名稱,以及您要包含在個別參數中之韌體映像的任何其他詳細資料,例如 DescriptionFileNameVendorModelVersion

    New-AzFirmwareAnalysisFirmware -ResourceGroupName myResourceGroup -WorkspaceName default -Description 'sample description' -FileName file -Vendor vendor -Model model -Version version
    

此命令的輸出包含 Name 屬性,也就是您的韌體標識碼。 儲存下一個命令的這個標識碼。

  1. 產生您將在下一個步驟中使用的 SAS URL,以將韌體映射傳送至 Azure 儲存體。 將取代 sampleFirmwareID 為您從上一個步驟儲存的韌體標識碼。 您可以將 SAS URL 儲存在變數中,以便日後命令更容易存取:

    $sasUrl = New-AzFirmwareAnalysisWorkspaceUploadUrl -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default
    
  2. 使用下列腳本將韌體映射上傳至 Azure 儲存體。 將 『pathToFile' 取代為本機電腦上韌體映像的路徑。 以引號括住路徑。

    $uri = [System.Uri] $sasURL.Url
    $storageAccountName = $uri.DnsSafeHost.Split(".")[0]
    $container = $uri.LocalPath.Substring(1)
    $containerName, $blob = $container -split '/', 2
    $sasToken = $uri.Query
    $filePath = 'pathToFile'
    $storageContext = New-AzStorageContext -StorageAccountName $storageAccountName -SasToken $sasToken
    Set-AzStorageBlobContent -File $filePath -Container $containerName -Context $storageContext -Blob $blob -Force
    

以下是從端對端的工作流程範例,說明如何使用 Azure PowerShell 命令來建立和上傳韌體映像。 取代開頭所設定變數的值,以反映您的環境。

$filePath='/path/to/image'
$resourceGroup='myResourceGroup'
$workspace='default'

$fileName='file1'
$vendor='vendor1'
$model='model'
$version='test'

$FWID = (New-AzFirmwareAnalysisFirmware -ResourceGroupName $resourceGroup -WorkspaceName $workspace -FileName $fileName -Vendor $vendor -Model $model -Version $version).Name

$sasUrl = New-AzFirmwareAnalysisWorkspaceUploadUrl -FirmwareId $FWID -ResourceGroupName $resourceGroup -WorkspaceName $workspace

$uri = [System.Uri] $sasURL.Url
$storageAccountName = $uri.DnsSafeHost.Split(".")[0]
$container = $uri.LocalPath.Substring(1)
$containerName, $blob = $container -split '/', 2
$sasToken = $uri.Query
$storageContext = New-AzStorageContext -StorageAccountName $storageAccountName -SasToken $sasToken
Set-AzStorageBlobContent -File $filePath -Container $containerName -Context $storageContext -Blob $blob -Force

擷取韌體分析結果

若要擷取韌體分析結果,您必須確定分析的狀態為「就緒」。 取代為您的韌體識別碼、myResourceGroup使用資源群組名稱,並以default您的工作區名稱取代 sampleFirmwareID

Get-AzFirmwareAnalysisFirmware -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default

尋找 [狀態] 欄位以顯示 [就緒],然後執行個別命令來擷取韌體分析結果。

如果您想要將檢查分析狀態的程式自動化,您可以使用下列腳本定期檢查資源狀態,直到達到「就緒」為止。 您可以根據影像的大小來設定 $timeoutInSeconds 變數 - 較大的影像可能需要較長的時間進行分析,因此請根據您的需求調整此變數。

$ID = Get-AzFirmwareAnalysisFirmware -ResourceGroupName $resourceGroup -WorkspaceName default -FirmwareId $FWID | Select-Object -ExpandProperty Id

Write-Host "Successfully created a firmware image, recognized in Azure by this resource id: $ID."

$timeoutInSeconds = 10800
$startTime = Get-Date

while ($true) {
    $resource = Get-AzResource -ResourceId $ID
    $status = $resource.Properties.Status

    if ($status -eq 'ready') {
        Write-Host "Firmware analysis completed with status: $status"
        break
    }

    $elapsedTime = (Get-Date) - $startTime
    if ($elapsedTime.TotalSeconds -ge $timeoutInSeconds) {
        Write-Host "Timeout reached. Firmware analysis status: $status"
        break
    }

    Start-Sleep -Seconds 10
}

SBOM

下列命令會擷取韌體映像中的SBOM。 將每個自變數取代為資源群組、訂用帳戶、工作區名稱和韌體標識碼的適當值。

Get-AzFirmwareAnalysisSbomComponent -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default

弱點

下列命令會擷取韌體映像中找到的 CVE。 將每個自變數取代為資源群組、訂用帳戶、工作區名稱和韌體標識碼的適當值。

Get-AzFirmwareAnalysisCve -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default 

二進位強化

下列命令會擷取韌體映像中二進位強化的分析結果。 將每個自變數取代為資源群組、訂用帳戶、工作區名稱和韌體標識碼的適當值。

Get-AzFirmwareAnalysisBinaryHardening -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default 

密碼雜湊

下列命令會擷取韌體映像中的密碼哈希。 將每個自變數取代為資源群組、訂用帳戶、工作區名稱和韌體標識碼的適當值。

Get-AzFirmwareAnalysisPasswordHash -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default 

憑證

下列命令會擷取韌體映像中找到的易受攻擊密碼編譯憑證。 將每個自變數取代為資源群組、訂用帳戶、工作區名稱和韌體標識碼的適當值。

Get-AzFirmwareAnalysisCryptoCertificate -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default 

[索引鍵]

下列命令會擷取韌體映像中找到的易受攻擊密碼編譯密鑰。 將每個自變數取代為資源群組、訂用帳戶、工作區名稱和韌體標識碼的適當值。

Get-AzFirmwareAnalysisCryptoKey -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default