domingo, marzo 31, 2019

2FWB: Second Factor Web Browsing [Parte 1 de 4] "Second Channels"

Tengo la suerte de ser un "papaete" que tiene dos niñas que me vuelven loco. Son totalmente distintas, la mayor es "Mi Hacker" y la pequeña "Mi Survivor". Cada una es como es ella. No es fácil encontrar puntos en común en su forma de ver la vida, pero si hay algo que tienen las dos es que les encanta la tecnología.

Figura 1: 2FWB: Second Factor Web Browsing [Parte 1 de 4] "Second Channels"

Supongo que su "papaete" habrá tenido algo que culpa, y es que desde muy pequeñas las he expuesto a la tecnología, para que la vivan conmigo. Han estado en robótica y en tecnología desde que eran muy pequeñas. Scratch, Arduino, Lego Mindstorms, o lo que sea. Yo las apunto a cursos, seminarios, les compro libros de programación o simplemente les cuento cosas. Pero no solo eso, también las incito a hacer cosas conmigo en mi trabajo. Y les encanta.

Niñas y Tecnología

No intento que esta forma mía de vivir con mis salvajes deba ser la que se aplique con los niños y niñas. Esta es la forma en la que yo vivo la tecnología con Mi Hacker y Mi Survivor. Con Mi Hacker, en el año 2017, cuando aún no estaba lanzada AURA en ninguno de los países subimos juntos en el "Encuentro de Telefónica". Un acto privado con unas 1.000 personas donde ella hizo una demo completa guiada conmigo de cómo iba a funcionar AURA en la app móvil de Movistar+ en España.

Figura 2: Presentando Aura en Movistar+ en Noviembre de 2017 con Mi Survivor

Y con Mi Survivor, pues ya sabéis que rodé un pequeño anuncio el verano pasado con Movistar Home, dando rienda a su afición al Atlético de Madrid y jugando un rato con ella. Nos lo pasamos genial ese día, y se pasó dos días antes aprendiéndose las frases y repitiéndolas durante horas y horas a todo el que se acercaba.


Figura 3: Movistar Home y SuperCopa de Europa 2018

Y como os podéis imaginar, he estimulado mucho su interés por la tecnología, así que las preguntas que todo padre sufre, yo las tengo que debatir durante días y semanas con ellas. Preguntas que seguro que os suenan a la mayoría.
  • Papaete, ¿me dejas el móvil?
  • Papaete, quiero un iPhone.
  • Papaete, ¿puedo tener Musicali? Los grabo en privado. No, en borradores. Porfi, porfi.
  • Papaete, ¿por qué tu tienes Instagram y yo no puedo?
  • Papaete, no quiero Youtube Kids, quiero Youtube normal.
  • Papaete, ¿qué es esto de TikTok? ¿Y Crush?
  • Papaete, ¿puedo buscar en Internet una cosa del colegio?
  • Papaete, puedo bajar un jueguecito en el ordenador. Es gratis.
  • Papaete, ¿has visto a Momo? En el cole lo han visto todas las niñas…
Y claro, el verano pasado me tenían la cabeza llena de sus peticiones, así que decidí que tenía que hacer algo. Como todo buen investigador de seguridad me he pegado mucho con los ataques de red, y cuando estamos de viaje y hay que usar un ordenador, las redes WiFi me dan mucho miedo. Es lo que tiene haber estado criando y construyendo a nuestra querida Evil FOCA, o de jugar con los servidores Proxy. Ya sean por IPv4 o por IPv6, en cualquier red a la que te conectes puede aparecer un atacante.

Figura 4: Ataques en rede de datos IPv4&IPv6 con Evil FOCA en este libro.

Y como me tenía muy preocupado, empecé a pensar cómo podía vigilar sus conexiones mirando por encima del hombro todo lo que hacían pero sin estar. Y así fue como se me ocurrió esta idea del Second Factor Web Browsing (2FWB) que os voy a contar en esta serie, pero dejadme que lo haga uniendo los puntos de atrás adelante después de haberos explicado el punto de partida. La gracia es poder unir los puntos de cosas que vas dejando en el pasado para poder crear cosas nuevas en el futuro. Como lo que os cuento hoy.

Second Channels que no Side Channel

Recuerdo cuando llegó la primera vez que se me ocurrió empezar a utilizar un Second Channel en un producto. Era el año 2013 y acabamos de terminar nuestra primera patente de un producto que se llamaba en CodeName Path2. Era nuestra primera patente y estábamos construyendo el producto y todos los detalles del servicio que iba a proveer.

Ese Path2 se convirtió a la postre en Latch, y la pregunta que teníamos que resolver era... ¿cómo abrimos y cerramos el pestillo si estamos en una situación en la que no hay Internet? Las soluciones a estos problemas se suelen resolver con algoritmos TOTP generados en el end-point o generados en el bank-end y enviados por SMS, pero yo quería hacer algo distinto. Quería utilizar el canal SMS como si fuera un canal de comunicaciones y permitir que la app siguiere funcionando normalmente enviando "tramas" SMS.

En aquel entonces, haciendo lo que tiene que hacer un equipo de producto, decidimos quitar esa característica del roadmap principal y aceptar que no la teníamos para enfocar los recursos en partes del producto y servicio que consideramos más prioritarias en aquel en entonces.

Pero ni mucho menos se me olvidó.

Tiempo después empezamos a trabajar en la idea de ver cómo podrían funcionar las apps maliciosas en los Identity Providers de Internet para robar los Tokens OAuth y hacer ataques como el de RansomCloud lo que nos llevó a que hiciéramos nuestro querido y famoso SAPPO del que hablamos en la RootedCON 2016 y con el que nuestro amigo Kevin Mitnick asusta a los ejecutivos de todo el mundo en sus charlas.


Figura 5: Kevin Mitnick explicando Ransomcloud

Y fue con esa idea de hacer cosas con los Tokens OAuth la que volvió a tocar en mi cabeza la idea de los Second Channels. Lo que sucedió es que preparando la presentación del MWC de Febrero de 2017 fui a ver UNICEF en New York tras pasar a dar una pequeña charla en la Universidad de Columbia.

Allí nos estuvieron contando cómo el canal SMS era aún una poderosa herramienta para ellos porque en muchos de los países en los que trabajaban, o en muchas situaciones de emergencia, era el único canal de comunicaciones que existía. Inundaciones, corrimientos de tierra, situaciones de emergencia humanitaria por hambre o enfermedad, etcétera.


Y a la vuelta, junté a mi equipo de Ideas Locas y les dibujé un pequeño esquema de lo que íbamos a construir. Íbamos a hacer Pigram, nuestro sistema para comunicarse en redes sociales y correo electrónico por medio de un canal SMS y el uso de tokens OAuth.


Figura 7: SafePost, publica en Internet con canal SMS

Con el tiempo tuvimos que cambiar el nombre de Pigram a SafePost, por presiones ajenas que algún día os contaré, pero a día de hoy el servicio sigue estando activo y lanzado en varios países. Y lo más importante, decidimos estandarizarlo y crear un SDK para que cualquier app móvil pudiera utilizar el canal SMS para comunicarse. Hoy en día se llama Stack SMS y tenéis el paper, las herramientas y los vídeos explicativos públicos en la red.


Hicimos un juego de prueba con el ahorcado para explicar cómo podía utilizarse, pero durante la última Vuelta Ciclista a España, tras hacer una etapa con el Movistar Team, me di cuenta de que podíamos hacer un sistema de mensajería en grupo basado en Internet+Stack SMS que diera más velocidad y cobertura a las comunicaciones durante carrera por las zonas más inhóspitas de los países, y nació el juguete que enseñamos en Diciembre de 2018.


Figura 9: Movistar Team Chat Room con Stack SMS

Pero aún lo podíamos utilizar para muchas más cosas. El poder contar siempre con un Second Channel tan cómodo, accesible y común como el SMS nos abría muchas posibilidades, y cuando en este Mobile World Congress 2019 nos pidieron alguna charla de seguridad, mis compañeros del equipo de Ideas Locas crearon el IoT AntiDDOS SMS Shield, es decir, una solución de control remoto de dispositivos IoT que estuvieran siendo inhabilitados por un ataque de denegación de servicios.


Figura 10: IoT AntiDDOS SMS(GSM) Shield

Como podéis ver, la idea de utilizar Second Channels ha sido una constante durante los últimos años en nuestro equipo, así que no es raro que apareciera la idea de Second Factor Web Browsing (2FWB) que os voy a contar a continuación. Pero como ha quedado muy largo, dejadme que esto sea en la siguiente parte del artículo.

Saludos Malignos!

*****************************************************************************************
- 2FWB: Second Factor Web Browsing [Parte 1 de 4] "Second Channels"
- 2FWB: Second Factor Web Browsing [Parte 2 de 4] "Network Attacks"
- 2FWB: Second Factor Web Browsing [Parte 3 de 4] "2FWB Mobile App"
- 2FWB: Second Factor Web Browsing [Parte 4 de 4] "Modo Centinela"
*****************************************************************************************

sábado, marzo 30, 2019

3 Cursos online de Hacking en Abril, 2 eventos de Big Data esta semana y 1 libro de Arduino para Hackers ya. #Arduino #hacking #pentest

Ayer no me dio la vida para sacaros el post del blog, pero tenía que pasarme por el Equinox de Telefónica, preparar las diapositivas de la RootedCON para luego dar la charla y firmar los libros y hacerme las fotos con todos los que os pasasteis por el sitio de 0xWord. Hoy no me toca pasar por allí, pero os dejo por aquí las próximas citas.

Figura 1: 3 Cursos online de Hacking en Abril, 2 eventos de Big Data
esta semana y 1 libro de Arduino para Hackers ya

Como pone en el título son tres cursos online de hacking para el mes de abril, y dos conferencias de Big Data que tendrán lugar esta semana que entra. Yo, a partir de mañana mismo, os paso a desgranar todos los detalles de la charla que di en la RootedCON con la idea de 2FWB (Second Factor Web Browsing) que conté. Hoy podéis disfrutar de la sesión de mis compañeros Pablo González y Enrique Blanco en la RootedCON en la que van a jugar un poco conmigo (ahí lo dejo).

Figura 2: Second Factor Web Browsing en la RootedCON

Y antes de que me olvide, el libro de Arduino para Hackers: PoCs & Hacks Just for Fun está ya disponible para compra online en la web de 0xWord. Aquí tienes el enlace.

Figura 3: Libro de Arduino para Hackers: PoCs & Hacks Just for Fun

11 de Abril: Curso de Hacking Ético Experto [Online]
Este día comienza la formación más larga de The Security Sentinel, que con 240 horas de formación prepara a los alumnos para comenzar a trabajar de forma profesional en el mundo del pentesting y el Ethical Hacking. Es una buena opción para hacer a tu ritmo y desde tu casa durante varios meses si estás trabajando ya en algo y lo que deseas es explorar un cambio al mundo de la seguridad informática.
Figura 4: Curso de Hacking Ético nivel Experto Online
Tienes todos los contenidos, los módulos y la metodología en la web del curso. Además, todos los alumnos recibirán gratis el libro de Pentesting con PowerShell que escribió nuestro compañero Pablo González en 0xWord.
Figura 5: Libro de Pentesting con PowerShell en 0xWord

18 de Abril: Hacking con Python [Online
Este curso te proporciona los conocimientos necesarios a nivel conceptual y práctico para que puedas programar en Python para el desarrollo de Auditorías de Pentesting basadas en este lenguaje. Es un curso de 90 horas de duración sobre programación en Python pero orientado a personas que quieran enfocar su carrera profesional como pentesters. No es necesario tener conocimientos previos del lenguaje ni de programación.
Figura 6: Curso Online de Hacking con Python

Con este curso, podrás realizar, sin problemas, auditorías de seguridad con su correspondiente informe. Este curso se ha definido en un 75% de práctica y 25 % de teoría, lo que te facilitará mucho el aprendizaje y el aprovechamiento máximo de conocimientos. Tienes toda la info en la web del curso. Además, todos los alumnos recibirán el libro de Hacking con Python de 0xWord.
Figura 7: Libro de Hacking con Python
25 de Abril: Hacking Ético [Online]
Este curso te proporciona los conocimientos necesarios a nivel conceptual y práctico para que puedas implementar en empresas y negocios, un sistema Integral de Seguridad Informática integral y perimetral, apoyado por el uso de Software Libre. Desarrollarás y adquirirás habilidades prácticas para la realización de auditorías de sistemas, usando las técnicas de la Auditoria de T.I del tipo “Hacking Ético y/o Test de Penetración”. 
Figura 8: Curso Online de Hacking Ético
Conocerás los diferentes tipos de atacantes, así como a usar las diferentes técnicas y herramientas de intrusión utilizadas por los delincuentes informáticos para lograr violentar la seguridad de un sistema de información. Con este curso, podrás realizar sin problemas auditorías de Pentesting con su correspondiente informe profesional, además de conocer los métodos utilizados por los delincuentes cibernéticos para poder contrarrestar sus ataques. Tienes todos los detalles en la web de este Curso Online de Hacking Ético.
Este curso se ha definido con un 75% de práctica y un 25 % de teoría, lo que te facilitará mucho el aprendizaje y el aprovechamiento máximo de conocimientos. Ayuda a orientar las auditorias intrusivas haciendo uso de las normas y buenas prácticas en seguridad de la información a nivel internacional y permite aprender las técnicas de ataque y protección de las redes inalámbricas y las aplicaciones web dinámicas. El objetivo final es formar auditores técnicos e integrales en  seguridad informática.
Figura 9: Libros de Metasploit para Pentesters y Ethical Hacking
Este curso entrega a todos los asistentes de forma gratuita los libros de Ethical Hacking y de Metasploit para Pentesters [4ª Edición] de 0xWord, además de que puedes apuntarte a este curso la versión VBook de Ethical Hacking.
  04 de Abril: Meetup Big Data & AI for Social Good 2019 [Madrid]
El Big Data y la Inteligencia Artificial generan no solo oportunidades de negocio, también existen oportunidades para atacar los grandes problemas de nuestros planeta, reflejado en los 17 Objetivos de Desarrollo Sostenible de la ONU. En este Meetup presentaremos dos proyectos super interesantes de cómo el Big Data y la IA están al servicio de las personas a través mapas de migraciones forzosas o la predicción de accidentes de tráfico. Más info:
Figura 10: Big Data & AI for Social Good

04 de Abril: I Congreso Big Data [Alcoy]

El Congreso Big Data Alcoy pretende ser un foro profesional, en el que se presenten de forma práctica los avances en torno al uso de Big Data, aplicados a inteligencia artificial, tratamiento de leads y gestión smart de territorios. Mario Romero, Head of Business Development de LUCA, participará como ponente en una de las mesas redondas sobre la aplicación del Big Data en la estrategia empresarial, una ocasión única para obtener una visión completa de la aplicación del análisis de datos en las empresas, requisito imprescindible para lograr la adaptación de los negocios a la necesaria transformación digital. Más información en la web:
Figura 11: I Congreso Big Data Alcoy

Y esto es todo por hoy, así que ahora a continuar con la RootedCON los que estáis en ella en Madrid, y el resto a aprovechar el fin de semana.

Saludos Malignos!

jueves, marzo 28, 2019

Mañana en exclusiva en la RootedCON libro de: Arduino para Hackers: PoCs & Hacks Just for Fun de @0xWord

No ha dado tiempo ni a ponerlo en la tienda online de 0xWord porque se ha forzado la máquina para que el libro de "Arduino para Hackers: PoCs and Hacks Just for Fun", estuviera a tiempo para la RootedCON, y parecía que no iba a poder ser, pero... al final ha habido suerte.

Figura 1: Mañana en exclusiva en la RootedCON libro de:
Arduino para Hackers: PoCs & Hacks Just for Fun de 0xWord

Mañana por la tarde, sin que esté aún disponible en la tienda de 0xWord, estará en el stand de 0xWord en la RootedCON el nuevo libro de nuestra colección. El libro de "Arduino para hackers: PoCs and Hacks Just for Fun", que la semana siguiente estará disponible en la tienda online.

Figura 2: Libro de "Arduino para Hackers: PoCs & Hacks Just for Fun"

El libro lleva explicados en detalles muchos proyectos con Arduino para que sobre ellos se puedan construir nuevas ideas, usando como esqueleto estos mismos que hemos construido nosotros previamente. Es el texto de los proyectos que están en el Vídeo Book de mismo título del que os hablé tiempo atrás "Arduino para Hackers: PoCs and Hacks".

Figura 3: Contraportada y Sinopsis del libro de "Arduino para Hackers"



Así, podrás conseguir cualquier material de nuestra pequeña editorial, además de llevarte el nuevo libro de Arduino, y las firmas de todos los autores que estamos por allí. Nos vemos, un año más, en la RootedCON, y espero que os guste la charla que tengo preparada.... si acabo de prepararla a tiempo.

Saludos Malignos!

miércoles, marzo 27, 2019

Kubernetes: Cómo gestionar autorización de recursos con RBAC (Parte 1) #docker #kubernetes

El Control de Acceso Basado en Roles (Role Based Access Control - RBAC), es uno de los mecanismos que nos ofrece Kubernetes a la hora de autorizar el acceso a sus recursos (pods, nodos, secretos, etcétera). Éste es de hecho el mecanismo de autorización más usado (disponible en versión estable desde la versión 1.8 de Kubernetes).

Figura 1: Kubernetes: Cómo gestionar autorización de recursos con RBAC (Parte 1)

Prácticamente toda interacción con los recursos se realiza a través de su servidor API, lo que implica, que al final todo se limita a hacer peticiones HTTP a dicho servidor (componente esencial del nodo/s maestro o Control Panel). Para hablar de autorización basada en roles, lo primero es hablar de los roles en sí. Vamos a ello.

Roles en Kubernetes

En Kubernetes existen dos tipos llamados Role y ClusterRole. La mayor diferencia entre ambos es que Role pertenece a un nombre de espacio con concreto, mientras que el ClusterRole es global al clúster. Por lo que, en el caso de ClusterRole, su nombre debe ser único ya que pertenece al clúster. En el caso del Role, dos espacios de nombre distintos pueden tener un Role con el mismo nombre.

Otra de las diferencias que cabe mencionar, es que Role permite dar acceso a recursos que están dentro del mismo espacio de nombres, mientras que ClusterRole, además de poder dar acceso a recursos en cualquier espacio de nombres, también puede dar a acceso a recursos del clúster, como nodos entre otros.

Figura 2: Arquitectura de Kubernetes

Ahora que sabemos los tipos de roles, lo siguiente es saber quién le podemos asignar dichos roles. En este caso tenemos: cuentas de usuario, cuentas de servicio y grupos. Las cuentas de usuarios, como puedes imaginar son cuentas asignadas a un usuario en particular, mientras que las cuentas de servicios son usadas por procesos. Por ejemplo, imagina que nuestra aplicación necesita acceder de forma programática a recursos del clúster, para ello usaríamos una cuenta de servicio.

Por último, necesitamos el "pegamento" que enlace un role a una cuenta (de usuario o servicio) o grupo. Para ello existen dos recursos en Kubernetes: RoleBinding y ClusterRoleBinding. RoleBinding puede referenciar un role que esté en el mismo espacio de nombres, mientras que ClusterRoleBinding puede referenciar a cualquier role en cualquier espacio de nombres y asignar permisos de forma global.

RBAC en Minikube

Una vez hemos visto todos elementos que entran en juego en el campo del RBAC, veamos algunos ejemplos. Para estos, vamos a usar minikube. Asegúrate que RBAC está habilitado, para ello puedes arrancar minikube con el siguiente comando:

Figura 3: Arrancando minikube

Vamos a crear dos usuarios: cybercaronte y tuxotron, ambos pertenecientes a un grupo llamado developers.

1.- Creamos los certificados para cada usuario:
    mkdir ~/certs && cd ~/certs
2.- Creamos la clave y petición de firma para cybercaronte
    openssl genrsa -out cybercaronte.key 2048
    openssl req -new -key cybercaronte.key -out cybercaronte.csr -subj "/CN=cybercaronte/O=developers"
3.- Creamos la clave y petición de firma para tuxotron
    openssl genrsa -out tuxotron.key 2048
    openssl req -new -key tuxotron.key -out tuxotron.csr -subj "/CN=tuxotron/O=developers"
4.- Creamos los certificados para ambos usuarios
Si tienes instalado minikube en un directorio distinto de ~/.minikube, ajusta el comando
    openssl x509 -req -in cybercaronte.csr -CA ~/.minikube/ca.crt -CAkey ~/.minikube/ca.key -CAcreateserial -out cybercaronte.crt -days 90
    openssl x509 -req -in tuxotron.csr -CA ~/.minikube/ca.crt -CAkey ~/.minikube/ca.key -CAcreateserial -out tuxotron.crt -days 90
Ya tenemos creado los certificados para ambos usuarios, lo siguiente sería:

5.- Creamos los propios usuarios en nuestro clúster (minikube):
    kubectl config set-credentials cybercaronte --client-certificate=cybercaronte.crt --client-key=cybercaronte.key
    kubectl config set-credentials tuxotron --client-certificate=tuxotron.crt --client-key=tuxotron.key
Para poder crear usuarios tenemos que ser administradores del clúster. Cuando arrancamos minikube por defecto somos administradores, por eso podemos ejecutar los dos comandos anteriores.

Puedes comprobar que dichos usuarios han sido creados con el siguiente comando:
    kubectl config view
O bien, puedes imprimir el contenido del fichero ~/.kube/config
    cat ~/.kube/config
En ambos casos deberías ver los usuarios cybercaronte y tuxotron. Para ejecutar comandos con un usuario u otro, tenemos que decírselo a kubectl a través del contexto. Para ello vamos a añadir dos contextos nuevos, uno para cada usuario.

6.- Creamos dos contextos nuevos:
    kubectl config set-context cybercaronte --cluster=minikube --user=cybercaronte
    kubectl config set-context tuxotron --cluster=minikube --user=tuxotron
Para ver los contextos que tenemos, podemos ejecutar:
kubectl config get-contexts

    CURRENT        NAME       CLUSTER         AUTHINFO    NAMESPACE
     cybercaronte   minikube   cybercaronte
    *minikube       minikube   minikube
     tuxotron       minikube   tuxotron
Como vemos tenemos tres contextos, los dos que acabamos de crear, más minikube, que es al que nos da acceso como administrador al clúster. Además, éste es actualmente el contexto activo, denotado por el asterisco.

7.- Cambiamos de contexto:

Para cambiar de contexto, es decir, para cambiar de usuario y/o clúster (podemos trabajar con varios clústers a la vez), podemos hacerlo con el siguiente comando:
    kubectl config use-context tuxotron
Para comprobar que el contexto ha sido cambiado, o bien ejecutamos el comando `kubectl config get-contexts` y buscamos la entrada con el asterisco:
    kubectl config current-context
Hasta ahora todo lo que hemos hecho es crear dos usuarios, pero no le hemos dado ningún permiso. Por lo que, si intentamos acceder a cualquier recurso, la petición debería ser denegada. Como nuestro contexto actual es tuxotron, intentemos leer los pods del espacio de nombres default y veremos el error:
    kubectl get pods -n default                                                                                                   
    Error from server (Forbidden): pods is forbidden: User "tuxotron" cannot list resource "pods" in API group "" in the namespace "default"
Volvamos a usar nuestro contexto minikube para poder realizar algunas tareas administrativas:
    kubectl config use-context minikube
8.- Creamos espacios de nombres:

Vamos a crear 3 espacios de nombres, uno personal para cada usuario y un tercero al cual llamaremos equipo, en el que ambos usuarios podrán interactuar con recursos:
    kubectl create namespace cybercaronte
    kubectl create namespace tuxotron
    kubectl create namespace equipo
Para comprobar que nuestros espacios de nombres han sido creados:
    kubectl get namespace

    NAME             STATUS     AGE
    cybercaronte    Active    14m
    default        Active    17h
    equipo          Active    14m
    kube-public     Active    17h
    kube-system     Active    17h
    tuxotron        Active    14m
Hasta aquí la primera parte de nuestro artículo, continúa en la segunda parte para que terminemos de jugar con RBAC en Kubernetes.


Figura 4: Kubernetes: Cómo gestionar autorización de recursos con RBAC [Parte 1]

En el vídeo que te dejamos por aquí, tienes el proceso completo de lo que hemos hecho hasta ahora en esta fase de aprender a utilizar RBAC.

Más información

Recuerda que en nuestro libro “Docker:SecDevOps” (que escribimos junto a Elías Grande), aunque no hablamos expresamente de Kubernetes, sí que lo hacemos de Docker Swarm y los conceptos generales de clústers en Docker. Pero, sobre todo, el libro aclara muchos conceptos de Docker básicos y está enfocado a la seguridad de sus componentes así como al SecDevOps.

Figura 5: Libro de Docker: SecDevOps en 0xWord

Os dejo por aquí también algunas de las referencias que tenemos sobre Docker escritas ya en este blog, para que tengáis toda la información disponible y accesible.

[BlogPost] SecDevOps: Una explicación en 5 minutos (o poco más)
[BlogPost] Cómo montar un entorno de pentesting desde cero en Docker
[BlogPost] SuperLatch Docker: Integrar Latch con Docker y Kubernetes en tus apps
[BlogPost] Docker Distroless Images: Cómo crear imágenes Docker sin SO ni shell
[BlogPost] Dagda Docker Security Suite: Auditoría de seguridad en aplicaciones dockerizadas
[BlogPost] Docker de My WordPress in Paranoid Mode
[BlogPost] Docker de My WordPress in Paranoid Mode (WPM): "The Making of"
[BlogPost] Hacking Kubernetes: Auditoría de seguridad y explotación de vulnerabilidades
[BlogPost] Kubernetes: Cómo gestionar autorización de recursos con RBAC

Por cierto, tanto Rafael Troncoso como yo mismo (Fran Ramírez), estaremos esta semana en la RootedCon por si queréis hablar un rato con nosotros sobre Docker o Microhistorias, estaremos más que encantados de firmar cualquiera de nuestros libros (“Docker: SecDevOps” y “Microhistorias: Anécdotas y curiosidades de la informática (y los hackers)”).

Fran Ramírez, (@cyberhadesblog) es investigador de seguridad y miembro del equipo de Ideas Locas en CDO en Telefónica, co-autor del libro "Microhistorias: Anécdotas y Curiosidades de la historia de la informática (y los hackers)", del libro "Docker: SecDevOps" y del blog Cyberhades.

Rafael Troncoso (@tuxotron) es Senior Software Engineer en SAP Concur, co-autor del libro "Microhistorias: Anécdotas y Curiosidades de la historia de la informática (y los hackers)", del libro "Docker: SecDevOps" y del blog Cyberhades.

martes, marzo 26, 2019

The Dirt: Dirty Business Card Reader Curricula Module

Hace un tiempo habló Chema Alonso en este blog del proyecto del equipo de Ideas Locas llamado Dirty Business Card y de cómo sacar información pública en Internet a partir de una tarjeta de visita usando OSINT y algún info-leak. A día dese  sigue dotando a la herramienta de nueva funcionalidad, y como ya es por todos hacer un poco de Hacking con Buscadores permite extraer información con gran facilidad.

Figura 1: The Dirty: Dirty Business Card Reader Curricula Module

En el artículo de hoy os vengo a hablar de cómo estamos dotando a Dirty Business Card de la capacidad de conseguir el currículo de aquellas personas que lo tengan público en la red usando Google. Estas mismas técnicas se pueden - y se deberían - aplicar también usando otros buscadores como Bing o DuckDuckGo.

Figura 2: Libro Hacking con Buscadores 3ª Edición.
Un auténtico clásico para entender OSINT


El proyecto de Dirty Business Card ya cuenta con la búsqueda de información estructura de los curricula usando LinkedIN, pero en este caso queríamos ir a la búsqueda no estructurada de CV que se haya creado en documentos ofimáticos.

Google Hacking para búsqueda de Curricula

Encontrar un Curriculum Vitae nos puede ayudar a encontrar información muy relevante acerca de una persona, como su número de teléfono, su dirección de e-mail personal o dirección postal de residencia. Para llevar a cabo esta tarea, utilizaremos algo de Google Dorks. En la red tenemos muchos idiomas, y como hablamos de información no estructurada, cada CV puede contener un formato diferente, y como es lógico las palabras clave a buscar cambiaran. Veamos un ejemplo en inglés y español.

Ejemplo de búsqueda en inglés

“phone * * *” “address *” “e-mail” intitle:”curriculum vitae”

Como veis, tenemos más de 62.000 resultados, algunos de ellos serán falsos positivos. Muy lejos de los millones de resultados que puede tener un LinkedIN, pero puede que aparezca información muy jugosa.

Figura 3: Búsqueda de CVs en Inglés

Además, nos puede interesar buscar una determinada persona, para ello basta con añadir el nombre y/o apellido que venga en la Business Card a la búsqueda (no olvides las comillas), o filtrar por algún dato que ya tengamos como el número de teléfono o una dirección de correo electrónico.

Ejemplo de búsqueda en español

“teléfono * * *” “dirección *” “e-mail” intitle:”curriculum vitae”

En esta ocasión recibimos menos resultados, pero 18.900, que no es poco. Al igual que en el ejemplo de inglés podemos añadir los datos de la persona buscada en Dirty Business Card, a ver si hay suerte.

Figura 4: Currículos devueltos por la búsqueda

Estas búsquedas son ejemplos, es posible obtener otra consulta con más resultados (mejores o peores), todo es probar y variar la búsqueda, se puede cambiar phone por telephone, por poner un ejemplo.

Dirty Business Card Reader

La herramienta para el backend utiliza el Framework Flask (Python), para las peticiones hacemos uso de requests y para parsear los resultados beautifulsoup. En la parte frontend del proyecto se hace uso de Angular, una tecnología que utilizamos en muchos proyectos en nuestra unidad CDO.

Figura 5: Libro de desarrollo en Angular en 0xWord

El funcionamiento general de Dirty Business Card Reader ya lo habéis visto en el vídeo. Se escanea una tarjeta de visita y el sistema va buscando toda la información que se puede extraer de los datos que van en ella. Aquí tenéis un vídeo de su funcionamiento.

Figura 6: Dirty Business Card Reader

Dentro de Dirty Business Card Reader, se busca a través del nombre y apellidos por posibles CV que encuentra Google, y devolvemos un gráfico con las posibilidades (se ha limitado la información que se devuelve para este ejemplo).

Figura 7: A partir de la Business Card se han encontrado 2 CV en Google

Vemos que a través del nombre se ha encontrado el CV en Internet, y tiene dos posibles resultados. Si pasamos el ratón por encima, se puede ver la URL. Esta es la forma más visual, pero a la hora de trabajar es más fácil el acceso a formato texto, para ello tenemos los resultados en un listado (URLs editadas para eliminar información sobre la persona de ejemplo).

Figura 8: URLs de los CV encontrados

Si vistamos cualquiera de los dos enlaces obtenidos por la herramienta, podemos verificar que se trata de un CV, y que pertenece a la persona indicada (por motivos de privacidad se ha omitido). Nada rocket-science, solo más información que se extrae de tu Business Card si no tienes controlada la información que llevas en ella.

Figura 9: CV encontrado con Dirty Business Card Reader

Según el lado de donde miremos, Google puede ser nuestro mejor aliado, o convertirse en nuestro peor enemigo. Conclusión, controla lo que compartes en Internet, no dejes información sensible accesible al mundo.

¡Hasta pronto!

Autor: Josué Encinar García (@JosueEncinar), autor del blog BoomerNiX y Security Researcher en el equipo de Ideas Locas de la unidad CDO de Telefónica.

lunes, marzo 25, 2019

Pentesting con PowerShell: Powershell Transcription, Constrained Language y otras medidas de protección en un Ethical Hacking

En el blog hemos hablado de diferentes cosas relacionadas con el pentesting con Powershell. Ya hemos hablado sobre la protección de AMSI y las necesidades de hacer un bypass cuando uno está haciendo Ethical Hacking, sobretodo si hay sistemas Windows 10 por medio. Como nota dejar por aquí una charla y presentación de BlackHat de años anteriores donde se presentaban formas de saltarse AMSI, recomendable su lectura.

Figura 1: Pentesting con PowerShell: Powershell Transcription,
Constrained Language y otras medidas de protección en un Ethical Hacking

El martes 26 daré un RootedLab sobre PowerShell y sus posibilidades ofensivas en un pentest. Los asistentes tendrán un cupón descuento para libros míos de 0xWord. Hoy, quería hablaros sobre las posibilidades de defensa que Powershell ha empezado a tener, ya que no todo es ataque para eso ya tenéis el libro de Pentesting con Powershell 2ª Edición.

Figura 2: Pentesting con Powershell 2ª Edición

Por supuesto, y como digo siempre, cuando sale una protección o una forma de restringir acciones, se investiga la forma de saltarse esa protección. Es una acción natural que ayuda a mejorar la solvencia y potencia de la protección. El juego del gato y del ratón, así que vamos a ver cómo hacer algo de lo que trata el libro de mi compañero Sergio de los Santos, aplicar políticas para alcanzar la "Máxima Seguridad en Windows"

Política de ejecución

La política de ejecución de scripts de Powershell es un concepto que está presenta desde hace mucho tiempo, desde las primeras versiones de Powershell. El objetivo inicial era marca qué se podía ejecutar y en qué ámbito. Un ejemplo sencillo es visualizar lo siguiente:
  • Restricted: Política restringida, no se puede ejecutar ningún script de Powershell a través de dicho proceso.
  • Unrestricted: Política totalmente no restringida. Se puede ejecutar cualquier script en Powershell.
  • RemoteSigned: Se puede ejecutar solo scripts creados localmente y si son remotos o descargados, solo si están firmados.
  • Signed: Se pueden ejecutar scripts solo si están firmados.
Aparecieron más políticas y se fue perdiendo el foco. Por ejemplo, hay una política que es ‘Bypass’.

Figura 3: Powershell.exe -Exec Bypass

Con esta política se puede ejecutar un proceso de Powershell, donde el usuario puede ejecutar scripts, simplemente arrancando el proceso con dicha política, por ejemplo: powershell.exe –Bypass.

Constrained Language

Una de las evoluciones para evitar ciertas acciones ‘maliciosas’ fue la llamada Constrained Language o modo de lenguaje restringido. La idea que radica detrás de este modo es poder utilizar o dar soporte a las tareas administrativas del día a día y restringir el acceso a la parte sensible del lenguaje de Powershell. Ese lenguaje que puede ser utilizado para invocar APIs de Windows orientadas a otro tipo de tareas, no tan administrativas.

Aquí tenemos una nueva protección, por lo que tenemos a gente buscando la posibilidad de saltar la protección. ¿El resultado? La mejora de la solución de protección, si se tiene en cuenta que hay vías de saltarla.

Figura 4: Deteccion del tipo de lenguaje

Para ver el tipo de lenguaje que tenemos se puede ejecutar $ExecutionContext.SessionState.LanguageMode. Si el modo de lenguaje se encuentra en Constrained, estaremos ante el modo de lenguaje restringido. Si el sistema base tiene Powershell versión 2, se puede hacer un bypass del CLM, ya que el modo Constrained aparece en la versión 3 de Powershell.

Figura 5: Constrained no está en v2

En Windows 10, desaparece la posibilidad, por defecto, de utilizar Powershell versión 2, por lo que se evita este bypass y debemos ir a otras opciones. Por ejemplo, se puede utilizar PSBypassCLM, una herramienta que permite hacer ese bypass.

Powershell Transcription

No todo es protección directa. En muchas ocasiones nos interesa saber qué es lo que está ocurriendo en el sistema y tener un buen sistema de logging es fundamental. En el caso de Powershell, éste ha ido evolucionando y mejorando. Hay varias opciones:
  • Module Logging.
  • Script Block Logging.
  • Powershell Transcription.
Las tres opciones son funcionalidades para registrar acciones que ocurren a través de Powershell. Module Logging registra el uso de módulos, mientras que la segunda es capaz de registrar comandos, bloques de script o script-block, etcétera. La tercera es una de las más interesantes, ya que registra el input y output de la sesión con Powershell.

¿Dónde se activa esto?

Tenemos que abrir el binario mmc.exe, la consola de gestión de Windows, y añadir un nuevo complemento. El complemento es el objeto de políticas locales. Debemos ir a la parte de “Computer Configuration -> Windows Components -> Windows Powershell”.

Figura 6: Opciones de PowerShell en mmc.exe

Para habilitar Powershell Transcription se debe entrar en la configuración y habilitarla. Es importante seleccionar el directorio donde se quiere almacenar el fichero con los inputs y outputs generados por cualquier usuario a través de una Powershell.

Como se puede ver en la imagen siguiente, el proceso es sencillo y a partir de este momento se dispone de un sistema que registra cualquier acción sobre la Powershell. Esto permitirá, en la mayoría de los casos, registrar acciones sobre lo que hacen los usuarios y poder estudiar y detectar alguna acción “extraña” o alguna ejecución maliciosa.

Figura 7: Política para logging de inputs & outputs en Powershell

Para este ejemplo, podemos ver como el fichero de texto ha registrado las acciones de entrada y salida dentro de una Powershell. Lo que el usuario ejecutó y el resultado que éste obtuvo. Esto ayuda a un administrador a entender bien el entorno en el que se han estado moviendo los usuarios.

Figura 8: registro de acciones

Es importante conocer las defensas de Powershell para poder llevar a cabo la parte ofensiva, sin duda. Microsoft proporciona diferentes medidas de protección, en busca de un entorno lo más seguro posible. Sin duda, es interesante conocer, tanto la parte defensiva como la ofensiva, si te dedicas al pentesting. Powershell sigue evolucionando de la mano de Microsoft.

Autor: Pablo González Pérez (@pablogonzalezpe), escritor de los libros "Metasploit para Pentesters", "Hacking con Metasploit: Advanced Pentesting" "Hacking Windows", "Ethical Hacking", "Got Root" y “Pentesting con Powershell”, Microsoft MVP en Seguridad y Security Researcher en el equipo de "Ideas Locas" de la unidad CDO de Telefónica.