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.
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.
CREADO POR ABSSHA .
|