Subscribe to Feeds

Análisis de Malware - Spyware

Hola a todos, éste es mi primer artículo de mi nuevo blog. Así que poco a poco iré mejorando la calidad de lo que escribo, ya que al principio todo es más complicado.

La idea de éste blog es ir poco a poco mostrando información y métodos que bajo mi punto de vista son interesantes, y como ésto ya se irá viendo, sin más, nos adentramos en el mundo del "Malware".

La historia comenzó básicamente cuando hoy busqué un programa que utiliza un sistema que salió hace muy poquito, el sistema GPU, y que fue distribuido por la empresa "ElcomSoft".

Éste software en principio mejora la velocidad de procesamiento utilizando la tecnología de Nvidia y su innovador sistema CUDA.

Buscando éste software me encontré con un enlace de una página de rapidshare, por norma general el software que sale de páginas como "www.vagos.es", "www.taringa.es", etc. me da bastante confianza, y pese a lo desconfiado que suelo ser con los ejecutables, me decidí a instalarlo en la máquina que utilizo normalmente, es decir, que no lo abrí dentro de una máquina virtual (VMware).

La sorpresa fue que al rato de instalarlo apareció un mensaje que ya había visto antes, pero que sinceramente no esperaba volverlo a encontrar ahora. Al principio durante los primeros segundos me mosqueé un poco, estaba haciendo varias cosas y me vi obligado a quitarlo de inmediato. Ya hace días que venía con la idea de hacer un artículo sobre malware así que me dije a mi mismo que ésta sería una buena oportunidad.

Dicho ésto mi objetivo es escribir mis experiencias, para que con ellas poco a poco podáis deshaceros del malware de vuestros PCs, y no conformes con ésto, saber que es lo que realmente está pasando.

Lo primero de lo que uno se da cuenta es que en el escritorio aparece un claro mensaje de que tienes un "Adware" y que pulses un botón para descargar un antivirus. Con un precioso mensaje "Warning! Spyware detected on your computer!".



Si intentamos arrancar el Administrador de Tareas nos dirá que está deshabilitado. Por lo tanto ya deducimos que ha modificado alguna parte del sistema para evitar que los usuarios inexpertos accedan a cerrar un proceso.




Nosotros no disponemos de él, el método para solucionar ésto es sencillo, simplemente se cambia un valor de ésta clave.

"Software\Microsoft\Windows\CurrentVersion\Policies\System"

Donde veréis rápidamente que es lo que se debe modificar. Aun así el sistema está comprobando periódicamente el valor de la clave y modificándolo constantemente (lo veremos al desensamblarlo).

Sin embargo Windows nos da algunas herramientas para salir del paso, entre otras utilizaremos "Tasklist" y "Taskkill". La primera para listar los procesos y la segunda para cerrarlos.

Aunque no se aprecie bien la imagen, ahí vemos directamente un ".exe" que si no es el encargado de todo ésto al menos eso quieren que creamos. Su nombre es "lphc37kj0e98k.exe" que en un principio puede parecer que es el culpable pero nunca hay que dar por hecho nada. Acordaros que solamente vemos lo que quieren que veamos.

Para analizar el sistema, y saber que es lo que tenemos dentro yo recomiendo un programa esencial. Y su nombre es "ProcessMonitor" es de la casa de "SysInternals" y es un programa fantástico, ya que con él puedes averiguar mucha información sobre cualquier ejecutable que esté corriendo y las operaciones que hace.

Lo podéis bajar aquí.

Nosotros podemos prescindir de ésta herramienta si no queda otra, pero si podemos utilizarla es obvio que vamos a hacerlo. Así que lo primero de todo es abrir y ver cuales son los procesos que tenemos abiertos y la información que podemos obtener. Para abrir el "Arbol de Processos" o bien pulsamos "CTRL + T" o bien lo ejecutamos desde el menú Tools.



Si os fijáis aquí tenemos de nuevo el archivo, con su PID (Identificador), sin embargo vamos a hacer una captura de cual es el ejecutable que anda detrás de los mensajitos, para ello existe un botón en el mismo ProcessMonitor con el cual marcando cualquier ventana automáticamente Sniffea todos los datos de ficheros, registro e Internet.

Por ello una vez sale cualquier mensaje tipo bocadillo recordando que tenéis un virus, y un gran etc. lo mejor es localizarlo con ésta función.


En el caso de encontrarnos con un mensaje así.


Ya haríamos uso del botón que activa en su filtro la opción de Incluir el Proceso indicándole la ventana.



De éste modo rápidamente nos hará un listado no solo con el proceso involucrado, sino que además sabremos básicamente lo que está haciendo.


Si os fijáis ya tenemos más candidatos al premio, solamente con ésta imagen ya veis primero, quien está constantemente deshabilitando el Administrador de Tareas. Además por el icono ya deducimos fácilmente que se trata de un Visual Basic.

Por el momento tenemos dos ejecutables, uno con un nombre irrepetible, y el otro que parece ser que está dando guerra. Copio ambos ejecutables para el análisis posterior, y voy eliminando los procesos a ver como responden.

En más de una ocasión encontraréis procesos que os deniegan el acceso a la hora de cerrarlos, con ese famoso mensaje de "Acceso Denegado".


Cuando ésto pase tendréis que hacer uso simplemente de "Taskkill", para cerrar un proceso normalmente podemos hacerlo de varias formas.

- Taskkill /IM proceso.exe
- Taskkill /PID

Por una parte, tenemos la opción de seleccionarlo con el nombre y por otra por el handle del proceso. Sin embargo si el proceso se resiste, hay que forzarlo, y ésto se hace con la opción "/F". Ej.

- Taskkill /IM "proceso.exe" /F

De éste modo obligamos al cierre del proceso y podemos eliminar el archivo sin problemas.

Volviendo a la lista de antes localizamos los dos procesos.

Y una vez los hemos localizado ya podemos forzar el cierre con los parámetros necesarios.



Ahora que hemos eliminado para poder continuar, vamos a ver las opciones que trae taskmgr (Administrador de Tareas) para habilitarlo, yo por ejemplo utilice el mensaje que nos muestra.



Y ya una vez vemos el mensaje lo buscamos en OllyDBG para poder localizar el problema.


y a partir de ahí ya se puede analizar para ver donde está el problema. Una vez hemos entrado en él ya podemos llegar a la zona del código, para ello tenemos que seleccionar el hilo principal.

Cuando hacemos "attach" sobre un programa lo que hacemos es situarnos en modo depuración sobre él y creando un nuevo hilo y haciendo uso de la función "DbgUiRemoteBreakin" como función de comienzo del hilo de entrada, y luego para el proceso con "DbgBreakPoint" para situarnos precisamente en lo que es el "RETN" donde nos quedamos parados.

Así que si pulsamos "ALT + T" (Threads) podemos ver el hilo de depuración y el hilo principal.


Cuando entremos sabremos fácilmente que estamos en el hilo correcto.


Entonces ya sabiendo cual es el principal, lo podemos seleccionar para ver la Stack (Pila) y localizar la función del mensaje. Ésto se hace con "ALT + K" (Call Stack).


Ya localizamos el mensaje vemos inmediatamente debajo la función que lo llamó.

Ahí fácilmente se puede localizar donde tenemos que actuar.


Vemos que comprueba el valor de la variable en el registro "DisableTaskMgr" y la clave la abre un poco antes.

Con la clave.

- Subkey = "Software\Microsoft\Windows\CurrentVersion\Policies\System"

Según el valor de la variable que es comparado aquí.



Si el Buffer es 0x00000001 el Administrador de tareas no se llega a ejecutar. Por eso hay que cambiar el valor en el regedit.

Así que para habilitarlo ha de quedar a 0. Ahora queda otra, una vez cerramos los procesos y eliminamos los archivos, hay que restaurar el escritorio. Ya que todavía tenemos la imagen de fondo que nos modificaron, y si damos a propiedades del escritorio nos deshabilitaron precisamente las opciones para modificarlo.



Son una captura de un pc normal y como quedó despues de ejecutar el spyware. Se ve claramente como faltan, tano el fondo de pantalla como el salvapantallas. Y siguiendo con el método anterior utilizaremos el ProcessMonitor para capturar el proceso que se encarga de ello.

Si abrimos en la función de inicio en la ventana veremos la información necesaria.

Una vez tenemos la línea de ejecución la analizamos para ver donde tenemos las opciones importantes.

- "C:\WINDOWS\system32\rundll32.exe" /d C:\WINDOWS\system32\shell32.dll,Control_RunDLL desk.cpl.

Tenemos el módulo encargado de gestionar las propiedades de la pantalla, y es "desk.cpl" así que ya sabemos donde tenemos que actuar cuando actuemos con OllyDBG.
Abrimos el proceso con "Attach".

Ahora asignamos los argumentos con el comando que nos dió el ProcMon. En "Debug - Arguments".


Ahora reiniciamos el programa para cargar los argumentos "CTRL + F2" (Restart) .

Seguramente lo más probable es que haya modificado la configuración del sistema, y como es normal ésto se suele hacer mediante archivos ".ini" o en el registro. Si logeamos las funciones que acceden al registro mediante RegQueryValueExA y RegQueryValueExW tendremos quizás la solución al problema.

Para ir a la función hay que pulsar "CTRL + G" (Go to - Expression) y le indicamos la función que queremos.

Y una vez ahí ya podemos meter un Conditional BreakPoint.



Con RegQueryValueExW repito el procedimiento y ejecutándolo en el log veremos los resultados. Yo lo guarde todo en un archivo para hacer búsquedas más deprisa (Boton derecho Open Log File). Y lo que encontré es una estructura.

77DA6FEF CALL to RegQueryValueExW from SHLWAPI.77F442B1
hKey = A0
ValueName = "NoDispCPL"
77DA6FEF CALL to RegQueryValueExW from SHLWAPI.77F442B1
hKey = 124
ValueName = "NoDispAppearancePage"
77DA6FEF CALL to RegQueryValueExW from SHLWAPI.77F442B1
hKey = 124
ValueName = "NoDispBackgroundPage"
77DA6FEF CALL to RegQueryValueExW from SHLWAPI.77F442B1
hKey = 124
ValueName = "NoDispScrSavPage"
77DA6FEF CALL to RegQueryValueExW from SHLWAPI.77F442B1
hKey = 124
ValueName = "NoDispSettingsPage"

Se puede dar uno cuenta rápidamente que son los valores que indican si se muestra o no la sección de la pestaña especificada. Añadiendo las funciones RegOpenKeyExA y RegOpenKeyExW con el mismo procedimiento anterior obtengo la clave.

77DA6A9F CALL to RegOpenKeyExW from SHLWAPI.77F44126
hKey = HKEY_LOCAL_MACHINE
Subkey = "Software\Microsoft\Windows\CurrentVersion\Policies\System"
Reserved = 0
Access = KEY_QUERY_VALUE
pHandle = 0007E8D4
77DA6FEF COND:
77DA6FEF CALL to RegQueryValueExW from SHLWAPI.77F442B1
hKey = 124
ValueName = "NoDispAppearancePage"
Reserved = NULL
pValueType = 0007E77C
Buffer = 0007EA30
pBufSize = 0007EA2C

Ahora debemos ir a.

"HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System"
"NoDispScrSavPage" (Eliminar o poner a 0)
"NoDispBackgroundPage" (Eliminar o poner a 0)

Sin casi esfuerzo y haciendo uso de herramientas potentes en poco rato averiguamos el problema y lo solucionamos en el regedit, de ésta manera aparentemente está todo correcto. Pero falta el análisis de los dos ejecutables que copiamos y los posibles rastros (Imágenes, *.scr, .dll, etc.) que veréis en la segunda parte.

Un saludo, y hasta la siguiente entrega.

Comienzo de éste Blog

Bueno a partir de ahora comenzaremos con el nuevo Blog escribiendo las cosas más interesantes del mundo de la Seguridad Informática.


Un saludo a todos.