Утилиты аудита безопасности Windows. Часть 2
Life-Hack [Жизнь-Взлом]/ХакингСкрипт SEC-AUDIT, выложенный в GitHub-репозиторий автором Sikkandar-Sha и написанный на PowerShell, служит для аудита и проверки настроек безопасности Windows Server. Как вы, наверное, уже догадались, этот скрипт, так же как и предыдущие программы, абсолютно бесплатен, а исходный код выложен в публичный доступ.

После запуска скрипт проверяет параметры безопасности, элементы управления, политики, применяемые на отдельной машине или контроллере домена. Скрипт сравнивает текущее и рекомендуемое значение параметра, контроля или политики безопасности, которые должны соответствовать известным стандартам безопасности и рекомендациям производителя. Как отмечает автор, этот PowerShell-скрипт пригодится в ситуациях, когда запуск автоматизированных инструментов аудита, таких как OpenVAS или Nessus (с настроенной политикой аудита конфигураций), не разрешен или по каким-то причинам затруднителен.
Что касается эталонных рекомендаций по безопасности от Microsoft, вы можете ознакомиться с ними на официальной странице MSDN для Windows 10 и Active Directory.
Запуск и использование
По умолчанию выполнение сценариев PowerShell в системе запрещено, поскольку в скриптах, особенно тех, что загружены из Сети, может находиться вредоносный код, который причинит системе ущерб. Поэтому по соображениям безопасности скрипты PowerShell в идеале должны быть подписаны цифровой подписью. Такой подход называется политика выполнения.
Для наших целей, если вы уверены в чистоте запускаемых скриптов, можно отключить проверку выполнения данной политики. Для этого запускаем консоль PowerShell от имени администратора и вводим команду
Set-ExecutionPolicy RemoteSigned
Этот скрипт можно сохранить в любую директорию (к примеру, на диске С:\) и запустить с правами администратора. Перед выполнением скрипта убедитесь, что для политики выполнения сценария PowerShell установлено значение «Неограниченно». Кроме этого данную настройку можно форсировать, выполнив в окне PowerShell команду
Set-ExecutionPolicy Unrestricted -Force
После того как скрипт отработает, то есть проведет все проверки, вывод результатов можно найти в директории, из которой он запускался.
Hardening — это термин из мира информациоонной безопасности. Он обозначает процесс обеспечения безопасности системы (программы) за счет снижения ее уязвимости и, как правило, с использованием исключительно штатных утилит или механизмов защиты.
Windows-audit (PowerShell script)
Windows-audit — очередной PowerShell-скрипт для аудита и проверки безопасности серверов Windows Server 2003+, разработанный claranet. Скрипт собирает большой массив информации об одном или нескольких целевых серверах Windows и сериализует эту информацию на жесткий диск. Полученный файл отчета можно сконвертировать в таблицу Excel или даже базу данных SQL, притом используя фильтры, чтобы включать в отчет только необходимые индикаторы.

До запуска скрипта еще раз убедитесь, что в PowerShell форсирована политика выполнения с опцией «Неограниченно», либо форсируйте ее вручную:
Set-ExecutionPolicy Unrestricted
После этого скопируйте скрипт в любую директорию на диске C:\ и создайте текстовый файл с именем Node Hints, который может содержать имена хостов NetBIOS и DNS, а также IP-адреса и блоки CIDR тех подсетей, которые необходимо просканировать. Каждая новая строка должна начинаться с оператора include> или exclude<, за которым следуют параметры NetBIOS | DNS | IP | CIDR. Пример заполнения вы можете посмотреть в прилагаемой к скриптам папке.
После этого в файле Get-AuditData.ps1 надо вручную подставить несколько параметров: PSCredential, PSCredential, ThreadCount. После чего можете запускать основные скрипты: сначала Get-AuditData.ps1, а после его выполнения — Compile-AuditData.ps1. Пример запуска скрипта:
.\Get-AuditData.ps1 -PSCredential $MyPSCredential -NodeHintsFile ".\nodehints.txt" -ThreadCount 128;
В файле Compile-AuditData.ps1 до запуска тоже следует вручную подставить несколько параметров: CompilationType, Filter, SQLServerName, SQLDatabaseName. Синтаксис можно посмотреть в файле справки. Пример запуска скрипта:
.\Compile-AuditData.ps1 -CompilationType "Excel" -Filter "Example";
После выполнения вы найдете файл с именем Filtered-Audit-Data-Example.xlsx в папке Examples директории, в которой лежит скрипт.
Windows-Workstation-and-Server-Audit (PowerShell script)
Очередной скрипт для аудита безопасности Windows Windows-Workstation-and-Server-Audit, также написанный на PowerShell разработчиком Аланом Ренуфом (Alan Renouf). Скрипт проверяет рабочую станцию или сервер Windows на все распространенные требования безопасности. Вывод отчета о работе скрипта содержит следующие блоки:
- основная информация о системе;
- установленные security pach и hotfix;
- конфиг локальной политики безопасности;
- NIC-конфигурация;
- уставленное ПО;
- локальные и сетевые ресурсы;
- принтеры и другая периферия, подключенная к хосту;
- сведения безопасности из журналов Windows.
С данным скриптом все очень просто: он уже содержит все необходимые переменные и конструктивные блоки. Остается только распаковать его на диск C:\ и запустить под администратором.

SQL Audit Script at TechEd 2014 (PowerShell script)
Этот скрипт, как следует из названия, предназначен для аудита СУБД MS SQL Server. Скрипт состоит из двух файлов: SQLAuditv02.ps1, который непосредственно собирает данные с системы, и Compilereports.ps1, который преобразует полученный отчет из CSV-файла в удобочитаемый формат электронных таблиц Excel.
Обратите внимание, что по замыслу разработчиков эти скрипты необходимо скопировать и запустить из директории на локальном диске C:\Temp, изменив при необходимости в SQLAuditv02.ps1 первые три переменные ($SQLServer, $dir, $SQLDBName). После чего запуск скрипта не потребует каких-либо дополнительных действий и может быть отправлен на исполнение от имени администратора.
Собранная информация группируется по следующим блокам:
- Server Properties;
- Windows Info;
- Version Info;
- SQL Server Install Date;
- Configuration Values;
- DB File Names and paths;
- DB Properties;
- Server Hardware;
- Fixed Drive Freespace;
- IO Util by DB;
- System Memory;
- Process Memory;
- SQL Log file freespace;
- CM File Sizes;
- CM DB Statistics;
- CM Index Frag.
Как только скрипт отработает, мы получим отчет в виде HTML-файла, который можно открыть любым браузером.

Как видно, скрипт не собирает данные о безопасности и не проводит каких-либо compliance-проверок уровня защищенности. Но он все равно может оказаться нам полезным, ведь в целом полученная информация позволяет сформировать представление о запущенном экземпляре MS SQL Server, а проанализировав данные Configuration Values, DB Properties, можно выудить часть security settings.
Microsoft Windows Server Best Practice Analyzer
Начиная с версии Windows Server 2008 R2 в серверных редакциях ОС появились встроенные инструменты для анализа установленных компонентов на соответствие рекомендациям — Best Practice Analyzer. Для более старых версий BPA можно скачать инсталляционным файлом с официальной страницы Microsoft. В серверных ОС 2008 R2 и выше BPA устанавливается на этапе первичной инсталляции системы и всегда остается доступен из оснастки Server Manager.
После запуска программы проверяется ряд критических и некритических параметров Windows based ИТ-инфраструктуры, например: все ли первичные контроллеры домена сконфигурированы к валидному источнику времени, все ли домены имеют два работающих DC, все ли юниты OU в Active Directory защищены от случайного удаления, есть ли их резервные копии, корректно ли настроены зоны DNS, работают ли репликации Group Policy и FRS. Да, кстати, BPA отлично отработает и на MS SQL Server. Поскольку BPA является компонентом Windows Server, этот инструмент поставляется «из коробки» и не требует никаких вложений.


Хотя утилита BPA не ориентирована чисто на безопасность, она очень подходит для первичного сбора данных и оценки health-индикаторов AD, которые, в свою очередь, потом сказываются на общем индексе Windows Hardening.
BPA можно запускать не только из MMC-оснастки, но и из консоли. Для автоматизации сбора информации с локального сервера вы можете использовать приведенный ниже скрипт:
#Get-BPAResults.ps1
# Microsoft Windows Server Best Practice Analyzer on CLI mode
#v.1.0
Import-Module ServerManager
Import-Module BestPractices
$ResultDir = "C:\Temp\"
foreach ($BPAModel in Get-BpaModel)
{
$BPAinstance = $BPaModel.Id
$FileName = $BPAinstance.Substring($BPAinstance.LastIndexOf("/")+1)
Invoke-BpaModel $BPAinstance
Get-BPAResult $BPAinstance | ConvertTo-Html > ($ResultDir + $FileName + ".html")
}
Результат анализа системы, проведенного BPA по каждой отдельной роли сервера, будет сохранен в отдельном HTML-файле в папке C:\Temp.
Hardentools for Windows
Hardentools — это бесплатная небольшая программа, не требующая установки, предназначенна для отключения/включения ряда возможностей в операционных системах Windows и пользовательском ПО (MS Office, Adobe Reader и другие). Одним кликом вы можете менять доступные опции security settings, к примеру отключить Windows Script Host, опасное выполнение AсtivX, форсировать выполнение ASR (Win10), переход в Adobe Reader protection mode, Disable Adobe JavaScript и тому подобное. Если вам лень возиться с консолями MMC и лезть руками в реестр, правя и добавляя специфические ключи, то это то, что вам надо!

По сути, Hardentools — это привычный твикер системы, только ориентированный исключительно на опции безопасности. Нельзя сказать, что утилита предоставляет широкие возможности и огромное количество редактируемых параметров, но в некоторых ситуация для быстрого создания базового уровня защиты хоста, на который не распространяются доменные политики безопасности, очень даже подойдет.

SAMRi10 — Hardening SAM Remote Access in Windows 10 / Server 2016
SAMRi10 — это еще одна утилита для аудита безопасности Windows, а точнее, еще один PowerShell-скрипт от Microsoft, призванный обеспечить защиту базы данных учетных записей пользователей (Security Account Manager, SAM). После запуска скрипт форсирует включение политики, запрещающей делать удаленный вызов и использование SAM с целью перечисления списка членов домена (пользователей).
Чтобы запустить скрипт, будет достаточно распаковать его в любую удобную папку (к примеру, на том же диске C:\) и запустить от имени администратора в консоли PowerShell:
.\SAMRi10.ps1
Вот так будет выглядеть старт исполнения SAMRi10:

А вот так — завершение работы скрипта:


Почему SAMRi10 так важен?
Существует ряд атак, которые проводятся на SAM с целью получить логины и хеши пользователя на локальной машине (например, отдельно стоящем контроллере домена). Более подробно о скрипте и теории безопасности SAM можно почитать на страничке GitHub.
Результаты получения списка членов домена (пользователей) до форсирования SAMRi10:

А вот результат той же команды, но уже после форсирования SAMRi10. Как мы видим, не авторизованным в группе админов членам домена запрещено получать список перечисления:

Microsoft отмечает, что использование SAMRi10 никак не помешает работе легитимных администраторов, и приводит пример, как DC на базе Windows Server 2016 будет реагировать на удаленные запросы к SAM в зависимости от привилегий учетной записи, сгенерировавшей этот запрос:
- Domain Admin account: запрос будет выполнен;
- Non-privileged User account: вызовет ошибку Access is denied;
- член группы Remote SAM Users: запрос будет выполнен.
Заключение
Первая часть нашего обзора лучших утилит аудита безопасности Windows. Мы рассмотрели самые популярное и широко используемые бесплатные и open source инструменты аудита безопасности десктопных и серверных версий Windows. С помощью этого нехитрого арсенала вы с легкостью сможете прочекать свой ноут или корпоративную серверную станцию на предмет исходной защищенности, а также, следуя советам и подсказкам, которые есть в части утилит, оттюнинговать и улучшить уровень защищенности (hardening state) Windows.
Скоро ждите вторую часть нашего обзора, в которой мы рассмотрим уже коммерческие версии инструментов аудита безопасности Windows — а они, как правило, обладают еще большими возможностями, функциями и фичами и наверняка будут полезны доменным ИТ-администраторам.