Blog

Segurança em aplicações Windows: File Squatting

Escrito por Erick Seiji Furukawa | 12/15/25 6:04 PM

Squatting é uma palavra em inglês que se refere à prática ilegal de ocupar um espaço ou propriedade sem autorização. De forma análoga, no contexto de cibersegurança, o termo é utilizado para descrever ataques e vulnerabilidades em que um atacante se apropria indevidamente de um recurso que deveria estar sob controle exclusivo de aplicações legítimas. Quando isso ocorre, o atacante obtém controle sobre  o recurso e pode manipulá-lo para causar comportamentos inesperados em aplicações, podendo até mesmo comprometer outros usuários ou o sistema. 


Neste post abordaremos ataques em sistemas Windows conhecidos como file squatting: como funcionam, quais seus impactos e quais medidas adotar para mitigá-los.

O que é File Squatting?

Quando um usuário cria um objeto, como um arquivo ou diretório no Windows, ele se torna seu proprietário e adquire controle total sobre o objeto. Outros usuários obtêm apenas permissões parciais sobre o objeto, que variam conforme o seu tipo e permissões herdadas.


File squatting é uma técnica que se aproveita deste comportamento para adquirir controle total sobre arquivos localizados em diretórios acessíveis a usuários não privilegiados. O ataque funciona da seguinte forma: o atacante cria previamente um arquivo em um caminho que será utilizado posteriormente por uma aplicação legítima. Quando a aplicação tenta acessar esse caminho, ela encontra o arquivo malicioso já existente. Dessa forma, o atacante pode inserir dados maliciosos que, se lidos ou executados pela aplicação sem validação adequada, podem levar a vulnerabilidades que comprometem a máquina e seus usuários. 


Este é apenas um dos tipos de ataque "squatting" que podem ser utilizados para explorar aplicações em um sistema Windows. Além de arquivos, outros recursos como portas TCP/UDP, objetos de sincronização, e named pipes também podem ser alvos de ataques semelhantes. 

 

Como explorar uma aplicação utilizando file squatting

Utilizaremos a aplicação a seguir para simular um serviço vulnerável e demonstrar como a exploração por file squatting ocorre:

Para executar a aplicação com privilégios de um serviço, utilizaremos a ferramenta PsExec em um terminal administrativo com o seguinte comando:

psexec.exe -s "C:\caminho\para\VulnService.exe"

Neste exemplo, a aplicação cria o arquivo C:\ProgramData\TestFolder\command.txt, contendo um comando benigno e, em seguida, lê e executa o comando do arquivo. O arquivo é então deletado e o ciclo se repete. Alguns delays foram introduzidos no código para facilitar a exploração:

É muito comum encontrarmos serviços utilizando o diretório C:\ProgramData para armazenar arquivos temporários, dos quais muitas vezes são arquivos sensíveis como binários com extensões .exe e .dll,  executados com altos privilégios durante rotinas de atualização ou instalação de softwares.

Neste exemplo, command.txt é um arquivo análogo a esse tipo de artefato sensível, que não deveria ser modificável por usuários não privilegiados. Quando um usuário comum tenta escrever no arquivo criado pelo serviço, a operação falha com uma mensagem de acesso negado:

Este é um resultado esperado para arquivos localizados em ProgramData, onde usuários que não são proprietários do arquivo normalmente não possuem permissões de escrita. As permissões do arquivo podem ser verificadas com o comando icacls:

O resultado indica que SYSTEM e Administradores possuem controle total sobre o arquivo (indicado pelo F de full access). Enquanto isso, o grupo de usuários possui apenas permissões de leitura (R de read) e execução (X de eXecute).


Para explorar o serviço, um atacante pode aplicar a técnica de file squatting neste arquivo para se tornar seu proprietário e obter controle total sobre ele. Neste exemplo, o atacante espera que o serviço delete o arquivo para que possa criá-lo antes que o loop se reinicie. Ao executar o comando novamente, podemos notar que agora o atacante (usuário nopriv) consegue criar o arquivo e possui controle total ele:

Tudo que resta agora é substituir o comando legítimo por um comando malicioso que será executado pelo serviço com privilégios elevados. Com isso, o atacante adquire controle praticamente total sobre a máquina:

 

Vale ressaltar que, na aplicação de exemplo, foram introduzidos delays artificiais que tornam a exploração trivial. Em situações reais, a janela para realizar ataques desse tipo geralmente é muito menor, e por vezes, é necessário combinar técnicas como oplocks e symlinks para possibilitar a exploração.

 

Como encontrar vulnerabilidades de File Squatting

Mesmo quando temos acesso ao código fonte da aplicação, o método mais simples de identificar possíveis pontos de entrada para ataques de file squatting é por meio de análise dinâmica, monitorando em tempo real as operações de arquivo realizadas pela aplicação de interesse com o Process Monitor.

Os arquivos mais interessantes para análise são aqueles que podem potencialmente levar à execução de código ou à alteração de configurações do sistema. Quando manipulados por aplicações com permissões elevadas, estes arquivos podem servir como ponto de entrada para vulnerabilidades de escalada de privilégios. No caso de aplicações executadas com privilégios de usuário comum, o impacto geralmente se limita a vulnerabilidades de movimentação lateral.

Alguns exemplos de arquivos que merecem atenção são:

  • Binários executáveis: .exe, .dll, .sys, .msi
  • Scripts: .bat, .cmd, .ps1
  • Arquivos de configuração de registro: .reg

Para que as aplicações estejam vulneráveis, elas precisam estar manipulando estes arquivos em diretórios públicos acessíveis a um atacante. A lista a seguir contém alguns dos caminhos e diretórios mais propensos a causarem problemas:

  • C:\ProgramData: Utilizado para armazenar arquivos diversos para o funcionamento das aplicações.
  • C:\Temp: Destinado a arquivos temporários.
  • C:\Windows\Temp: Também utilizado para armazenar arquivos temporários. Usuários comuns não possuem permissão de leitura, mas possuem permissão de escrita.
  • C:\Users\<usuário>: Arquivos específicos de um usuário. São problemáticos apenas se manipulados por aplicações privilegiadas.
  • C:\<diretório customizado>: Diretórios criados na raiz do volume geralmente são bastante permissivos se a aplicação não teve o cuidado de os proteger com permissões seguras.
  • Diretórios em mídias removíveis e outros volumes: Certos sistemas de arquivos como FAT32 e exFAT não oferecem suporte a ACLs (Access Control List) e por isso podem ter seu conteúdo modificado por qualquer usuário. Mesmo dispositivos que suportam ACLs podem ser bastante permissivos se não foram configurados.

Após identificar um arquivo promissor, utilize file squatting para observar como a aplicação se comporta quando o arquivo que ela está tentando criar já existe. Algumas aplicações apenas abrem o arquivo já existente e sobrescrevem seu conteúdo, enquanto outras tentam deletar o arquivo para recriá-lo, ou até mesmo falham em completar a operação. O comportamento varia bastante entre aplicações, e encontrar uma forma de explorá-las pode ser tão trivial quanto no nosso exemplo, mas também pode exigir muita criatividade e a combinação de diversas técnicas distintas.

 

Como se prevenir contra ataques de File Squatting

Prevenir ataques desse tipo é relativamente simples. Aplicações devem evitar manipular e armazenar arquivos em diretórios acessíveis a usuários com privilégios limitados, preferindo utilizar diretórios com permissões mais restritas que garantem que apenas os usuários autorizados possam interagir com os arquivos.

Para aplicações em execução com altos privilégios, como serviços, os diretórios recomendados para manipular arquivos sensíveis são:

  • C:\Windows\SystemTemp: Diferente de C:\Windows\Temp, apenas usuários administrativos e serviços possuem permissão de escrita neste diretório. Por causa disso, pode ser utilizado para armazenar arquivos temporários de forma segura.
    Vale destacar que este diretório apenas foi introduzido durante uma atualização do Windows 10, então é preferível utilizar outro diretório se compatibilidade com sistemas mais antigos for necessária.
  • C:\Program Files: Este diretório também é protegido e só pode ser modificado por usuários administrativos e serviços. Apesar de não ter este propósito, pode ser utilizado para armazenar arquivos temporários de forma segura.
  • Diretórios com configurações de permissão seguras: Apesar de normalmente possuírem permissões amplas, até mesmo diretórios em ProgramData podem ser utilizados sem problemas quando corretamente configurados. As ACLs devem ser modificadas para conceder permissões de escrita apenas para administradores e serviços. Além disso, é necessário garantir que o proprietário do diretório seja um usuário administrativo ou um serviço.

No caso de aplicações executando com privilégios de usuário, o recomendado é utilizar os diretórios C:\User\<usuário>, pois são restritos apenas ao próprio usuário. Os caminhos mais utilizados são:

  • C:\Users\<usuário>\Documents
  • C:\Users\<usuário>\AppData\Local

Conclusão

Apesar de ser um tipo de ataque com um conceito relativamente simples, file squatting é muito eficaz para explorar aplicações Windows que interagem com arquivos em diretórios inseguros. Para evitá-lo, desenvolvedores devem estar atentos a todas as operações em arquivos realizadas pela aplicação e garantir que arquivos sensíveis sejam armazenados e manipulados apenas em diretórios com permissões adequadas.