Поделиться через


Краткое руководство. Отправка образов встроенного ПО в Defender для Интернета вещей с помощью Azure PowerShell

В этой статье объясняется, как использовать Azure PowerShell для отправки образов встроенного ПО в Defender для Интернета вещей.

Анализ встроенного ПО Defender для Интернета вещей — это средство, которое анализирует образы встроенного ПО и предоставляет представление об уязвимостях безопасности в образах встроенного ПО.

Необходимые компоненты

В этом кратком руководстве предполагается базовое понимание анализа встроенного ПО Defender для Интернета вещей. Дополнительные сведения см. в разделе "Анализ встроенного ПО для построителей устройств". Список поддерживаемых файловых систем см. в статье "Часто задаваемые вопросы о анализе встроенного ПО Defender для Интернета вещей".

Подготовка среды для Azure PowerShell

  • Установите Azure PowerShell или используйте Azure Cloud Shell.

  • Войдите в Azure PowerShell, выполнив команду Подключение-AzAccount. Пропустите этот шаг, если вы используете Cloud Shell.

  • Если это первое использование Azure PowerShell в Defender для Анализа встроенного ПО Интернета вещей, установите расширение:

    Find-Module -Name Az.FirmwareAnalysis | Install-Module
    
  • Подключение подписки к Анализу встроенного ПО Defender для Интернета вещей.

  • Запустите Set-AzContext , чтобы задать подписку для использования в текущем сеансе. Выберите подписку, в которой вы хотите отправить образы встроенного ПО.

Отправка образа встроенного ПО в рабочую область

  1. Создайте образ встроенного ПО для отправки. Вставьте имя группы ресурсов, имя рабочей области и дополнительные сведения о образе встроенного ПО, который вы хотите включить в соответствующие параметры, например Description, , ModelFileNameVendorили .Version

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

Выходные данные этой команды включают свойство, которое является идентификатором Name встроенного ПО. Сохраните этот идентификатор для следующей команды.

  1. Создайте URL-адрес SAS, который будет использоваться на следующем шаге для отправки образа встроенного ПО в служба хранилища Azure. Замените sampleFirmwareID идентификатор встроенного ПО, сохраненный на предыдущем шаге. URL-адрес SAS можно хранить в переменной, чтобы упростить доступ для будущих команд:

    $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

Получение результатов анализа встроенного ПО

Чтобы получить результаты анализа встроенного ПО, необходимо убедиться, что состояние анализа готово. Замените sampleFirmwareID идентификатор встроенного ПО, myResourceGroup именем группы ресурсов и default именем рабочей области:

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

Недостатки

Следующая команда извлекает CVEs, найденные в образе встроенного ПО. Замените каждый аргумент соответствующим значением для группы ресурсов, подписки, имени рабочей области и идентификатора встроенного ПО.

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