Menú principal

Mostrando entradas con la etiqueta Ruby. Mostrar todas las entradas
Mostrando entradas con la etiqueta Ruby. Mostrar todas las entradas

jueves, 13 de julio de 2017

Device Paired Tool: Desconecta tu iOS y elimina la confianza con el Mac

Hace unas semanas nuestro compañero Pablo González (@pablogonzalezpe) publicó un artículo sobre cómo detectar qué dispositivos iOS habían generado confianza en tu equipo, ya sea un Mac o un Windows. Este artículo fue publicado en el blog de Chema Alonso y recomendamos que le echéis un ojo. Además, Pablo generó un script escrito en Ruby con el que se puede obtener información de los dispositivos conectados, y con los que se generó confianza, como, por ejemplo, el UDID del dispositivo, la dirección MAC de la WiFi  y del Bluetooth.

Para los más afines a Metasploit, Pablo generó también un script de Meterpreter con el que, en una post-explotación, se pueda detectar y obtener esta información. En ElevenPaths no paramos de probar cosas, escenarios e innovar. Con la agilidad por bandera seguimos jugando con la tecnología y decidimos crear una herramienta para Windows y Mac, la cual está disponible en su sitio web, la cual se encargue de dos cosas:
  1. Poder ver qué dispositivos iOS se han conectado a la máquina y el usuario ha pulsado en "confiar" en el equipo. 
  2. Eliminar el fichero de confianza una vez que se desconecta el dispositivo.
Hoy queremos mostrar el uso de la herramienta y para ello mostramos como al instalar la herramienta se crea en nuestro panel superior del Mac el icono de Device Paired, tal y como se puede ver en la imagen.

Figura 1: Menú contextual de Device Paired

El funcionamiento es muy sencillo. En la imagen siguiente se puede ver como accedemos a un panel dónde nos aparecerán los dispositivos con los que el equipo tiene los "Trusted Files" o ficheros de confianza. El propio nombre de fichero nos indica el UDID, por lo que ya tenemos identificado el dispositivo. Además, se puede visualizar qué datos se puede obtener de ese fichero de confianza. En la parte de la derecha del panel encontramos la opción de "Eliminar", por lo que en cualquier momento se puede eliminar la confianza con un dispositivo antiguo o que estuviera de paso por el equipo.

Figura 2: Panel de administración de Device Paired

Una de las cosas que queríamos meter es usabilidad y comodidad por el usuario, por lo que una vez instalada la herramienta, la próxima vez que conectes y desconectes tu dispositivo iOS obtendrás un mensaje de la herramienta preguntándote si quieres eliminar de forma segura el fichero de confianza que tienes generado.

Figura 3: Mensaje al desconectar tu dispositivo iOS con el que has generado confianza

Para descargar esta herramienta puedes hacerlo desde el sitio web de ElevenPaths. Aprovecha para ojear otras pruebas de concepto y nuestras herramientas de laboratorio. El conocimiento al servicio del gran público.

lunes, 9 de mayo de 2016

Bloquear la WiFi con Latch desde OS X & Raspberry Pi (Parte I de II) #RaspBerryPi #WiFi #OSX #Latch

Uno de los plugins que participaron en el concurso de Latch era Lockifi, un plugin que permitía al usuario habilitar y deshabilitar el acceso WiFi en el router. El objetivo es claro, cuando no vaya a utilizar la WiFi restrinjo el tiempo de exposición y la deshabilitó de forma automática gracias a la autorización con Latch. La idea nos gustó y decidimos migrar este plugin a un sistema OS X. Al principio nuestra idea fue migrar el plugin, por ejemplo a un lenguaje como Ruby, y crear un ítem en el inicio de sesión del usuario para que la aplicación estuviera preguntando automáticamente al iniciar sesión por el estado de Latch.

Tras echarle un poco de tiempo obtuvimos un código en Ruby que realizaba la misma operación que Lockifi para Windows y preparamos el entorno para que autoarrancara. Aquí tenéis el vídeo de Lockifi para que veáis su propuesta. El código de este plugin está disponible en GitHub: Lockifi.

FIgura 1: Plugin Lockifi para Windows

Paso 0: El código

Como se ha mencionado esto es una migración del plugin Lockifi, escrito por Samuel Rodriguez. Migrar el código a otro lenguaje no era tarea difícil y decidí utilizar Ruby. El objetivo era que se ejcutara de forma sencilla en OS X. La versión de OS X utilizada en este artículo ha sido El Capitan. Para llevar a cabo la migración se ha utilizado tres archivos más el SDK de Latch para Ruby. Además, debemos disponer de una cuenta de Latch en el área de desarrolladores, lo cual es gratuito. Deberemos crearnos una app dentro del área de desarrolladores. Como se puede ver en la siguiente imagen creamos una app con el nombre Lockifi OS X.

Figura 2: Creación de App Lockifi OS X en el área de desarrolladores

Nos tenemos que fijar en dos valores de la app que se acaba de crear: el Application ID y el secret. Estos valores serán necesarios para que nuestra aplicación Ruby pueda comunicarse con Latch y nuestra cuenta de usuario. Pulsando el botón con el icono del lápiz se puede editar y visualizar estos dos parámetros.

Figura 3: VIsualización de Application ID y Secret

Los archivos son los siguientes:
  • main.rb. Este fichero se encarga de pedirnos un token para parear nuestra app de Latch con nuestra aplicación Ruby. El resultado que devolverá el main.rb es el Account ID. Este Account ID deberá ser utilizado también por nuestra aplicación Ruby para comunicarse con Latch. 
  • ssh_latches.rb. Este fichero implementa cuatro métodos que podrán ser utilizados para interactuar con Latch. El método status devolverá el estado de Latch pasándole el Account ID. El método pair nos facilita el pareo y será utilizado por main.rb. Esta clase se basa en el SDK de Latch para implementar sus métodos.
  • ssh.rb. Este fichero implementa la lógica que proponemos para cada X tiempo consultar el estado de Latch y en función de éste habilitar o deshabilitar la WiFi previa conexión al router. 
Paso 1: main.rb

En primer lugar hay que echar un vistazo al código del main.rb. El objetivo es sencillo, un pequeño programa que nos pida un token y haga el pair con la app de Latch. El resultado será el Account ID, si todo va bien.

Figura 5: Código de main.rb

El programa main necesita del Application ID y el Secret para poder llevar a cabo su acción de parear. El método pair está invocado a través del SDK de Latch. En la imagen se puede ver un pequeño ejemplo de su invocación. Al introducir el token que generamos desde Latch, main nos devolvería el Account ID que necesitaremos utilizar en ssh.rb.

Figura 6: Obtención del Account ID

Paso 2: Lógica de ssh.rb

El archivo ssh.rb implementa toda la lógica necesaria para llevar a cabo el control sobre la WiFi del router. La estrategia o algoritmo es sencilla. Mediante la realización de consultas periódicas al estado de nuestro Latch podremos detectar cuando éste ha cambiado de estado. En el momento que se detecte que se ha cerrado el Latch el fichero ssh.rb lanzará una conexión al router por medio del protocolo SSH y "tumbará" la interfaz. El algoritmo quedaría algo como así:

Mientras true
         Compruebo estado de Latch
         Si Latch está Abierto
                Indico que está abierto
                Levanto la interfaz WiFi del router
        Si no
                Indico que se cerrará 
                Apago interfaz WiFi del router
        Fin Si
Fin Mientras

Como se puede ver es un algoritmo realmente sencillo. Haciendo una pequeña prueba antes de crear una aplicación con Automator y configurarla para que arranque al inicio de sesión del usuario. Cuando abrimos el cerrojo de Latch en Lockifi OS X y visualizamos las peticiones que hace ssh.rb observaremos que nos indica "Open" y la WiFi seguirá operativa.

Figura 7: Lockifi OS X abierto

Para esta prueba hemos mostrado el texto en un terminal bash en OS X. El mensaje es claro, cuando comprueba el estado, cada 20 segundos por ejemplo, y detecta el cerrojo abierto nos indica "Open". Cuando cerramos el cerrojo y la aplicación detecta esto nos indicará "No Open" y llevará a cabo el proceso de deshabilitar la WiFi del router a través de una conexión SSH al dispositivo.

Figura 8: Mensajes que proporciona Lockifi OS X

Antes de pasar al siguiente paso, vamos a hacer hincapié en una zona del código de ssh.rb importante. Cuando se comprueba el estado de Latch y no se encuentra abierto nos iremos por la rama else de nuestro algoritmo. Esta parte es realmente la importante, la que deshabilitará a través del router la posibilidad de conectarnos a nuestra WiFi de casa u oficina.

Observando el código se ve que se crea un objeto SSH cuya configuración para la conexión es la dirección IP del router, el segundo parámetro es el usuario y el tercer parámetro es la contraseña. La conexión por SSH se lanza a través del método exec! y ejecuta un ifconfig para "tumbar" la interfaz WiFi. Hay que tener en cuenta que esto en otros modelos de routers puede cambiar, pero no la estrategia.

Figura 9: Snippet de código de ssh.rb que deshabilita el WiFi del router

Paso 3: Automatizando la ejecución del programa en OS X

Ahora que tenemos el programa funcional decidimos hacerlo autoejecutable al comienzo de la sesión del usuario. De este modo, cuando nuestro OS X inicie sesión podremos comprobar si queremos que la WiFi esté disponible para otros usuarios o no.

Para llevar a cabo esta tarea utilizamos Automator, el cual viene con OS X y permite automatizar tareas y flujos de trabajo de manera muy sencilla. El primer paso es arrancar la herramienta, la cual puede ser fácilmente localizada a través de Spotlight. Una vez arrancada debemos elegir, entre sus opciones, "Ejecutar el Script Shell". Esto nos abrirá un recuadro a la derecha dónde podremos escribir un script de shell, por ejemplo para bash.

Figura 10: Creando script de shell para automatizar con Automator

Es importante invocar, dentro del script de shell, a Ruby con su path completo. Una vez escrito el script se puede probar con el atajo CMD + R. Esto ejecutará el contenido del script. Ahora debemos convertir este script en una app. Para esto, Automator, proporciona la posibilidad de guardarlo directamente como una aplicación, tal y como puede verse en la siguiente imagen.

Figura 11: Creación de aplicación

Una vez creada la aplicación debemos ir a "Preferencias del sistema" -> "Usuarios" y en este apartado seleccionar "Ítems de Inicio". Aquí podremos añadir, fácilmente, la aplicación generada con Automator, tal y como se puede ver en la imagen.

Figura 12: Adición como Ítem de Inicio
Paso 4: Comprobación final

Ahora, solo falta comprobar que al iniciar sesión se está ejecutando nuestra aplicación correctamente. Para esta prueba dejamos el cerrojo abierto e iniciamos sesión en nuestro OS X. Si tenemos habilitado en nuestra aplicación de Latch que nos avise cuando haya un intento de acceso cuando el Latch esté abierto nos llegará una notificación, como la que se muestra a continuación.

Figura 13: Acceso al servicio Lockifi OS X

Para verificar que nuestra aplicación Ruby Lockifi OS X está corriendo, lo mejor es abrir un terminal en nuestro OS X y ejecutar, por ejemplo, ps aux | grep ruby. Debemos observar que la instrucción que introdujimos cuando creamos el script de shell con Automator se encuentra levantada. En este caso se puede ver de forma sencilla y nuestro programa está en ejecución y realizando consultas a Latch para comprobar si tiene que deshabilitar la WiFi o habilitarla.

Figura 14: Comprobación de proceso ssh.rb

En el siguiente artículo realizaremos modificaciones para integrar en casa una Raspberry que levante un punto de acceso WiFi. La Raspberry la conectaremos al router de casa mediante un cable Ethernet. Nuestro programa no se ejecutará en nuestro equipo, si no que se ejecutará en la Raspberry. Cuando desde la Raspberry nuestro programa detecte que se ha bloqueado el acceso a la WiFi "tirará" la interfaz WiFi. Lógicamente, el router de casa tendrá que tener deshabilitado la WiFi para que esto tenga sentido. El esquema es sencillo, los usuarios de casa se conectarán al punto de acceso de la Raspberry y está hará forwarding de paquetes hacia el router, el cual nunca tendrá habilitado la interfaz Wireless. Es un esquema con el que cualquier usuario de casa podría desbloquear y bloquear la WiFi con Latch y lo tienes publicado aquí: Bloquear la WiFi con Latch desde Raspberry Pi.

viernes, 6 de mayo de 2016

Instalador oficial de Metasploit en OS X ya disponible

El crecimiento y cuota de mercado de los equipos de Apple es innegable. La gente de Rapid7 ha decidido sacar un instalador oficial de Metasploit para los equipos de Apple. En su wiki de Github la gente de Rapid7 presenta el instalador oficial para OS X con unas breves y sencillas instrucciones. Se puede llevar a cabo una instalación rápida a través de consola o utilizar una instalación con entorno gráfico. Hay que recordar que un entorno de Metasploit tiene una fuerte dependencia de un entorno Ruby y PostreSQL para el almacenamiento de la información. 

Hace unos días pude ver la siguiente imagen en Twitter, esto es lo que me alertó de la novedad de los instaladores en OS X. Hay que tener en cuenta que hasta hace poco la instalación de Metasploit se realizaba de manera no oficial como ya vimos. Sin duda es un avance hacia la comodidad y el saber que Rapid7 se encuentra detrás del soporte en OS X ayuda. 

Figura 1: Tuit publicando el instalador oficial de Metasploit en OS X
La instalación rápida

La instalación rápida se lleva a cabo a través de la invocación o ejecución de un script proporcionado por Rapid7. Este script puede ser obtenido de la siguiente manera:
curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall && \ chmod 755 msfinstall && \ ./msfinstall  
La instalación gráfica

Por último, la instalación gráfica puede ser llevada a cabo a través de la descarga y ejecución del paquete metasploitframework-latest.pkg. El historial de estos paquetes se puede encontrar en el dominio que Rapid7 ha preparado para OS X. Con la instalación gráfica todas las dependencias se instalarán y se llevará a cabo una instalación sencilla y limpia. El framework quedará instalado en /opt/metasploit-framework/ y su binario de consola se encontrará en bin/msfconsole dentro del directorio anterior.

miércoles, 1 de julio de 2015

Cómo instalar Metasploit en OS X Mavericks

Homebrew permite al usuario de OS X instalar gran cantidad de paquetes que Apple no proporciona a sus usuarios. Para poder instalar Metasploit en OS X utilizaremos paquetes que podemos obtener con Homebrew de manera sencilla. Es importante que para llevar a cabo la instalación de Metasploit en OS X no se disponga de MacPorts instalado en el equipo, ya que seguramente se tenga problemas con ellos y las dependencias. La instalación de Metasploit puede resumirse en los siguientes pasos que se muestran a continuación:
  • Instalación de Command Line Development Tools Xcode 5 en Mavericks
  • Instalación de Java
  • Instalación de Homebrew
  • Instalación de Ruby 2.1
  • Instalación del escáner Nmap
  • Instalación de la base de datos de PostgreSQL y su configuración
  • Instalación de Metasploit Framework
Como se puede ver la lista de acciones a realizar es grande, pero si seguimos esto paso a paso no deberíamos tener problemas para instalar el framework en OS X Mavericks. En primer lugar hay que asegurarse de que se encuentran instaladas las Command Line Developer Tools y para ello se puede abrir un terminal y ejecutar la siguiente instrucción xcode-select –install, instalándose las herramientas automáticamente. 

Figura 1: Instalación de las Command Line Developer Tools

Hay que asegurarse de tener la última versión de Java, en este caso Java JDK 8. Esto puede ser descargado desde el sitio web de Oracle. Para asegurarse de que se tiene la versión adecuada se puede ejecutar en un terminal la siguiente instrucción java –version. Además, si se quiere comprobar dónde está instalado se puede utilizar el comando whereis.

Ahora, instalaremos Homebrew pudiéndose descargar desde su sitio web. En este punto, y tras instalar Homebrew hay que asegurarse de que los binarios instalados por éste son los primeros que se encuentran en la variable de entorno $PATH. Por ello se ejecutan las siguientes instrucciones echo PATH=/usr/local/bin:/usr/local/sbin:$PATH >> $HOME/.bash_profile; source $HOME/.bash_profile; brew tap homebrew/versions. 

Para instalar Ruby 2.1 utilizaremos Homebrew, y es tan sencillo como ejecutar la siguiente instrucción brew install homebrew/versions/ruby21. Una vez ejecutada la instrucción se comprueba la versión ejecutando la orden ruby –v en la terminal. Existen otras formas de instalar Ruby en OS X, pero quizá está es una de las más sencillas para los usuarios.

Para instalar Nmap también utilizaremos Homebrew. Con este proceso su instalación es trivial y muy rápida. La instrucción que debe ser ejecutada es brew install nmap en la terminal. Nmap puede ser utilizado desde la consola de Metasploit por lo que es importante su correcta instalación y Homebrew simplifica y mucho el proceso.

La instalación del motor de base de datos PostgreSQL y su configuración es un paso también crítico, ya que después será utilizado por la consola de Metasploit. La instalación se llevará a cabo desde Homebrew con la instrucción brew install postgresql –without-ossp-uuid. Una vez instalado se debe configurar. Para ello hay que inicializar el motor de base de datos con la siguiente instrucción initdb /usr/local/var/postgres. Para configurar PostgreSQL se lanzarán varias instrucciones cuyo objetivo es copiar una configuración al entorno de usuario. Las instrucciones son:
mkdir –p $HOME/Library/LaunchAgents
cp /usr/local/Cellar/postgresql/9.1.4/homebrew.mxcl.postgresql.plist $HOME/Library/LaunchAgents/
launchctl load –w $HOME/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
Una vez realizado esto debemos crear un usuario para la base de datos llamado msf que utilizaremos con Metasploit. Para realizar esto ejecutamos la instrucción createuser msf –P –h localhost. Además, se debe crear la base de datos con la instrucción createdb –O msf msf –h localhost.

Ahora toca descargarse el framework con Git. Para obtener la copia del repositorio ejecutaremos la instrucción git clone https://github.com/rapid7/metasploit-framework.git. En este punto ya estaríamos cerca de poder arrancar la consola de Metasploit. Creando el directorio /usr/local/share/metasploit-framework y copiando todo lo que se descarga desde Git podemos crear un enlace simbólico para poder utilizar día a día con facilidad Metasploit. Para todos los binarios que empiezan por msf* de la carpeta de Metasploit se hace un enlace simbólico a la ubicación /usr/local/bin y de este modo aparecen en $PATH y son fácilmente invocables. Una instrucción sencilla sería ejecutar lo siguiente for file in $(ls msf*); do ln –s /usr/local/share/metasploit-framework/$file /usr/local/bin/$file; done.

Ahora damos permisos al resto de usuarios de escritura sobre el fichero /etc/profile, por ejemplo con chmod go+w. Por último hay que configurar la base de datos para que se integre con Metasploit y para ello añadimos al fichero /etc/profile la siguiente instrucción sudo echo export MSF_DATABASE_CONFIG=/usr/local/share/metasploit-framework/config/database.yml >> /etc/profile.

Figura 2: Metasploit en OS X
Utilizamos bundle install para instalar las versiones de las gemas soportadas por el framework. Editamos el fichero /usr/local/share/metasploit-framework/config/database.yml con la siguiente información:
Production:

adapter: postgresql

database: msf

username:msf

password:

host: 127.0.0.1

port: 5432

pool: X (un número que se quiera dar, por ejemplo 75)

timeout: 5
Ejecutamos source /etc/profile y source $HOME/.bash_profile para que todo quede actualizado y podremos lanzar msfconsole. No es un proceso rápido y puede resultar costoso, pero disponer del framework de explotación de Metasploit en tu OS X Mavericks merece la pena.

Entrada destacada

Proteger tu cuenta de Google y de Gmail con Latch Cloud TOTP #Latch #Gmail #Google

La semana pasada se liberó la nueva versión de Latch y nuestro compañero Chema Alonso hizo un repaso de todo ello en su artículo Latch...

Otras historias relacionadas

Entradas populares