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
d66311cf9c
commit
faaae5c8a9
@ -4,7 +4,7 @@
|
||||
|
||||
## Usługi zdalnego dostępu
|
||||
|
||||
To są powszechne usługi macOS do zdalnego dostępu.\
|
||||
To są powszechne usługi macOS, aby uzyskać do nich zdalny dostęp.\
|
||||
Możesz włączyć/wyłączyć te usługi w `Ustawienia systemowe` --> `Udostępnianie`
|
||||
|
||||
- **VNC**, znane jako “Udostępnianie ekranu” (tcp:5900)
|
||||
@ -16,7 +16,7 @@ Sprawdź, czy którakolwiek z nich jest włączona, uruchamiając:
|
||||
```bash
|
||||
rmMgmt=$(netstat -na | grep LISTEN | grep tcp46 | grep "*.3283" | 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);
|
||||
rAE=$(netstat -na | grep LISTEN | egrep 'tcp4|tcp6' | grep "*.3031" | wc -l);
|
||||
bmM=$(netstat -na | grep LISTEN | egrep 'tcp4|tcp6' | grep "*.4488" | wc -l);
|
||||
@ -24,7 +24,7 @@ printf "\nThe following services are OFF if '0', or ON otherwise:\nScreen Sharin
|
||||
```
|
||||
### Pentesting ARD
|
||||
|
||||
Apple Remote Desktop (ARD) to ulepszona wersja [Virtual Network Computing (VNC)](https://en.wikipedia.org/wiki/Virtual_Network_Computing) dostosowana do macOS, oferująca dodatkowe funkcje. Znaczną podatnością w ARD jest metoda uwierzytelniania dla hasła ekranu kontrolnego, która wykorzystuje tylko pierwsze 8 znaków hasła, co czyni ją podatną na [atak siłowy](https://thudinh.blogspot.com/2017/09/brute-forcing-passwords-with-thc-hydra.html) za pomocą narzędzi takich jak Hydra lub [GoRedShell](https://github.com/ahhh/GoRedShell/), ponieważ nie ma domyślnych limitów prędkości.
|
||||
Apple Remote Desktop (ARD) to ulepszona wersja [Virtual Network Computing (VNC)](https://en.wikipedia.org/wiki/Virtual_Network_Computing) dostosowana do macOS, oferująca dodatkowe funkcje. Znaczną podatnością w ARD jest metoda uwierzytelniania dla hasła ekranu kontrolnego, która wykorzystuje tylko pierwsze 8 znaków hasła, co czyni ją podatną na [atak siłowy](https://thudinh.blogspot.com/2017/09/brute-forcing-passwords-with-thc-hydra.html) za pomocą narzędzi takich jak Hydra lub [GoRedShell](https://github.com/ahhh/GoRedShell/), ponieważ nie ma domyślnych limitów szybkości.
|
||||
|
||||
Podatne instancje można zidentyfikować za pomocą skryptu `vnc-info` w **nmap**. Usługi wspierające `VNC Authentication (2)` są szczególnie podatne na ataki siłowe z powodu skrócenia hasła do 8 znaków.
|
||||
|
||||
@ -32,21 +32,43 @@ Aby włączyć ARD do różnych zadań administracyjnych, takich jak eskalacja u
|
||||
```bash
|
||||
sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart -activate -configure -allowAccessFor -allUsers -privs -all -clientopts -setmenuextra -menuextra yes
|
||||
```
|
||||
ARD zapewnia wszechstronne poziomy kontroli, w tym obserwację, wspólną kontrolę i pełną kontrolę, z sesjami utrzymującymi się nawet po zmianach hasła użytkownika. Umożliwia wysyłanie poleceń Unix bezpośrednio, wykonując je jako root dla użytkowników administracyjnych. Planowanie zadań i zdalne wyszukiwanie Spotlight to istotne funkcje, ułatwiające zdalne, niskoodporne wyszukiwania wrażliwych plików na wielu maszynach.
|
||||
ARD zapewnia wszechstronne poziomy kontroli, w tym obserwację, wspólną kontrolę i pełną kontrolę, z sesjami utrzymującymi się nawet po zmianie hasła użytkownika. Umożliwia bezpośrednie wysyłanie poleceń Unix, wykonując je jako root dla użytkowników administracyjnych. Planowanie zadań i zdalne wyszukiwanie Spotlight to istotne funkcje, ułatwiające zdalne, niskoodpadowe wyszukiwania wrażliwych plików na wielu maszynach.
|
||||
|
||||
#### Ostatnie luki w Screen-Sharing / ARD (2023-2025)
|
||||
|
||||
| Rok | CVE | Komponent | Wpływ | Naprawione w |
|
||||
|-----|-----|-----------|-------|--------------|
|
||||
|2023|CVE-2023-42940|Screen Sharing|Nieprawidłowe renderowanie sesji mogło spowodować przesyłanie *niewłaściwego* pulpitu lub okna, co skutkowało wyciekiem wrażliwych informacji|macOS Sonoma 14.2.1 (grudzień 2023) |
|
||||
|2024|CVE-2024-23296|launchservicesd / login|Obejście ochrony pamięci jądra, które można połączyć po udanym zdalnym logowaniu (aktywnie wykorzystywane w terenie)|macOS Ventura 13.6.4 / Sonoma 14.4 (marzec 2024) |
|
||||
|
||||
**Wskazówki dotyczące wzmocnienia bezpieczeństwa**
|
||||
|
||||
* Wyłącz *Screen Sharing*/*Remote Management*, gdy nie jest to ściśle wymagane.
|
||||
* Utrzymuj macOS w pełni zaktualizowany (Apple zazwyczaj dostarcza poprawki bezpieczeństwa dla ostatnich trzech głównych wydań).
|
||||
* Używaj **Silnego Hasła** *i* egzekwuj opcję *„VNC viewers may control screen with password”* **wyłączoną**, gdy to możliwe.
|
||||
* Umieść usługę za VPN zamiast narażać TCP 5900/3283 na Internet.
|
||||
* Dodaj regułę zapory aplikacji, aby ograniczyć `ARDAgent` do lokalnej podsieci:
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Protokół Bonjour
|
||||
|
||||
Bonjour, technologia zaprojektowana przez Apple, umożliwia **urządzeniom w tej samej sieci wykrywanie oferowanych przez siebie usług**. Znany również jako Rendezvous, **Zero Configuration** lub Zeroconf, umożliwia urządzeniu dołączenie do sieci TCP/IP, **automatyczne wybieranie adresu IP** i nadawanie swoich usług innym urządzeniom w sieci.
|
||||
Bonjour, technologia zaprojektowana przez Apple, umożliwia **urządzeniom w tej samej sieci wykrywanie oferowanych przez siebie usług**. Znana również jako Rendezvous, **Zero Configuration** lub Zeroconf, pozwala urządzeniu dołączyć do sieci TCP/IP, **automatycznie wybrać adres IP** i ogłaszać swoje usługi innym urządzeniom w sieci.
|
||||
|
||||
Zero Configuration Networking, zapewniane przez Bonjour, gwarantuje, że urządzenia mogą:
|
||||
|
||||
- **Automatycznie uzyskiwać adres IP** nawet w przypadku braku serwera DHCP.
|
||||
- **Automatycznie uzyskać adres IP** nawet w przypadku braku serwera DHCP.
|
||||
- Wykonywać **tłumaczenie nazwy na adres** bez potrzeby posiadania serwera DNS.
|
||||
- **Odkrywać usługi** dostępne w sieci.
|
||||
|
||||
Urządzenia korzystające z Bonjour przypisują sobie **adres IP z zakresu 169.254/16** i weryfikują jego unikalność w sieci. Maci utrzymują wpis w tabeli routingu dla tej podsieci, co można zweryfikować za pomocą `netstat -rn | grep 169`.
|
||||
|
||||
Dla DNS Bonjour wykorzystuje **protokół Multicast DNS (mDNS)**. mDNS działa na **porcie 5353/UDP**, stosując **standardowe zapytania DNS**, ale kierując je na **adres multicast 224.0.0.251**. Takie podejście zapewnia, że wszystkie nasłuchujące urządzenia w sieci mogą odbierać i odpowiadać na zapytania, ułatwiając aktualizację swoich rekordów.
|
||||
Dla DNS Bonjour wykorzystuje **protokół Multicast DNS (mDNS)**. mDNS działa na **porcie 5353/UDP**, stosując **standardowe zapytania DNS**, ale kierując je do **adresu multicast 224.0.0.251**. Takie podejście zapewnia, że wszystkie nasłuchujące urządzenia w sieci mogą odbierać i odpowiadać na zapytania, ułatwiając aktualizację swoich rekordów.
|
||||
|
||||
Po dołączeniu do sieci każde urządzenie samodzielnie wybiera nazwę, zazwyczaj kończącą się na **.local**, która może pochodzić z nazwy hosta lub być generowana losowo.
|
||||
|
||||
@ -99,6 +121,43 @@ input("Press enter to exit...\n\n")
|
||||
finally:
|
||||
zeroconf.close()
|
||||
```
|
||||
### Enumerowanie Bonjour w sieci
|
||||
|
||||
* **Nmap NSE** – odkrywanie usług reklamowanych przez pojedynczy host:
|
||||
|
||||
```bash
|
||||
nmap -sU -p 5353 --script=dns-service-discovery <target>
|
||||
```
|
||||
|
||||
Skrypt `dns-service-discovery` wysyła zapytanie `_services._dns-sd._udp.local`, a następnie enumeruje każdy reklamowany typ usługi.
|
||||
|
||||
* **mdns_recon** – narzędzie Python, które skanuje całe zakresy w poszukiwaniu *błędnie skonfigurowanych* responderów mDNS, które odpowiadają na zapytania unicast (przydatne do znajdowania urządzeń dostępnych przez subnets/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
|
||||
```
|
||||
|
||||
To zwróci hosty udostępniające SSH przez Bonjour poza lokalnym łączem.
|
||||
|
||||
### Rozważania dotyczące bezpieczeństwa i ostatnie luki (2024-2025)
|
||||
|
||||
| Rok | CVE | Powaga | Problem | Poprawione w |
|
||||
|------|-----|----------|-------|------------|
|
||||
|2024|CVE-2024-44183|Średni|Błąd logiczny w *mDNSResponder* pozwalał na wyzwolenie **odmowy usługi** przez spreparowany pakiet|macOS Ventura 13.7 / Sonoma 14.7 / Sequoia 15.0 (wrzesień 2024) |
|
||||
|2025|CVE-2025-31222|Wysoki|Problem z poprawnością w *mDNSResponder* mógł być wykorzystany do **lokalnego podwyższenia uprawnień**|macOS Ventura 13.7.6 / Sonoma 14.7.6 / Sequoia 15.5 (maj 2025) |
|
||||
|
||||
**Wskazówki dotyczące łagodzenia**
|
||||
|
||||
1. Ogranicz UDP 5353 do *zakresu lokalnego* – zablokuj lub ogranicz jego przepustowość na kontrolerach bezprzewodowych, routerach i zaporach ogniowych na hoście.
|
||||
2. Całkowicie wyłącz Bonjour na systemach, które nie wymagają odkrywania usług:
|
||||
|
||||
```bash
|
||||
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
|
||||
```
|
||||
3. W środowiskach, gdzie Bonjour jest wymagany wewnętrznie, ale nigdy nie powinien przekraczać granic sieci, użyj ograniczeń profilu *AirPlay Receiver* (MDM) lub proxy mDNS.
|
||||
4. Włącz **Ochronę integralności systemu (SIP)** i utrzymuj macOS w aktualizacji – obie powyższe luki zostały szybko załatane, ale polegały na włączeniu SIP dla pełnej ochrony.
|
||||
|
||||
### Wyłączanie Bonjour
|
||||
|
||||
Jeśli istnieją obawy dotyczące bezpieczeństwa lub inne powody, aby wyłączyć Bonjour, można to zrobić za pomocą następującego polecenia:
|
||||
@ -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=)
|
||||
- [**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)
|
||||
- [**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}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user