Когда-то считалось, что система локальной безопасности Windows похожа на кованые железные ворота с хитрым замком, стоящие посреди чистого поля: выглядят грозно, но вот эффективность весьма сомнительна. Времена меняются, и механизмы защиты винды понемногу эволюционируют. Сегодня мы поговорим о том, как устроена безопасность в современных версиях Windows.
Как обойти систему безопасности Windows
Как устроена система безопасности Windows
Сущности системы безопасности
В Windows все активные сущности, которые могут быть аутентифицированы операционной системой (пользователи или группы), называются участниками безопасности (security principals). Все участники безопасности имеют уникальный идентификатор переменной длины — Security ID (SID). Структура SID следующая — S-R-IA-SA-RID, например S-1-5-21-1687231434-1254558764-1544283289-1004, где:
Также есть стандартные так называемые Для просмотра ссылки Войдиили Зарегистрируйся для пользователей и групп. Они имеют один и тот же SID на любых системах (например, группа Everyone или пользователь System).
Поизучать SID можно с помощью утилиты Для просмотра ссылки Войдиили Зарегистрируйся из пакета Sysinternals. А почитать о структуре SID более подробно можно, например, в этих публикациях:
или Зарегистрируйся, Для просмотра ссылки Войди или Зарегистрируйся и в Для просмотра ссылки Войди или Зарегистрируйся.
SID, в свою очередь, входит в так называемый маркер доступа — программный объект (структура в ядре Windows), который закрепляется за сессией (Для просмотра ссылки Войдиили Зарегистрируйся) участников безопасности после авторизации. За выдачу маркера, как и за аутентификацию, отвечает LSASS (local security authority subsystem).
Помимо всего прочего, в маркер включены SID пользователя и его групп, а также Для просмотра ссылки Войдиили Зарегистрируйся Для просмотра ссылки Войди или Зарегистрируйся на совершение каких-либо действий (например, привилегия на отладку debug, которая, кстати, используется в Для просмотра ссылки Войди или Зарегистрируйся для получения доступа к системным процессам).
После того как удаляется последний ассоциированный с сессией токен, LSASS удаляет и саму сессию — таким образом завершается сеанс пользователя. Можно поподробнее изучить структуру маркера доступа в отладчике ядра (kernel debugger) с помощью команды dt_TOKEN. Вообще, если не получается нагуглить подробности о внутреннем устройстве Windows, можно изучить структуру самому с помощью средств отладки. Подробности представлены в Для просмотра ссылки Войдиили Зарегистрируйся. С привилегиями может быть, например, связана такая вещь, как Для просмотра ссылки Войди или Зарегистрируйся Для просмотра ссылки Войди или Зарегистрируйся Для просмотра ссылки Войди или Зарегистрируйся.
Маркеры доступа системы безопасности Windows
Маркеры доступа тоже могут иметь проблемы с безопасностью. Вот несколько ссылок для более подробного изучения:
или Зарегистрируйся), используется SD — Для просмотра ссылки Войди или Зарегистрируйся. Это дескриптор для управления доступом к данным объектам (например, процесс может иметь SD или SD может быть привязан к файлу в NTFS). У SD тоже, кстати, бывают Для просмотра ссылки Войди или Зарегистрируйся с безопасностью.
В security descriptor включены ACL (access control list), которые бывают двух видов — SACL (нужен для ведения журнала доступа к объекту) и DACL (нужен непосредственно для управления доступом). В свою очередь, ACL включают ACE (access control entry) — каждая ACE предназначена для конкретного субъекта, который получает доступ, и содержит в себе тип (запрет или разрешение) и маску доступа. Правильно настроенные ACL позволяют перекрыть несанкционированный доступ к объектам внутри системы.
Однако, если кто-то загрузится на таком компьютере в Linux или вытащит жесткий диск из машины с Windows и примонтирует его в том же Linux, он сможет прочитать эти данные. В Windows удастся получить доступ к данным с «чужого» носителя NTFS, только если пользователь или его группа на другой системе имеет тот же SID — например, если в ACL выставлено слишком много прав на well-known-группы.
От этого можно защититься только шифрованием, но стоит быть осторожнее с выбором и использованием инструмента (см. статьи о проблемах с шифрованными контейнерами Для просмотра ссылки Войдиили Зарегистрируйся и Для просмотра ссылки Войди или Зарегистрируйся, а также Для просмотра ссылки Войди или Зарегистрируйся).
В ядре Windows проверки ACL выполняются с помощью Для просмотра ссылки Войдиили Зарегистрируйся и Для просмотра ссылки Войди или Зарегистрируйся. Предоставление доступа выглядит так: субъект (пользователь) после авторизации получает маркер доступа, затем субъект обращается к файлу, система сравнивает необходимые данные из маркера доступа с соответствующими ACE в DACL объекта, и в зависимости от разрешений субъект получает доступ или отказ.
Получение доступа
Подробнее о ACL/ACE можно почитать на Для просмотра ссылки Войдиили Зарегистрируйся или на Для просмотра ссылки Войди или Зарегистрируйся. Также в этом может участвовать механизм Для просмотра ссылки Войди или Зарегистрируйся, который проверяет доступ к объекту по уровню надежности того, кто этот доступ запрашивает.
Кстати, повышение привилегий за счет DACL было использовано в прошлогодней уязвимости Для просмотра ссылки Войдиили Зарегистрируйся. Криво выпущенный патч — знакомые грабли. Также в 2018 году была уязвимость Для просмотра ссылки Войди или Зарегистрируйся, связанная с обходом разрешений.
Помимо привилегий, есть еще один способ контролировать действия пользователя, требующие прав администратора. Для этого был создан Для просмотра ссылки Войдиили Зарегистрируйся Для просмотра ссылки Войди или Зарегистрируйся (User Access Control). Идеала, разумеется, не бывает, поэтому вот несколько старых ссылок для дальнейшего изучения методик обхода UAC.
Аутентификация и авторизация
Как уже упоминалось, за аутентификацию отвечает LSASS. На деле, конечно, все выглядит сложнее. Ниже приведена схема механизма аутентификации для старых версий Windows.
Вкратце это работает так: в LSASS поступают аутентификационные данные (пароль, биометрия и прочее), затем Windows производит авторизацию. Хеш от аутентификационных данных кладется в SAM, а пользовательскому процессу назначается маркер доступа. Известная Для просмотра ссылки Войдиили Зарегистрируйся состоит в том, что можно Для просмотра ссылки Войди или Зарегистрируйся сдампить (например, при помощи всем известного mimikatz) и провести атаку pass-the-hash.
В Windows 10 Для просмотра ссылки Войдиили Зарегистрируйся Для просмотра ссылки Войди или Зарегистрируйся (вместе с ним, кстати, появился новый процесс — Lsalso.exe). Этот механизм должен был защитить, в частности, от использования mimikatz. Но на каждого хитреца найдется свой Для просмотра ссылки Войди или Зарегистрируйся.
Прежде всего, Credential Guard — опциональная функция, которая может быть отключена. Так как Credential Guard основан на механизме Virtual Secure Mode (VSM), который, в свою очередь, базируется на механизмах виртуализации CPU, то не стоит забывать и об Для просмотра ссылки Войдиили Зарегистрируйся Для просмотра ссылки Войди или Зарегистрируйся, позволяющих обойти Credential Guard.
Ну и напоследок нужно помнить, что введенный пароль преодолевает некоторый путь перед тем, как будет сохранен в компьютере для последующей авторизации. Это значит, что его можно получить с помощью кейлоггера или кастомного SSP (security support provider). Последнее возможно с помощью mimikatz — пример есть в недавней Для просмотра ссылки Войдиили Зарегистрируйся. Помимо mimikatz, перехватить пароль помогут Для просмотра ссылки Войди или Зарегистрируйся, Для просмотра ссылки Войди или Зарегистрируйся или Для просмотра ссылки Войди или Зарегистрируйся, в которых, по сути, используется интегрированный mimikatz. Альтернативой в PowerSploit могут быть следующие команды:
Import-Module .\PowerSploit.psm1
Install-SSP -Path .\mimilib.dll
Для общего развития полезно будет почитать презентацию по pass-the-hash для Windows 10, представленную институтом Для просмотра ссылки Войдиили Зарегистрируйся, и изучить основные методы Для просмотра ссылки Войди или Зарегистрируйся от mimikatz в домене Active Directory.
Естественно, обойти системы безопасности Windows позволят и методы социальной инженерии. Например, можно через msf и msfvenom получить реверс-шелл, с помощью его загрузить на целевую систему Для просмотра ссылки Войдиили Зарегистрируйся для имитации окна авторизации, а потом запустить его из шелла. На экране пользователя отобразится окно, как при входе в систему, — при этом инструмент проверяет, правильный ли пароль введен.
Кстати, есть Для просмотра ссылки Войдиили Зарегистрируйся для обхода окна авторизации, который на удивление может сработать и в Windows 10. Суть этого способа в том, что нужно заменить программу sethc.exe на cmd.exe простым переименованием, а затем вызвать sethc.exe, пять раз нажав клавишу Shift. После этого можно сменить пароль пользователя. Еще в Windows 10 существует возможность сделать примерно следующее:
От этого опять-таки спасает шифрование диска. Для запрета смены пароля определенного юзера можно использовать учетную запись Microsoft вместо локальной. Также можно отключить для всех юзеров права на выполнение utilman.exe и sethc.exe. Ну и дополнительно включить Secure Boot и поставить пароль на BIOS/UEFI. Кстати, этот трюк показывался в сериале Mr.Robot в третьей серии четвертого сезона.
Также для байпаса окна авторизации есть Для просмотра ссылки Войдиили Зарегистрируйся, но по-прежнему рабочий инструмент (с поддержкой Windows 10) под названием Для просмотра ссылки Войди или Зарегистрируйся. Правда, работает он с некоторыми ограничениями (например, не поддерживается включенный Для просмотра ссылки Войди или Зарегистрируйся). Чтобы защититься от него, нужно включить в системе функции, которые инструмент не поддерживает. Ну и конечно, не стоит забывать про HID-атаки
Постэксплуатация
Часто бывает так, что эксплуатация уязвимости ведет к получению доступа, например, к учетной записи веб-сервера, а не к учетной записи администратора. Пути тут два: повышать привилегии и искать интересную информацию, к которой есть доступ. Если речь идет о доменном компьютере, то также можно почерпнуть полезные сведения из недавней статьи, посвященной сбору информации в домене. Для поиска интересностей в скомпрометированной системе есть множество скриптов, например Для просмотра ссылки Войдиили Зарегистрируйся, Для просмотра ссылки Войди или Зарегистрируйся, Для просмотра ссылки Войди или Зарегистрируйся, Для просмотра ссылки Войди или Зарегистрируйся, Для просмотра ссылки Войди или Зарегистрируйся, Для просмотра ссылки Войди или Зарегистрируйся, Для просмотра ссылки Войди или Зарегистрируйся и Для просмотра ссылки Войди или Зарегистрируйся.
Но стоит учесть, что такие скрипты «шумные». Тем более программы, требующие .NET, могут и не сработать, если в системе настроен Для просмотра ссылки Войдиили Зарегистрируйся ПО.
Как обойти систему безопасности Windows
Как устроена система безопасности Windows
Сущности системы безопасности
В Windows все активные сущности, которые могут быть аутентифицированы операционной системой (пользователи или группы), называются участниками безопасности (security principals). Все участники безопасности имеют уникальный идентификатор переменной длины — Security ID (SID). Структура SID следующая — S-R-IA-SA-RID, например S-1-5-21-1687231434-1254558764-1544283289-1004, где:
- S — литеральный префикс, указывает на то, что идентификатор является SID (это просто конвенция наименования);
- R — однобайтное значение версии или ревизии (revision) SID. Пока существует только версия 1;
- IA — источник выдачи (issuing authority), шестибайтное значение. Указывает, в чьей области ответственности был выдан SID (буквально authority значит «орган власти»). Почти всегда имеет значение 5 (SECURITY_NT_AUTHORITY), за исключением well-known SID, о которых мы поговорим чуть позже. Например, 1 означает SECURITY_WORLD_SID_AUTHORITY и относится к well-known-группе Everybody;
- SA — уполномоченный центр (sub-authority). Уникальное (в рамках IA) значение, состоит из четырех частей: 4-байтного числа, указывающего, кем был выдан идентификатор (контроллером домена или локальным компьютером), и 12-байтного значения, которое делится на три части и идентифицирует конкретный объект, выдавший идентификатор. Смысл этого поля в том, что при наличии нескольких доменов в лесу объекты в разных доменах будут иметь уникальный SA;
- RID — относительный идентификатор (Relative-ID), 4-байтное значение, служит для разделения объектов внутри домена. Для встроенных учетных записей RID всегда будет один и тот же (например, для учетной записи администратора RID = 500).
Также есть стандартные так называемые Для просмотра ссылки Войди
Поизучать SID можно с помощью утилиты Для просмотра ссылки Войди
- Для просмотра ссылки Войди
или Зарегистрируйся - Для просмотра ссылки Войди
или Зарегистрируйся - Для просмотра ссылки Войди
или Зарегистрируйся
SID, в свою очередь, входит в так называемый маркер доступа — программный объект (структура в ядре Windows), который закрепляется за сессией (Для просмотра ссылки Войди
Помимо всего прочего, в маркер включены SID пользователя и его групп, а также Для просмотра ссылки Войди
После того как удаляется последний ассоциированный с сессией токен, LSASS удаляет и саму сессию — таким образом завершается сеанс пользователя. Можно поподробнее изучить структуру маркера доступа в отладчике ядра (kernel debugger) с помощью команды dt_TOKEN. Вообще, если не получается нагуглить подробности о внутреннем устройстве Windows, можно изучить структуру самому с помощью средств отладки. Подробности представлены в Для просмотра ссылки Войди
Маркеры доступа системы безопасности Windows
Маркеры доступа тоже могут иметь проблемы с безопасностью. Вот несколько ссылок для более подробного изучения:
- Интересная Для просмотра ссылки Войди
или Зарегистрируйся - Для просмотра ссылки Войди
или Зарегистрируйся - Для просмотра ссылки Войди
или Зарегистрируйся с конференции Hack in Paris - Статья Для просмотра ссылки Войди
или Зарегистрируйся (Palantir Security)
В security descriptor включены ACL (access control list), которые бывают двух видов — SACL (нужен для ведения журнала доступа к объекту) и DACL (нужен непосредственно для управления доступом). В свою очередь, ACL включают ACE (access control entry) — каждая ACE предназначена для конкретного субъекта, который получает доступ, и содержит в себе тип (запрет или разрешение) и маску доступа. Правильно настроенные ACL позволяют перекрыть несанкционированный доступ к объектам внутри системы.
Однако, если кто-то загрузится на таком компьютере в Linux или вытащит жесткий диск из машины с Windows и примонтирует его в том же Linux, он сможет прочитать эти данные. В Windows удастся получить доступ к данным с «чужого» носителя NTFS, только если пользователь или его группа на другой системе имеет тот же SID — например, если в ACL выставлено слишком много прав на well-known-группы.
От этого можно защититься только шифрованием, но стоит быть осторожнее с выбором и использованием инструмента (см. статьи о проблемах с шифрованными контейнерами Для просмотра ссылки Войди
В ядре Windows проверки ACL выполняются с помощью Для просмотра ссылки Войди
Получение доступа
Подробнее о ACL/ACE можно почитать на Для просмотра ссылки Войди
Кстати, повышение привилегий за счет DACL было использовано в прошлогодней уязвимости Для просмотра ссылки Войди
Помимо привилегий, есть еще один способ контролировать действия пользователя, требующие прав администратора. Для этого был создан Для просмотра ссылки Войди
- Для просмотра ссылки Войди
или Зарегистрируйся (MITRE) - Для просмотра ссылки Войди
или Зарегистрируйся (GitHub) - Для просмотра ссылки Войди
или Зарегистрируйся - Для просмотра ссылки Войди
или Зарегистрируйся («Хакер») - Для просмотра ссылки Войди
или Зарегистрируйся (Хабр) - Для просмотра ссылки Войди
или Зарегистрируйся (zc00l) - Для просмотра ссылки Войди
или Зарегистрируйся (Cobalt Strike)
Аутентификация и авторизация
Как уже упоминалось, за аутентификацию отвечает LSASS. На деле, конечно, все выглядит сложнее. Ниже приведена схема механизма аутентификации для старых версий Windows.
Вкратце это работает так: в LSASS поступают аутентификационные данные (пароль, биометрия и прочее), затем Windows производит авторизацию. Хеш от аутентификационных данных кладется в SAM, а пользовательскому процессу назначается маркер доступа. Известная Для просмотра ссылки Войди
В Windows 10 Для просмотра ссылки Войди
Прежде всего, Credential Guard — опциональная функция, которая может быть отключена. Так как Credential Guard основан на механизме Virtual Secure Mode (VSM), который, в свою очередь, базируется на механизмах виртуализации CPU, то не стоит забывать и об Для просмотра ссылки Войди
Ну и напоследок нужно помнить, что введенный пароль преодолевает некоторый путь перед тем, как будет сохранен в компьютере для последующей авторизации. Это значит, что его можно получить с помощью кейлоггера или кастомного SSP (security support provider). Последнее возможно с помощью mimikatz — пример есть в недавней Для просмотра ссылки Войди
Import-Module .\PowerSploit.psm1
Install-SSP -Path .\mimilib.dll
Для общего развития полезно будет почитать презентацию по pass-the-hash для Windows 10, представленную институтом Для просмотра ссылки Войди
Естественно, обойти системы безопасности Windows позволят и методы социальной инженерии. Например, можно через msf и msfvenom получить реверс-шелл, с помощью его загрузить на целевую систему Для просмотра ссылки Войди
Кстати, есть Для просмотра ссылки Войди
- Вставить загрузочный USB, перезагрузить компьютер, затем нажать Shift + F10, чтобы открыть cmd.exe.
- Ввести команду move D:\windows\Sstem32\utilman.exe D:\windows\system32\utilman.exe.bak.
- Для маскировки cmd под utilman ввести команду copy D:\windows\system32\cmd.exe D:\windows\System32\utilman.exe.
- Перезагрузить компьютер без загрузочного USB.
- После загрузки нажать «Специальные возможности» (рядом с кнопкой выключения питания в окне авторизации).
- Для создания нового пользователя ввести команду net user youruser /add.
- Для добавления нового пользователя в группы администраторов использовать команду net localgroup administrators youruser /add.
От этого опять-таки спасает шифрование диска. Для запрета смены пароля определенного юзера можно использовать учетную запись Microsoft вместо локальной. Также можно отключить для всех юзеров права на выполнение utilman.exe и sethc.exe. Ну и дополнительно включить Secure Boot и поставить пароль на BIOS/UEFI. Кстати, этот трюк показывался в сериале Mr.Robot в третьей серии четвертого сезона.
Также для байпаса окна авторизации есть Для просмотра ссылки Войди
Постэксплуатация
Часто бывает так, что эксплуатация уязвимости ведет к получению доступа, например, к учетной записи веб-сервера, а не к учетной записи администратора. Пути тут два: повышать привилегии и искать интересную информацию, к которой есть доступ. Если речь идет о доменном компьютере, то также можно почерпнуть полезные сведения из недавней статьи, посвященной сбору информации в домене. Для поиска интересностей в скомпрометированной системе есть множество скриптов, например Для просмотра ссылки Войди
Но стоит учесть, что такие скрипты «шумные». Тем более программы, требующие .NET, могут и не сработать, если в системе настроен Для просмотра ссылки Войди
Мой канал по заработку в интернете - Для просмотра ссылки Войди или Зарегистрируйся