Analisis del registro de windows – RegRipper – Part II

En el post anterior empezamos a conocer y dar los primeros pasos con RegRipper, instalación, manejo básico, etc. en este post voy a intentar que se conozca un poco mejor esta herramienta y su flexibilidad para nuestra labor de forense .

En el anterior post hablábamos de rip.pl o rip.exe antes de empezar hoy quiero que veáis el rr.exe, que es básicamente un gui para rip que nos automatiza un poco las cosas, veamos que aspecto tiene:

 

Como podéis ver, su uso es bastante intuitivo… Seleccionar el HIVE, seleccionar la ruta y archivo de salida de la ejecución, y el perfil que queremos utilizar… veamos un ejemplo claro.

Si os fijáis en el resultado, podemos ver que nos ha dejado el reporte en F:\reportessoftwareall.txt y además ha creado un reportessoftwareall.log (donde nos muestra el log de la ejecución de los plugins y si ha habido algún error, etc.), además se observa que ha aplicado todos los plugins que se pueden aplicar a ese Hive, previa selección mía claro esta.

¿Podemos modificar ese profile?

Pues si, en el directorio de RegRipper hay otro directorio que se llama plugins y dentro encontraremos archivos sin extensión con el nombre de cada profile, en ellos se ve todos los plugins que ejecuta dicho profile. Bien podemos eliminar los plugins que no queramos ejecutar o ponerles una # delante para que parezcan un comentario y listo. Os he querido comentar este detalle porque si bien es cierto que el RR.exe nos automatiza el trabajo, tal vez no queráis ejecutarle todos los plugins a la vez, y solo necesitéis unos cuantos. Este método es el más sencillo, aunque otra forma de automatizar la ejecución de un conjunto de plugins sería creando un script y es un poco, solo un poco más engorroso, pero igualmente válido. Os adjunto un pantallazo del aspecto que tiene estos archivos.

Volvamos a nuestro rip.pl, hay una opción del rip.pl que nos permite también la ejecución de todos los plugins que se le pueden aplicar a un Hive, es la opción -f y utiliza los mismos archivos que RR.exe pero desde línea de comandos.

Como podéis ver, la herramienta es realmente flexible y práctica. A partir de aquí iba a poner unos ejemplo de ejecución de unos cuantos plugins, pero veo que en Internet hay ingentes cantidades de información al respecto, desde la web del autor con casos prácticos y he preferido mostraros un poco más el cómo funciona, que el mostraros X ejemplos de uso,  información que podéis encontrar fácilmente con lo que ya os he explicado o con una búsqueda sencilla en tito google. Como siempre la práctica hace al maestro y es evidente que con esta herramienta si no sabéis como funciona, como está estructurada y que opciones tiene, no podréis validarla en lab y comprobar si se ajusta a vuestras necesidades.

En mi caso, es una aplicación que no falta en mi caja de herramientas.

Espero que os guste el post. Como siempre los comentarios son siempre bien recibidos.

Guía Hardening – Gestion de usuarios y grupos

Una de los aspectos más críticos como administrador de sistemas puede ser la gestión de usuarios, y esto depende en muchas ocasiones más por el número de usuarios a gestionar que por su complejidad “técnica”. En un principio en toda instalación se crea habitualmente el usuario Root y un usuario sin privilegios, hasta aquí todo bien, es más se crean automáticamente los grupos de sistema y sus privilegios, por lo que generalmente no solemos encontrar ningún problema con la gestión de usuarios, pero todo esto se convierte en auténticos quebraderos de cabeza cuando el número aumenta e incluso te ves limitado por un $Hyperboss como lo llamaría el maestro wardog.
Como he dicho técnicamente la gestión es sencilla y para el que no tenga mucha idea daré unos ejemplos sencillos a continuación.

Creación de usuarios

# adduser nombre de usuario

Modificación de usuarios

# usermod nombre de usuario

Eliminación de usuarios

# deluser nombre de usuario

Cambiar contraseña

# passwd nombre de usuario

Bloquear o desbloquear una cuenta de usuario

# passwd -l nombre de usuario
# passwd -u nombre de usuario

Bloquear cuantas inactivas pasados 30 dias

# useradd -D -f 30

Creación de grupos

# addgroup nombre de grupo

Modificación de grupos

# groupmod nombre de grupo

Eliminación de grupos

# groupdel nombre del grupo

Añadir usuarios a un grupo

# adduser nombre de usuario nombre de grupo

Quitar usuarios de un grupo

# deluser nombre de usuario nombre de grupo

Para todos los ejemplos y comandos citados arriba recomiendo echar un vistazo a su ayuda para ampliar su uso según necesidades, que pueden ser muy variadas y cambiar muchos aspectos de cada usuario, podemos cambiar el home, o la shell con la que interactúa el usuario entre otras muchas opciones.

PERMISOS

Este apartado es algo que debemos tener muy claro y DOCUMENTADO, es muy importante, y según el número de usuarios y grupos con los que trabajemos, las necesidades de cada usuario a la hora de acceder o editar ciertos ficheros, o la entrada y salida de trabajadores, se puede convertir en un aspecto muy variable y siempre se puede topar esta necesidad, con la seguridad, caballo de batalla en el mundo empresarial, que hoy en día todavía cuesta de explicar y hacer entender a ciertas personas.
Cada usuario y grupo de usuarios tiene que tener una política muy clara y concisa sobre sus permisos, esto lo debemos tener muy documentado y actualizado, y es que aquí nos jugamos mucho, no solo por mantener una seguridad externa, si no como en muchas casos a ocurrido, el acceso sin control a cierta documentación o archivos por trabajadores descontentos (con motivo o sin el), pueden acabar en manos de la competencia o en el peor de los casos en manos  de alguien que puede conseguir acceso a nuestros sistemas.
Y aquí es cuando entra en juego CHMOD, necesario para cambiar estos permisos, llegados a este punto todos deberíamos conocer como funciona,  pero si todavía queda algún despistado, aquí una ayuda sobre el comando.
Si ya tenemos unas políticas de usuarios definidas y los permisos de usuarios y grupos al día podemos pasar a verificar posibles vectores de seguridad.

Verificar Permisos y propietarios en /etc/passwd.

Verificamos
# ls -l /etc/passwd
 -rw-r--r-- 1 root root 1658 OCT 13 10:50 /etc/passwd
Cambiamos permiso si es necesario
# chmod 644 /etc/passwd
Cambiamos propietario si no es correcto
# chown root:root /etc/passwd

Verificar Permisos  y propietarios /etc/shadow.

# ls -l /etc/shadow
 -rw-r----- 1 root shadow 1061 oct 13 10:50 /etc/shadow
Cambiamos si es necesario
# chmod 640 /etc/shadow
Cambiamos propietario si no es correcto
# chown root:shadow /etc/shadow

Verificar Permisos  y propietarios /etc/group.

# ls -l /etc/group
 -rw-r--r-- 1 root root 885 oct 13 10:50 /etc/group
Cambiamos si es necesario
# chmod 644 /etc/group
Cambiamos propietario si no es correcto
# chown root:root /etc/group

También podemos hacer estas comprobaciones en archivos y carpetas de usuarios.

CONTRASEÑAS

En la primer capítulo de esta guía de hardenig  ya hablamos de la importancia de ella y dimos algunos enlaces para crear nuestras contraseñas, en este punto de la gestión de usuarios y grupos,  debemos tratar con el mismo o mayor cuidado este aspecto, y adaptarnos si así nos lo imponen, ya sabemos que cuanto más complejas sean estas mucho mejor, pero se puede dar el caso de que nos exijan que no superen lo 6 u 8 caracteres y que solo contengan números y letras, si, ya se, pero la vida es así y es lo que toca en muchas ocasiones.
Por otro lado debemos documentar y guardar esta contraseñas, podemos utilizar cualquier plataforma, aplicación o sistema que más nos guste, pero con un mino de seguridad, deben de estar cifradas, protegidas, siempre accesibles y una copia de seguridad de ellas por cualquier imprevisto, a partir de aquí vale todo (excel, keepass, lastpass, 1password, etc, etc…) yo no soy el que te dirá cual es mejor o peor, o cual utilizar.

Otro parte de la gestión, al igual que con usuarios y grupos, es la verificación de las contraseñas y aplicar una política concreta sobre ellas, aquí unos ejemplos.

Asegurar que los campos de contraseña no estén vacíos

Comprobamos si hay algun usuario sin contraseña
# cat /etc/shadow | /usr/bin/awk -F: '($2 == "" ) { print $1 " does not have a password "}'
Bloqueamos usuario hasta comprobar la causa y eliminamos si es necesario
# passwd -l nombre de usuario
# deluser nombre de usuario

 

Establecer días de caducidad de contraseña

Comprobamos
# grep PASS_MAX_DAYS /etc/login.defs 
 PASS_MAX_DAYS 60
# chage --list usuario
 Maximum number of days between password change:    60
Cambiamos si es necesario
# vim /etc/login.defs
PASS_MAX_DAYS 30
# chage --maxdays 30 usuario

Configurar el cambio de contraseña Número mínimo de días

Comprobamos
# grep PASS_MIN_DAYS /etc/login.defs 
 PASS_MIN_DAYS 14
# chage --list usuario
 Minimun number of days between password change:    14
Cambiamos si es necesario
# vim /etc/login.defs
PASS_MIN_DAYS 7
# chage --mindays 7 usuario

Definir días de advertencia de caducidad de la contraseña

# grep PASS_WARN_DAYS /etc/login.defs 
 PASS_MIN_DAYS 14
# chage --list usuario
 Number of days of warning before password expires:    14
Cambiamos si es necesario
# vim /etc/login.defs
PASS_WARN_AGE 7
# chage --warndays 7 usuario


Como hemos visto hoy tener unas políticas, tanto de usuario y grupos como de contraseñas, es una parte muy importante, ya sea en un entorno particular o empresarial, y si a esto le unimos la comprobación y actualización periódica de estas políticas, tendremos un sistema mucho más seguro.

Como regalo dejo aquí un tuit del gran Daboblog, que encontré entre mis notas mientras repasaba para escribir esta entrada, espero que también os sirva de ayuda.

¡¡Hasta la próxima parte de la guía, saludos!!

Análisis Forense de Memoria RAM III. Interfaz gráfica para análisis de memoria Ram (Evolve).

El fin de la trilogía “Volátil”

Muy buenas a todos/as. Esto tenía que llegar amigos, había que poner un fin al análisis de volcados de RAM y este post es una buena manera de hacerlo, vamos a aprender a analizar un volcado de RAM con interfaz gráfica.

En este camino, hemos aprendido a realizar un volcado de RAM en Linux (aquí), después aprendimos a crear un profile en Linux para poder analizar ese volcado de memoria y comenzamos a analizarlo tirando de terminal (aquí), ahora vamos a analizarlo desde una interfaz gráfica.

La pregunta es ¿y para qué necesito hacerlo así? Obviamente, esto no es ni preciso, ni necesario, pero por experiencia propia, os aseguro que si tenéis que ir a sala a exponer lo hallado a personas no formadas en estas materias, el hacerlo desde una interfaz gráfica lo hace lógicamente, mucho más fácil de asimilar y entender. De modo que a vuestra elección lo dejo, yo os indico el camino, vosotros elegís la dirección.

Empecemos, Evolve es un proyecto que está disponible para descarga en github en la siguiente url: https://github.com/JamesHabben/evolve.

La verdad es que está un poquito sin actualizar, pero lo cierto es que funciona muy bien a día de hoy. ¿Qué es evolve? Es una interfaz web para análisis de volcados de memoria. Una GUI web, así de simple. ¿Para qué puede servirnos? Para muchas cosas, al margen de lo comentado anteriormente nos permite realizar varios scripts y guardar los resultados para continuar en otro momento si fuera preciso.

¿Cómo guarda los resultados? De una manera muy elegante, en el mismo directorio donde esta la imagen del volcado de RAM queda un archivo en formato sqlite con los resultados de las búsquedas que realicemos nosotros.

Requisitos

Muy pocos, tan solo instalar ciertas librerías :

Una vez está hecho y con volatility instalado ya en nuestro equipo y las librerías ya instaladas…

Nos bajamos evolve…

Entramos dentro…

Tan solo quedar correr la siguiente línea:

Con –p indicamos el puerto por el que nos conectaremos (en este caso 8080), con –f le indicaremos la imagen que queremos que analice y con –profile le decimos que profile debe usar.

Este, amigos míos, es el resultado…

Elegimos en el árbol de la izquierda que queremos analizar, por ejemplo historial de bash y…

En el árbol de la izquierda se puede ver las posibles opciones de los plugins. Una vez se selecciona un plugin, este se pone a desempeñar su labor y una vez la acaba, pasa de run a show. ¡Y se produce el milagro! (Demasiado bíblico ¿verdad?)

Más ejemplos de uso…

Una vez se ha acabado el análisis, en el mismo directorio donde está el archivo de memoria volcada, queda un archivo sqlite con los resultados de todo aquellas consultas que hemos realizado.

Para muestra un par de ejemplos:

Por dar ideas y líneas de investigación, volatility está escrito en Python, evolve está escrito en Python y desde python es muy, muy fácil trabajar con sqlite. Imaginad cuantas posibilidades de trasteo y automatización.

¡Hasta la próxima!