Un saludo, en esta ocasión deseo compartir una solución a un problema de
seguridad común: "El monitoreo de las actividades de los usuarios en
sistemas operativos Windows", que va más alla de saber que esta haciendo
un usuario en un determinado momento, implica también determinar si las
acciones que esta llevando a cabo corresponden a las necesidades
laborales de su cargo.
Por ejemplo, existen aplicaciones portables que permiten establecer
conexión remota con servidores, como el caso de PUTTY, ¿Cual es el
riesgo de que un usuario con perfil de Oficial de Crédito tenga acceso a
esta aplicación?. En el caso de los desarrolladores de software ¿Cuál
es el riesgo de que estos tengan los programas compilados propios de su
empresa, en sus equipos de cómputo?
Para esta problemática existen diversas soluciones, libres y de paga, en
mi caso, algunas soluciones antivirus o similares permiten solamente
extraer una lista de programas instalados, y no así un registro
instantáneo de lo que el usuario esta realizando, es decir, una lista de
procesos ejecutados en el equipo de cómputo, por lo que muchas veces,
toca implementar una solución propia.
Como primer paso se debe realizar un "perfilamiento de usuarios", que en
realidad se traducirá en un perfilamiento de los cargos laborales, ya
que la persona puede cambiar, pero los roles del cargo laboral no
cambiarán, por tanto la primera tarea consiste en el perfilamiento de
cargos:
CARGO | GRUPOS PERMITIDOS |
Desarrollador | -Software base
-Lenguajes de Programación
-Ofimática |
Oficial de Crédito | -Software base
-Ofimática
-Aplicaciones de CRÉDITO |
El objetivo del cuadro anterior consiste en declarar que, un usuario
Desarrollador no puede ejecutar ningún software dentro del grupo
"Aplicaciones de CRÉDITO", porque su función laboral no lo requiere. Del
mismo modo un Oficial de Crédito no puede ejecutar software de tipo
"Lenguajes de Programación".
Esta relación "Cargo - Grupos Permitidos" debe reflejarse en una base
de datos, para su posterior consulta, asociando el proceso a un Grupo.
PROCESO | GRUPO |
winword.exe | Ofimática |
iPodService.exe | Cloud Service |
winvnc4.exe | Acceso Remoto |
chrome.exe | Software Base |
TSVNCache.exe | Desarrollo de Software |
Pasamos a la parte técnica, realizaremos el monitoreo desde un servidor
LINUX, en un esquema de Directorio Activo, y haciendo uso del programa
WMIC, el cual es un cliente para la herramienta WMIC de
Windows (
Windows Management Instrumentation Command-line),
la cual permite no solo obtener información sino realizar acciones
sobre un equipo de cómputo. El enlace de descarga, manual de
instalación y ejemplos es:
http://www.aldeid.com/wiki/Wmic-linux.
Los datos que necesitamos son:
- Nombre de Dominio :
MIDOMINIO
- Usuario de Dominio con permiso
de sesión remota :
USR_MONITOREO
- Contraseña del Usuario de Dominio
con permiso de sesión remota: :
M1P@sSw0Rd!
- IP del Equipo a Monitorear :
192.168.1.15
Luego, se puede combinar wmic y php de la siguiente manera:
$IP=$_POST['direccion_IP'];
exec('wmic -W MIDOMINIO -U USR_MONITOREO%M1P@sSw0Rd! //'.$IP.' "select caption, ExecutablePath from Win32_Process" ',$salida);
print_r($salida);
La variables $salida, contiene el nombre de los
procesos y la ruta de
los ejecutables, este puede tratarse con funciones de vector, no entrare
al detalle técnico de la programación en PHP, y pasaré a los resultados
obtenidos.
Por tanto, se obtuvo los procesos que ejecuta un usuario determinado
desde un servidor LINUX, además de un estado del proceso, y en
comparación a una base de datos previamente implementada se pudo
categorizar los procesos de acuerdo al perfil.
Se puede implementar también el envió de notificaciones cuando se
identifiquen grupos como "Servicios en la Nube" o cuando un usuario
"Oficial de Crédito" este ejecutando procesos que pertenecen al grupo
"Acceso Remoto", como es el caso de "WinVNC.exe" (como se observa en la
imagen anterior), este control debe ser de tipo tarea programada.
Espero que este pequeño ejemplo sea de utilidad, lo he implementado con
muy buenos resultados y si alguien esta interesado en hacerlo solo tiene
que escribirme. Hasta la próxima.
CesarR.
Email: cesarcuenca@gmail.com
Twitter:@ccuencad