November 24, 2018

Бронируем Windows. Комплексный аудит безопасности — от файрвола до Active Directory. Ч.3.

Нихау, бегущие в тенях! Привет, случайный подписчик. В этой статье мы закончим рассматривать самые популярные и мощные утилиты для проверки уровня защищенности десктопных и серверных версий Windows (начало смотри тут), а также посмотрим на разные тулзы для настройки опций, усиливающих безопасность. Это — true must have арсенал инструментов для любого ИТ-админа и аудитора ИБ, так что, если ты имеешь хотя бы малейшее отношение к этим сферам или просто хочешь шарить в кибер-темате, то читай обязательно.

Поехали:

Windows SEC-AUDIT (PowerShell script)

Скрипт 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

После того как скрипт отработает, то есть проведет все проверки, вывод результатов можно найти в директории, из которой он запускался.

INFO

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-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, которые, в свою очередь, потом сказываются на общем индексе 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 — это еще одна утилита, а точнее, еще один 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: запрос будет выполнен.

Заключение

Первая часть нашего обзора подошла к финалу. Мы рассмотрели самые известные и широко используемые бесплатные и open source инструменты аудита безопасности десктопных и серверных версий Windows. С помощью этого нехитрого арсенала ты с легкостью сможешь прочекать свой ноут или корпоративную серверную станцию на предмет исходной защищенности, а также, следуя советам и подсказкам, которые есть в части утилит, оттюнинговать и улучшить уровень защищенности (hardening state).

Скоро жди вторую часть нашего обзора, в которой мы рассмотрим уже коммерческие версии инструментов аудита безопасности — а они, как правило, обладают еще большим набором функций, возможностями и фичами и наверняка придутся по вкусу доменным ИТ-администраторам.

На этом всё, киберсталкеры. Оставайтесь с нами - дальше ещё интереснее. А Даркнет ещё ближе и заманчивее. Ну и родную Винду заодно защитили очень хорошо.