lunes, 7 de octubre de 2013

Como hacer frente a los virus del dia cero...

<  Como sabemos los antivirus trabajan de manera reactiva, esto es que, primero aparece el virus y luego, cuando el antivirus tiene conocimiento de el, el fabricante analiza el nuevo virus previo reporte de los usuarios y otros canales de retroalimentación, luego es liberada la actualización para hacer frente a dicha amenaza.

    Entre el momento en que aparece el virus y la respectiva actualización para el antivirus puede transcurrir un buen tiempo, en el cual el virus puede hacer bastante daño. A estos virus aun si clasificar les llamo “virus del día cero” en analogía a las vulnerabilidades del día cero.

    Lo cierto es que la mayoría de los antivirus tienen un módulo para la protección proactiva, pero en esencia lo que este componente hace es “vigilar” actividades sospechosas de los procesos cargados en memoria, como pueden ser acceso directo al disco duro, proceso que trate de “inyectarse” en otro proceso, proceso que trate de enviar correo sin el consentimiento del usuario o abrir una URL de internet. Sin embargo muchos virus ejecutan acciones en el sistema que a vista del antivirus pueden ser “legitimas”.

Para hacer frente a estos “virus del día cero” comparto este script a modo de plantilla para ser ajustado a cada caso en concreto. La lógica que sigue el script es la misma que seguiría el antivirus para desinfectar el sistema infectado. Para ello vamos a ver como actúa de forma general la mayoría de los virus en un sistema infectado.
  1. Garantizar la propagación (en la actualidad a través de memorias flash).
  2. Garantizar sobrevivir al próximo reinicio del sistema (escribir en la llaves correspondientes del registro de Windows).
  3. Cumplir con su verdadero objetivo como virus
Por tanto la lógica de desinfección seria:

  1. Identificar el proceso maligno y su programa de origen  
  2. Eliminar el proceso de la memoria del sistema infectado. 
  3. Borrar el o los archivos del virus del disco duro. 
  4. Eliminar los valores de las llaves del registro de Windows que garantizan la       carga del virus en el inicio del sistema y evitar el mensaje de Windows de la falta de un archivo o componente.   
 Para estas tareas de identificación y neutralización manual de programas malignos existen un conjunto de herramientas, pongo en consideración varias de ellas.

  • EL administrador de tareas de Windows 7 es útil en la fase de identificación; debe configurarse para que muestre el nombre y ruta de la imagen para saber la ubicación del ejecutable de origen en el menú ver\Seleccionar columnas). En este punto debe hacerse una inspección visual buscando nombres de programas, rutas y descripciones sospechosas. 
 

  • “autorun.exe” de la suite de Sysinternals, http://www.sysinternals.com/; esta utilidad muestra todos los programas, driver, servicios y dll que se cargan en el arranque del sistema y sirve para ubicar la llave del registro desde donde se indica la carga del posible programa maligno.
  • “Process Explorer” también parte de la suite de Sysinternals; es útil para identificar procesos dudosos.


  • AVZ Antiviral Toolkit, le llaman el arma secreta de Kaspersky, http://z-oleg.com/, es un antivirus algo rudimentario con actualización de su base de datos y todo pero su mayor fortaleza es que incluye un conjunto de herramientas y opciones para la identificación y neutralización de programas malignos. La página principal está en idioma Ruso asi que dejo aquí el link de descarga de la más reciente versión con su base de datos actualizada, http://z-oleg.com/avz4.zip y un par de instantáneas de esta magnifica herramienta.





Por supuesto la utilidad del script esta en automatizar la tarea de limpieza en varias PC e incluso a través de la LAN.

Copie el código del siguiente script en un nuevo archivo de texto con la extensión vbs

' Variables y constantes, sustituir el valor en cada caso concreto

'Nombre de la pc a limpiar, para un pc de la red NombrePC="\\PC1" o ip, para la pc actual poner un punto "."
NombrePC="PC1"  

'Nombre del proceso maligno
NProceso="Algo.exe"

'Nombre y ruta del proceso a matar
NRProceso="C:\Windows\Algo.exe"

 strComputer = NombrePC

' 1ro - Eliminar el proceso maligno

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set cProcess = objWMIService.ExecQuery("Select * from Win32_Process Where Name = '" + NProceso + "'")
For Each objProcess in cProcess
    objProcess.Terminate()
Next

'2do - Eliminar el archivo; 1ero comprobar si existe y luego borrarlo

 Set objFSO = CreateObject("Scripting.FileSystemObject")
 If objFSO.FileExists(NRProceso) Then
    objFSO.DeleteFile NRProceso,True          
 Else
    Wscript.Echo "No se encontro el archivo " + NRProceso
 End If


'3ro - Limpiar el registro


' ejemplo para el nondo HKEY_LOCAL_MACHINE pero puede ser otro como HKEY_current_User
Const HKEY_LOCAL_MACHINE = &H80000002
Const HKEY_CURRENT_USER = &H80000001

 
Set objRegistry=GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv")

'Ruta a la llave del registro  
strKeyPath = "SOFTWARE\Microsoft\Windows\CurrentVersion\policies\Explorer\Run"

'Valor a eliminar
strValueName = "Updates"

objRegistry.DeleteValue HKEY_LOCAL_MACHINE, strKeyPath, strValueName
 

' Fin del script vbs
    
Este script me ha sido muy útil, espero que lo sea para otros.

3 comentarios finales:

  1. La tarea de identificación y neutralización manual de programas maligno además de los comentarios de esta entrada es cuestión de usuarios avanzados y administradores de sistemas.
  2. Las herramientas y el sitio de web de Sysinternal fueron adquiridas por MS desde el 2006 (http://technet.microsoft.com/es-ES/sysinternals/)
  3. Las herramientas aquí mostradas son freeware y portables.

No hay comentarios.:

Publicar un comentario