Guia de início rápido: carregar imagens de firmware para o Defender for IoT Firmware Analysis usando o Azure PowerShell
Este artigo explica como usar o Azure PowerShell para carregar imagens de firmware no Defender for IoT Firmware Analysis.
O Defender for IoT Firmware Analysis é uma ferramenta que analisa imagens de firmware e fornece uma compreensão das vulnerabilidades de segurança nas imagens de firmware.
Pré-requisitos
Este guia de início rápido pressupõe uma compreensão básica da Análise de Firmware do Defender for IoT. Para obter mais informações, consulte Análise de firmware para construtores de dispositivos. Para obter uma lista dos sistemas de arquivos suportados, consulte Perguntas freqüentes sobre a análise de firmware do Defender for IoT.
Preparar seu ambiente para o Azure PowerShell
Entre no Azure PowerShell executando o comando Connect-AzAccount. Ignore esta etapa se estiver usando o Cloud Shell.
Se este for seu primeiro uso do Azure PowerShell do Defender for IoT Firmware Analysis, instale a extensão:
Find-Module -Name Az.FirmwareAnalysis | Install-Module
Integre sua assinatura do Defender for IoT Firmware Analysis.
Execute Set-AzContext para definir sua assinatura para usar na sessão atual. Selecione a subscrição onde pretende carregar as suas imagens de firmware.
Carregar uma imagem de firmware para a área de trabalho
Crie uma imagem de firmware para ser carregada. Insira o nome do grupo de recursos, o nome do espaço de trabalho e quaisquer detalhes adicionais sobre a imagem do firmware que você gostaria de incluir nos respetivos parâmetros, como um
Description
,FileName
,Vendor
,Model
ouVersion
.New-AzFirmwareAnalysisFirmware -ResourceGroupName myResourceGroup -WorkspaceName default -Description 'sample description' -FileName file -Vendor vendor -Model model -Version version
A saída deste comando inclui uma Name
propriedade, que é o seu ID de firmware. Salve essa ID para o próximo comando.
Gere uma URL SAS que você usará na próxima etapa para enviar sua imagem de firmware para o Armazenamento do Azure. Substitua
sampleFirmwareID
pelo ID de firmware que você salvou da etapa anterior. Você pode armazenar a URL SAS em uma variável para facilitar o acesso a comandos futuros:$sasUrl = New-AzFirmwareAnalysisWorkspaceUploadUrl -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default
Use o script a seguir para carregar sua imagem de firmware no Armazenamento do Azure. Substitua '
pathToFile
' pelo caminho para a imagem do firmware na máquina local. Envolva o caminho entre aspas.$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
Aqui está um exemplo de fluxo de trabalho de ponta a ponta de como você pode usar os comandos do Azure PowerShell para criar e carregar uma imagem de firmware. Substitua os valores das variáveis definidas no início para refletir seu ambiente.
$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
Recuperar resultados da análise de firmware
Para recuperar os resultados da análise de firmware, você deve certificar-se de que o status da análise é "Pronto". Substitua sampleFirmwareID
pelo ID do firmware, myResourceGroup
pelo nome do grupo de recursos e default
pelo nome do espaço de trabalho:
Get-AzFirmwareAnalysisFirmware -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default
Procure o campo "status" para exibir "Ready" e, em seguida, execute os respetivos comandos para recuperar os resultados da análise de firmware.
Se você gostaria de automatizar o processo de verificação do status da sua análise, você pode usar o script a seguir para verificar o status do recurso periodicamente até que ele atinja "Pronto". Você pode definir a $timeoutInSeconds
variável dependendo do tamanho da sua imagem - imagens maiores podem levar mais tempo para analisar, então ajuste essa variável de acordo com suas necessidades.
$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
}
$ 80 M
O comando a seguir recupera a SBOM na imagem do firmware. Substitua cada argumento pelo valor apropriado para seu grupo de recursos, assinatura, nome do espaço de trabalho e ID de firmware.
Get-AzFirmwareAnalysisSbomComponent -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default
Desvantagens
O comando a seguir recupera CVEs encontrados na imagem do firmware. Substitua cada argumento pelo valor apropriado para seu grupo de recursos, assinatura, nome do espaço de trabalho e ID de firmware.
Get-AzFirmwareAnalysisCve -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default
Endurecimento binário
O comando a seguir recupera os resultados da análise sobre proteção binária na imagem do firmware. Substitua cada argumento pelo valor apropriado para seu grupo de recursos, assinatura, nome do espaço de trabalho e ID de firmware.
Get-AzFirmwareAnalysisBinaryHardening -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default
Hashes de palavras-passe
O comando a seguir recupera hashes de senha na imagem do firmware. Substitua cada argumento pelo valor apropriado para seu grupo de recursos, assinatura, nome do espaço de trabalho e ID de firmware.
Get-AzFirmwareAnalysisPasswordHash -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default
Certificados
O comando a seguir recupera certificados de criptografia vulneráveis que foram encontrados na imagem do firmware. Substitua cada argumento pelo valor apropriado para seu grupo de recursos, assinatura, nome do espaço de trabalho e ID de firmware.
Get-AzFirmwareAnalysisCryptoCertificate -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default
Chaves
O comando a seguir recupera chaves de criptografia vulneráveis que foram encontradas na imagem do firmware. Substitua cada argumento pelo valor apropriado para seu grupo de recursos, assinatura, nome do espaço de trabalho e ID de firmware.
Get-AzFirmwareAnalysisCryptoKey -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default