.. | ||
macos-ipc-inter-process-communication | ||
macos-library-injection | ||
macos-.net-applications-injection.md | ||
macos-chromium-injection.md | ||
macos-dirty-nib.md | ||
macos-electron-applications-injection.md | ||
macos-function-hooking.md | ||
macos-java-apps-injection.md | ||
macos-perl-applications-injection.md | ||
macos-python-applications-injection.md | ||
macos-ruby-applications-injection.md | ||
README.md |
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:
- Jeśli chcesz zobaczyć swoją firmę reklamowaną w HackTricks lub pobrać HackTricks w formacie PDF, sprawdź PLANY SUBSKRYPCYJNE!
- Zdobądź oficjalne gadżety PEASS & HackTricks
- Odkryj Rodzinę PEASS, naszą kolekcję ekskluzywnych NFT
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @carlospolopm.
- Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do HackTricks i HackTricks Cloud na GitHubie.
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
iELECTRON_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
- https://theevilbit.github.io/shield/
- https://medium.com/@metnew/why-electron-apps-cant-store-your-secrets-confidentially-inspect-option-a49950d6d51f
Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!
Inne sposoby wsparcia HackTricks:
- Jeśli chcesz zobaczyć swoją firmę reklamowaną w HackTricks lub pobrać HackTricks w formacie PDF sprawdź PLANY SUBSKRYPCYJNE!
- Zdobądź oficjalne gadżety PEASS & HackTricks
- Odkryj Rodzinę PEASS, naszą kolekcję ekskluzywnych NFTów
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @carlospolopm.
- Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do HackTricks i HackTricks Cloud github repos.