Como uma ferramenta para ajudá-lo a encontrar o culpado, aqui está um dtrace oneliner que imprime o pid e o nome de qualquer processo que abre um arquivo para gravação, junto com o nome do arquivo:
dtrace -qn 'syscall::open*:entry /arg1&3/ { printf("%d %s %s\n", pid, execname, copyinstr(arg0)); }'
Ele precisa ser executado como root (por exemplo, com sudo). Canalize-o grep hosts
para evitar afogamentos na produção e perder o que você está procurando:
sudo dtrace -qn 'syscall::open*:entry /arg1&3/ { printf("%d %s %s\n", pid, execname, copyinstr(arg0)); }' | grep hosts
Felizmente, isso informará qual processo está substituindo o arquivo. Apenas deixe correr em uma janela de terminal até que seja acionado.
</speculation>