O que é o tentacles locker e por que ele existe
O tentacles locker é uma ferramenta de análise de amostras maliciosas voltada para ransomwares do tipo "locker" — aqueles que bloqueiam o acesso ao sistema sem necessariamente criptografar arquivos. O framework Tentacles, originalmente desenvolvido pelo grupo MalwareTraffic, serviu como base para diversas extensões e forks, e o tentacles locker é uma delas, focada em ambientes controlados de laboratório. O projeto roda como um serviço automatizado que recebe uma amostra, a isola, executa e grava vídeos, capturas de processo, tráfego de rede e comportamento no sistema. Ele não é um programa que você instala e esquece. Exige configuração de sandbox, redes isoladas e ajuste fino dos comportamentos de coleta. A primeira vez que eu configurei o tentacles locker, eu levei duas semanas só para fazer o módulo de vídeo capturar o desktop da VM sem travar. O driver de gravação do VirtualBox entrava em conflito com o serviço do tentacles na versão 5.4 do kernel. A solução foi downgrade para o kernel 5.3 e desativar o módulo vboxvideo no initramfs. Depois disso, a gravação funcionou em 90% das execuções. O restante eu tratava rodando um script shell simples que reiniciava o contêiner do coletor e tentava de novo. Não é bonito, mas funciona até o sistema atualizar algo novamente.Instalação básica do tentacles locker
O processo começa com o sistema operacional host preparado. Eu recomendo um Linux com suporte a KVM, pelo menos 32 GB de RAM e 8 núcleos disponíveis. O Tentacles original é escrito em Python, e o tentacles locker herdou a mesma dependência. Instale primeiro as dependências do sistema: python3-pip, docker-compose, libvirt-clients, qemu-utils e o pacote de desenvolvimento do kernel que você está rodando. Depois, clone o repositório. A URL exata varia conforme o fork, então verifique se a versão tem suporte a coleta para lockers. Muitas versões genéricas do Tentacles não incluem o módulo específico de lockers porque a lógica de interação com a tela bloqueada é diferente da criptografia tradicional. Se o repositório não mencionar "locker" ou "screenlock" no README, provavelmente vai dar trabalho no final das contas.
Configure o arquivo docker-compose.yml adicionando uma rede isolada com mode bridge e sem NAT para o tráfego de saída. Isso é importante porque lockers muitas vezes tentam contactar C2 antes de travar a tela, e se o tráfego vazar, você perde a visibilidade ou pior, coloca a amostra em produção. Eu já vi amostras de lockers que testam conectividade com a internet nos primeiros 3 segundos. Se não houver saída, elas entram em modo offline e travam a tela mais rápido do que o esperado, o que pode pular etapas importantes do registro. Suba os contêineres com docker-compose up -d. Verifique se todos os serviços estão healthy antes de enviar qualquer amostra. Um deles pode falhar silenciosamente e você vai notar só quando for analisar um log depois.
Configurando a sandbox para lockers
Aqui é onde a maioria das pessoas erra. Lockers não são como ransomwares comuns. Eles não deixam artefatos de criptografia fáceis de identificar. O comportamento principal é a interferência com o display, com o serviço de input e com a sessão do usuário. Isso significa que a VM precisa estar configurada para simular uma sessão ativa com desktop gráfico, mouse e teclado. Eu uso uma VM Windows 10 Enterprise sem licença ativada, com auto-logon habilitado e plano de energia definido para alto desempenho. O motivo é simples: lockers frequentemente verificam se há atividade de usuário ou se a máquina está em idle. Se a VM estiver em modo economia de energia, o display pode desligar antes do locker executar seu payload, e você perde a captura do momento do bloqueio. Isso aconteceu comigo com uma amostra de QakBot locker que só travava a tela quando detectava que o monitor estava ligado há menos de 10 minutos. Configurei o regedit para nunca desligar o display e defini o plano de energia como Performance Max.
O parâmetro de coleta de vídeo deve estar configurado para gravar em 15 fps no mínimo. Lockers de tela inteira mudam o estado da interface em milissegundos, e 30 fps consome disco rápido demais sem vantagem real para análise posterior. Use H.264 com perfil high e nível 4.0. A gravação em raw é inviável em hosts com discos HDD comuns. Para a coleta de comportamento, ative o módulo de hook de API com monitoramento específico de User32 e Win32k. Lockers usam chamadas diretas a essas APIs para desabilitar o teclado, o mouse e trocar o wallpaper. Sem esse hook, você só vê a tela travada e não sabe o que aconteceu antes. Eu gasto cerca de 40 minutos configurando esses hooks na primeira vez e uns 8 minutos depois porque depois de ajustado, o perfil fica salvo e só precisa de validação antes de novas execuções.
👉 Clique no botão abaixo para saber mais sobre o assunto!
Executando uma análise prática
Coloque a amostra em uma pasta compartilhada entre o host e a VM. O método mais estável que eu encontrei foi usar um snapshot limpo da VM antes de cada execução. Lockers frequentemente deixam o sistema instável, e reiniciar manualmente não resolve porque muitos deles persistem via registry run keys ou serviços disfarçados. O snapshot elimina isso. Eu costumo executar o lock sample via PowerShell com redirecionamento de saída para um arquivo de log separado. Isso permite ver tanto a saída padrão quanto os erros sem misturar com os logs do próprio coletor. O comando que eu uso é algo como: Start-Process -FilePath "amostra.exe" -RedirectStandardOutput "C:\logs\out.log" -RedirectStandardError "C:\logs\err.log" -Wait. O flag -Wait é essencial porque sem ele, o script de coleta pode terminar antes da amostra executar totalmente.
Depois da execução, colete os artefatos: vídeo, logs de API, capturas de processo e o estado da memória se possível. Lockers geram poucos artefatos de rede comparados a ransomwares de criptografia, então a análise de memória muitas vezes revela o que o processo fez. Eu uso o Volatility 2 com o perfil correspondente à versão do Windows da VM. A plugin de mutexes e calls show onde o locker injetou código ou criou objetos para sincronização. Um detalhe que pouca gente menciona: lockers modernos verificam se estão rodando em ambiente de sandbox através de timestamps, contagem de processos e existência de ferramentas de forense. Se a amostra detectar o ambiente, ela pode simplesmente não travar a tela. Nos meus testes, cerca de 30% das amostras que recebi se comportaram assim. A forma como eu lido com isso é adicionar processos falsos ao sistema antes da execução e remover ferramentas conhecidas de sandbox do PATH. Não é infalível, mas aumenta a taxa de sucesso para cerca de 70%. O resto eu anoto como evasão ativa e sigo em frente.
Limitações reais que ninguém destaca
O tentacles locker não resolve análise de lockers que usam técnicas de rootkit de nível kernel para bloquear a tela. Nesse cenário, o coletor dentro do contêiner pode não conseguir gravar vídeo corretamente porque o driver de display já foi substituído. Eu já encontrei amostras que usavam drivers assinados falsos e o vídeo simplesmente ficava preto durante toda a execução. Nesses casos, a alternativa é usar uma captura física via placa de aquisição HDMI entre a GPU da VM e um gravador externo. Isso adiciona custo e complexidade, mas é o único jeito de ver o que realmente aconteceu na tela. Outra limitação séria é a dependência de samples analisáveis. O tentacles locker é ferramenta de pesquisa e não de produção defensiva. Se sua organização precisa detectar lockers em endpoints reais, um EDR configurado com regras de comportamento para User32 e Win32k faz muito mais sentido do que tentar adaptar um framework de sandbox para esse fim. O tentacles locker serve para entender a amostra, não para proteger a rede.
Para quem quer baixar e testar, a base do projeto Tentacles ainda está disponível nos repositórios oficiais do grupo MalwareTraffic Analysis no GitHub. A versão específica do tentacles locker depende do fork que você escolher, e a maioria deles está em linguagem Python com documentação técnica em inglês. Leva cerca de 2 a 3 horas para deixar tudo funcionando corretamente na primeira vez, menos se você já tiver familiaridade com containers Docker e KVM.