hacktricks/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse
2024-04-15 03:57:18 +00:00
..
macos-ipc-inter-process-communication Translated ['README.md', 'binary-exploitation/format-strings/README.md', 2024-04-15 03:57:18 +00:00
macos-library-injection Translated ['README.md', 'binary-exploitation/arbitrary-write-2-exec/REA 2024-04-07 00:09:03 +00:00
macos-.net-applications-injection.md Translated to Polish 2024-02-11 01:46:25 +00:00
macos-chromium-injection.md Translated ['generic-methodologies-and-resources/external-recon-methodol 2024-02-23 16:42:12 +00:00
macos-dirty-nib.md Translated to Polish 2024-02-11 01:46:25 +00:00
macos-electron-applications-injection.md Translated ['README.md', 'binary-exploitation/arbitrary-write-2-exec/REA 2024-04-07 00:09:03 +00:00
macos-function-hooking.md Translated ['README.md', 'binary-exploitation/arbitrary-write-2-exec/REA 2024-04-07 00:09:03 +00:00
macos-java-apps-injection.md Translated to Polish 2024-02-11 01:46:25 +00:00
macos-perl-applications-injection.md Translated ['README.md', 'binary-exploitation/arbitrary-write-2-exec/REA 2024-04-07 00:09:03 +00:00
macos-python-applications-injection.md Translated ['macos-hardening/macos-security-and-privilege-escalation/mac 2024-02-24 14:33:07 +00:00
macos-ruby-applications-injection.md Translated to Polish 2024-02-11 01:46:25 +00:00
README.md Translated ['README.md', 'binary-exploitation/arbitrary-write-2-exec/REA 2024-04-07 00:09:03 +00:00

Nadużycie procesów w macOS

Dowiedz się, jak hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Nadużycie procesów w macOS

macOS, podobnie jak każdy inny system operacyjny, zapewnia różnorodne metody i mechanizmy, dzięki którym procesy mogą ze sobą współdziałać, komunikować się i dzielić danymi. Choć te techniki są niezbędne dla efektywnego funkcjonowania systemu, mogą być również wykorzystane przez sprawców zagrożeń do wykonywania działań szkodliwych.

Wstrzykiwanie bibliotek

Wstrzykiwanie bibliotek to technika, w której atakujący zmusza proces do załadowania złośliwej biblioteki. Po wstrzyknięciu biblioteka działa w kontekście docelowego procesu, zapewniając atakującemu takie same uprawnienia i dostęp jak proces.

{% content-ref url="macos-library-injection/" %} macos-library-injection {% endcontent-ref %}

Hacowanie funkcji

Hacowanie funkcji polega na przechwytywaniu wywołań funkcji lub komunikatów w kodzie oprogramowania. Poprzez hacowanie funkcji atakujący może modyfikować zachowanie procesu, obserwować wrażliwe dane lub nawet uzyskać kontrolę nad przepływem wykonania.

{% content-ref url="macos-function-hooking.md" %} macos-function-hooking.md {% endcontent-ref %}

Komunikacja międzyprocesowa

Komunikacja międzyprocesowa (IPC) odnosi się do różnych metod, za pomocą których oddzielne procesy dzielą się i wymieniają danymi. Choć IPC jest fundamentalny dla wielu legalnych aplikacji, może być również nadużywany do podważenia izolacji procesów, wycieku wrażliwych informacji lub wykonywania nieautoryzowanych działań.

{% content-ref url="macos-ipc-inter-process-communication/" %} macos-ipc-inter-process-communication {% endcontent-ref %}

Wstrzykiwanie aplikacji Electron

Aplikacje Electron uruchamiane z określonymi zmiennymi środowiskowymi mogą być podatne na wstrzykiwanie procesów:

{% content-ref url="macos-electron-applications-injection.md" %} macos-electron-applications-injection.md {% endcontent-ref %}

Wstrzykiwanie Chromium

Możliwe jest użycie flag --load-extension i --use-fake-ui-for-media-stream do przeprowadzenia ataku typu man in the browser, umożliwiającego kradzież naciśnięć klawiszy, ruchu, plików cookie, wstrzykiwanie skryptów na stronach...:

{% content-ref url="macos-chromium-injection.md" %} macos-chromium-injection.md {% endcontent-ref %}

Brudne pliki NIB

Pliki NIB definiują elementy interfejsu użytkownika (UI) i ich interakcje w ramach aplikacji. Jednak mogą wykonywać dowolne polecenia i Gatekeeper nie zatrzymuje już uruchomionej aplikacji przed ponownym uruchomieniem, jeśli plik NIB zostanie zmodyfikowany. Dlatego mogą być używane do wykonania dowolnych programów:

{% content-ref url="macos-dirty-nib.md" %} macos-dirty-nib.md {% endcontent-ref %}

Wstrzykiwanie aplikacji Java

Możliwe jest nadużycie pewnych możliwości Javy (takich jak zmienna środowiskowa _JAVA_OPTS) do wykonania przez aplikację Javy dowolnego kodu/polecenia.

{% content-ref url="macos-java-apps-injection.md" %} macos-java-apps-injection.md {% endcontent-ref %}

Wstrzykiwanie aplikacji .Net

Możliwe jest wstrzykiwanie kodu do aplikacji .Net poprzez nadużycie funkcjonalności debugowania .Net (niechronionej przez zabezpieczenia macOS, takie jak utwardzanie czasu wykonania).

{% content-ref url="macos-.net-applications-injection.md" %} macos-.net-applications-injection.md {% endcontent-ref %}

Wstrzykiwanie aplikacji Perl

Sprawdź różne opcje, aby sprawić, że skrypt Perl wykonuje dowolny kod w:

{% content-ref url="macos-perl-applications-injection.md" %} macos-perl-applications-injection.md {% endcontent-ref %}

Wstrzykiwanie aplikacji Ruby

Możliwe jest również nadużycie zmiennych środowiskowych Ruby do wykonania dowolnych skryptów:

{% content-ref url="macos-ruby-applications-injection.md" %} macos-ruby-applications-injection.md {% endcontent-ref %}

Wstrzykiwanie aplikacji Python

Jeśli zmienna środowiskowa PYTHONINSPECT jest ustawiona, proces Pythona przejdzie do interaktywnej konsoli Pythona po zakończeniu. Można również użyć PYTHONSTARTUP do wskazania skryptu Pythona do wykonania na początku sesji interaktywnej.
Należy jednak zauważyć, że skrypt PYTHONSTARTUP nie zostanie wykonany, gdy PYTHONINSPECT tworzy sesję interaktywną.

Inne zmienne środowiskowe, takie jak PYTHONPATH i PYTHONHOME, mogą również być przydatne do wykonania dowolnego kodu przez polecenie Pythona.

Należy zauważyć, że pliki wykonywalne skompilowane za pomocą pyinstaller nie będą korzystać z tych zmiennych środowiskowych, nawet jeśli są uruchamiane za pomocą osadzonego Pythona.

{% hint style="danger" %} Ogólnie rzecz biorąc, nie udało mi się znaleźć sposobu na wykonanie dowolnego kodu przez Pythona, nadużywając zmiennych środowiskowych.
Jednak większość osób instaluje Pythona za pomocą Hombrew, który zainstaluje Pythona w zapisywalnej lokalizacji dla domyślnego użytkownika admina. Możesz go przejąć, wykonując coś w stylu:

mv /opt/homebrew/bin/python3 /opt/homebrew/bin/python3.old
cat > /opt/homebrew/bin/python3 <<EOF
#!/bin/bash
# Extra hijack code
/opt/homebrew/bin/python3.old "$@"
EOF
chmod +x /opt/homebrew/bin/python3

Nawet root uruchomi ten kod podczas uruchamiania pythona. {% endhint %}

Wykrywanie

Tarcza

Tarcza (Github) to otwarte narzędzie, które może wykrywać i blokować działania wstrzykiwania procesów:

  • Korzystanie z Zmiennych Środowiskowych: Będzie monitorować obecność dowolnej z następujących zmiennych środowiskowych: DYLD_INSERT_LIBRARIES, CFNETWORK_LIBRARY_PATH, RAWCAMERA_BUNDLE_PATH i ELECTRON_RUN_AS_NODE
  • Korzystanie z wywołań task_for_pid: Aby znaleźć, kiedy jeden proces chce uzyskać port zadania innego, co pozwala na wstrzyknięcie kodu do procesu.
  • Parametry aplikacji Electron: Ktoś może użyć argumentu wiersza poleceń --inspect, --inspect-brk i --remote-debugging-port aby uruchomić aplikację Electron w trybie debugowania, co umożliwia wstrzyknięcie kodu do niej.
  • Korzystanie z symlinków lub hardlinków: Zwykle najczęstszym nadużyciem jest umieszczenie linku z uprawnieniami naszego użytkownika i skierowanie go do lokalizacji z wyższymi uprawnieniami. Wykrycie jest bardzo proste zarówno dla hardlinków, jak i symlinków. Jeśli proces tworzący link ma inne poziomy uprawnień niż plik docelowy, tworzymy alert. Niestety w przypadku symlinków blokowanie nie jest możliwe, ponieważ nie mamy informacji o miejscu docelowym linku przed jego utworzeniem. Jest to ograniczenie frameworka EndpointSecuriy firmy Apple.

Wywołania dokonywane przez inne procesy

W tym wpisie na blogu możesz dowiedzieć się, jak można użyć funkcji task_name_for_pid do uzyskania informacji o innych procesach wstrzykujących kod w proces i uzyskania informacji o tym innym procesie.

Zauważ, że aby wywołać tę funkcję, musisz być tym samym uid co proces uruchamiający lub root (i zwraca informacje o procesie, a nie sposób wstrzyknięcia kodu).

Odnośniki

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks: