Na empresa onde trabalho, lidamos diariamente com problemas de vírus e uma das principais fontes destes são os dispositivos de armazenamento USB, ou seja, os ditos Pendrives. A pouco tempo disparei um script na rede ( [ REG ADD HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\USBSTOR /v Start /t REG_DWORD /D 00000004 /f ] onde o número 4 hexa no fim da linha indica que o USB está desativado e quando é 3 indica que esta ativado). Este script desativou as USBs de todos nossos quase 400 computadores da rede. Mas em casos, o pendrive é uma ferramenta muito importante e este fato criou o inconveniente de estarmos quase que diretamente disparando o script [ REG ADD HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\USBSTOR /v Start /t REG_DWORD /D 00000003 /f ] para liberar-mos as USBs para o uso de pendrives. Foi então que econtrei a dica abaixo no site Dicas-L, onde aproveitamos notebooks antigos, com linux, utilizados como "Kiosks" em pontos estratégicos onde os usuários espetam o pendrive, o apicativo USBMOUNT monte o pendrive e já dispara um script que irá remover os virús, o autorun.inf, criar uma pasta com atribuições e com o nome de autorun.inf.
Fica a dica para que se interessar.
Até mais!
Papavírus de Pendrive
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", que deve estar dentro de /usr/local/scripts:
#!/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.
Fonte: Dica-L