-->

quinta-feira, 9 de abril de 2009

Uma pasta autorun.inf pode barrar um vírus de pendrive?

Hoje, até pode ser. Mas eu não confiaria muito nisso se fosse você. Certamente não barraria nada criado por mim.

A idéia é impedir que um malware infecte seu pendrive (ou disco removível de qualquer tipo) criando uma pasta chamada "autorun.inf" na raiz dele. O sucesso inicial disso se baseia em três pontos:
  • Você não pode ter um arquivo com o mesmo nome de uma pasta;
  • Você não pode sobreescrever uma pasta com um arquivo;
  • Comandos (em um software) para deletar arquivos geralmente não deletam pastas, então tentar deletar autorun.inf achando que se trata de um arquivo acaba falhando por se tratar de pasta;
Como o vírus que infecta discos removíveis depende da criação de um arquivo autorun.inf para ter uma chance de se autoexecutar em outros PCs, ele pode até colocar uma cópia de si mesmo no disco, mas não consegue completar o serviço.

É possível elaborar mais, colocando nessa pasta autorun.inf outras pastas e arquivos de modo que até um comando para deletar pasta falhe porque esta não está vazia. Em um software, primeiro você tem que apagar o conteúdo e depois a pasta.

Elaborando ainda mais, você pode manipular os atributos dos arquivos dentro da pasta de forma que nem mesmo você consiga apagá-los pelo Explorer.

Esse truque é explorado pelo programa Flash Disinfector, que cria uma pasta que não pode ser apagada via Windows Explorer.

Outro método é criar (através de métodos especiais) arquivos dentro da pasta que são "ilegais" para o Explorer. Como arquivos de nome "con" e "aux".

Isso funciona? Sim. A princípio conseguiria barrar boa parte dos vírus atuais, mas apenas porque eles não esperam por isso e não porque seja realmente difícil para um vírus passar por cima desses obstáculos. Se esse método se tornar popular, os criadores de vírus vão simplesmente pôr mais algumas linhas de código para deletar a pasta.

Para demonstrar, eu criei um simples utilitário:



DeltreeMax pode apagar a pasta criada por Flash Disinfector sem nenhum esforço. Nos meus testes só foi possível detê-lo através de permissões NTFS (que em quase 100% dos casos não são usadas em um pendrive). E não testei ainda com estruturas propositalmente corrompidas.

E olha que eu sou um programador medíocre. Pode ter certeza de que o cara que cria um vírus capaz de "code injection" pode fazer melhor que isso. Eu levei mais tempo criando salvaguardas para evitar o apagamento acidental de um HDD inteiro do que implementando o código que faz o apagamento.

E o programador de vírus não tem essa preocupação.

Lembre-se: Ter uma falsa sensação de segurança é pior do que não ter segurança alguma e saber disso. O truque com a pasta é bom, desde que você não acredite que ele é infalível.



NOTA 1: Este texto foi iniciado em 08/08/2008, mas eu perdi o interesse por ele antes que ficasse pronto. Comentários recentes neste outro post me fizeram voltar ao assunto.

NOTA 2: É sempre bom lembrar que bloquear o autorun, por qualquer meio que seja, oferece proteção zero quando o vírus é do tipo "file infector", como este. Porque nesses casos o vírus não precisa se preocupar com ser executado automaticamente pois você pessoalmente vai executá-lo mais cedo ou mais tarde.

NOTA 3: DeltreeMax tenta provar meu argumento de uma forma radical deletando a pasta. Mas você precisa saber que existem outros meios de se chegar ao mesmo resultado. Por exemplo, renomear a pasta funciona mesmo em situações onde deletar não é possível e vai surtir o mesmo efeito para o propósito deste post.

20 comentários:

  1. Este truque de colocar uma pasta autorun.inf no pendrive eu já usava faz tempo, ainda mais porque, no meu trabalho, vivo metendo o pendrive em tudo que é buraco(!).

    Quando vi este teu programa, achei que talvez ele pudesse resolver um problema bobo que eu tive: na faculdade onde estudo temos uma unidade pessoal de armazenamento que pode ser acessada de qualquer computador em que fizermos logon; programando em java (tentanto pelo menos) eu consegui criar uma pasta com infinitas subpastas dentro. Acho que são infinitas mesmo, porque o Windows só mostra até determinado número através do explorer e não me permite apaga-las.

    Infelizmente seu aplicativo falhou em deleta-la também, tudo bem, até porque esta pasta não me atrapalha em nada, apenas me irrita.

    ResponderExcluir
  2. Teilor,

    Obrigado pelo feedback. Eu vou ver se meu programa pode ser adaptado para lidar com isso também, mas isso deve demorar porque estou ocupado com outras coisas e minha instalação do Delphi está com problemas.

    ResponderExcluir
  3. Teilor,

    Eu fiz uma simulação aqui criando uma estrutura longa demais para que o Explorer possa apagar, mas mesmo assim o Deltreemax apaga. Eu tentei fazer algo ainda maior, mas os métodos que eu conheço me impedem (corretamente) de fazê-lo. Estou sem poder fazer simulações por enquanto.

    ResponderExcluir
  4. Como funciona um rootkit?
    (Aquele da Sony, p. ex.?)
    Ele muda alguma coisa nos metadados do filesystem né?
    E não dá pra implementar isso para proteger contra a deleção da pasta autorun.inf?

    ResponderExcluir
  5. Eug,

    Um rootkit não lida simplesmente com metadados. É algo bem mais complexo que isso.

    E o rootkit tem que estar rodando no sistema que vai "proteger". Como você faria um rootkit "rodar em" um pendrive?

    ResponderExcluir
  6. Vc tem razão.

    Talvez formatar o pendrive
    com ext3 ou com reiserfs!

    :-)

    (
    Sei,
    não vai ler no windows...
    )

    ResponderExcluir
  7. Googlando achei isto:

    http://www.troublefixers.com/protect-your-computer-from-pen-drive-autoruninf-viruses-with-usb-firewall/

    Protect your computer from pen drive autorun.inf viruses with USB Firewall

    ResponderExcluir
  8. Eug,

    Essa e todas as outras "proteções" para pendrive (existem várias. Eu até rascunhei uma em Delphi no ano passado) precisam estar instaladas no PC. Elas não impedem o pendrive de ser infectado e sim o seu PC de ser infectado pelo pendrive.

    Elas tem lá sua utilidade, porque pelo menos informam você, quando em um PC "protegido", de que há algo no pendrive que provavelmente não deveria estar lá. Mas é importante entender que a finalidade não é blindar o pendrive.

    ResponderExcluir
  9. Obrigado pelo retorno Jefferson, imagino que o meu problema seja bem exótico e dificil de simular, por isso não vejo motivo para você se preocupar com isto; como eu disse a pasta não me atrapalha em nada e como os admins da minha faculdade não conseguiram apaga-la (ou não tentaram com mais vontade), vou deixa-la lá, como se fosse de extimação.

    Só uma coisa: não sei como aconteceu, mas o explorer não é capaz nem de me mostrar a última subpasta. É como se as subpastas fossem infinitas mesmo.

    ResponderExcluir
  10. 1. Pasta com infinitas subpastas.
    Acho que isso só é possível (e acho que é mesmo possível) criando um acesso recursivo mexendo diretamente na FAT, fazendo o primeiro cluster de uma subpasta apontar para a própria pasta que a contém. Aí teremos uma pasta com infinitos níveis de subpastas (mas não com infinitas subpastas no mesmo nível).

    2. Ressurreição de posts abandonados.
    Volta e meia você aparece com um post que começou há tempos e abandonou, e só concluiu agora por algum outro fator de incentivo. No entanto, todos eles são interessantes. Então venho sugerir que, exceto por falta de tempo, leve até o fim os posts que começa, pois podem ser muito úteis para nós, leitores. Certamente não será perda de tempo.

    ResponderExcluir
  11. Teilor,

    O único jeito que eu conheço de se criar uma estrutura de pastas infinita é o que Sony Santos descreveu. O mais provável no seu caso é que a estrutura seja suficientemente longa para parecer infinita. Por exemplo, o sistema de arquivos NTFS suporta pathnames de até 32,768 caracteres, enquanto a API win32 só pode lidar com até 260.

    32768 é longo o suficiente para parecer infinito.

    Qual o sistema de arquivos nessa unidade? Você experimentou um LiveCD linux (Linux é Posix, sem as limitações Win32) para acessá-la?

    ResponderExcluir
  12. Sony,

    O problema dos meus (muitos) rascunhos é o de sempre:

    *Falta confirmar algo;
    *Preciso redigir outro post antes, geralmente menos empolgante, para dar suporte;
    *Não gosto da forma que está redigido (expor idéias claramente é difícil);
    *etc.

    Neste momento são 134 posts em rascunho. Uns provavelmente jamais serão publicados ou até mesmo já foram incorporados em outros posts. Mas outros são realmente interessantes e eu lamento não ter tido tempo de finalizá-los.

    ResponderExcluir
  13. O que realmente seria bom era todos os pendrives terem proteção contra escrita, como costuma ser o caso dos cartões SDs.

    134 posts em rascunho? Ufa, posso desencanar com o meu backlog...

    ResponderExcluir
  14. Daniel,

    essa é minha solução antivirus para um drive que eu tenho com utilitários: um leitor de cartões e um cartão SD. Coloco programas úteis e ferramentas nesse cartão e aciono a chave de proteção.

    ResponderExcluir
  15. A melhor proteção: desativar o Autorun no Windows
    ;)

    ResponderExcluir
  16. Mais um post Show de Bola.

    Mesmo não sendo "aquela solução milagrosa", ajuda um bocado no dia a dia. Embora de uma hora para outra o FlashDesinfector sumiu do seu autor inicial, e meu NOD32 SmartSecurity identifica as copias que tenho dele como Virus. Talvez por ele se comportar como tal criando o autorun.inf na unidade externa. Sabe com o que mais tenho que lidar atualmente, e que estava esquecendo !?!? O Celular, usar o PCSuite, ou transferencia de dados / imagens do meu N95, - outro dia achei o Celular com o maldito virus, não é por menos, - unidade de disco. Qualquer hora me deparo com virus nos arquivos .EXE do symbian. heheheheh

    ResponderExcluir
  17. Jefferson, seu programa não deletou a autorun.inf que criei. Explico: no meu laptop (linux) seguindo sua idéia, criei a pasta com dois arquivos ilegais no win (con.txt e aux.txt) salvei e fui abrir na minha maquina windows. Pelos meios que conheço, não consegui mover nem deletá-la, inclusive com seu programa. Contudo, é possível renomeá-la. SS: http://picasaweb.google.com/lhguanabara/Deltreemax#5340178243024456338

    ResponderExcluir
  18. Eu fiz algo bem diferente, peguei um autorun da internet, automaticamente o arquivo baixado fica bloqueado, logo eu coloquei no RUN um programa que verifica a data de criação do autorun, se ele for alterado, a data também será mudada, logo se algum vírus tentar entrar no pen drive, esse programa vai me avisar que a data da ultima alteração mudou e tentar refazer o autorun com a data e o RUN que abre o programa, se o problema persistir ele se acelera para meio segundo e me dá a opção de retirar o pen drive para evitar infecções. Funciona perfeitamente, só que é preciso saber mexer em C ou em alguma linguagem de programação (simples) para fazer o programa (não postei pra download porque cada autorun vai ter data diferente, o que faria o programa inútil após 24 horas)

    ResponderExcluir
  19. A solução simples e definitiva é a que o Daniel Quadros e o Marcos_Ce utilizam: Um leitor usb de cartões SD. Bloqueio de hardware no cartão SD e pronto, a unidade por ser inserida com segurança no sistema, um aplicativo nessa unidade pode ser usado para dar uma olhada no sistema e, se for seguro, ai sim eu removo a trava do cartão, caso seja necessário salvar algo.

    Já porcurei por pendrives com proteção de hardware contra escrita, mas não encontrei.. o melhor que encontrei foi MP3 players com essa proteção. O MP3 player, além de funcionar como pendrive e ter uma proteção de hardware, ainda dispõe do firmware, pra ouvir músicas ou deletar arquivos. Compensa.

    ResponderExcluir
  20. Obrigado !!!
    resolveu meu problema !!!

    ResponderExcluir

Siga as regras do blog ou seu comentário será ignorado.