Dela via


Snabbstart: Ladda upp avbildningar av inbyggd programvara till Defender for IoT Firmware Analysis med Azure PowerShell

Den här artikeln beskriver hur du använder Azure PowerShell för att ladda upp avbildningar av inbyggd programvara till Defender for IoT Firmware Analysis.

Defender for IoT Firmware Analysis är ett verktyg som analyserar bilder av inbyggd programvara och ger en förståelse för säkerhetsrisker i avbildningarna av inbyggd programvara.

Förutsättningar

Den här snabbstarten förutsätter en grundläggande förståelse av Defender for IoT Firmware Analysis. Mer information finns i Analys av inbyggd programvara för enhetsbyggare. En lista över de filsystem som stöds finns i Vanliga frågor och svar om Defender för analys av inbyggd IoT-programvara.

Förbereda din miljö för Azure PowerShell

  • Installera Azure PowerShell eller använd Azure Cloud Shell.

  • Logga in på Azure PowerShell genom att köra kommandot Anslut-AzAccount. Hoppa över det här steget om du använder Cloud Shell.

  • Om det här är din första användning av Azure PowerShell för Defender for IoT Firmware Analysis installerar du tillägget:

    Find-Module -Name Az.FirmwareAnalysis | Install-Module
    
  • Registrera din prenumeration på Defender for IoT Firmware Analysis.

  • Kör Set-AzContext för att ange att din prenumeration ska användas i den aktuella sessionen. Välj den prenumeration där du vill ladda upp dina avbildningar av inbyggd programvara.

Ladda upp en avbildning av inbyggd programvara till arbetsytan

  1. Skapa en avbildning av inbyggd programvara som ska laddas upp. Infoga resursgruppens namn, arbetsytans namn och eventuell ytterligare information om din avbildning av den inbyggda programvaran som du vill inkludera i respektive parametrar, till exempel , DescriptionFileName, Vendor, Modeleller Version.

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

Utdata från det här kommandot innehåller en Name egenskap, som är ditt ID för inbyggd programvara. Spara det här ID:t för nästa kommando.

  1. Generera en SAS-URL som du ska använda i nästa steg för att skicka avbildningen av den inbyggda programvaran till Azure Storage. Ersätt sampleFirmwareID med det ID för inbyggd programvara som du sparade från föregående steg. Du kan lagra SAS-URL:en i en variabel för enklare åtkomst för framtida kommandon:

    $sasUrl = New-AzFirmwareAnalysisWorkspaceUploadUrl -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default
    
  2. Använd följande skript för att ladda upp avbildningen av den inbyggda programvaran till Azure Storage. Ersätt medpathToFile sökvägen till avbildningen av den inbyggda programvaran på den lokala datorn. Omslut sökvägen inom citattecken.

    $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
    

Här är ett exempel på ett arbetsflöde från slutpunkt till slutpunkt för hur du kan använda Azure PowerShell-kommandon för att skapa och ladda upp en avbildning av inbyggd programvara. Ersätt värdena för variablerna som angavs i början för att återspegla din miljö.

$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

Hämta resultat för analys av inbyggd programvara

Om du vill hämta resultat från analys av inbyggd programvara måste du se till att analysens status är "Klar". Ersätt sampleFirmwareID med ditt ID för inbyggd programvara, myResourceGroup med resursgruppens namn och default med namnet på din arbetsyta:

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

Leta efter fältet "status" för att visa "Klar" och kör sedan respektive kommandon för att hämta analysresultatet för den inbyggda programvaran.

Om du vill automatisera processen för att kontrollera analysens status kan du använda följande skript för att kontrollera resursstatusen regelbundet tills den når "Klar". Du kan ange variabeln $timeoutInSeconds beroende på storleken på bilden – större bilder kan ta längre tid att analysera, så justera den här variabeln efter dina behov.

$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

Följande kommando hämtar SBOM i avbildningen av den inbyggda programvaran. Ersätt varje argument med lämpligt värde för resursgruppen, prenumerationen, arbetsytans namn och ID för inbyggd programvara.

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

Svagheter

Följande kommando hämtar CVE:er som finns i avbildningen av den inbyggda programvaran. Ersätt varje argument med lämpligt värde för resursgruppen, prenumerationen, arbetsytans namn och ID för inbyggd programvara.

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

Binär härdning

Följande kommando hämtar analysresultat vid binär härdning i din avbildning av inbyggd programvara. Ersätt varje argument med lämpligt värde för resursgruppen, prenumerationen, arbetsytans namn och ID för inbyggd programvara.

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

Lösenordshashvärden

Följande kommando hämtar lösenordshashvärden i avbildningen av den inbyggda programvaran. Ersätt varje argument med lämpligt värde för resursgruppen, prenumerationen, arbetsytans namn och ID för inbyggd programvara.

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

Certifikat

Följande kommando hämtar sårbara kryptocertifikat som hittades i avbildningen av den inbyggda programvaran. Ersätt varje argument med lämpligt värde för resursgruppen, prenumerationen, arbetsytans namn och ID för inbyggd programvara.

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

Nycklar

Följande kommando hämtar sårbara kryptonycklar som hittades i avbildningen av den inbyggda programvaran. Ersätt varje argument med lämpligt värde för resursgruppen, prenumerationen, arbetsytans namn och ID för inbyggd programvara.

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