Banner 1

Obteniendo información del UserAssist

Hola. Hoy nos encontramos con un caso basado en una incidencia laboral. El gerente de una empresa ha detectado el uso abusivo de sus redes por parte de algunos empleados, por ejemplo el uso del emule, la instalación de juegos en puestos de trabajo y la instalacion de varios Pc's y portátiles con software para apuestas por internet.

Aunque la seguridad actual es muy laxa, el gerente se muestra muy preocupado tanto por la inseguridad como por el absentismo de algunos 'personajes'. Se ha puesto manos a la obra y ha contratado los servicios de una empresa de mantenimiento que le proporcione un Active Directory y poder poner controles.

Hasta aquí nada raro. Muchas pymes empiezan a tomar concienciación sobre seguridad informática y ponen medidas. El problema 'no técnico' lo tiene con la cantidad de horas poco productivas de algunos empleados y está dispuesto a repartir algún finiquito que otro. En aquellos que tiene sospechas claras ha decidido asesorarse legalmente y obtener las evidencias necesarias para presentarlas en caso de requerimiento ante un juez.

Empezamos...

El primer paso salvando los legales y poniendo controles de accesos, directivas y politicas de seguridad, consiste en revisar los logs para determinar el tiempo de uso del PC, realizar un pequeño inventario para saber que puestos tienen software no permitido y especialmente aquellos que tienen 'casino virtual'. Programa que tiene muy preocupado al gerente de la empresa dado que empieza a sospechar de la falta de cuadre de algunas transferencias y gastos en comida con tarjeta de credito (Alguien aposto al caballo ganador :-))


Para aportar alguna prueba coherente he pensado saber cuantas veces el usuario al que pertenece el portatil ejecuta la aplicación del casino virtual

Un metodo a 'simple vista' consiste ver
sobre el lado izquierdo del menu de inicio las aplicaciones que ha ejecutado el usuario, de esta forma podemos deducir que aplicaciones ejecuta, pero sigo sin saber cuantas veces lo ha hecho

Aparte de los muchos otros métodos que puede haber, hoy me centrare en una clave del registro que no esta documentada por Microsoft. Estamos hablando del UserAssist. En un principio el userassist es una clave del registro que contiene una lista de programas que con frecuencia aparecen en el menú de inicio.

Si nos vamos al registro de Windows nos encontramos que la clave siguiente contiene toda la información que buscamos pero con una sorpresa ¡¡ Esta cifrada!!

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist


La pregunta es curiosa ¿porque Microsoft cifra el userassist?. ¿Es de vital importancia el proteger esta información?, yo creo que no, es más, parece una broma del programador.

Buscando por Google (no hay nada en Microsoft) existen muchas referencias que indican que la clave
está cifrada con el simple algoritmo ROT13. Este es un sencillo cifrado César utilizado para ocultar un texto sustituyendo cada letra por la letra que está trece posiciones por delante en el alfabeto

Por lo tanto para el análisis forense vamos a desencriptar esta clave y su contenido. Para ello y después de buscar por San Google me encuentro con este Script que me viene como 'anillo al dedo'.

;;Author: Kostic Dejan
;;Date: 07.04.2006

Gui, Add, ListView, vLst w700 h500 altsubmit, Path|Name|Data Loop,HKCU, Software\Microsoft\Windows\
CurrentVersion\Explorer\UserAssist\{5E6AB780-7743-11CF-A12B-00AA004AE837}\count

{
RegRead, rval
LV_Add("","{5E6AB780-7743-
11CF-A12B-00AA004AE837}",a_loopregname,rval)
}
Loop,HKCU, Software\Microsoft\Windows\
CurrentVersion\Explorer\UserAssist\{75048700-EF1F-11D0-9888-006097DEACF9}\count
{
RegRead, rsv
LV_Add("","{75048700-EF1F-
11D0-9888-006097DEACF9}",a_loopregname,rsv)
}
Gui,add,button,gdec,&Decrypt
Gui, Show
LV_ModifyCol(1,"100")
LV_ModifyCol(2,"485")
LV_ModifyCol(3,"100")
return

dec:
SetBatchLines,-1
LV_Delete()
SplashImage,,b1 c1,,Decrypting`nPlease wait...
Loop,HKCU, Software\Microsoft\Windows\
CurrentVersion\Explorer\UserAssist\{5E6AB780-7743-11CF-A12B-00AA004AE837}\count
{
RegRead, rval
d2:=StringMod(a_loopregname,
26-13)
LV_Add("","{5E6AB780-7743-
11CF-A12B-00AA004AE837}",d2,rval)
}
Loop,HKCU, Software\Microsoft\Windows\
CurrentVersion\Explorer\UserAssist\{75048700-EF1F-11D0-9888-006097DEACF9}\count
{
RegRead, rsv
d3:=StringMod(a_loopregname,
26-13)
LV_Add("","{75048700-EF1F-
11D0-9888-006097DEACF9}",d3,rsv)
}
SplashImage,off
return

StringMod(_string, _chars="") ;made by PhiLho, adapted by me
{
Loop Parse, _string
{
char := Asc(A_LoopField)
o := Asc("A") * (Asc("A") <= char && char <= Asc("Z")) + Asc("a") * (Asc("a") <= char && char <= Asc("z")) If (o > 0)
{
char := Mod(char - o + _chars, 26)
char := Chr(char + o)
}
Else
{
char := A_LoopField
}
rStr := rStr char
}
Return rStr
}

GuiClose:
ExitApp


Para ejecutarlo deberemos de instalarnos una herramienta interprete y generadora de scripts llamada 'AutoHotKey' más información aquí. Una vez ejecutado este es el resultado.



Como vemos en la imágen es interesante la desencriptación, pero realmente sigue sin decirme nada, tendré que afinar más la puntería en la búsqueda. En este caso la suerte fué de gran ayuda y tener amigos hasta en el infierno siempre viene bien. Una llamadita por teléfono y me cuentan que existe la herramienta que hace todo por mi.

Estamos hablando de UserAssist de Didier Stevens.

Esta herramienta esta pensada para el análisis forense, cumple su cometido a la perfección, no solo desencripta si no que además cuenta las sesiones, número de veces que se ha ejecutado y fechas de acceso; ideal para lo que estoy buscando.

Una vez descargado el programa desde aquí y ejecutado muestra lo siguiente



Si nos fijamos, en la pantalla tenemos el programa 'Casino' con 17 ejecuciones y la ultima fecha en que se ejecuto.

A continuación hay que revisar los logs del sistema, buscando las fechas de inicio de sesión para cuadrar los días y el usuario que lo ejecuto. Tambien voy a cuadrar la fecha de la instalación del programa 'casino'
con las fechas de descarga del programa 'rebuscando' en los logs del proxy y del router con acceso a internet.

Si todo va bien dispondré de información suficiente para entregar al gerente, en caso contrario habré aprendido a rebuscar en el userassist.

http://conexioninversa.blogspot.com/2009/01/obteniendo-informacin-del-userassist.html

No hay comentarios:

Powered by Bad Robot
Helped by Blackubay