# Função Ansible que simula um cenário realista de exploração do CrushFTP CVE-2025-31161, com rotação de arquivos de dados sensíveis e limpeza automatizada do defensor para prática de testes de penetração.
Role complementar para ludus_crushftp_cve-2025-31161 que adiciona uma camada de cenário realista sobre a instância vulnerável do CrushFTP.
[!NOTE] Esta role requer que a role principal
ludus_crushftp_cve-2025-31161seja aplicada primeiro.
Processo de Negócio Simulado — Cria uma conta de usuário no CrushFTP (svc_fileprocessor) com arquivos de dados confidenciais que são rotacionados a cada 2 minutos, dando ao atacante algo que valha a pena exfiltrar após explorar o bypass de autenticação.
Simulação de Defensor — Uma tarefa agendada é executada a cada 5 minutos e remove quaisquer serviços do Windows que correspondam a exfil*, simulando uma limpeza de EDR ou defensor. Os pentesters precisam contornar isso para manter a persistência.
| Componente | Nome | Intervalo |
|---|---|---|
| Script de limpeza de serviços | Invoke-ServiceCleanup.ps1 | A cada 5 min |
| Script de rotação de dados | Invoke-DataRotation.ps1 | A cada 2 min |
| Usuário do CrushFTP | svc_fileprocessor | — |
| Tarefa agendada | CrushFTP Service Monitor | A cada 5 min |
| Tarefa agendada | CrushFTP Data Processing | A cada 2 min |
O script de rotação cria arquivos chamados sensitive_data_<timestamp>.txt contendo um cabeçalho CONFIDENTIAL e o hash SHA256 do nome do arquivo. No máximo 5 arquivos são mantidos; o mais antigo é excluído quando um novo é criado.
ludus_crushftp_cve-2025-31161 deve ser aplicada à mesma VM primeiro.# CrushFTP install dir (must match main role)
ludus_crushftp_sim_install_dir: "C:\\CrushFTP"
# Simulated business user
ludus_crushftp_sim_user: "svc_fileprocessor"
ludus_crushftp_sim_password: "Pr0c3ss!ng2024"
# Data directory and rotation settings
ludus_crushftp_sim_data_dir: "C:\\CrushFTP\\svc_fileprocessor_home"
ludus_crushftp_sim_max_files: 5
ludus_crushftp_sim_data_interval_minutes: 2
# Service cleanup settings
ludus_crushftp_sim_cleanup_interval_minutes: 5
ludus_crushftp_sim_exfil_pattern: "exfil*"
Deve ser executada depois de ludus_crushftp_cve-2025-31161.
ludus:
- vm_name: "{{ range_id }}-crushftp"
hostname: "{{ range_id }}-CRUSH"
template: win2022-server-x64-template
vlan: 20
ip_last_octet: 10
ram_gb: 4
cpus: 2
windows:
sysprep: true
roles:
- ludus_crushftp_cve-2025-31161
- ludus_crushftp_cve-2025-31161_sim
role_vars:
ludus_crushftp_admin_password: "CrushAdmin123!"
ludus_crushftp_sim_password: "Pr0c3ss!ng2024"
ludus ansible role add -d ./ludus_crushftp_cve-2025-31161_sim
ludus range deploy -t user-defined-roles
Após a implantação, um pentester faria o seguinte:
crushadminsvc_fileprocessor e seus arquivos de dadossensitive_data_*.txt por meio da interface do CrushFTPexfil_c2) — que é removido a cada 5 minutosMIT