mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/macos-hardening/macos-security-and-privilege-escalation
This commit is contained in:
parent
22ab2fe121
commit
182f7d8b29
@ -16,7 +16,7 @@ Controlla se qualcuno è abilitato eseguendo:
|
|||||||
```bash
|
```bash
|
||||||
rmMgmt=$(netstat -na | grep LISTEN | grep tcp46 | grep "*.3283" | wc -l);
|
rmMgmt=$(netstat -na | grep LISTEN | grep tcp46 | grep "*.3283" | wc -l);
|
||||||
scrShrng=$(netstat -na | grep LISTEN | egrep 'tcp4|tcp6' | grep "*.5900" | wc -l);
|
scrShrng=$(netstat -na | grep LISTEN | egrep 'tcp4|tcp6' | grep "*.5900" | wc -l);
|
||||||
flShrng=$(netstat -na | grep LISTEN | egrep 'tcp4|tcp6' | egrep "\*.88|\*.445|\*.548" | wc -l);
|
flShrng=$(netstat -na | grep LISTEN | egrep 'tcp4|tcp6' | egrep "\\*.88|\\*.445|\\*.548" | wc -l);
|
||||||
rLgn=$(netstat -na | grep LISTEN | egrep 'tcp4|tcp6' | grep "*.22" | wc -l);
|
rLgn=$(netstat -na | grep LISTEN | egrep 'tcp4|tcp6' | grep "*.22" | wc -l);
|
||||||
rAE=$(netstat -na | grep LISTEN | egrep 'tcp4|tcp6' | grep "*.3031" | wc -l);
|
rAE=$(netstat -na | grep LISTEN | egrep 'tcp4|tcp6' | grep "*.3031" | wc -l);
|
||||||
bmM=$(netstat -na | grep LISTEN | egrep 'tcp4|tcp6' | grep "*.4488" | wc -l);
|
bmM=$(netstat -na | grep LISTEN | egrep 'tcp4|tcp6' | grep "*.4488" | wc -l);
|
||||||
@ -24,21 +24,43 @@ printf "\nThe following services are OFF if '0', or ON otherwise:\nScreen Sharin
|
|||||||
```
|
```
|
||||||
### Pentesting ARD
|
### Pentesting ARD
|
||||||
|
|
||||||
Apple Remote Desktop (ARD) è una versione avanzata di [Virtual Network Computing (VNC)](https://en.wikipedia.org/wiki/Virtual_Network_Computing) progettata per macOS, che offre funzionalità aggiuntive. Una vulnerabilità notevole in ARD è il suo metodo di autenticazione per la password dello schermo di controllo, che utilizza solo i primi 8 caratteri della password, rendendola soggetta a [brute force attacks](https://thudinh.blogspot.com/2017/09/brute-forcing-passwords-with-thc-hydra.html) con strumenti come Hydra o [GoRedShell](https://github.com/ahhh/GoRedShell/), poiché non ci sono limiti di velocità predefiniti.
|
Apple Remote Desktop (ARD) è una versione avanzata di [Virtual Network Computing (VNC)](https://en.wikipedia.org/wiki/Virtual_Network_Computing) progettata per macOS, che offre funzionalità aggiuntive. Una vulnerabilità notevole in ARD è il suo metodo di autenticazione per la password dello schermo di controllo, che utilizza solo i primi 8 caratteri della password, rendendola soggetta a [attacchi di forza bruta](https://thudinh.blogspot.com/2017/09/brute-forcing-passwords-with-thc-hydra.html) con strumenti come Hydra o [GoRedShell](https://github.com/ahhh/GoRedShell/), poiché non ci sono limiti di velocità predefiniti.
|
||||||
|
|
||||||
Le istanze vulnerabili possono essere identificate utilizzando lo script `vnc-info` di **nmap**. I servizi che supportano `VNC Authentication (2)` sono particolarmente suscettibili agli attacchi di forza bruta a causa della troncatura della password a 8 caratteri.
|
Le istanze vulnerabili possono essere identificate utilizzando lo script `vnc-info` di **nmap**. I servizi che supportano `VNC Authentication (2)` sono particolarmente suscettibili ad attacchi di forza bruta a causa della troncatura della password a 8 caratteri.
|
||||||
|
|
||||||
Per abilitare ARD per vari compiti amministrativi come l'escalation dei privilegi, l'accesso GUI o il monitoraggio degli utenti, utilizzare il seguente comando:
|
Per abilitare ARD per vari compiti amministrativi come l'escalation dei privilegi, l'accesso GUI o il monitoraggio degli utenti, usa il seguente comando:
|
||||||
```bash
|
```bash
|
||||||
sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart -activate -configure -allowAccessFor -allUsers -privs -all -clientopts -setmenuextra -menuextra yes
|
sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart -activate -configure -allowAccessFor -allUsers -privs -all -clientopts -setmenuextra -menuextra yes
|
||||||
```
|
```
|
||||||
ARD fornisce livelli di controllo versatili, inclusi osservazione, controllo condiviso e controllo completo, con sessioni che persistono anche dopo le modifiche della password dell'utente. Consente di inviare comandi Unix direttamente, eseguendoli come root per gli utenti amministrativi. La pianificazione dei compiti e la ricerca remota di Spotlight sono caratteristiche notevoli, che facilitano ricerche remote a basso impatto per file sensibili su più macchine.
|
ARD fornisce livelli di controllo versatili, inclusi osservazione, controllo condiviso e controllo completo, con sessioni che persistono anche dopo le modifiche della password dell'utente. Consente di inviare comandi Unix direttamente, eseguendoli come root per gli utenti amministrativi. La pianificazione dei task e la ricerca remota di Spotlight sono caratteristiche notevoli, che facilitano ricerche remote a basso impatto per file sensibili su più macchine.
|
||||||
|
|
||||||
## Protocollo Bonjour
|
#### Recent Screen-Sharing / ARD vulnerabilities (2023-2025)
|
||||||
|
|
||||||
Bonjour, una tecnologia progettata da Apple, consente **ai dispositivi sulla stessa rete di rilevare i servizi offerti l'uno dall'altro**. Conosciuto anche come Rendezvous, **Zero Configuration** o Zeroconf, consente a un dispositivo di unirsi a una rete TCP/IP, **scegliere automaticamente un indirizzo IP** e trasmettere i propri servizi ad altri dispositivi di rete.
|
| Year | CVE | Component | Impact | Fixed in |
|
||||||
|
|------|-----|-----------|--------|----------|
|
||||||
|
|2023|CVE-2023-42940|Screen Sharing|La rendering errata della sessione potrebbe causare la trasmissione del *desktop* o della finestra *sbagliata*, risultando in una fuga di informazioni sensibili|macOS Sonoma 14.2.1 (Dic 2023) |
|
||||||
|
|2024|CVE-2024-23296|launchservicesd / login|Bypass della protezione della memoria del kernel che può essere concatenato dopo un accesso remoto riuscito (sfruttato attivamente in natura)|macOS Ventura 13.6.4 / Sonoma 14.4 (Mar 2024) |
|
||||||
|
|
||||||
La Rete Zero Configuration, fornita da Bonjour, garantisce che i dispositivi possano:
|
**Hardening tips**
|
||||||
|
|
||||||
|
* Disabilitare *Screen Sharing*/*Remote Management* quando non strettamente necessario.
|
||||||
|
* Mantenere macOS completamente aggiornato (Apple generalmente fornisce correzioni di sicurezza per le ultime tre versioni principali).
|
||||||
|
* Utilizzare una **Strong Password** *e* applicare l'opzione *“VNC viewers may control screen with password”* **disabilitata** quando possibile.
|
||||||
|
* Mettere il servizio dietro un VPN invece di esporre TCP 5900/3283 a Internet.
|
||||||
|
* Aggiungere una regola del Firewall per limitare `ARDAgent` alla subnet locale:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --add /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/MacOS/ARDAgent
|
||||||
|
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setblockapp /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/MacOS/ARDAgent on
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Bonjour Protocol
|
||||||
|
|
||||||
|
Bonjour, una tecnologia progettata da Apple, consente **ai dispositivi sulla stessa rete di rilevare i servizi offerti l'uno dall'altro**. Conosciuto anche come Rendezvous, **Zero Configuration**, o Zeroconf, consente a un dispositivo di unirsi a una rete TCP/IP, **scegliere automaticamente un indirizzo IP**, e trasmettere i propri servizi ad altri dispositivi di rete.
|
||||||
|
|
||||||
|
La Zero Configuration Networking, fornita da Bonjour, garantisce che i dispositivi possano:
|
||||||
|
|
||||||
- **Ottenere automaticamente un indirizzo IP** anche in assenza di un server DHCP.
|
- **Ottenere automaticamente un indirizzo IP** anche in assenza di un server DHCP.
|
||||||
- Eseguire **la traduzione nome-indirizzo** senza richiedere un server DNS.
|
- Eseguire **la traduzione nome-indirizzo** senza richiedere un server DNS.
|
||||||
@ -48,13 +70,13 @@ I dispositivi che utilizzano Bonjour si assegneranno un **indirizzo IP dall'inte
|
|||||||
|
|
||||||
Per DNS, Bonjour utilizza il **protocollo Multicast DNS (mDNS)**. mDNS opera su **porta 5353/UDP**, impiegando **query DNS standard** ma mirate all'**indirizzo multicast 224.0.0.251**. Questo approccio garantisce che tutti i dispositivi in ascolto sulla rete possano ricevere e rispondere alle query, facilitando l'aggiornamento dei loro record.
|
Per DNS, Bonjour utilizza il **protocollo Multicast DNS (mDNS)**. mDNS opera su **porta 5353/UDP**, impiegando **query DNS standard** ma mirate all'**indirizzo multicast 224.0.0.251**. Questo approccio garantisce che tutti i dispositivi in ascolto sulla rete possano ricevere e rispondere alle query, facilitando l'aggiornamento dei loro record.
|
||||||
|
|
||||||
All'unirsi alla rete, ogni dispositivo seleziona autonomamente un nome, che di solito termina in **.local**, il quale può derivare dal nome host o essere generato casualmente.
|
All'unirsi alla rete, ogni dispositivo seleziona autonomamente un nome, che di solito termina in **.local**, derivato dal nome host o generato casualmente.
|
||||||
|
|
||||||
La scoperta dei servizi all'interno della rete è facilitata da **DNS Service Discovery (DNS-SD)**. Sfruttando il formato dei record DNS SRV, DNS-SD utilizza **record DNS PTR** per abilitare l'elenco di più servizi. Un client che cerca un servizio specifico richiederà un record PTR per `<Service>.<Domain>`, ricevendo in cambio un elenco di record PTR formattati come `<Instance>.<Service>.<Domain>` se il servizio è disponibile da più host.
|
La scoperta dei servizi all'interno della rete è facilitata da **DNS Service Discovery (DNS-SD)**. Sfruttando il formato dei record DNS SRV, DNS-SD utilizza **record DNS PTR** per abilitare l'elenco di più servizi. Un client che cerca un servizio specifico richiederà un record PTR per `<Service>.<Domain>`, ricevendo in cambio un elenco di record PTR formattati come `<Instance>.<Service>.<Domain>` se il servizio è disponibile da più host.
|
||||||
|
|
||||||
L'utilità `dns-sd` può essere impiegata per **scoprire e pubblicizzare i servizi di rete**. Ecco alcuni esempi del suo utilizzo:
|
L'utilità `dns-sd` può essere impiegata per **scoprire e pubblicizzare i servizi di rete**. Ecco alcuni esempi del suo utilizzo:
|
||||||
|
|
||||||
### Ricerca di Servizi SSH
|
### Searching for SSH Services
|
||||||
|
|
||||||
Per cercare servizi SSH sulla rete, viene utilizzato il seguente comando:
|
Per cercare servizi SSH sulla rete, viene utilizzato il seguente comando:
|
||||||
```bash
|
```bash
|
||||||
@ -70,7 +92,7 @@ dns-sd -R "Index" _http._tcp . 80 path=/index.html
|
|||||||
```
|
```
|
||||||
Questo comando registra un servizio HTTP chiamato "Index" sulla porta 80 con un percorso di `/index.html`.
|
Questo comando registra un servizio HTTP chiamato "Index" sulla porta 80 con un percorso di `/index.html`.
|
||||||
|
|
||||||
Per cercare i servizi HTTP sulla rete:
|
Per cercare quindi servizi HTTP sulla rete:
|
||||||
```bash
|
```bash
|
||||||
dns-sd -B _http._tcp
|
dns-sd -B _http._tcp
|
||||||
```
|
```
|
||||||
@ -99,9 +121,46 @@ input("Press enter to exit...\n\n")
|
|||||||
finally:
|
finally:
|
||||||
zeroconf.close()
|
zeroconf.close()
|
||||||
```
|
```
|
||||||
|
### Enumerare Bonjour sulla rete
|
||||||
|
|
||||||
|
* **Nmap NSE** – scoprire i servizi pubblicizzati da un singolo host:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
nmap -sU -p 5353 --script=dns-service-discovery <target>
|
||||||
|
```
|
||||||
|
|
||||||
|
Lo script `dns-service-discovery` invia una query `_services._dns-sd._udp.local` e poi enumera ciascun tipo di servizio pubblicizzato.
|
||||||
|
|
||||||
|
* **mdns_recon** – strumento Python che scansiona interi intervalli alla ricerca di *risponditori* mDNS *malconfigurati* che rispondono a query unicast (utile per trovare dispositivi raggiungibili attraverso subnet/WAN):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git clone https://github.com/chadillac/mdns_recon && cd mdns_recon
|
||||||
|
python3 mdns_recon.py -r 192.0.2.0/24 -s _ssh._tcp.local
|
||||||
|
```
|
||||||
|
|
||||||
|
Questo restituirà host che espongono SSH tramite Bonjour al di fuori del link locale.
|
||||||
|
|
||||||
|
### Considerazioni sulla sicurezza e vulnerabilità recenti (2024-2025)
|
||||||
|
|
||||||
|
| Anno | CVE | Gravità | Problema | Corretto in |
|
||||||
|
|------|-----|----------|-------|------------|
|
||||||
|
|2024|CVE-2024-44183|Media|Un errore logico in *mDNSResponder* ha permesso a un pacchetto creato di attivare un **denial-of-service**|macOS Ventura 13.7 / Sonoma 14.7 / Sequoia 15.0 (Set 2024) |
|
||||||
|
|2025|CVE-2025-31222|Alta|Un problema di correttezza in *mDNSResponder* potrebbe essere abusato per **elevazione di privilegi locale**|macOS Ventura 13.7.6 / Sonoma 14.7.6 / Sequoia 15.5 (Mag 2025) |
|
||||||
|
|
||||||
|
**Indicazioni per la mitigazione**
|
||||||
|
|
||||||
|
1. Limitare UDP 5353 all'ambito *link-local* – bloccarlo o limitarne la velocità su controller wireless, router e firewall basati su host.
|
||||||
|
2. Disabilitare completamente Bonjour sui sistemi che non richiedono la scoperta dei servizi:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
|
||||||
|
```
|
||||||
|
3. Per ambienti in cui Bonjour è richiesto internamente ma non deve mai attraversare i confini di rete, utilizzare restrizioni del profilo *AirPlay Receiver* (MDM) o un proxy mDNS.
|
||||||
|
4. Abilitare **System Integrity Protection (SIP)** e mantenere macOS aggiornato – entrambe le vulnerabilità sopra sono state corrette rapidamente ma si basavano sull'attivazione di SIP per una protezione completa.
|
||||||
|
|
||||||
### Disabilitare Bonjour
|
### Disabilitare Bonjour
|
||||||
|
|
||||||
Se ci sono preoccupazioni riguardo alla sicurezza o altre ragioni per disabilitare Bonjour, può essere disattivato utilizzando il seguente comando:
|
Se ci sono preoccupazioni sulla sicurezza o altre ragioni per disabilitare Bonjour, può essere disattivato utilizzando il seguente comando:
|
||||||
```bash
|
```bash
|
||||||
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
|
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
|
||||||
```
|
```
|
||||||
@ -110,5 +169,7 @@ sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.p
|
|||||||
- [**The Mac Hacker's Handbook**](https://www.amazon.com/-/es/Charlie-Miller-ebook-dp-B004U7MUMU/dp/B004U7MUMU/ref=mt_other?_encoding=UTF8&me=&qid=)
|
- [**The Mac Hacker's Handbook**](https://www.amazon.com/-/es/Charlie-Miller-ebook-dp-B004U7MUMU/dp/B004U7MUMU/ref=mt_other?_encoding=UTF8&me=&qid=)
|
||||||
- [**https://taomm.org/vol1/analysis.html**](https://taomm.org/vol1/analysis.html)
|
- [**https://taomm.org/vol1/analysis.html**](https://taomm.org/vol1/analysis.html)
|
||||||
- [**https://lockboxx.blogspot.com/2019/07/macos-red-teaming-206-ard-apple-remote.html**](https://lockboxx.blogspot.com/2019/07/macos-red-teaming-206-ard-apple-remote.html)
|
- [**https://lockboxx.blogspot.com/2019/07/macos-red-teaming-206-ard-apple-remote.html**](https://lockboxx.blogspot.com/2019/07/macos-red-teaming-206-ard-apple-remote.html)
|
||||||
|
- [**NVD – CVE-2023-42940**](https://nvd.nist.gov/vuln/detail/CVE-2023-42940)
|
||||||
|
- [**NVD – CVE-2024-44183**](https://nvd.nist.gov/vuln/detail/CVE-2024-44183)
|
||||||
|
|
||||||
{{#include ../../banners/hacktricks-training.md}}
|
{{#include ../../banners/hacktricks-training.md}}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user