macOS Proces Abuse
Зловживання процесами macOS
macOS, як і будь-яка інша операційна система, надає різноманітні методи та механізми для взаємодії процесів, комунікації та обміну даними. Хоча ці техніки є важливими для ефективної роботи системи, їх також можна зловживати зловмисниками для виконання зловмисних дій.
Впровадження бібліотеки
Впровадження бібліотеки - це техніка, при якій зловмисник змушує процес завантажити зловісну бібліотеку. Після впровадження бібліотека працює в контексті цільового процесу, надаючи зловмиснику ті ж дозволи та доступ, що й процес.
pagemacOS Library InjectionПерехоплення функцій
Перехоплення функцій передбачає перехоплення викликів функцій або повідомлень у коді програмного забезпечення. Перехоплюючи функції, зловмисник може змінювати поведінку процесу, спостерігати за чутливими даними або навіть отримувати контроль над потоком виконання.
pagemacOS Function HookingМіжпроцесне спілкування
Міжпроцесне спілкування (IPC) відноситься до різних методів, за допомогою яких окремі процеси обмінюються даними. Хоча IPC є фундаментальним для багатьох законних додатків, його також можна зловживати для обхіду ізоляції процесів, витоку чутливої інформації або виконання несанкціонованих дій.
pagemacOS IPC - Inter Process CommunicationВпровадження додатків Electron
Додатки Electron, що виконуються з конкретними змінними середовища, можуть бути вразливі для впровадження процесу:
pagemacOS Electron Applications InjectionВпровадження Chromium
Можливо використовувати прапорці --load-extension
та --use-fake-ui-for-media-stream
для виконання атаки людини в браузері, що дозволяє крадіжку натискань клавіш, трафіку, файлів cookie, впровадження скриптів на сторінках...:
Брудний NIB
Файли NIB визначають елементи користувацького інтерфейсу (UI) та їх взаємодію в додатку. Однак вони можуть виконувати довільні команди і Gatekeeper не зупиняє вже виконаний додаток від виконання, якщо файл NIB змінено. Тому їх можна використовувати для виконання довільних програм довільних команд:
pagemacOS Dirty NIBВпровадження додатків Java
Можливо зловживати деякими можливостями Java (наприклад, змінною середовища _JAVA_OPTS
) для виконання довільного коду/команд в додатку Java.
Впровадження додатків .Net
Можливо впроваджувати код в додатки .Net, зловживаючи функціональністю налагодження .Net (не захищеною від заходів захисту macOS, таких як жорстке виконання).
pagemacOS .Net Applications InjectionВпровадження Perl
Перевірте різні варіанти, як зробити виконання довільного коду у Perl-скрипті:
pagemacOS Perl Applications InjectionВпровадження Ruby
Також можливо зловживати змінними середовища Ruby для виконання довільних скриптів довільним кодом:
pagemacOS Ruby Applications InjectionВпровадження Python
Якщо змінна середовища PYTHONINSPECT
встановлена, процес Python перейде до Python CLI після завершення. Також можна використовувати PYTHONSTARTUP
для вказівки сценарію Python для виконання на початку інтерактивної сесії.
Проте слід зауважити, що сценарій PYTHONSTARTUP
не буде виконаний, коли PYTHONINSPECT
створює інтерактивну сесію.
Інші змінні середовища, такі як PYTHONPATH
та PYTHONHOME
, також можуть бути корисними для виконання довільного коду Python.
Зауважте, що виконувані файли, скомпільовані за допомогою pyinstaller
, не будуть використовувати ці змінні середовища, навіть якщо вони виконуються за допомогою вбудованого Python.
Загалом я не зміг знайти способу змусити Python виконати довільний код, зловживаючи змінними середовища. Проте більшість людей встановлюють Python за допомогою Hombrew, який встановить Python в записувальне місце для типового адміністратора. Ви можете захопити його щось на зразок:
Навіть root виконає цей код при запуску python.
Виявлення
Захист
Shield (Github) - це відкрите додаток, який може виявляти та блокувати дії з ін'єкцією процесів:
Використання змінних середовища: Він буде відстежувати наявність будь-яких з наступних змінних середовища:
DYLD_INSERT_LIBRARIES
,CFNETWORK_LIBRARY_PATH
,RAWCAMERA_BUNDLE_PATH
таELECTRON_RUN_AS_NODE
Використання викликів
task_for_pid
: Щоб знайти, коли один процес хоче отримати порт завдання іншого, що дозволяє впроваджувати код у процес.Параметри програм Electron: Хтось може використовувати аргумент командного рядка
--inspect
,--inspect-brk
та--remote-debugging-port
для запуску програми Electron у режимі налагодження, і таким чином впроваджувати код в неї.Використання символічних посилань або жорстких посилань: Зазвичай найпоширенішим зловживанням є розміщення посилання з нашими привілеями користувача та вказування його на місце з вищими привілеями. Виявлення дуже просте як для жорстких, так і для символічних посилань. Якщо процес, який створює посилання, має інший рівень привілеїв від цільового файлу, ми створює сповіщення. Нажаль, у випадку символічних посилань блокування неможливе, оскільки ми не маємо інформації про призначення посилання перед створенням. Це обмеження фреймворку Apple для безпеки кінцевих точок.
Виклики, здійснені іншими процесами
У цьому блозі ви можете дізнатися, як можна використовувати функцію task_name_for_pid
для отримання інформації про інші процеси, які впроваджують код у процес, а потім отримати інформацію про цей інший процес.
Зверніть увагу, що для виклику цієї функції вам потрібно бути тим самим uid, що і той, що запускає процес, або root (і вона повертає інформацію про процес, а не спосіб впровадження коду).
Посилання
Last updated