Приветствую, уважаемый читатель!
При проведении аттестации по требованиям безопасности информации уже достаточно давно необходимо подтвердить отсутствие уязвимостей критического и высокого уровня. Если на объекте есть САЗ - проблем нет, если САЗ нет на помощь приходит сканер от ФСТЭК (ScanOval). У данного сканера есть проблема, а именно экспорт результатов сканирования в формат, который позволит удобно работать с выявленными уязвимостями в SIEM.
Критиковать бесплатный инструмент дело неблагодарное, но работать как-то нужно. Не придумал ничего лучше, чем распарсить выходной HTML-файл отчёта, достать значимые поля и отправить в SIEM. Кому интересно, скрипт парсинга ниже)
Итак, алгоритм работы со ScanOval подразумевает установку ПО на каждый хост, который необходимо просканировать. Результаты можно выгрузить на каждом АРМ или сервере в HTML-файл и....всё.
Имеем изначально такой отчёт:
На выходе получаем коллекцию объектов, которую можно любым способом отправить в SIEM (мне лично ближе HTTP коллекторы).
Скрипт парсинга ниже + добавил на будущее ссылку на описание уязвимости в БДУ ФСТЭК:
clear
$vuln_id = Select-String -Path "D:\Work\ScanOVAL\ScanOval_Report_06_03_2025_host1.html" -SimpleMatch 'class="bdu"'
$vuln_crit = Select-String -Path "D:\Work\ScanOVAL\ScanOval_Report_06_03_2025_host1.html" -SimpleMatch 'class="bdu"' -Context 0,2
$vuln_desc = Select-String -Path "D:\Work\ScanOVAL\ScanOval_Report_06_03_2025_host1.html" -SimpleMatch 'class="desc"'
$vuln_objects = @()
$counter = 0
foreach ($vuln in $vuln_id) {
write-host 'New -------------------------------------------------------------- ' + $counter
$Vuln_scanname = $vuln.Filename
$Vuln_IDs = $vuln.Line -replace '\<(.{1,15})\>','' -replace '\s', ''
$Vuln_Descr = $vuln_desc[$counter].Line -replace '\<(.{1,15})\>','' -replace '\s{16}',''
$Vuln_Critic = $vuln_crit[$counter].Context.PostContext[1] -replace '\<(.{1,40})\>','' -replace '\s', ''
$Vuln_Link = 'https://bdu.fstec.ru/vul/' + ($vuln.Line -replace '\<(.{1,15})\>','' -replace 'BDU:','' -replace '\s', '')
$object = New-Object PSObject
Add-Member -InputObject $object -MemberType NoteProperty -Name ScanName -Value $Vuln_scanname
Add-Member -InputObject $object -MemberType NoteProperty -Name ID -Value $Vuln_IDs
Add-Member -InputObject $object -MemberType NoteProperty -Name Description -Value $Vuln_Descr
Add-Member -InputObject $object -MemberType NoteProperty -Name Critical -Value $Vuln_Critic
Add-Member -InputObject $object -MemberType NoteProperty -Name BDU -Value $Vuln_Link
$vuln_objects += $object
$counter++
}
$vuln_objects | fl
Комментариев нет:
Отправить комментарий