Posted by Star | Posted in | Posted on 21:53
Durante este post volveremos a hablar, como no, de algunas de las herramientas de la suite de Sysinternals, aplicándolas a un caso práctico en donde se analizará el comportamiento de aplicaciones tipo ‘keylogger’ para aprender a detectarlas y eliminarlas. Para ello utilizaremos tres aplicaciones de Sysinternals, las cuales ya recomendé anteriormente. Estas aplicaciones son ProcessMonitor (ProcMon.exe), ProcessExplorer (ProcExp.exe) y Autoruns (autoruns.exe) .
Todas estas aplicaciones y muchas más están contenidas en la suite de Sysinternals, descargable desde http://download.sysinternals.com/Files/SysinternalsSuite.zip
ProcessMonitor es una herramienta permite monitorizar todas las llamadas que realizan los procesos con respecto al sistema de archivos, registro de Windows, y creación subprocesos o hilos. Esto nos servirá para mantener nuestro equipo seguro en caso de tener sospechas o indicios de que nuestras conversaciones están siendo capturadas mediante un software que guarda en un fichero, o envía a través de una conexión ftp, email, etc nuestras conversaciones.
Para iniciar el análisis, ejecutaremos la aplicación ProcMon.exe. Nada más abrir esta aplicación nos pedirá que especifiquemos filtros en los eventos capturados, para poder afinar la búsqueda.
Introduciremos dos filtros, que capturarán los eventos de escritura de archivos y envio de datos a través de conexiones TCP.
· FileWrite
· TCP Send
Para ello, desplegaremos el primer ‘Listbox’ y seleccionaremos ‘Operation’, en el segundo desplegable seleccionaremos la opción ‘is’, en el tercer desplegable escribiremos ‘WriteFile’, y en el ultimo indicaremos ‘Include’. Una vez hecho esto haremos clic en ‘Add’ para agregar este filtro, y a continuación realizaremos los mismos pasos para agregar el filtro de ‘TCP Send’ en vez de ‘WriteFile’. De esta forma estaremos monitorizando todas las escrituras en disco y envío de datos a través de conexiones TCP de cualquier proceso del sistema.
Nos debería quedar un filtro como el siguiente:
Antes de hacer clic en ‘OK’, deberíamos cerrar todas las aplicaciones posibles que estemos usando, ya que si realizan escrituras en disco o conexiones TCP, sus eventos se verán reflejados y podrían interferir en nuestro análisis, siendo más complejo para nosotros la localización del ‘keylogger’.
Una vez esté todo cerrado excepto el ProcessMonitor (ProcMon) , podremos hacer clic en ‘OK’.
Ahora, si hacemos clic en la lupa que se ve en la captura de pantalla, empezará a capturar eventos. Si sobre la lupa aparece una ‘X’ roja es que la captura de eventos está parada, y puede ser iniciada haciendo clic sobre ella.
Ahora, deberíamos forzar al keylogger a que guarde el buffer de lo que estamos escribiendo en un fichero, o lo envíe por TCP a algún equipo. Para ello, abriremos la aplicación Notepad, y escribiremos en ella. Utilizaremos también combinaciones de teclas como ‘copiar y pegar’, ya que la mayoría de los keyloggers capturan esta combinación y guardan su contenido inmediatamente.
Se puede ver, que la aplicación ‘SVCHOST.EXE’ está realizando escrituras en la ruta ‘C:\Windows\System32\DGL\INFO.DGL’ a la par que me dedicaba a escribir en el notepad.
La aplicación ‘SVCHOST.EXE’ es la encargada de lanzar los servicios instalados en nuestro servicio, por lo que lo más probable es que el ‘keylogger’ se haya instalado como tal.
Para asegurarnos de que se trata de la aplicación que estamos buscando, analizaremos el contenido del archivo sobre el cual se está escribiendo:
Evidentemente, tal y como se sospechaba, el fichero INFO.DGL contiene el contenido capturado de las pulsaciones de mi teclado.
Ahora ejecutaremos la otra herramienta de Sysinternals: ProcessExplorer (ProcExp.exe). Es importante ejecutar esta aplicación con permisos de administrador.
Ordenaremos la lista de aplicaciones por nombre de proceso, y buscaremos el nombre del servicio para poder pararlo y eliminarlo.
Al analizar los procesos con Process Explorer, observamos varias cosas:
· El ‘keylogger’ se hace pasar por un servicio que ejecutado a través de SVCHOST.exe original (c:\windows\system32\svchost.exe), sin embargo es ejecutado desde otra ruta (c:\windows\system32\DGL\SVCHOST.EXE).
· El proceso SVCHOST.EXE que corre el ‘keylogger’ no está firmado por Microsoft, el cual si debería estarlo si fuera un servicio.
·
Una vez matamos el proceso, vemos que vuelve a ejecutarse. Esto significa que hay otro proceso en memoria que se encarga de la ejecución de c:\Windows\DGL\SVCHOST.EXE cada vez que este no está en ejecución.
Para localizar que proceso se está encargando de la ejecución del ‘keylogger’ volvemos a utilizar Process Monitor (ProcMon.exe), borraremos los filtros introducidos anteriormente y pondremos un filtro en la detección del evento de operación ‘Process Create’, quedando como la siguiente captura:
Ahora que estamos auditando los eventos de ejecución de procesos, volveremos a utilizar Process Explorer para matar al proceso ‘SVCHOST.EXE’, y podremos ver que el proceso que lo vuelve a ejecutar es ‘C:\WINDOWS\SYSTEM32\DGL\SERVICES.EXE’.
Tras matar el proceso SERVICES.EXE, se detectó que SVHOST.EXE volvía a llamarlo para asegurarse su ejecución.
Ante estos casos donde existen dos procesos que se ejecutan el uno al otro, es necesario matar al proceso padre y todo el árbol de subprocesos. Esto es posible en Process Explorer haciendo clic sobre ‘Kill Process Tree’.
Ahora que no tenemos el Keylogger ejecutado en memoria, deberíamos asegurarnos de su deshabilitación eliminando las entradas del registro, o los mecanismos que utilize para su ejecución en el proximo arranque del sistema. Para ello utilizaremos Autoruns (autoruns.exe) de Sysinternals.
Buscando la cadena ‘\dgl\’ (En File -> Find) localizaremos las entradas que contengan el directorio \DGL\ en su ruta de ejecución, detectando una entrada en ‘HKCU\Software\Microsoft\Windows\CurrentVersion\Run’ con el nombre de ‘SystemKbs’.
Basta con eliminar dicha entrada del registro para asegurarse de que esa aplicación no se volverá a ejecutar en el arranque del sistema. Ahora solo queda eliminar los ficheros de C:\Windows\System32\DGL\ y el ‘keylogger’ estará completamente borrado.
Todas estas aplicaciones y muchas más están contenidas en la suite de Sysinternals, descargable desde http://download.sysinternals.com/Files/SysinternalsSuite.zip
ProcessMonitor es una herramienta permite monitorizar todas las llamadas que realizan los procesos con respecto al sistema de archivos, registro de Windows, y creación subprocesos o hilos. Esto nos servirá para mantener nuestro equipo seguro en caso de tener sospechas o indicios de que nuestras conversaciones están siendo capturadas mediante un software que guarda en un fichero, o envía a través de una conexión ftp, email, etc nuestras conversaciones.
Para iniciar el análisis, ejecutaremos la aplicación ProcMon.exe. Nada más abrir esta aplicación nos pedirá que especifiquemos filtros en los eventos capturados, para poder afinar la búsqueda.
Introduciremos dos filtros, que capturarán los eventos de escritura de archivos y envio de datos a través de conexiones TCP.
· FileWrite
· TCP Send
Para ello, desplegaremos el primer ‘Listbox’ y seleccionaremos ‘Operation’, en el segundo desplegable seleccionaremos la opción ‘is’, en el tercer desplegable escribiremos ‘WriteFile’, y en el ultimo indicaremos ‘Include’. Una vez hecho esto haremos clic en ‘Add’ para agregar este filtro, y a continuación realizaremos los mismos pasos para agregar el filtro de ‘TCP Send’ en vez de ‘WriteFile’. De esta forma estaremos monitorizando todas las escrituras en disco y envío de datos a través de conexiones TCP de cualquier proceso del sistema.
Nos debería quedar un filtro como el siguiente:
Antes de hacer clic en ‘OK’, deberíamos cerrar todas las aplicaciones posibles que estemos usando, ya que si realizan escrituras en disco o conexiones TCP, sus eventos se verán reflejados y podrían interferir en nuestro análisis, siendo más complejo para nosotros la localización del ‘keylogger’.
Una vez esté todo cerrado excepto el ProcessMonitor (ProcMon) , podremos hacer clic en ‘OK’.
Ahora, si hacemos clic en la lupa que se ve en la captura de pantalla, empezará a capturar eventos. Si sobre la lupa aparece una ‘X’ roja es que la captura de eventos está parada, y puede ser iniciada haciendo clic sobre ella.
Ahora, deberíamos forzar al keylogger a que guarde el buffer de lo que estamos escribiendo en un fichero, o lo envíe por TCP a algún equipo. Para ello, abriremos la aplicación Notepad, y escribiremos en ella. Utilizaremos también combinaciones de teclas como ‘copiar y pegar’, ya que la mayoría de los keyloggers capturan esta combinación y guardan su contenido inmediatamente.
Se puede ver, que la aplicación ‘SVCHOST.EXE’ está realizando escrituras en la ruta ‘C:\Windows\System32\DGL\INFO.DGL’ a la par que me dedicaba a escribir en el notepad.
La aplicación ‘SVCHOST.EXE’ es la encargada de lanzar los servicios instalados en nuestro servicio, por lo que lo más probable es que el ‘keylogger’ se haya instalado como tal.
Para asegurarnos de que se trata de la aplicación que estamos buscando, analizaremos el contenido del archivo sobre el cual se está escribiendo:
Evidentemente, tal y como se sospechaba, el fichero INFO.DGL contiene el contenido capturado de las pulsaciones de mi teclado.
Ahora ejecutaremos la otra herramienta de Sysinternals: ProcessExplorer (ProcExp.exe). Es importante ejecutar esta aplicación con permisos de administrador.
Ordenaremos la lista de aplicaciones por nombre de proceso, y buscaremos el nombre del servicio para poder pararlo y eliminarlo.
Al analizar los procesos con Process Explorer, observamos varias cosas:
· El ‘keylogger’ se hace pasar por un servicio que ejecutado a través de SVCHOST.exe original (c:\windows\system32\svchost.exe), sin embargo es ejecutado desde otra ruta (c:\windows\system32\DGL\SVCHOST.EXE).
· El proceso SVCHOST.EXE que corre el ‘keylogger’ no está firmado por Microsoft, el cual si debería estarlo si fuera un servicio.
·
Una vez matamos el proceso, vemos que vuelve a ejecutarse. Esto significa que hay otro proceso en memoria que se encarga de la ejecución de c:\Windows\DGL\SVCHOST.EXE cada vez que este no está en ejecución.
Para localizar que proceso se está encargando de la ejecución del ‘keylogger’ volvemos a utilizar Process Monitor (ProcMon.exe), borraremos los filtros introducidos anteriormente y pondremos un filtro en la detección del evento de operación ‘Process Create’, quedando como la siguiente captura:
Ahora que estamos auditando los eventos de ejecución de procesos, volveremos a utilizar Process Explorer para matar al proceso ‘SVCHOST.EXE’, y podremos ver que el proceso que lo vuelve a ejecutar es ‘C:\WINDOWS\SYSTEM32\DGL\SERVICES.EXE’.
Tras matar el proceso SERVICES.EXE, se detectó que SVHOST.EXE volvía a llamarlo para asegurarse su ejecución.
Ante estos casos donde existen dos procesos que se ejecutan el uno al otro, es necesario matar al proceso padre y todo el árbol de subprocesos. Esto es posible en Process Explorer haciendo clic sobre ‘Kill Process Tree’.
Ahora que no tenemos el Keylogger ejecutado en memoria, deberíamos asegurarnos de su deshabilitación eliminando las entradas del registro, o los mecanismos que utilize para su ejecución en el proximo arranque del sistema. Para ello utilizaremos Autoruns (autoruns.exe) de Sysinternals.
Buscando la cadena ‘\dgl\’ (En File -> Find) localizaremos las entradas que contengan el directorio \DGL\ en su ruta de ejecución, detectando una entrada en ‘HKCU\Software\Microsoft\Windows\CurrentVersion\Run’ con el nombre de ‘SystemKbs’.
Basta con eliminar dicha entrada del registro para asegurarse de que esa aplicación no se volverá a ejecutar en el arranque del sistema. Ahora solo queda eliminar los ficheros de C:\Windows\System32\DGL\ y el ‘keylogger’ estará completamente borrado.
Comments (0)
Publicar un comentario