Ir al contenido principal

Identificando malware en procesos svchost.exe maliciosos

Si examinas los procesos que están corriendo en tu Windows con el administrador de tareas verás que hay varios procesos llamados svchost.exe. La función de estos es alojar a otros procesos que realizan diferentes funciones, es decir, actúan como contenedores de otros servicios. Además de esto, también es uno de los lugares favoritos que tiene el malware para alojarse sin tu permiso.
Hay dos formas en las que un malware puede usar estos procesos para esconderse. La primera forma es agregándose a un svchost.exe que ya esté ejecutándose. La otra manera es creando un proceso svchost.exe falso que en realidad está ejecutando el malware. Vamos ver cómo podemos identificar estos svchost.exe falsos (y dejamos para otro día el primer caso en el que los programas maliciosos que se alojan en svchost.exe auténticos).


Para verlo todo con un ejemplo, he infectado una máquina virtual con un malware que crea un proceso svchost.exe falso. Para examinar los procesos usaré el programa Process Explorer de la suite Sysinternals. En la siguiente captura podemos ver el proceso sospechoso rodeado de rojo.


Este proceso, de entrada, llama la atención porque es un proceso huérfano, es decir, que no tiene padre, como el resto de procesos svchost.exe que penden del proceso services.exe.
Para asegurarnos, vamos a comparar la imagen del proceso en disco con la imagen del proceso en memoria. En concreto vamos a verificar si contienen las mismas cadenas (strings) o son diferentes. Para ello pulsamos el botón derecho sobre el proceso y seleccionamos la opción Propiedades.
A continuación seleccionamos la pestaña Strings y comprobamos que en la parte inferior de la ventana podemos seleccionar Image para ver las cadenas del ejecutable en el disco o Memory para ver las cadenas del proceso en memoria.


Aunque puede haber diferencias entre la imagen en disco y en memoria, en este caso vemos que son muy diferentes. Además, las cadenas de texto que se observan son muy características de los keylogers. Sólo hay que fijarse en las cadenas que hacen referencias a teclas específicas como [SHIFT], [ENTER], etc. Además, encontramos una cadena muy sospechosa: malware.log (obviamente he cambiado el nombre del fichero por claridad. Normalmente no será tan obvio). ¿Será ese el nombre del fichero donde se guardan las pulsaciones del teclado? Para comprobarlo vamos a arrancar el programa Process Monitor (también de la suite Sysinternals) y establecemos un par de filtros pulsando sobre el icono con forma de embudo.


Process Monitor es una utilidad muy interesante, ya que genera un registro (log) de todas las operaciones que realizan los procesos en el sistema. Como imaginarás son muchos, así que vamos a filtrar por el PID del proceso y por la operación. Añadimos un filtro para el PID que es, según hemos visto en Process Explorer, el 2056. Tras poner los datos del filtro, tal y como aparecen en la siguiente imagen, pulsamos el botón Add.


El siguiente paso es filtrar por el tipo de operación. En este caso nos interesa la operación WriteFile, para comprobar si el proceso está escribiendo algo a disco (en este caso, las teclas que son pulsadas por el usuario).


Una vez añadidos los dos filtros pulsamos el botón OK, pulsamos algunas teclas en un par de programas como IExplorer o Notepad, y comprobamos el resultado.


Efectivamente, parece que este proceso está escribiendo en el archivo malware.log y además podemos ver la ruta donde se encuentra dicho archivo (un malware real usaría una ruta menos común, pero en cualquier caso la veríamos aquí). Sólo nos resta comprobar el contenido del archivo.


Como podemos ver, se han guardado las pulsaciones de tecla que habíamos hecho, almacenando también en qué programa se han realizados dichas pulsaciones. Esto confirma que tenemos un bonito keyloger corriendo en la máquina.

Como dije al principio, otros "bichos" pueden esconderse adhiriéndose a los procesos svchost.exe existentes, por lo que serían menos visibles, ya que se confunden con otros procesos legítimos del sistema. En esos casos habrá que hilar más fino y buscar qué DLLs se han cargado y cuáles podrían ser sospechosas. El proceso no es mucho más complejo que el que acabamos de ver, pero si algo más entretenido, así que otro día seguiremos hablando de ello.


Comentarios

Publicar un comentario

Entradas populares de este blog

Creando firmas de virus para ClamAV

ClamAv es un antivirus opensource y multiplataforma creado por Tomasz Kojm muy utilizado en los servidores de correo Linux. Este antivirus es desarrollado por la comunidad, y su utilidad práctica depende de que su base de datos de firmas sea lo suficientemente grande y actualizado. Para ello es necesario que voluntarios contribuyan activamente aportando firmas. El presente artículo pretende describir de manera sencilla cómo crear firmas de virus para ClamAV y contribuir con ellas a la comunidad.

Manejo de grafos con NetworkX en Python

El aprendizaje computacional es un área de investigación que en los últimos años ha tenido un auge importante, sobre todo gracias al aprendizaje profundo (Deep Learning). Pero no todo son redes neuronales. Paralelamente a estas técnicas, más bien basadas en el aprendizaje de patrones, también hay un auge de otras técnicas, digamos, más basadas en el aprendizaje simbólico. Si echamos la vista algunos años atrás, podemos considerar que quizá, la promesa de la web semántica como gran base de conocimiento ha fracasado, pero no es tan así. Ha ido transmutándose y evolucionando hacia bases de conocimiento basadas en ontologías a partir de las cuales es posible obtener nuevo conocimiento. Es lo que llamamos razonamiento automático y empresas como Google ya lo utilizan para ofrecerte información adicional sobre tus búsquedas. Ellos lo llaman Grafos de Conocimiento o Knowledge Graphs . Gracias a estos grafos de conocimiento, Google puede ofrecerte información adicional sobre tu búsqueda, ad

Scripts en NMAP

Cuando pensamos en NMAP, pensamos en el escaneo de puertos de un host objetivo al que estamos relizando una prueba de intrusión, pero gracias a las posibilidades que nos ofrecen su Scripting Engine , NMAP es mucho más que eso. Antes de continuar, un aviso: algunas de posibilidades que nos ofrecen los scripts de NMAP son bastante intrusivas, por lo que recomiendo hacerlas contra hosts propios, máquinas virtuales como las de Metasploitable, o contrato de pentesting mediante. Para este artículo voy a usar las máquinas de Metasploitable3 . No voy a entrar en los detalles sobre el uso básico de NMAP, ya que hay miles de tutoriales en Internet que hablan sobre ello. Lo cierto es que NMAP tiene algunas opciones que permiten obtener información extra, además de qué puertos están abiertos y cuales no. Por ejemplo, la opción -sV trata de obtener el servicio concreto, e incluso la versión del servicio que está corriendo en cada puerto. Otro ejemplo es la opción -O, que intenta averiguar el