From faaae5c8a946b1b34f39552c791a172e05911e2b Mon Sep 17 00:00:00 2001 From: Translator Date: Mon, 28 Jul 2025 14:30:38 +0000 Subject: [PATCH] Translated ['src/macos-hardening/macos-security-and-privilege-escalation --- .../macos-protocols.md | 75 +++++++++++++++++-- 1 file changed, 68 insertions(+), 7 deletions(-) diff --git a/src/macos-hardening/macos-security-and-privilege-escalation/macos-protocols.md b/src/macos-hardening/macos-security-and-privilege-escalation/macos-protocols.md index b6d6c0d63..c6635f1ef 100644 --- a/src/macos-hardening/macos-security-and-privilege-escalation/macos-protocols.md +++ b/src/macos-hardening/macos-security-and-privilege-escalation/macos-protocols.md @@ -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 +``` + +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}}