Lab GINA - Capturando credenciales en Windows XP

Este ejercicio es ilustrativo de una de las técnicas que pueden usar los malware para registrar información privilegiada del usuario. El sistema operativo Windows XP ofrecía un mecanismo llamado GINA (Graphical Identification and Authentication) con la intención de permitir que software creado por proveedores legítimos pudiera apoyar técnicas customizadas de login. Por ejemplo, un fabricante podía utilizar ese mecanismo si quería permitir que los usuarios se loguearan usando us RFID en vez de la pantalla típica de Windows.

El sistema operativo proveía un DLL llamado msgina.dll cuyos exports eran las funciones que se invocaban regularmente para las diversas tareas de login. logout, etc. (algunos de los exports: WlxLockOk, WlxLogoff, WlxReconnectNotify). Si el fabricante de un software deseaba modificar alguno de los mecanismos relacionados al proceso de login/logout creaba su propio DLL que interceptaba las llamadas a msgina.dll.

https://i.imgur.com/PLBWjN6.png

Figura 1. En esta figura fsgina.dll es el DLL creado por el fabricante que ha sido interpuesto entre el proceso winlogon.exe (el proceso que coordina login en windows) y msgina.dll (el DLL que contiene las funciones standard para atender tareas de login)

Para lograr esto, el software de instalación del fabricante solo tenía que: (1) copiar su DLL en algún directorio, (2) modificar la siguiente llave del registry, especificando la ruta absoluta del DLL.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\GinaDLL

Una vez hechos los cambios, la próxima vez que el usuario rebooteara su compu, el proceso WinLogon usuaría el DLL del fabricante para "ayudar" en el proceso de autenticación del usuario.

El malware que vamos a analizar no es nocivo para la máquina virtual que estamos usando (Windows 2007). De hecho, parece que el profesor de la clase de donde bajamos el VM ya había corrido el malware pues algunos de sus efectos ya pueden ser observados. De todas formas, vamos a comenzar el lab borrando los cambios para comenzar cual si estuviésemos corriendo el malware por primera vez.

  1. Corre regedit (en el botón Start, lo escribes en la caja Start Search). El programa regdit se utiliza para navegar y editar el registry de Windows. Allí, usando el menu jerárquico, encuentra a la llave: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\GinaDLL y bórrala.

  2. Ve al directorio C:\Users\Administrator\Desktop\Practical Malware Analysis Labs\BinaryCollection\Chapter_11L y borra el file msgina32.dll.

  3. Ahora estamos listos para ver el programa Lab11-1.exe en acción. Abre el Process Monitor, dale "clear" a la pantalla de ser necesario y crea un filtro para solo ver eventos del Lab11-1.exe. Desde el Command Prompt ejecuta el Lab11-1.exe y guarda un pantallazo de lo que capturó el Process Monitor

    Lab11-1.exe crea un DLL, ¿como se llama? (Hint: mira WriteFile en lo que capturaste en Process Monitor)

  4. Usando IDA y OllyDbg, contesta las siguientes preguntas:

    1. ¿En qué subrutina de Lab11-1.exe es que se crea el DLL?

    2. El contenido para grabar en el DLL se está sacando directamente de una de las secciones del archivo Lab11-1.exe. Mira el comienzo del DLL usando un editor de HEX y observa los primeros dos bytes. Todo archivo tipo PE (Portable Executable) comienza de esa manera (eso incluye archivos .exe y .dll). Busca en el Lab11-1.exe por los primeros bytes del DLL. ¿En que offset del archivo Lab11-1.exe se encuentran?

      ¿A qué sección corresponde? (Hint: usa PEView)

    3. ¿En qué dirección está el CALL que modifica el key del registry para que se el DLL se interponga?

  5. Ahora investigaremos un poco sobre el DLL (usando exclusivamente IDA pues no podemos correr DLLs en OllyDbg). Abre el DLL en IDA y mira sus exports. Notarás que hay muchos que comienzan con Wlx. El DLL tiene que exportar todas las funciones que normalmente Winlogon.exe encontraría en msgina.dll, aunque lo único que haga sea invocar la misma funcion de msgina.dll. Por ejemplo, observa el contenido de la función WlxActivateUserShell. Lo único que hace es pasar para adelante la invocación.

  6. Te sospechas que el malware está registrando la información que intercepta en un archivo. Usando tus habilidades de RE encuentra la función export que hace esa trastada. (Hint: comienza con Wlx. Hint: no seas bacalax buscando en cada una de ellas hasta encontrarla)

    1. Explica cómo la encontraste.

    2. ¿Cuál es el nombre del file donde el DLL graba los credenciales que captura? Explica como lo encontraste.

    3. ¿Qué informaciones sobre el usuario guarda en ese file? Explica.