Freigeben über


Schnellstart: Hochladen von Firmware-Images in den Microsoft Defender for IoT-Firmware-Analyse mit Azure PowerShell

Dieser Artikel erklärt, wie Sie Azure PowerShell verwenden, um Firmware-Images für die IoT-Firmware-Analyse in Defender hochzuladen.

Microsoft Defender for IoT-Firmwareanalyse ist ein Tool, das Firmwareimages analysiert und ein Verständnis von Sicherheitsrisiken in den Firmwareimages vermittelt.

Voraussetzungen

In dieser Schnellstartanleitung wird ein grundlegendes Verständnis der Microsoft Defender for IoT-Firmwareanalyse vorausgesetzt. Weitere Informationen finden Sie unter Firmwareanalyse für Gerätehersteller. Eine Liste der unterstützten Dateisysteme finden Sie unter Häufig gestellte Fragen zu Microsoft Defender for IoT-Firmwareanalyse.

Bereiten Sie Ihre Umgebung für Azure PowerShell vor

  • Installieren Sie Azure PowerShell oder verwenden Sie Azure Cloud Shell.

  • Melden Sie sich bei Azure PowerShell an, indem Sie den Befehl Connect-AzAccount ausführen. Überspringen Sie diesen Schritt, wenn Sie Cloud Shell verwenden.

  • Wenn Sie die Azure PowerShell von Microsoft Defender for IoT Firmware Analysis zum ersten Mal verwenden, installieren Sie die Erweiterung:

    Find-Module -Name Az.FirmwareAnalysis | Install-Module
    
  • Führen Sie ein Onboarding für Ihr Abonnement für Defender for IoT-Firmwareanalyse durch.

  • Führen Sie Set-AzContext aus, um Ihr Abonnement zur Verwendung in der aktuellen Sitzung festzulegen. Wählen Sie das Abonnement, in das Sie Ihre Firmware-Images hochladen möchten.

Hochladen eines Firmwareimages in den Arbeitsbereich

  1. Erstellen Sie ein Firmwareimage, das hochgeladen werden soll. Fügen Sie den Namen Ihrer Ressourcengruppe, den Namen Ihres Arbeitsbereichs und alle zusätzlichen Details zu Ihrem Firmware-Image ein, die Sie in die entsprechenden Parameter aufnehmen möchten, wie z.B. ein Description, FileName, Vendor, Model, oderVersion.

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

Die Ausgabe dieses Befehls enthält die Eigenschaft Name, die Ihre Firmware-ID enthält. Speichern Sie diese ID für den nächsten Befehl.

  1. Generieren Sie eine SAS-URL, die Sie im nächsten Schritt verwenden werden, um Ihr Firmware-Image an Azure Storage zu senden. Ersetzen Sie sampleFirmwareID durch die Firmware-ID, die Sie im vorherigen Schritt gespeichert haben. Sie können die SAS-URL in einer Variablen speichern, um bei zukünftigen Befehlen leichter darauf zugreifen zu können:

    $sasUrl = New-AzFirmwareAnalysisWorkspaceUploadUrl -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default
    
  2. Verwenden Sie das folgende Skript, um Ihr Firmware-Image auf Azure Storage hochzuladen. Ersetzen Sie 'pathToFile' durch den Pfad zu Ihrem Firmware-Image auf Ihrem lokalen Rechner. Schließen Sie den Pfad in Anführungszeichen ein.

    $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
    

Hier sehen Sie einen End-to-End-Beispielworkflow, wie Sie die Azure PowerShell-Befehle zum Erstellen und Hochladen eines Firmware-Images verwenden können. Ersetzen Sie die Werte für die zu Beginn gesetzten Variablen, um Ihre Umgebung widerzuspiegeln.

$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

Abrufen von Firmwareanalyseergebnissen

Um die Ergebnisse der Firmware-Analyse abzurufen, müssen Sie sicherstellen, dass der Status der Analyse auf "Bereit" steht. Ersetzen Sie sampleFirmwareID durch Ihre Firmware-ID, myResourceGroup durch den Namen Ihrer Ressourcengruppe und default durch Ihren Arbeitsbereichsname:

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

Achten Sie darauf, dass im Feld "Status" "Bereit" angezeigt wird, und führen Sie dann die entsprechenden Befehle aus, um die Ergebnisse der Firmware-Analyse abzurufen.

Wenn Sie den Prozess der Überprüfung des Analysestatus automatisieren möchten, können Sie das folgende Skript verwenden, um den Ressourcenstatus regelmäßig zu überprüfen, bis er "Bereit" erreicht. Sie können die $timeoutInSeconds Variable in Abhängigkeit von der Größe Ihres Bildes einstellen – bei größeren Bildern kann die Analyse länger dauern, also passen Sie diese Variable entsprechend Ihren Bedürfnissen an.

$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

Mit dem folgenden Befehl wird das SBOM in Ihrem Firmwareimage abgerufen. Ersetzen Sie die einzelnen Argumente durch den entsprechenden Wert für Ihre Ressourcengruppe, Ihr Abonnement, den Arbeitsbereichsnamen und die Firmware-ID.

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

Schwächen

Der folgende Befehl ruft die in Ihrem Firmware-Image gefundenen CVEs ab. Ersetzen Sie die einzelnen Argumente durch den entsprechenden Wert für Ihre Ressourcengruppe, Ihr Abonnement, den Arbeitsbereichsnamen und die Firmware-ID.

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

Binäre Härtung

Der folgende Befehl ruft Analyseergebnisse zur binären Härtung in Ihrem Firmwareimage ab. Ersetzen Sie die einzelnen Argumente durch den entsprechenden Wert für Ihre Ressourcengruppe, Ihr Abonnement, den Arbeitsbereichsnamen und die Firmware-ID.

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

Kennworthashes

Mit dem folgenden Befehl werden Kennworthashes in Ihrem Firmwareimage abgerufen. Ersetzen Sie die einzelnen Argumente durch den entsprechenden Wert für Ihre Ressourcengruppe, Ihr Abonnement, den Arbeitsbereichsnamen und die Firmware-ID.

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

Zertifikate

Mit dem folgenden Befehl werden anfällige Kryptozertifikate abgerufen, die in Ihrem Firmwareimage gefunden wurden. Ersetzen Sie die einzelnen Argumente durch den entsprechenden Wert für Ihre Ressourcengruppe, Ihr Abonnement, den Arbeitsbereichsnamen und die Firmware-ID.

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

Tasten

Der folgende Befehl ruft anfällige Kryptoschlüssel ab, die in Ihrem Firmwareimage gefunden wurden. Ersetzen Sie die einzelnen Argumente durch den entsprechenden Wert für Ihre Ressourcengruppe, Ihr Abonnement, den Arbeitsbereichsnamen und die Firmware-ID.

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