Logotipo Dicas-L, por Ricardo Burile

Busca

Visite também: UnderLinux ·  VivaOLinux ·  LinuxSecurity ·  NoticiasLinux ·  BR-Linux ·  SoftwareLivre.org ·  [mais]   
 

Você está aqui: Home  → Arquivo Dicas-L

 

Cursos in Company

Assine a Lista Dicas-L

Receba diariamente por email as dicas
de informática publicadas neste site
Para se descadastrar, clique aqui.

Papavírus de Pendrive

Colaboração: Fabiano Caixeta Duarte

Data de Publicação: 07 de Outubro de 2009

Dispositivos USB de armazenamento de massa (pendrives), amplamente utilizados nos computadores pessoais e corporativos, são frequentemente infectados por vírus executáveis em sistemas operacionais da Microsoft.

No meu contexto de trabalho, atendi a diversas solicitações de remoção de vírus por utilizar computador cujo sistema operacional é o GNU Linux, tendo em vista sua imunidade. Entretanto, com o aumento da demanda, percebi que precisava de uma solução com a qual pudesse atender meus usuários sem intervenção.

Temos disponíveis quiosques com Linux cuja finalidade é tão somente possibilitar a navegação em sites da Internet. Percebi que poderia implementar uma solução para estender a funcionalidade destes quiosques sem prejuízo à sua finalidade original.

A solução

Até onde pude observar, os vírus de pendrive se aproveitam do mecanismo de execução automática (AutoRun/AutoPlay) presente em sistemas operacionais da Microsoft. Este mecanismo utiliza um arquivo chamado autorun.inf que é lido no momento em que uma mídia removível é montada pelo sistema operacional.

Uma das informações constantes do arquivo autorun.inf é a localização absoluta do arquivo infectado dentro do pendrive.

O Papavírus identifica o arquivo infectado e o remove, bem como remove o arquivo autorun.inf. Além disto, para evitar que o pendrive seja infectado novamente, o papavírus aplica um simulacro de vacina que consiste na criação de um diretório autorun.inf que recebe os atributos oculto e somente leitura. A existência deste diretório impede que um vírus crie um arquivo com o mesmo nome, proporcionando uma espécie de imunização.

O Papavírus possui os requisitos a saber:

  • Computador com conector USB fêmea padrão A
  • Uso dedicado das portas USB para o papavírus
  • Sistema operacional Linux com suporte a
  • Sistema de arquivos VFAT
  • Dispositivos de armazenamento de massa USB
  • Xserver com Xdialog (para interação com o usuário)
  • Usbmount (para montagem do pendrive)
  • Mtools (para "imunização" do pendrive)

Implementando

O Papavírus em si consiste no script listado ao final desta seção, que deve ser chamado pelo gerenciador de dispositivos como resposta ao evento de conexão de um dispositivo USB.

Em nossa implementação, utilizamos quiosques com Debian 4.0, cujo gerenciador de dispositivos é o udev. Para fazer com que o udev chame o Papavirus, foi necessario alterar o conteúdo do arquivo /etc/udev/rules.d/z60_usbmount.rules:

  # Rules for USBmount
  
  #KERNEL=="sd*", BUS=="usb", ACTION=="add",    RUN+="/usr/share/usbmount/usbmount add"
  KERNEL=="sd*", BUS=="usb", ACTION=="add",    RUN+="/usr/local/scripts/papavirus.sh"
  KERNEL=="ub*", BUS=="usb", ACTION=="add",    RUN+="/usr/share/usbmount/usbmount add"
  KERNEL=="sd*",             ACTION=="remove", RUN+="/usr/share/usbmount/usbmount remove"
  KERNEL=="ub*",             ACTION=="remove", RUN+="/usr/share/usbmount/usbmount remove"
  

Para que o usbmount interaja com sistemas de arquivos vfat, é necessário que isto esteja previsto na variável FILESYSTEMS do arquivo /etc/usbmount/usbmount.conf.

Eis, agora, o script "Papavírus de Pendrive":

  #!/bin/bash
  
  # < A NAME="note" HREF="#textnote">< SUP>###
  #
  # Papavirus de Pendrive
  #
  # Autor: Fabiano Caixeta Duarte
  # Data:  22/07/2009
  #
  # Remove virus de pendrive e o imuniza
  #
  # Dependencias: udev usbmount xdialog mtools
  #
  # < A NAME="note" HREF="#textnote">< SUP>###
  
  /usr/share/usbmount/usbmount add
  
  PENDRIVE=$(df |grep sdb|awk '{print $NF}')
  
  if [ -n "$PENDRIVE" ]; then
  
    /bin/su - kiosk -c 'export DISPLAY=:0.0;/usr/bin/Xdialog --title \
    Papa-Virus --infobox "Aguarde enquanto procuro por virus" 7 50 5000'
  
    AUTORUN=$(find $PENDRIVE -type f -iname autorun.inf -maxdepth 1)
  
    if [ -f "$AUTORUN" ]; then
            OPENLINE=$(grep -i ^open $AUTORUN)
            VIRUS=${OPENLINE:5}
            VIRUS=$(find $PENDRIVE -name $(basename ${VIRUS//\\//}))
            chmod +w $VIRUS
            rm $VIRUS 2>/dev/null || (chmod +w $(dirname $VIRUS); rm $VIRUS)
            chmod +w $AUTORUN
            rm $AUTORUN
            sync
            MSG="Virus removido. Pode remover seu pendrive"
    else
            MSG="Nenhum virus foi encontrado. Pode remover seu pendrive"
    fi
  
    # Mesmo sem autorun.inf, o pendrive pode ter um diretorio recycler com binario infectado
    RECYCLER=$(find $PENDRIVE -iname recycler 2>/dev/null) && (chmod -R +w $RECYCLER; rm -R $RECYCLER)
  
    # Imunizar pen-drive
    mkdir $PENDRIVE/autorun.inf
    mcd p:
    mattrib +r +h autorun.inf
  
    /bin/su - kiosk -c "export DISPLAY=:0.0;/usr/bin/Xdialog --title Papa-Virus --infobox \"$MSG\" 7 60 60000"
  fi

Observação: o xdialog precisa ser executado pelo dono da sessão X (kiosk, no nosso contexto) em execução nos quiosques.

Conclusão

Virus para sistemas operacionais da Microsoft não deveriam, a princípio, preocupar usuários de sistemas operacionais livres. Na verdade, não preocupam. Nos preocupamos com os colegas que por uma razão ou por outra, utilizam aqueles sistemas e ficam vulneráveis a certos problemas.

Esta dica mostrou mais uma situação em que o software livre se revela uma ferramenta eficiente para solucionar problemas do dia-a-dia.

Ficarei feliz em receber sugestões de melhoria.

Complemento um pouco off-topic

Fui informado de que a Microsoft lançou uma atualização para seus sistemas que serve para modificar o funcionamento do mecanismo Autorun/Autoplay. Trata-se da atualização KB971029, que faz com que o mecanismo seja aplicável apenas para CDs e DVDs.

Fabiano Caixeta Duarte é Especialista em Redes de Computadores, com foco no gerenciamento de serviços de rede em sistems operacionais Unix-like e desenvolvimento de soluções em shell-script e perl.

Veja a relação completa dos artigos de Fabiano Caixeta Duarte

Stumble Upon Digg This Del.icio.us Twitter Recomendar este artigo a um amigo Entre em contato Formato PDF
Newsfeed RSS
Formato para impressão
StumbleUpon Digg Del.icio.us Twitter Recomendar Contato PDF RSS Imprimir

Referências Adicionais

Referências adicionais sobre os assuntos abordados neste site podem ser encontradas em nossa Bibliografia.

Avalie esta dica

  • Currently 3.33/5
  • 1
  • 2
  • 3
  • 4
  • 5

Avaliação: 3.3 /5 (55 votos)

Opinião dos Leitores

Laercio
04 Nov 2009, 20:25
A dica é ótima.

Mas como implemento no Debian Lenny?
Flávio França
19 Out 2009, 14:51
Estou utilizando o Ubuntu. Como fazer a dica funcionar nele?

O arquivo /etc/udev/rules.d/z60_usbmount.rules não existe nele.
Fabiano Caixeta Duarte
09 Out 2009, 18:58
Senhores,

Algumas pessoas têm me perguntado sobre o motivo pelo qual o diretório autorun.inf recebe atributos de oculto e somente leitura.

O atributo de oculto serve para que o usuário não veja o diretório, o que poderia fazê-lo ter vontade de remover "aquela pasta que apareceu do nada".

E já que estava com a faca e o queijo na mão, mesmo sendo a princípio desnecessário, resolvi incluir o atributo de somente leitura para dificultar a sobrescrita do diretório pelo sistema operacional (atendendo à requisição do vírus).

Espero ter clareado ;)

Abraço a todos!
d.underworldster@gmail.com
09 Out 2009, 14:28
Muito bom, está dica funciona perfeitamente vale muito a pena utilizá-la!
jefer
09 Out 2009, 13:41
no ubuntu nao encontro os arquivos que necessarios serem modificados.
rogerio machado
09 Out 2009, 09:36
corrigindo minha dica anterior, o "recycler" deve ser um arquivo e não uma pasta.
Marcio Jorge dos Santos
08 Out 2009, 21:43
Muito boa a dica do Fabiano. Eu já utilizava a técnica da pasta autorun.inf nos meus pendrives por recomendação do grande Gomide.

Normalmente eu não deixo como oculto ou somente leitura. Aparentemente, a simples existência da pasta é suficiente para que os virus não a consiga criar.

Outra dica, também passada pelo Gomide é a criação de um arquivo chamado "recycler" na raiz do pendrive. Ele deve conter atributo de arquivo do sistema.
Para tanto é necessário utilizar o comando attrib do velho DOS:
- attrib +s recycler

Parabéns pela dicas-l! Eu sou assinante "passivo" praticamente desde a sua criação.
rogerio machado
08 Out 2009, 13:09
Ou pode simplesmente criar uma pasta chamada "autorun.inf" e outra chamada "recycler" na raiz do pendrive enquanto ele ainda não está infectado ...

Um arquivo não sobrescreve uma pasta nem vice-versa

A não ser que a máquina infectada primeiro apague esses arquivos para depois escrever o virus... o que até agora não vi acontecer.

Essa solução vem funcionado pra mim há tempos.
Jaú
08 Out 2009, 08:45
Muito boa essa idéia do diretório autorun.inf! :-)
Ewerton
07 Out 2009, 10:04
Parabéns pela iniciativa. Excelente solução para um problema muito frequente.
Abs.
Carlos Eduardo
07 Out 2009, 07:28
Parabéns pela dica, com certeza será de muita utilidade para muitos usuários!
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script
Faça o download gratuito da 10ª Edição da Broffice.ORG Zine
Submarino.com.br
Eletrônicos - Submarino.com.br