domingo, 16 de noviembre de 2008

Manual del matavirus. O como limpiar malwares y no formatear en el intento.

Conocer al enemigo
Para deshacernos de un virus lo mas importante es conocer sus mañas, como actua, en donde se esconde, como responde a los ataques, etc.
Debemos saber que el virus o malware en la mayoria de los casos se va a enquistar en el registro de windows, por lo tanto es hora de que nos amiguemos con esa parte del sistema operativo. Algo asi como preguntarle a Google: que es el registro de windows.

Primero, lo primero: Ejecutar msconfig
Msconfig es una herramienta que nos facilita ciertas claves criticas del registro, claves desde donde se llama la ejecucion de programas.
Ejecutamos msconfig e intentamos quitar del inicio todos aquellos programas sospechosos.
Pero como?
Ingresemos en modo seguro. Algunos virus no permiten eso, asi que entraremos a windows en modo normal y luego intentaremos detener todos los programas que sea posible mediante el administrador de tareas de windows (Alt + Ctrl + Supr), tanto en la pestaña aplicaciones, como en la pestaña procesos.
Iniciamos la herramienta: Inicio, ejecutar, msconfig, aceptar
A veces los virus intentan que no podamos ejecutar esa herramienta. Entonces obtendremos un error. En ese punto podemos sospechar que el virus hizo suficientes estragos en el registro como para considerar una restauracion del sistema, aunque ya veremos como actuar en esos casos sin recurrir a la restauracion (ver la seccion Ultimos retoques).
Supongamos que podemos ejecutar normalmente msconfig:
Debemos ir hasta la pestaña inicio para intentar descubrir al virus. Si no identificamos nada sospechoso, podemos desactivar todo, salvo el antivirus, aunque de poco nos ha servido que este ahi.
En la pestaña Servicios hacemos clic en "Ocultar todos los servicios de Microsoft". De los servicios que quedan visibles, podemos desactivar aquellos que no correspondan al antivirus. Despues de estar libres del virus podremos volver a activar tanto los programas como los servicios que sean verdaderamente útiles.
En las pestañas win.ini y system.ini (resabios de win98) dificilmente se localicen malwares, pero no estaria de mas que intentemos, al menos intuitivamente identificar algun virus que este queriendo ejecutarse por esos medios. Un virus de hace ya algunos años, el opaserver, se registraba en win.ini.
Luego de hacer las modificaciones, clicamos en aceptar y en ese momento nos pedira reinciar.
Aceptamos. Al reiniciar nos alertará sobre la anterior ejecucion de msconfig, en la que tildaremos "No volver a mostrar" y aceptaremos.
Inciamos nuevamente msconfig, esta vez en modo normal, para constatar que lo que quitamos sigue sin tildar y si hubiera algo tildado nuevamente ya casi lo tenemos cercado!!
Si se da el caso de que algun programa persiste, eso es tipico comportamiento de virus, asi que tomaremos nota de la ruta (msconfig la informa), luego iniciamos windows en modo seguro y renombramos dicho archivo. Dije bien, lo renombramos, nunca borremos un archivo por mas maligno que parezca, podriamos estar equivocados. Otras veces borrar el virus hace que el sistema no se inicie y a veces necesitamso iniciar a toda costa. Asi que si renombramos garantizamos que podremos volver atras.
Iniciamos windows normalmente y vemos con felicidad que todo parece limpio. Asi que procedemos a instalar otro antivirus o a actualizar el que teniamos y ejecutamos un escaneo completo.
Mi recomendacion es cambiar el antivirus, si el anterior fallo volvera a hacerlo. Recomiendo:
Avast: www.avast.com y Avira: www.avira.com , ambos gratuitos.
Ahora que no tenemos sospechosos evidentes, nuestro antivirus esta funcionando y el escaneo completado, le llega el turno a hijackthis.

Hijackthis
Esta excelente herramienta gratuita, hace un escaneo profundo del registro y los programas en ejecucion, nos lo informa y lo guarda en un archivo de texto.
La forma normal de trabajo es esta:
Nos conectamos a http://hijackthis.de
Vemos que en el extremo superior derecho tiene un link (Direct download) desde donde podemos descargar el utilitario. Ese programa se instala en la pc pero es portable, asi que una vez instalado lo podemos copiar en un pendrive para tenerlo a mano en caso de no poder conectarnos a internet.
Lo ejecutamos, clicamos en "Do a system scan and save a log file" y en pocos segundos obtenemos el informe. Copiamos el contenido del log y lo pegamos en la pagina web anterior en el cuadro de texto que se indica como "You can paste a logfile in this textbox". Clicamos en "Analyze" y esperamos el resultado.
Si en la pc infectada no tenemos internet (sea por el virus u otra causa), nos copiamos el log en un pendrive y pegamos el contenido en una sesion web de hijackthis en otra pc.
La pagina emite un muy buen informe en el que se indica lo bueno, lo malo y lo desconocido o dudoso.
Sobre aquellos desconocidos o dudosos podemos preguntarle a Google para saber si son buenos o malos.
Ayudados por el informe que nos da la pagina, localizamos aquel malware en el programa, clicamos todas las entradas malignas y luego clicamos en "Fix checked".
De no tener ningun acceso a internet, podemos usar nuestra intuicion para tildar aquello que parezca o evidencie ser malware.
Con esa accion, hijackthis intentará cerrar y borrar los programas sospechos y eliminara las claves del registro que le indicamos. Guarda copias de cada clave y programa eliminados para poder restaurarlos, asi que es mas que conveniente que hijackthis este ubicado en una carpeta para poder tener acceso rapido y eficaz a ese resguardo.
Luego de la limpieza, es necesario reinciar el sistema y repetir el procedimiento para constatar que nada de lo que eliminamos regresó.

Cómo seguir si el invasor o invasores aun persisten.
En este mismo blog se puede encontrar:
http://teles-copio.blogspot.com/2008/11/las-claves-clave-de-windows-aquellas.html
Son las claves en donde se pueden encontrar malwares. Si no sabemos cómo editar el registro, es hora de que le preguntemos a Google. En pocos minutos seremos expertos, es un tema por demas simple. Solo hay que tener la precaucion de hacer una copia de resguardo del registro completo o, al menos, de las claves que modificaremos.
Si nos damos una vuelta por cada una de esas claves y en especial por:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify

Ahi podriamos identificar al culpable. Miremos y preguntemosle a Google por los procesos que ahi se inician. Incluso Hijackthis suele informar de malwares de ese tipo aunque fallará al intentar limpiarlos por la razon que explico pocos renglones mas abajo.
Cuando identificamos un malware, eliminar la clave del registro no sirve, ni siquiera en modo seguro!! Por qué? Porque windows considera que lo que se inicia con winlogon es algo mas que un servicio y lo inicia tambien en modo seguro. Si borramos la entrada del registro, el virus, que esta activo, la volverá a crear. Entonces, cómo actuar? Facil: nos anotamos la ruta y nombre del archivo, iniciamos una "consola de recuperacion" y lo renombramos con comandos de DOS.
Por ejemplo: ren c:\windows\malvadovirus.exe malvadovirus.bak
Despues iniciamos en modo seguro, borramos la clave del registro, nos valemos de msconfig (ver mas arriba) para quitar lo que el malware pudo haber agregado en la anterior sesion, reiniciamos y listo.
Si no sabemos qué es el modo consola o peor aun: no sabemos qué es el modo seguro ni como iniciarlo, preguntemosle a Google!! es muy facil!!

Un ejemplo tipico:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
Dentro de esa clave nos encontramos con
"Userinit = C:\WINDOWS\system32\userinit.exe,c:\windows\malvadovirus.exe"
Queda en evidencia quien es nuestro malvado virus. Userinit no necesita compañeros y mucho menos si se llaman malvadovirus.
La solucion es simple: editamos esa clave y borramos todo lo que hay despues de la coma, con la coma incluida, previo haber renombrado antes el malvadovirus en modo consola como explique antes.
Muchas veces sirve comparar la clave de una maquina infectada con la de una sana. Si encontramos algun programa sospechoso y que no conocemos, le preguntamos a Google.

Ultimos retoques
Si llegamos mentalmente sanos hasta aqui, y windows parece comportarse bien, todavia quedan algunos arreglos que hacer.
Los pasos que siguen son para reparar los cambios tipicos que hacen los virus en el registro y muchas veces estas acciones habra que ejecutarlas en pasos anteriores porque reparan claves del registro que impiden la ejecucion de herramientas tales como msconfig, regedit, etc.
Aqui las claves:
Las que administran la ejecucion de programas y la edicion del registro:

REGEDIT4
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System]
"DisableRegistryTools"=-
[HKEY_CLASSES_ROOT\batfile\shell\open\command]
@="\"%1\" %*"
[HKEY_CLASSES_ROOT\comfile\shell\open\command]
@="\"%1\" %*"
[HKEY_CLASSES_ROOT\exefile\shell\open\command]
@="\"%1\" %*"
[HKEY_CLASSES_ROOT\htafile\Shell\Open\Command]
@="MSHTA.EXE \"%1\" %*"
[HKEY_CLASSES_ROOT\piffile\shell\open\command]
@="\"%1\" %*"
[HKEY_CLASSES_ROOT\regfile\shell\open\command]
@="regedit.exe \"%1\""
[HKEY_CLASSES_ROOT\scrfile\shell\open\command]
@="\"%1\" /S"
[HKEY_CLASSES_ROOT\scrfile\shell\config\command]
@="\"%1\" %*"
[HKEY_LOCAL_MACHINE\SOFTWARE\CLASSES\batfile\shell\open\command]
@="\"%1\" %*"
[HKEY_LOCAL_MACHINE\SOFTWARE\CLASSES\comfile\shell\open\command]
@="\"%1\" %*"
[HKEY_LOCAL_MACHINE\SOFTWARE\CLASSES\exefile\shell\open\command]
@="\"%1\" %*"
[HKEY_LOCAL_MACHINE\SOFTWARE\CLASSES\htafile\Shell\Open\Command]
@="MSHTA.EXE \"%1\" %*"
[HKEY_LOCAL_MACHINE\SOFTWARE\CLASSES\piffile\shell\open\command]
@="\"%1\" %*"
[HKEY_LOCAL_MACHINE\SOFTWARE\CLASSES\regfile\shell\open\command]
@="regedit.exe \"%1\""
[HKEY_LOCAL_MACHINE\SOFTWARE\CLASSES\scrfile\shell\open\command]
@="\"%1\" %*"

Las que manejan algunas politicas del sistema:

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer]
"NoActiveDesktopChanges"=hex:00,00,00,00
"NoActiveDesktop"=dword:00000000
"NoSaveSettings"=dword:00000000
"ClassicShell"=dword:00000000
"NoThemesTab"=dword:00000000

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System]
"NoDispAppearancePage"=dword:00000000
"NoColorChoice"=dword:00000000
"NoSizeChoice"=dword:00000000
"NoDispBackgroundPage"=dword:00000000
"NoDispScrSavPage"=dword:00000000
"NoDispCPL"=dword:00000000
"NoVisualStyleChoice"=dword:00000000
"NoDispSettingsPage"=dword:00000000
"NoDispScrSavPage"=dword:00000000
"NoVisualStyleChoice"=dword:00000000
"NoSizeChoice"=dword:00000000
"SetVisualStyle"=-

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\ActiveDesktop]
"NoChangingWallPaper"=dword:00000000

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\ThemeManager]
"ThemeActive"="1"
"DllName"=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,\
74,00,25,00,5c,00,72,00,65,00,73,00,6f,00,75,00,72,00,63,00,65,00,73,00,5c,\
00,54,00,68,00,65,00,6d,00,65,00,73,00,5c,00,6c,00,75,00,6e,00,61,00,5c,00,\
6c,00,75,00,6e,00,61,00,2e,00,6d,00,73,00,73,00,74,00,79,00,6c,00,65,00,73,\
00,00,00

Mi recomendacion es exportar esas claves en alguna pc sana, digamos con algun windows recien instalado y tener los archivos reg en nuestro pendrive, listos para ser usados.


Un manotazo de ahogado
Existe una herramienta antiespias muy util. Se llama Spyware Doctor y lo podemos descargar de:
http://www.pctools.com/spyware-doctor/
La herramienta es shareware, escaneara nuestro sistema y nos informará de los problemas encontrados pero cuando hagamos clic en "Limpiar seleccionados" nos dirá que para ese paso es necesario pagar!!!
Sin embargo, nosotros que somos expertos en el manejo del registro, nos valdremos del excelente informe que brinda el programa para editar o eliminar cada una de las claves malignas.
Porque no ejecutarla en primera instancia, aun si no contamos con la licencia?
En mi opinion, esa podria ser una muy buena opcion. Todo dependera del criterio y de la buena suerte. Si no hicimos una limpieza previa, tendremos que modificar manualmente demasiadas claves del registro.
Por lo anterior dicho, considero que esta herramienta es digna de ser tenida con licencia, puede ahorrarnos todo el trabajo aqui descripto si la ejecutamos como primer paso.

Si todo lo que intentamos salio mal:

Siempre que haya puntos de restauracion guardados, podriamos intentar restaurar el sistema a un punto anterior. Incluso, este podria ser el primer paso, o el segundo, o aplicarlo cuando intuimos que las cosas se van a complicar.
Igual, a veces restaurar el sistema no es posible, ni siquiera en "modo seguro". Hay virus que desactivan esa herramienta y no van a permitir que la re-activemos.
En esos casos sirve esto:
http://teles-copio.blogspot.com/2008/11/restaurar-sistema-cuando-windows-no.html

Otras herramientas que pueden servir:
Casi por regla general, el malware abre puertos, asi que miremos qué esta pasando con los puertos.
El comando
netstat -ab
Nos muestra todos los puertos abiertos y el programa ejecutable responsable de dicho puerto. Personalmente siempre llevo conmigo un programa de consola llamado fport, ya que me resulta mas rapido y simple de leer. Por otro lado, de haber una sospecha de malware, nadie me asegura que netstat no este infectado.
Si la lista de puertos abiertos muestra muchas instancias svchost, entonces debemos sospechar fuertemente de estar en la pista del espia. En ese caso sirve ejecutar:
tasklist /svc
para ver qué procesos inicio svchost.
Es conveniente hacer estas pruebas luego de haber desactivado todos los programas de inicio utilizando msconfig. De esa manera tendremos a la vista menos procesos y no perdemos tiempo investigando programas utiles.
Existe la posibilidad de que un malware se escude detras del programa services.exe ó svchost.exe, ambos lanzadores de procesos. El primero se encarga los procesos exe y el segundo de librerias dll. Puede verse cuales librerias lanza svchost.exe si miramos dentro de la siguiente clave del registro:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Service
cuya clave Parameters contiene un valor ServiceDLL:
Esta informacion puede encontrarse explicado por sus fuentes en:
http://support.microsoft.com/kb/314056/es

Como agregado, aquellas claves que contienen un valor llamado ImagePath, se refieren a los exe y sys (drivers) que lanzará el programa services.exe. Esto ultimo es una aproximacion empirica e intuitiva de mi parte, pues no encontre informacion al respecto en ms.
Bueno, pero yendo al grano: si ejecutamos el programa fport, es posible que nos reporte varias instancias del programa services.exe ó del programa svchost.exe
Entonces, cómo saber quien se escuda detras de alguno de esos procesos?
Una herramienta excelente para esos menesteres es: "Process explorer" :
http://support.microsoft.com/kb/314056/es

Una vez iniciado el programa podemos ver una lista de todas las instancias de svchost.exe. Si sobre una de esas instancias hacemos doble clic, nos muestra todas las propiedades, que incluyen una pestaña "Services", en donde nos informa cual es la dll que se esta ejecutando.
Si sabemos que determinado puerto no debe estar abierto, solo tenemos que tomar nota del pid que nos informa el programa fport, seleccionar la instancia de svchost que coincide con ese pid en la ventana de process explorer, hacer doble clic, ver la pestaña services y tomar nota de la dll culpable. Luego, con el mismo programa process explorer, detenemos el servicio en cuestion, renombramos la libreria y reiniciamos el sistema para constatar los cambios.

Un ejemplo de un caso teoricamente dificil:
Me encontre con un windows xp que no mostraba errores, pero que, luego de uno o dos minutos de haber arrancado, tardaba mas de un minuto en arrancar cualquier aplicacion. El antivirus (avira) estaba actualizado y ni se daba por enterado.
Una solucion habria sido instalar otro antivirus y ver que ocurria, pero eso podria tornarse bastante problematico dada la lentitud del sistema.
Tambien podia ejecutar algun antivirus de alguna distro de linux, que hay varios.
Lo que hice fue ejecutar el comando fport, ni bien arranco el sistema y al instante me informo sobre un proceso llamado twex.exe.
Busque el archivo dentro del registro y lo encontre aqui:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
Dentro de esa clave decia:
"Userinit = C:\WINDOWS\system32\userinit.exe,c:\windows\system32\twex.exe"
Vaya, vaya, vaya!!!
Solo habia que limpiar esa clave, lo cual requiere finalizar primero el tal twex.exe, quizas utilizando killbox o borrarlo desde la consola de recuperacion.
Asi fue, y en pocos minutos me deshice del cretino.

No hay comentarios: