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
577e770464
commit
cfc4f38a8e
@ -1,22 +1,22 @@
|
|||||||
# macOS Mrežne Usluge i Protokoli
|
# macOS Network Services & Protocols
|
||||||
|
|
||||||
{{#include ../../banners/hacktricks-training.md}}
|
{{#include ../../banners/hacktricks-training.md}}
|
||||||
|
|
||||||
## Usluge Daljinskog Pristupa
|
## Remote Access Services
|
||||||
|
|
||||||
Ovo su uobičajene macOS usluge za daljinski pristup.\
|
Ovo su uobičajene macOS usluge za daljinski pristup.\
|
||||||
Možete omogućiti/onemogućiti ove usluge u `System Settings` --> `Sharing`
|
Možete omogućiti/onemogućiti ove usluge u `System Settings` --> `Sharing`
|
||||||
|
|
||||||
- **VNC**, poznat kao “Deljenje Ekrana” (tcp:5900)
|
- **VNC**, poznat kao “Screen Sharing” (tcp:5900)
|
||||||
- **SSH**, nazvan “Daljinska Prijava” (tcp:22)
|
- **SSH**, nazvan “Remote Login” (tcp:22)
|
||||||
- **Apple Remote Desktop** (ARD), ili “Daljinsko Upravljanje” (tcp:3283, tcp:5900)
|
- **Apple Remote Desktop** (ARD), ili “Remote Management” (tcp:3283, tcp:5900)
|
||||||
- **AppleEvent**, poznat kao “Daljinski Apple Događaj” (tcp:3031)
|
- **AppleEvent**, poznat kao “Remote Apple Event” (tcp:3031)
|
||||||
|
|
||||||
Proverite da li je neka od njih omogućena pokretanjem:
|
Proverite da li je neka od njih omogućena pokretanjem:
|
||||||
```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);
|
||||||
@ -32,11 +32,33 @@ Da biste omogućili ARD za razne administrativne zadatke kao što su eskalacija
|
|||||||
```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 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, nisko-utično pretraživanje osetljivih fajlova na više mašina.
|
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, nisko-utično pretraživanje osetljivih datoteka na više mašina.
|
||||||
|
|
||||||
## Bonjour Protokol
|
#### Nedavne ranjivosti u deljenju ekrana / ARD (2023-2025)
|
||||||
|
|
||||||
Bonjour, tehnologija koju je dizajnirao Apple, omogućava **uređajima na istoj mreži da otkriju usluge koje nude jedni drugima**. Poznat 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.
|
| Godina | CVE | Komponenta | Uticaj | Ispravljeno u |
|
||||||
|
|--------|-----|------------|--------|---------------|
|
||||||
|
|2023|CVE-2023-42940|Deljenje ekrana|Netačno renderovanje sesije može uzrokovati da se *pogrešan* desktop ili prozor prenese, što rezultira curenjem osetljivih informacija|macOS Sonoma 14.2.1 (Dec 2023) |
|
||||||
|
|2024|CVE-2024-23296|launchservicesd / login|Zaobilaž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 aplikacija 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:
|
Zero Configuration Networking, koji pruža Bonjour, osigurava da uređaji mogu:
|
||||||
|
|
||||||
@ -50,35 +72,35 @@ Za DNS, Bonjour koristi **Multicast DNS (mDNS) protokol**. mDNS funkcioniše pre
|
|||||||
|
|
||||||
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.
|
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.
|
||||||
|
|
||||||
Otkrivanje 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.
|
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.
|
||||||
|
|
||||||
`dns-sd` alat može se koristiti za **otkrivanje i oglašavanje mrežnih usluga**. Evo nekoliko primera njegove upotrebe:
|
Alat `dns-sd` može se koristiti za **otkrivanje i oglašavanje mrežnih usluga**. Evo nekoliko primera njegove upotrebe:
|
||||||
|
|
||||||
### Pretraživanje SSH Usluga
|
### Pretraživanje SSH usluga
|
||||||
|
|
||||||
Za pretraživanje SSH usluga na mreži koristi se sledeća komanda:
|
Da biste pretražili SSH usluge na mreži, koristi se sledeća komanda:
|
||||||
```bash
|
```bash
|
||||||
dns-sd -B _ssh._tcp
|
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 usluge i ime instance.
|
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 Usluge
|
### Oglašavanje HTTP Servisa
|
||||||
|
|
||||||
Da biste oglasili HTTP uslugu, možete koristiti:
|
Da biste oglasili HTTP servis, možete koristiti:
|
||||||
```bash
|
```bash
|
||||||
dns-sd -R "Index" _http._tcp . 80 path=/index.html
|
dns-sd -R "Index" _http._tcp . 80 path=/index.html
|
||||||
```
|
```
|
||||||
Ova komanda registruje HTTP servis pod imenom "Index" na portu 80 sa putanjom `/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:
|
Da biste zatim pretražili HTTP servise na mreži:
|
||||||
```bash
|
```bash
|
||||||
dns-sd -B _http._tcp
|
dns-sd -B _http._tcp
|
||||||
```
|
```
|
||||||
Kada usluga počne, ona najavljuje svoju dostupnost svim uređajima na podmreži putem multicastinga. Uređaji zainteresovani za ove usluge ne moraju slati zahteve, već jednostavno slušaju ove najave.
|
Kada usluga počne, obaveštava sve uređaje na podmreži o svojoj dostupnosti putem multicast-a. Uređaji zainteresovani za ove usluge ne moraju slati zahteve, već jednostavno slušaju ova obaveštenja.
|
||||||
|
|
||||||
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.
|
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 `python-zeroconf` biblioteku. Skripta [**python-zeroconf**](https://github.com/jstasiak/python-zeroconf) demonstrira kreiranje pretraživača usluga za `_http._tcp.local.` usluge, štampajući dodate ili uklonjene usluge:
|
Alternativno, mogu se napisati prilagođeni skripti za pretraživanje i otkrivanje usluga koristeći biblioteku `python-zeroconf`. Skripta [**python-zeroconf**](https://github.com/jstasiak/python-zeroconf) demonstrira kreiranje pretraživača usluga za `_http._tcp.local.` usluge, ispisujući dodate ili uklonjene usluge:
|
||||||
```python
|
```python
|
||||||
from zeroconf import ServiceBrowser, Zeroconf
|
from zeroconf import ServiceBrowser, Zeroconf
|
||||||
|
|
||||||
@ -99,9 +121,46 @@ input("Press enter to exit...\n\n")
|
|||||||
finally:
|
finally:
|
||||||
zeroconf.close()
|
zeroconf.close()
|
||||||
```
|
```
|
||||||
### Onemogućavanje Bonjour
|
### Enumerating Bonjour over the network
|
||||||
|
|
||||||
Ako postoje zabrinutosti u vezi sa bezbednošću ili drugi razlozi za onemogućavanje Bonjour-a, može se isključiti pomoću sledeće komande:
|
* **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 čitave opsege u potrazi za *pogrešno 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)
|
||||||
|
|
||||||
|
| Year | CVE | Severity | Issue | Patched in |
|
||||||
|
|------|-----|----------|-------|------------|
|
||||||
|
|2024|CVE-2024-44183|Medium|Logička greška u *mDNSResponder* omogućila je da kreirani paket izazove **denial-of-service**|macOS Ventura 13.7 / Sonoma 14.7 / Sequoia 15.0 (Sep 2024) |
|
||||||
|
|2025|CVE-2025-31222|High|Problem sa tačnošću u *mDNSResponder* mogao bi biti zloupotrebljen za **lokalnu eskalaciju privilegija**|macOS 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
|
||||||
|
```
|
||||||
|
3. 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.
|
||||||
|
4. Omogućite **System Integrity Protection (SIP)** i održavajte macOS ažuriranim – 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 koristeći sledeću komandu:
|
||||||
```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