вторник, 26 февраля 2019 г.

Взломали Microsoft Exchange Server - что делать!?


В Exchange была найдена уязвимость, позволяющая обычному пользователю получить права доменного администратора. Уязвимость базируется на использовании NTLM over HTTP, NTLM relaying и того факта, что Exchange by-design обладает слишком высоким набором привилегий по отношению к AD. Всё это вкупе привело к тому, что был найден способ заставить Exchange пройти NTLM авторизацию и аутентифицировать злоумышленника. То есть передать проверку подлинности NTLM обратно в Exchange (это называется атакой отражения), и выдать себя за других пользователей. В качестве краткой иллюстрации процесса часто приводится следующая картинка.

Когда у злоумышленника есть подключенный клиент, желающий пройти аутентификацию, он может легко переслать 3 сообщения на сервер между клиентом и сервером, пока не завершится цикл «challenge-response».
В момент аутентификации соединения злоумышленник может просто отправить клиенту сообщение об ошибке или сбросить соединение. После этого злоумышленник может использовать сеанс для взаимодействия с сервером из контекста пользователя, от которого была передана аутентификация.

На GitHub-е уже можно найти утилиты помогающие это сделать, а Интернет пестрит статьями на этот счёт. Для устранения уязвимости Microsoft выпустила исправления. Но на этот раз это не просто обычные HotFix (RU), их недостаточно просто установить, т.к. они вносят серьёзные архитектурные изменения. В дополнение к ним потребуется выполнить /PrepareAD, /PrepareDomain и сброс учётной записи компьютера (сервера Exchange). Более детальное изучение вопроса предлагаю начать с поста в блоге команды разработчиков по ссылке ниже.

четверг, 14 июня 2018 г.

Базовые сведения о безопасности в Windows


В безопасности, на самом базовом уровне, всё сводится к субъектам и объектам. Объект - это то, что вы защищаете. Субъект - это то, от кого вы защищаете. Субъекты и объекты используются в аутентификации (authentication) - проверка кто вы; авторизации (authorization) - предоставление доступа к чему-либо и аудите (auditing) - отслеживание, кто получил доступ. Примером субъекта - служит пользователь. Объектом - файл.

Существует такое понятие как принципал безопасности (security principal). В книге Windows Server 2008 Security Resource Kit, от Microsoft Press, даётся такое определение: A security principal is anything that can be assigned a security identifier (SID) and that can be given permission to access something (Принципал безопасности - это всё, чему может быть назначен SID и предоставлены права доступа к чему-либо).
 В Windows принципалами безопасности являются Пользователи (Users), Компьютеры (Computers) и Группы (Groups). А начиная с Windows Vista принципалом безопасности так же является Служба (Service), которая теперь тоже имеет SID.


SID - (Security ID, идентификатор безопасности)
Числовое представление принципала безопасности.

Access Control List (ACL) - Список контроля доступа (ACL) - Это список записей управления доступом (access control entries, ACE). Каждый ACE в ACL идентифицирует доверенное лицо (trustee) и указывает права доступа, разрешенные или запрещенные для этого доверенного лица (trustee). Дескриптор безопасности для защищаемого объекта может содержать два типа ACL: DACL и SACL.

SACL - System Access Control List
Содержит ACE используемые механизмом логирования событий

DACL - Discretionary Access Control List
Список избирательного управления доступом. Используется для управление доступом субъектов к объектам на основе списков управления доступом или матрицы доступа. Состоит из набора ACE.

ACE - Access Control Entries
Запись управления доступом (ACE) является элементом в списке управления доступом (ACL). ACL может иметь ноль или более ACE. Каждый ACE контролирует или отслеживает доступ к объекту определенным доверенным лицом (субъектом).


среда, 16 мая 2018 г.

Powershell Progress Bar


Небольшой пример организации Progress Bar. Скрипт простейший, в дополнительных пояснениях, думаю, не нуждается. Просто три вложенных цикла, в которых на консоль выводится и изменяется Progress Bar

Замечу, что параметр «ParentId» не обязательный. И в примерах я его обычно не встречал. Попробуйте запустить скрипт без него и вы увидите в чём разница. Так же обратите внимание на параметр «Completed». В этом примере я его не использую, но в реальной жизни он может пригодится для того, чтобы в какой-то момент скрыть progress bar

 Для особого шарма можно использовать «SecondsRemaining». Но я пока не понял, как его эффективно использовать. Видь мы никогда не знаем заранее время выполнения скрипта.  Подробнее о «Write-Progress» можно почитать тут: https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/write-progress



for($a = 1; $a -lt 100; $a++ )
{
    Write-Progress -Id 1 -Activity "Main" -Status 'Progress->' -PercentComplete $a -CurrentOperation $a

    for($b = 1; $b -lt 100; $b++ )
    {
        Write-Progress -Id 2 -ParentId 1 -Activity "Sub1" -Status 'Progress->' -PercentComplete $b -CurrentOperation $b
       
        for($c = 1; $c -lt 100; $c++ )
        {
            Write-Progress -Id 3 -ParentId 2 -Activity "Sub2" -Status 'Progress->' -PercentComplete $c -CurrentOperation $c
        }
    }
}


В результате выполнения скрипта, увидите что-то вроде этого.

P.S.
Случайно заметил, что скорость исполнения этого скрипта в Powershell ISE в три раза выше чем в консоли Powershell. От битности это не зависит. Пока не понял, почему скорость выполнения разная. Кстати этот скрипт можно использовать, если есть необходимость погрузить процессор. Но конечно для генерации CPU load есть более правильные средства.