hacktricks/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse
2024-03-17 16:39:08 +00:00
..
macos-ipc-inter-process-communication Translated ['README.md', 'backdoors/salseo.md', 'cryptography/certificat 2024-03-17 16:39:08 +00:00
macos-library-injection Translated to Polish 2024-02-11 01:46:25 +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', 'backdoors/salseo.md', 'cryptography/certificat 2024-03-17 16:39:08 +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', 'backdoors/salseo.md', 'cryptography/certificat 2024-03-17 16:39:08 +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 ['generic-methodologies-and-resources/external-recon-methodol 2024-02-23 16:42:12 +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óżne 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ż wykorzystywane przez sprawców zagrożeń do wykonywania działań o charakterze złośliwym.

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, a nawet uzyskać kontrolę nad przepływem wykonania.

{% content-ref url="../mac-os-architecture/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 omijania izolacji procesów, ujawniania wrażliwych informacji lub wykonywania nieautoryzowanych działań.

{% content-ref url="../mac-os-architecture/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 ataków typu man in the browser, umożliwiających kradzież naciśnięć klawiszy, ruchu sieciowego, plików cookie, wstrzykiwanie skryptów na stronach...:

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

Brudne NIB

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

{% 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 zmuszenia aplikacji Javy do wykonania 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 Perla

Sprawdź różne opcje, aby skrypt Perl wykonał dowolny kod w:

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

Wstrzykiwanie 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 Pythona

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 za pomocą polecenia Pythona.

Należy pamiętać, ż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 zmuszenie Pythona do wykonania dowolnego kodu, 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 aplikacja typu open source, która może wykrywać i blokować działania związane z wstrzykiwaniem 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 oraz 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ć argumentów wiersza poleceń --inspect, --inspect-brk oraz --remote-debugging-port do uruchomienia aplikacji 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żna 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.

Należy zauważyć, ż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: