Inicio rápido: Carga de imágenes de firmware en el análisis de firmware de Defender para IoT mediante AzurePowerShell
En este artículo se explica cómo usar Azure PowerShell para cargar imágenes de firmware en el Análisis de firmware de Defender para IoT.
El Análisis de firmware de Defender para IoT es una herramienta que analiza las imágenes de firmware y proporciona una comprensión de las vulnerabilidades de seguridad en las imágenes de firmware.
Requisitos previos
En esta guía de inicio rápido se da por supuesto un conocimiento básico del Análisis de firmware de Defender para IoT. Para más información, consulte el Análisis de firmware para generadores de dispositivos. Para obtener una lista de los sistemas de archivos compatibles, consulte Preguntas más frecuentes sobre el Análisis de firmware de Defender para IoT.
Preparar el entorno para Azure PowerShell
Inicie sesión en Azure PowerShell mediante la ejecución del comando Connect-AzAccount. Omita este paso si usa Cloud Shell.
Si se trata del primer uso de Azure PowerShell del Análisis de firmware de Defender para IoT, instale la extensión:
Find-Module -Name Az.FirmwareAnalysis | Install-Module
Incorpore la suscripción al Análisis de firmware de Defender para IoT.
Ejecute Set-AzContext para establecer la suscripción que se usará en la sesión actual. Seleccione la suscripción en la que desea cargar las imágenes de firmware.
Cargar una imagen de firmware en el área de trabajo
Cree una imagen de firmware que se va a cargar. Inserte el nombre del grupo de recursos, el nombre del área de trabajo y los detalles adicionales sobre la imagen de firmware que quiera incluir en los parámetros respectivos, como
Description
,FileName
,Vendor
,Model
oVersion
.New-AzFirmwareAnalysisFirmware -ResourceGroupName myResourceGroup -WorkspaceName default -Description 'sample description' -FileName file -Vendor vendor -Model model -Version version
La salida de este comando incluye una propiedad Name
, que es el id. de firmware. Guarde este id. para el siguiente comando.
Genere una dirección URL de SAS que usará en el siguiente paso para enviar la imagen de firmware a Azure Storage. Reemplace
sampleFirmwareID
por el id. de firmware que guardó del paso anterior. Puede almacenar la dirección URL de SAS en una variable para facilitar el acceso a los comandos futuros:$sasUrl = New-AzFirmwareAnalysisWorkspaceUploadUrl -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default
Use el siguiente script para cargar la imagen de firmware en Azure Storage. Reemplace "
pathToFile
" por la ruta de acceso a la imagen de firmware en el equipo local. Encierre la ruta de acceso entre comillas.$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
Este es un flujo de trabajo de ejemplo de un extremo a otro de cómo podría usar los comandos de Azure PowerShell para crear y cargar una imagen de firmware. Reemplace los valores de las variables establecidas al principio para reflejar el entorno.
$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 los resultados del análisis de firmware
Para recuperar los resultados del análisis de firmware, debe asegurarse de que el estado del análisis sea "Listo". Reemplace sampleFirmwareID
por el id. de firmware, myResourceGroup
por el nombre del grupo de recursos y default
por el nombre del área de trabajo:
Get-AzFirmwareAnalysisFirmware -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default
Busque el campo "estado" para mostrar "Listo" y, a continuación, ejecute los comandos respectivos para recuperar los resultados del análisis de firmware.
Si desea automatizar el proceso de comprobación del estado del análisis, puede usar el siguiente script para comprobar el estado del recurso periódicamente hasta que llegue a "Listo". Puede establecer la variable $timeoutInSeconds
en función del tamaño de la imagen: las imágenes más grandes pueden tardar más tiempo en analizarse, por lo que puede ajustar esta variable según sus necesidades.
$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
El siguiente comando recupera el SBOM en la imagen de firmware. Reemplace cada argumento por el valor adecuado para el grupo de recursos, la suscripción, el nombre del área de trabajo y el id. de firmware.
Get-AzFirmwareAnalysisSbomComponent -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default
Puntos débiles
El siguiente comando recupera los CVE que se encuentran en la imagen de firmware. Reemplace cada argumento por el valor adecuado para el grupo de recursos, la suscripción, el nombre del área de trabajo y el id. de firmware.
Get-AzFirmwareAnalysisCve -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default
Protección binaria
El comando siguiente recupera los resultados del análisis sobre la protección binaria en la imagen de firmware. Reemplace cada argumento por el valor adecuado para el grupo de recursos, la suscripción, el nombre del área de trabajo y el id. de firmware.
Get-AzFirmwareAnalysisBinaryHardening -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default
Valores hash de contraseñas
El comando siguiente recupera los hash de contraseña en la imagen de firmware. Reemplace cada argumento por el valor adecuado para el grupo de recursos, la suscripción, el nombre del área de trabajo y el id. de firmware.
Get-AzFirmwareAnalysisPasswordHash -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default
Certificados
El siguiente comando recupera los certificados criptográficos vulnerables que se encontraron en la imagen de firmware. Reemplace cada argumento por el valor adecuado para el grupo de recursos, la suscripción, el nombre del área de trabajo y el id. de firmware.
Get-AzFirmwareAnalysisCryptoCertificate -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default
Claves
El comando siguiente recupera las claves criptográficas vulnerables que se encontraron en la imagen de firmware. Reemplace cada argumento por el valor adecuado para el grupo de recursos, la suscripción, el nombre del área de trabajo y el id. de firmware.
Get-AzFirmwareAnalysisCryptoKey -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default