macOS Mrežne Usluge i Protokoli

Reading time: 9 minutes

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks

Usluge Daljinskog Pristupa

Ovo su uobičajene macOS usluge za daljinski pristup.
Možete omogućiti/onemogućiti ove usluge u System Settings --> Sharing

  • VNC, poznat kao “Deljenje Ekrana” (tcp:5900)
  • SSH, nazvan “Daljinska Prijava” (tcp:22)
  • Apple Remote Desktop (ARD), ili “Daljinsko Upravljanje” (tcp:3283, tcp:5900)
  • AppleEvent, poznat kao “Daljinski Apple Događaj” (tcp:3031)

Proverite da li je neka od njih omogućena pokretanjem:

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);
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);
printf "\nThe following services are OFF if '0', or ON otherwise:\nScreen Sharing: %s\nFile Sharing: %s\nRemote Login: %s\nRemote Mgmt: %s\nRemote Apple Events: %s\nBack to My Mac: %s\n\n" "$scrShrng" "$flShrng" "$rLgn" "$rmMgmt" "$rAE" "$bmM";

Pentesting ARD

Apple Remote Desktop (ARD) je unapređena verzija Virtual Network Computing (VNC) prilagođena za macOS, koja nudi dodatne funkcije. Značajna ranjivost u ARD-u je njegova metoda autentifikacije za lozinku kontrolne ekrana, koja koristi samo prvih 8 karaktera lozinke, što je čini podložnom brute force napadima sa alatima kao što su Hydra ili GoRedShell, jer ne postoje podrazumevana ograničenja brzine.

Ranjive instance se mogu identifikovati korišćenjem nmap-ovog vnc-info skripta. Usluge koje podržavaju VNC Authentication (2) su posebno podložne brute force napadima zbog skraćivanja lozinke na 8 karaktera.

Da biste omogućili ARD za razne administrativne zadatke kao što su eskalacija privilegija, GUI pristup ili praćenje korisnika, koristite sledeću komandu:

bash
sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart -activate -configure -allowAccessFor -allUsers -privs -all -clientopts -setmenuextra -menuextra yes

ARD pruža svestrane nivoe kontrole, uključujući posmatranje, deljenu kontrolu i punu kontrolu, sa sesijama koje traju čak i nakon promene korisničke lozinke. Omogućava slanje Unix komandi direktno, izvršavajući ih kao root za administrativne korisnike. Planiranje zadataka i daljinsko Spotlight pretraživanje su značajne karakteristike, olakšavajući daljinsko, niskoprofilno pretraživanje osetljivih datoteka na više mašina.

Nedavne ranjivosti u deljenju ekrana / ARD (2023-2025)

GodinaCVEKomponentaUticajIspravljeno u
2023CVE-2023-42940Deljenje ekranaNetačno renderovanje sesije može uzrokovati da se prenese pogrešan desktop ili prozor, što rezultira curenjem osetljivih informacijamacOS Sonoma 14.2.1 (Dec 2023)
2024CVE-2024-23296launchservicesd / loginZaobilaženje zaštite memorije kernela koje se može povezati nakon uspešnog daljinskog prijavljivanja (aktivno iskorišćeno u prirodi)macOS Ventura 13.6.4 / Sonoma 14.4 (Mar 2024)

Saveti za učvršćivanje

  • Onemogućite Deljenje ekrana/Daljinsko upravljanje kada nije strogo neophodno.
  • Održavajte macOS potpuno ažuriranim (Apple obično isporučuje bezbednosne ispravke za poslednje tri glavne verzije).
  • Koristite Jaku lozinku i primenite opciju “VNC gledatelji mogu kontrolisati ekran sa lozinkom” onemogućeno kada je to moguće.
  • Stavite uslugu iza VPN-a umesto da izlažete TCP 5900/3283 internetu.
  • Dodajte pravilo vatrozida aplikacije da ograničite ARDAgent na lokalnu podmrežu:
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 protokol

Bonjour, tehnologija koju je dizajnirao Apple, omogućava uređajima na istoj mreži da otkriju usluge koje nude jedni drugima. Poznata i kao Rendezvous, Zero Configuration, ili Zeroconf, omogućava uređaju da se pridruži TCP/IP mreži, automatski odabere IP adresu, i emitira svoje usluge drugim mrežnim uređajima.

Zero Configuration Networking, koji pruža Bonjour, osigurava da uređaji mogu:

  • Automatski dobiti IP adresu čak i u odsustvu DHCP servera.
  • Izvršiti prevod imena u adresu bez potrebe za DNS serverom.
  • Otkrivati usluge dostupne na mreži.

Uređaji koji koriste Bonjour dodeljuju sebi IP adresu iz opsega 169.254/16 i proveravaju njenu jedinstvenost na mreži. Mac računari održavaju unos u tabeli rutiranja za ovu podmrežu, koji se može proveriti putem netstat -rn | grep 169.

Za DNS, Bonjour koristi Multicast DNS (mDNS) protokol. mDNS funkcioniše preko porta 5353/UDP, koristeći standardne DNS upite ali cilja multicast adresu 224.0.0.251. Ovaj pristup osigurava da svi uređaji koji slušaju na mreži mogu primati i odgovarati na upite, olakšavajući ažuriranje njihovih zapisa.

Prilikom pridruživanja mreži, svaki uređaj samostalno bira ime, obično završava u .local, koje može biti izvedeno iz imena hosta ili nasumično generisano.

Otkriće usluga unutar mreže olakšava DNS Service Discovery (DNS-SD). Koristeći format DNS SRV zapisa, DNS-SD koristi DNS PTR zapise da omogući listanje više usluga. Klijent koji traži određenu uslugu će zatražiti PTR zapis za <Service>.<Domain>, primajući zauzvrat listu PTR zapisa formatiranih kao <Instance>.<Service>.<Domain> ako je usluga dostupna sa više hostova.

Alat dns-sd može se koristiti za otkrivanje i oglašavanje mrežnih usluga. Evo nekoliko primera njegove upotrebe:

Pretraživanje SSH usluga

Da biste pretražili SSH usluge na mreži, koristi se sledeća komanda:

bash
dns-sd -B _ssh._tcp

Ova komanda pokreće pretragu za _ssh._tcp servisima i prikazuje detalje kao što su vremenska oznaka, zastavice, interfejs, domen, tip servisa i ime instance.

Oglašavanje HTTP Servisa

Da biste oglasili HTTP servis, možete koristiti:

bash
dns-sd -R "Index" _http._tcp . 80 path=/index.html

Ova komanda registruje HTTP servis nazvan "Index" na portu 80 sa putanjom /index.html.

Da biste zatim pretražili HTTP servise na mreži:

bash
dns-sd -B _http._tcp

Kada usluga počne, ona najavljuje svoju dostupnost svim uređajima na podmreži putem multicast-a. Uređaji zainteresovani za ove usluge ne moraju slati zahteve, već jednostavno slušaju ove najave.

Za korisnički prijatniji interfejs, aplikacija Discovery - DNS-SD Browser dostupna na Apple App Store-u može vizualizovati usluge koje se nude na vašoj lokalnoj mreži.

Alternativno, mogu se napisati prilagođeni skripti za pretraživanje i otkrivanje usluga koristeći biblioteku python-zeroconf. Skripta python-zeroconf demonstrira kreiranje pretraživača usluga za _http._tcp.local. usluge, štampajući dodate ili uklonjene usluge:

python
from zeroconf import ServiceBrowser, Zeroconf

class MyListener:

def remove_service(self, zeroconf, type, name):
print("Service %s removed" % (name,))

def add_service(self, zeroconf, type, name):
info = zeroconf.get_service_info(type, name)
print("Service %s added, service info: %s" % (name, info))

zeroconf = Zeroconf()
listener = MyListener()
browser = ServiceBrowser(zeroconf, "_http._tcp.local.", listener)
try:
input("Press enter to exit...\n\n")
finally:
zeroconf.close()

Enumerating Bonjour over the network

  • Nmap NSE – otkrivanje usluga koje oglašava jedan host:
bash
nmap -sU -p 5353 --script=dns-service-discovery <target>

dns-service-discovery skripta šalje _services._dns-sd._udp.local upit i zatim enumeriše svaki oglašeni tip usluge.

  • mdns_recon – Python alat koji skenira cele opsege u potrazi za neispravno konfigurisanim mDNS responderima koji odgovaraju na unicast upite (korisno za pronalaženje uređaja dostupnih preko podmreža/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

Ovo će vratiti hostove koji izlažu SSH putem Bonjura van lokalne veze.

Security considerations & recent vulnerabilities (2024-2025)

YearCVESeverityIssuePatched in
2024CVE-2024-44183MediumLogička greška u mDNSResponder omogućila je da kreirani paket izazove denial-of-servicemacOS Ventura 13.7 / Sonoma 14.7 / Sequoia 15.0 (Sep 2024)
2025CVE-2025-31222HighProblem tačnosti u mDNSResponder mogao bi biti zloupotrebljen za lokalnu eskalaciju privilegijamacOS Ventura 13.7.6 / Sonoma 14.7.6 / Sequoia 15.5 (May 2025)

Mitigation guidance

  1. Ograničite UDP 5353 na link-local opseg – blokirajte ili ograničite brzinu na bežičnim kontrolerima, ruterima i firewall-ima zasnovanim na hostu.
  2. Potpuno onemogućite Bonjour na sistemima koji ne zahtevaju otkrivanje usluga:
bash
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
  1. Za okruženja gde je Bonjour potreban interno, ali nikada ne sme preći mrežne granice, koristite AirPlay Receiver profil ograničenja (MDM) ili mDNS proxy.
  2. Omogućite System Integrity Protection (SIP) i redovno ažurirajte macOS – obe ranjivosti su brzo zakrpljene, ali su se oslanjale na to da je SIP omogućen za potpunu zaštitu.

Disabling Bonjour

Ako postoje zabrinutosti u vezi sa bezbednošću ili drugi razlozi za onemogućavanje Bonjura, može se isključiti pomoću sledeće komande:

bash
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist

Reference

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks