hacktricks/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse
2024-04-29 10:23:48 +00:00
..
macos-ipc-inter-process-communication Translated ['README.md', 'binary-exploitation/format-strings/README.md', 2024-04-15 03:55:20 +00:00
macos-library-injection Translated ['macos-hardening/macos-security-and-privilege-escalation/mac 2024-04-29 10:23:48 +00:00
macos-.net-applications-injection.md Translated to Italian 2024-02-10 13:03:23 +00:00
macos-chromium-injection.md Translated ['generic-methodologies-and-resources/external-recon-methodol 2024-02-23 16:37:30 +00:00
macos-dirty-nib.md Translated to Italian 2024-02-10 13:03:23 +00:00
macos-electron-applications-injection.md Translated ['README.md', 'backdoors/salseo.md', 'cryptography/certificat 2024-03-29 21:03:31 +00:00
macos-function-hooking.md Translated ['macos-hardening/macos-security-and-privilege-escalation/mac 2024-04-29 10:23:48 +00:00
macos-java-apps-injection.md Translated to Italian 2024-02-10 13:03:23 +00:00
macos-perl-applications-injection.md Translated ['README.md', 'backdoors/salseo.md', 'cryptography/certificat 2024-03-29 21:03:31 +00:00
macos-python-applications-injection.md Translated ['macos-hardening/macos-security-and-privilege-escalation/mac 2024-02-24 14:33:09 +00:00
macos-ruby-applications-injection.md Translated to Italian 2024-02-10 13:03:23 +00:00
README.md GitBook: No commit message 2024-04-06 18:35:30 +00:00

macOS Proces Abuse

Impara l'hacking di AWS da zero a eroe con htARTE (Esperto Red Team AWS di HackTricks)!

Altri modi per supportare HackTricks:

Abuso dei processi su macOS

macOS, come qualsiasi altro sistema operativo, fornisce una varietà di metodi e meccanismi per processi per interagire, comunicare e condividere dati. Sebbene queste tecniche siano essenziali per il corretto funzionamento del sistema, possono anche essere abusate da attori minacciosi per eseguire attività dannose.

Iniezione di Libreria

L'iniezione di libreria è una tecnica in cui un attaccante costringe un processo a caricare una libreria dannosa. Una volta iniettata, la libreria viene eseguita nel contesto del processo target, fornendo all'attaccante gli stessi permessi e accesso del processo.

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

Hooking di Funzioni

Il Hooking di Funzioni coinvolge l'intercettazione delle chiamate alle funzioni o dei messaggi all'interno di un codice software. Mediante il hooking delle funzioni, un attaccante può modificare il comportamento di un processo, osservare dati sensibili o addirittura ottenere il controllo sul flusso di esecuzione.

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

Comunicazione tra Processi

La Comunicazione tra Processi (IPC) si riferisce a diversi metodi con cui processi separati condividono e scambiano dati. Sebbene l'IPC sia fondamentale per molte applicazioni legittime, può anche essere abusato per eludere l'isolamento dei processi, rivelare informazioni sensibili o eseguire azioni non autorizzate.

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

Iniezione nelle Applicazioni Electron

Le applicazioni Electron eseguite con specifiche variabili d'ambiente potrebbero essere vulnerabili all'iniezione di processi:

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

Iniezione in Chromium

È possibile utilizzare i flag --load-extension e --use-fake-ui-for-media-stream per eseguire un attacco man in the browser che consente di rubare tasti premuti, traffico, cookie, iniettare script nelle pagine...:

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

NIB Sporco

I file NIB definiscono gli elementi dell'interfaccia utente (UI) e le loro interazioni all'interno di un'applicazione. Tuttavia, possono eseguire comandi arbitrari e Gatekeeper non impedisce l'esecuzione di un'applicazione già eseguita se un file NIB viene modificato. Pertanto, potrebbero essere utilizzati per far eseguire programmi arbitrari comandi arbitrari:

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

Iniezione nelle Applicazioni Java

È possibile abusare di determinate capacità di Java (come la variabile d'ambiente _JAVA_OPTS) per far eseguire a un'applicazione Java codice/comandi arbitrari.

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

Iniezione nelle Applicazioni .Net

È possibile iniettare codice nelle applicazioni .Net abusando della funzionalità di debug di .Net (non protetta dalle protezioni macOS come il rafforzamento in fase di esecuzione).

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

Iniezione di Perl

Controlla le diverse opzioni per far eseguire a uno script Perl codice arbitrario in:

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

Iniezione di Ruby

È anche possibile abusare delle variabili d'ambiente di Ruby per far eseguire script arbitrari codice arbitrario:

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

Iniezione di Python

Se la variabile d'ambiente PYTHONINSPECT è impostata, il processo Python si avvierà in una CLI Python una volta terminato. È anche possibile utilizzare PYTHONSTARTUP per indicare uno script Python da eseguire all'inizio di una sessione interattiva.
Tuttavia, nota che lo script PYTHONSTARTUP non verrà eseguito quando PYTHONINSPECT crea la sessione interattiva.

Altre variabili d'ambiente come PYTHONPATH e PYTHONHOME potrebbero essere utili per far eseguire a un comando Python codice arbitrario.

Nota che gli eseguibili compilati con pyinstaller non utilizzeranno queste variabili ambientali anche se vengono eseguiti utilizzando un Python integrato.

{% hint style="danger" %} In generale, non ho trovato un modo per far eseguire a Python codice arbitrario abusando delle variabili d'ambiente.
Tuttavia, la maggior parte delle persone installa Python usando Hombrew, che installerà Python in una posizione scrivibile per l'utente amministratore predefinito. Puoi dirottarlo con qualcosa del genere:

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

Anche root eseguirà questo codice quando si esegue python. {% endhint %}

Rilevamento

Shield

Shield (Github) è un'applicazione open source che può rilevare e bloccare azioni di iniezione di processi:

  • Utilizzando le Variabili Ambientali: Monitorerà la presenza di una qualsiasi delle seguenti variabili ambientali: DYLD_INSERT_LIBRARIES, CFNETWORK_LIBRARY_PATH, RAWCAMERA_BUNDLE_PATH e ELECTRON_RUN_AS_NODE
  • Utilizzando chiamate a task_for_pid: Per individuare quando un processo vuole ottenere la porta del task di un altro che consente di iniettare codice nel processo.
  • Parametri delle app Electron: Qualcuno può utilizzare gli argomenti della riga di comando --inspect, --inspect-brk e --remote-debugging-port per avviare un'app Electron in modalità di debug e quindi iniettare codice in essa.
  • Utilizzando symlink o hardlink: Tipicamente l'abuso più comune è collocare un link con i privilegi dell'utente, e farlo puntare a una posizione con privilegi superiori. Il rilevamento è molto semplice sia per i hardlink che per i symlink. Se il processo che crea il link ha un livello di privilegio diverso rispetto al file di destinazione, creiamo un avviso. Purtroppo nel caso dei symlink, il blocco non è possibile, poiché non abbiamo informazioni sulla destinazione del link prima della creazione. Questa è una limitazione del framework EndpointSecuriy di Apple.

Chiamate effettuate da altri processi

In questo post sul blog puoi trovare come è possibile utilizzare la funzione task_name_for_pid per ottenere informazioni su altri processi che iniettano codice in un processo e quindi ottenere informazioni su quel altro processo.

Nota che per chiamare quella funzione devi essere lo stesso uid di quello che esegue il processo o root (e restituisce informazioni sul processo, non un modo per iniettare codice).

Riferimenti

Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks: