13 septiembre 2015

08 septiembre 2015

Compartiendo credenciales con Syspass




Siempre he dicho que el buen profesor es el que enseña, pero que a la vez se deja enseñar y aprende sus alumnos.

Fue en el curso de Hardening de sistemas Windows, Linux e Infraestructuras, en el que un grupo de alumnos de una empresa, me comentó si recomendaba algún gestor de contraseñas corporativo. Con la cantidad de servicios en la nube que existen hoy en día, y precisamente habiendo sido Lastpass comprometido hacía poco, mencioné que utilizaba KeePassX como herramienta para gestionar las inmanejables identidades digitales que utilizo diariamente.

Sin embargo, cuando de lo que se habla es de compartir contraseñas para acceso a diferentes sistemas entre un equipo de personas, se hace necesario alguna herramienta que permita acceso concurrente por varios usuarios. KeePassX funciona muy bien, pero cuando el fichero está abierto no permite interacción por múltiples usuarios a la vez. Aparte que sólo hay una contraseña que protege todo el contenedor cifrado y se tiene acceso a todas las credenciales.

Parece necesario entonces un sistema que permita garantizar la confidencialidad de los datos, el acceso concurrente, así como la granularidad suficiente para permitir sólo determinadas credenciales. Importante también que se pueda acceder a categorías y separar por clientes. Pues eso es SysPass

Se trata de una aplicación PHP, que almacena los datos en una base de datos MySQL. Como se puede ver en la Wiki es bastante sencilla la instalación, y muy intuitiva la configuración. 

El orden recomendado si pretendes crear contraseñas de uso compartido sería: Crear usuarios, crear clientes/categorías y luego crear cuentas. 

Tiene un interfaz muy intuitiva y agradable de usar, permitiendo generar contraseñas al propio sistema o introducir manualmente lo que queramos, así como dejar notas en un campo comentarios o incluso subir ficheros. Esto es útil para aquellas autenticaciones que requieran un keyfile o simplemente como repositorio de documentación sobre el servicio al que se va a acceder.  




Para crear la cuenta, hay que asignar un cliente al menos, y da la oportunidad de dar acceso a usuarios sueltos o a grupos. Por defecto, cuando un usuario pertenece a un grupo, tiene una serie de propiedades como poder crear nuevas cuentas, poder hacer cambios o que sea de sólo lectura, etc,... 

Al crear una cuenta se puede habilitar la edición a usuarios sueltos o grupos únicamente para esa credencial en concreto.

Tiene una variedad de opciones bastante rica, permitiéndote integrar la aplicación con un directorio de usuarios LDAP, para que los usuarios sean los que extraiga de un grupo por ejemplo.  

Trasteando por el código fuente, dí con una función que permitía importar credenciales desde KeePassX.

Para esto, hay que exportar el contenedor desde KeePassX a XML. Puede ser un engorro si sólo se quiere una categoría en concreto, porque la opción exportar, no he encontrado forma de hacer que sólo sea de un grupo.

Limpiando el XML a mano, para dejar únicamente lo que necesitas (en el XML todas las credenciales están en claro), la aplicación permite importarlas correctamente.


Lo que no me ha gustado 

Hasta aquí, la herramienta funciona muy bien. Hace lo que tiene que hacer con soltura y permite compartir las credenciales según se necesite. Sin embargo, ha habido un par de cosas que se pueden mejorar.

1.-) Las credenciales se almacenan en un MySQL. Si se analiza la tabla accounts, se pueden ver los diferentes campos. Obviamente, las mismas están cifradas y llevan un salt que se guarda en un fichero de configuración. Sin embargo, SOLO se cifra la contraseña, estando el resto de los datos, en claro. Esto es que el nombre de usuario, URL/IP, están en claro. Si alguien se hiciese con el acceso a esta tabla, tendría acceso a información que, aunque no sea completa, ya le da pistas de usuarios válidos en un sistema, y le permitiría hacer ataques de fuerza bruta o de diccionario.

2.-) La herramienta te permite hacer backups, generando un fichero .sql o .tar.gz, que contiene un mysqldump de la base de datos completa y los ficheros que conforman la aplicación web entera. Esto estaría bien, si el directorio desde el que se almacena esta información, y se guarda, no estuviese hardcodeado, y fuese $syspass_path/backup/sysPass_db.sql y sysPass.tar.gz porque cualquier atacante con acceso al servidor, podría llevarse la base de datos completa (con las contraseñas cifradas) y los ficheros de configuración. Para mi gusto, el directorio de backups, en caso que sea imprescindible, debería dejar ser personalizable, y el nombre de fichero aleatorio.

Esto se arregla rápidamente, a nivel servidor web, con un fichero .htaccess en el directorio backup, que permita requerir autenticación previa para poder acceder a esos ficheros.



En resumen...  


  • Me ha parecido fácil de usar, potente y que cumple con su objetivo
  • Integración con otras apps, tanto para importar como para administrar los usuarios con un servidor centralizado
  • Se pueden mejorar la seguridad de la aplicación, cifrando en base de datos, el nombre de usuario y la URL/IP... o ya puestos, todos los campos sensibles a nivel usuario.
  • Ya que está montada, le daremos una oportunidad en Securízame, para ver si la usabilidad es tan buena como me lo parece.





Leer más...

07 septiembre 2015

Curso Online de Hacking Ético

Hoy, Lunes 7 de Septiembre, comienza el período de inscripción para un nuevo Curso Online de Hacking Ético organizado por Securízame, y que contará con 3 de los editores del blog Security By Default como formadores.



La formación está orientada a auditores, administradores de sistemas y especialistas en el sector de seguridad con un conocimiento medio. Debido a que se comenzará con una introducción, el curso también es idóneo para todos aquellos que quieran iniciarse en el mundo del Hacking Ético, o que quieran enfocar su carrera profesional a esta disciplina.

Profesores Curso Online Hacking Ético
El curso cuenta con los siguientes profesores y módulos de 8 horas cada uno, haciendo un total de 56 horas:
  • Módulo I - OSINT (Juan Garrido @tr1ana)
  • Módulo II - Hacking web y de sistemas (Lorenzo Martínez @lawwait y Yago Jesús @yjesus)
  • Módulo III - Metasploit avanzado y post exploitation (Carlos Pérez @Carlos_Perez)
  • Módulo IV - Scapy y Python para pentesters (Daniel García @ggdaniel)
  • Módulo V - Hacking de tecnologías inalámbricas (Raúl Siles @raulsiles)
  • Módulo VI - Hacking web avanzado (José Antonio Guasch @secbydefault)
  • Módulo VII - Creación de malware, evasión, exfiltración de datos y canales encubiertos (Pedro Sánchez @conexioninversa)
Es posible registrarse tanto al curso completo como a módulos por separado o combinando unos módulos con otros. Además, es posible optar al curso completo en formato grupo con un máximo de 5 asistentes, teniendo así una rebaja considerable en el precio.

El curso se celebrará entre el 5 de Octubre y el 19 de Noviembre de 2015, pudiéndose registrarse entre hoy 7 de Septiembre y el 3 de Octubre a través del formulario que encontraréis al final de esta página.

Obtén más información referente al curso, módulos, biografía de los formadores, así como costes y medios de pago, en este enlace. Si estás interesado ¡date prisa! ¡Las plazas son limitadas!
Leer más...

04 septiembre 2015

SUIDGuard, extensión de seguridad para OSX

SUIDGuard es una extensión (modulo de kernel) de OSX Yosemite y que implementa varias mitigaciones genéricas en este sistema operativo.

El autor, Stefan Esser, es un hacker muy reputado por sus exploits para IOS y en el mundo del PHP, para el que creó un parche "Suhosin" que previene de las vulnerabilidades más típicas de este lenguaje.

En cuanto a SUIDGuarda, las protecciones  de las que dispone son:

  • Proteger los ficheros binarios SUID/SGID de las variables de entorno del tipo DYLD_ modificando la cadena de caracteres por XYLD. Por aclarar a los foráneos de OSX, estas variables son el dynamic linker, equivalente a las LD_PRELOAD del mundo Linux. Un exploit funcional (ya parcheado) lo creo el propio autor de esta herramienta. DYLD_PRINT_TO_FILE.
  • Proteger el flag O_APPEND para que no sea deshabilitado por otro usuario, este flag es generalmente utilizado por aplicaciones que almacenan registros y que cada vez que abren un manejador no sobreescriben su contenido.
  • Deshabilitar la ejecución de los binarios ejecutables sin segmento __PAGEZERO, que evitará un determinado tipo de exploits (kernel NULL derefs) como por ejemplo tpwn.
La forma más sencilla de instalar la extensión es descargar el paquete DMG disponible en su GitHub y ejecutarlo. Ya que al ser un módulo de kernel, si se compila, habrá que lidiar con la protección del propio sistema operativo para añadir módulos no firmados.

Una vez instalado, se puede comprobar con el comando "kextstat" y si detecta algún exploit aparecerá en el registro de "dmesg" una línea como la que se muestra en la imagen avisando de que ha neutralizado una ejecución.

Comprobación del funcionamiento de SUIDGuard.

Leer más...

03 septiembre 2015

30 Segundos Pwn - Jboss 4, 5 y 6.

Hace ya unos 7 años que existen herramientas automáticas para la explotación de servidores JBoss, incluso  metasploit tiene un módulo para la detección y explotación.

Pero siguen apareciendo scripts que automatizan el proceso de: acceder al /jmx-console (versión 4, 5 y 6), /web-console/Invoker (v4) o /invoker/JMXInvokerServle (v4 y v5) y desplegar un war que permita ejecutar comandos.

... Y pese a que es sencillo hacerlo manualmente, más sencillo es con una sola línea de comandos.

Incluso tras los gusanos e incidentes que han ocurrido en todo este tiempo, las probabilidades de encontrar un servidor con Jboss en una una red local es muy alta.

Para mi gusto la forma más sencilla  de buscar Jboss es el uso del parámetro -sV de Nmap e identificar aquellos que respondan con "Apache Tomcat/Coyote". Para vulnerabilidades concretas siempre se puede usar el correspondiente script, por ejemplo: http-vuln-cve2010-0738.nse, aunque no es el único CVE que existe y solo mostrará parte de la foto. Por supuesto, hay mil alternativas más, como cualquier herramienta de análisis de vulnerabilidades, metasploit, etc.

nmap en busca de jbosses perdidos.
Para explotarlas, una opción actualizada recientemente es "jexboss" que he probado en una CentOS 6 con Jboss 6 y ha funcionado tal y como se esperaba. Esta utilidad también es una de las muchas que hay como son jboss autopwn, los módulos del "hasta en la sopa" Metasploit o los scripts de redteam pentesting.

Dejo un par de capturas para ver su aspecto, que por cierto, no tiene paquete en Kali.

Jexboss explotando un jmx-console en Jboss 6

Comando "ps" ejecutado en la consola interactiva de jexboss

Referencias:

Leer más...

02 septiembre 2015

Cifrado de archivos en la nube

Hace ya algunos añitos que Yago comentaba en este mismo blog los mecanismos para cifrar archivos en tiempo real para posteriormente sincronizarlos con la nube.  Como el panorama ha cambiado un poco, me tomo la libertad de actualizar ese artículo con las últimas novedades y otros métodos alternativos.

Siempre teniendo en cuenta que la nube no existe, solo son los ordenadores de otras personas tal y como muestra la pegatina que acompaña la entrada. Así que si realmente no quieres que alguien obtenga tus ficheros, no uses nubes públicas y monta un owncloud, seafileSparkleShare o similares en tu propio servidor, lejos de las largas manos de los curiosos. Por supuesto, en el caso de estos productos, también se puede cifrar tal y como se describe a continuación. Si por pereza, coste, o porque realmente "las fotos del gato no son tan importantes" (y al final la clasificación del dato es lo realmente relevante), puedes asumir el riesgo utilizando servicios públicos como Dropbox, Google Drive, OneDrive o cualquier otro, y una de estas herramientas.

Boxcryptor: versión gratuita y comercial (36€/año), requiere crear una cuenta en su portal. En la versión gratuita solo permite usar dos dispositivos; un PC y un móvil por ejemplo. Tampoco permite el uso de distintos servicios simultáneamente. Es multiplataforma como casi todas las demás. La aplicación crea una unidad virtual, que permite acceder en tiempo real a los ficheros de las carpetas de la nube y cifrarlos o descifrarlos según nuestra necesidad. Los nombres de los ficheros no se ocultan. Soporta cifrar ficheros para grupos de usuario. La aplicación móvil solo permite acceder a los ficheros en modo lectura. También existe acceso a la versión classic, que si cifra los nombres de fichero, pero no permite seleccionar que se cifra y que no, simplemente, cifra todo.

Gestión de permisos de Boxcryptor
Cloudfogger: actualmente esta aplicación es gratuita y no tiene sistema de licenciamiento, aunque muy posiblemente lo implanten pronto. Limitan el uso de dispositivos a 5. Multiplataforma, con clientes para dispositivos móviles, Su principal problema es que no cifra el nombre del fichero y la aplicación móvil tampoco permite escribir. Requiere cuenta en su portal.

Panel principal de cloudfogger.

viivo:  creado por Pkware tiene una licencia de 5$ al mes y otra gratuita. Para Windows, Mac y IOS/Android. No cifra los nombres de ficheros. También permite compartir entre múltiples usuarios documentos cifrados. La versión comercial dispone de cifrado para móviles y dos factores de autenticación. Funciona de forma muy similar a cloudfogger, usando una carpeta directamente en el directorio sincronizado y de forma transparente para el cliente.

Viivo, configuración de carpetas.
Sookasa: licencia gratuita y profesional de 10$/mes, permite solo el uso de dropbox y google drive. Similar a las anteriores, no cifra los nombres de los ficheros. Para el usuario es transparente que se cifra. Soporte para Windows, OSX, Android e IOS. No limita el número de dispositivos en su versión gratuita, ni tampoco limita el de ficheros. Dispone de capacidades de auditoria en su versión comercial. La aplicación es muy (demasiado) sencilla.. Como en todas las demás, la app móvil no permite escribir en los directorios cifrados.

Sookasa: panel de preferencias.
SharedSafeno sé cómo se las han apañado para hacer algo que han mostrado tan sencillo todos los demás de una forma tan compleja que es necesario dedicarle 20 minutos a la aplicación para entenderla. Concepto completamente distinto al anterior, no es multiplataforma, no dispone de aplicaciones móviles... Bueno, en definitiva, tiene mucho margen para mejorar...

SharedSafe: configuración
EncFS MP: posiblemente una de las mejores alternativas. Es gratuita y multiplataforma. Se basa en lo mismo que las anteriores: referenciando una carpeta (que debe estar dentro de la carpeta sincronizada con la nube), cifra los archivos y sus nombres. Con el software y la contraseña se accede al contenido "montando" el directorio sobre una unidad virtual. Realmente es la actualización de EncFS. En Linux funciona perfectamente, otra cosa muy distinta es en Windows. Aunque existe compatibilidad, cuando se maneja un número muy alto de ficheros el rendimiento cae a niveles que deja de ser funcional. También tenemos que olvidarnos de plataformas móviles. No requiere darse de alta en ningún tercero.

EncFS MP
Truecrypt/LibreCrypt/VeraCrypt: Otra de las opciones más usadas y conocidas. No se basa en cifrar carpetas, lo hace mediante un único fichero (almacenado en el directorio sincronizado) que luego es montado en una unidad virtual. El inconveniente de esto es que dependiendo del software de almacenamiento hará una subida completa o parcial de este fichero cifrado cada vez que se añada contenido a él y y este fichero suele tener un tamaño muy elevado. Al fin y al cabo debe ocupar todo el espacio que deseemos tener libre en la unidad virtual una vez es montada.

Después de probarlas, no obtengo conclusiones claras ni un claro vencedor. En mi experiencia y durante el proceso me quedé con encfsmp, pero teniendo muy claro que tengo un límite de ficheros y que más de ese número, empezarán los problemas. Seguiremos viendo como evolucionan.


Leer más...