sábado, julio 21, 2018

Motivación e Inspiración

A veces, cuando voy en un tren, o en un avión en un viaje, me paro a pensar en las cosas que tengo que hacer. Normalmente, las cosas que tengo que hacer son acciones motivadas por las cosas que quiero hacer. Las metas que me he auto-impuesto. Los objetivos que me he marcado conseguir. Los lugares a dónde quiero llegar con un proyecto o una idea. Es algo que llevo haciendo años.

Figura 1: Motivación e Inspiración

Esta forma de hacer las cosas es la misma que llevo haciendo años. Creo que desde que aquel día llegué con las manos ensangrentadas por las esquirlas de ladrillo tosco que se me metían en los guantes cuando trabajé de albañil aquel verano. Cuando regresé aquel día me prometí que mis manos no volverían a estar ensangrentadas para ganarme la vida, ni mi cabeza encerrada en algo que no me permitiera hacer cosas.

Lo peor en aquel trabajo no era el calor, o el miedo a caerse al bajar una rampa de lo que sería en el futuro una escalera entre un cuarto y un quinto piso sin protección más que una cinta de aviso cargando puntales. Lo peor era tener la mente llena de ideas y no poder hacerlas. Lo sentí como una cárcel. La prisión donde metieron mi mente durante un tiempo.

Recuerdo que leía libros a la hora del bocadillo o la hora de la comida. Era mi forma de huir de allí. La forma de que mi mente no estuviera encarcelada en aquella obra de pisos del barrio de Tetuán en Madrid en la que estuve trabajando. 

Con el paso de los años, he tenido muy claro que aquellas gotas de sangre, al igual que los "pitos" (dolor en los dedos por haberte lijado la piel de los dedos al golpear la lija contra un borde) que me salían en las manos de mis veranos de barnizador lijando cercos de puertas, o los dolores en mi espalda por cargar sacos de temple o botes de pintura plástica en mis años de pintor, me dieron una motivación extra para luchar por las cosas que quería hacer.

Pintar un piso, barnizar puertas, o poner paredes de ladrillo tosco no eran los objetivos que me había marcado en mi vida. Quería hacer muchas cosas, y no eran esas.

Hoy han pasado más de veinte años desde aquellos días. Después de esas aventuras en el mundo de la construcción, comencé a dar clases particulares con dieciocho años, y a sacar mis estudios adelante. Daba entre 4 y 8 horas de clases particulares todos los días y luego sacaba mis estudios. Esa fue mi rutina durante los tres años que estuve haciendo mi Ingeniería Técnica de Informática de Sistemas. Y eran tiempos geniales. Duros, intensos, y geniales.

Mis días se llenaban con las horas de clases, las horas de estudio, los ratos leyendo mientras sacaba a mi viejo perrito a la calle y nos sentábamos a disfrutar yo de la lectura y él del aire, y por último, el café con Rodol hablando de sueños. De hackers, de juegos, de tecnología, de programación, de modems, de Internet. Ayudar a los estudiantes que tenía en mis clases, la lectura de libros, los estudios de informática y los cafés con Rodol eran mi motivación para hacer cosas.

Fueron años maravillosos. Con horarios cronometrados al minuto, pero llenos de vida en mi cabeza. La cabeza que estaba libre para hacer cosas. Para crear cosas. Para planear sueños y compartirlos con Rodol. Él tenía los suyos, y compartirlos era motivador. "¿Te imaginas Rodol que un día hacemos...?"

E hicimos. Claro que hicimos. Hicimos muchas cosas. Y hacemos. Aún hacemos muchas cosas. Hicimos Informática 64, 0xWord, ElevenPaths, Aura, Movistar Home, libros, herramientas de hacking, estudios, papers, PoCs, Hacks, trabajamos con amigos, conocimos gente nueva, ampliamos nuestra vida, viajamos por el mundo - cada uno dónde quiso, que a él le gusta la aventura, y a mi por aventura me viene solo "¿habrá churros en el desayuno?".  

Aún recuerdo el juramento que nos hicimos en la cafetería de la flecha, cuando diseñamos el logo de Informática 64 en una servilleta y él me dijo que nunca montaría una empresa, que era una locura. Nos prometimos que nos íbamos a divertir con lo que hiciéramos, y que sería para que en el fondo, pudiéramos tener una vida mejor que la que, por destino, nos había tocado.

Han pasado muchos años, veinte desde aquel juramento de amigos, cuando estábamos pensando en montar nuestra empresa. Hemos hecho muchas cosas juntos y separados. He visto más mundo del que soñaba. He conocido a más gente de la que imaginé. Volví a hacer todo lo que no pude hacer de joven. Acabar mi Ingeniería Superior de Informática, mi Máster y mi Doctorado, pero también sacarme el carné de moto, aprender inglés y transformar la vida de amigos y compañeros. Ira Defcon y BlackHat, hacerme un sitio en lo que me gustaba. Jugar con la tecnología y volver a jugar con ella.

Suelo decir muchas veces, que tengo la sensación de haber acabado varias vidas. La académica, la profesional, la familiar, la de pirata por los mares del sur navegando por el mundo y la de intelectual leído y aburrido. Ha ido a centenares de conciertos, y he volado miles de kilómetros para volver a lomos del Dragón Matías para recoger besos y abrazos pequeñitos.

Y aún, antes de irme a la cama una noche pienso: "¿Qué tengo que hacer mañana?". Y miro mi blog, y miro mi calendario, y anoto las nuevas ideas. Y llego el lunes a la oficina y me siento con Pablo González para repasar alguna nueva, y molesto a Antonio Vila que está desarrollando un sistema de seguridad para una red mundial con un nuevo Hack. Y me siento un minuto con Victor Mundilla para decirle que no me gusta el color de un interfaz y que la idea que me ha pasado nueva de Faast me mola cantidad, y busco a Igor o a Rodol, y les doy un abrazo porque después de veinte años están ahí, cerca de mí. 

Y me levanto un sábado, como hoy, después de haber estado viajando una semana entera, con Jet Lag, pensando en qué voy a postear hoy en mi blog. Con qué os voy a intentar informar, entretener, enseñar, o simplemente qué voy a compartir con vosotros, que estás leyendo este artículo un día más. Algunos lleváis años leyendo ya este blog.

Al final, la motivación y la inspiración la tengo en lo que hago, no lo que he hecho. No se trata de llegar a ningún sitio. Yo ya sé cuál es el final del camino hace mucho tiempo. Se trata de lo que hago cada día. De cómo lo hago. De lo que me permite que mi mente esté libre. Que se cumpla aquel juramento que nos hicimos Rodol y yo. Y vosotros, sois parte de eso. Venir a este blog con regularidad es parte de mi motivación e inspiración para seguir disfrutando de lo que hago. Doy gracias por ello.

Saludos Malignos!

viernes, julio 20, 2018

Google Hacking sobre Trello para buscar usuarios y passwords de WordPress o Paypal

Haciendo uso de consultas basadas en parámetros de búsqueda sencillos, se puede obtener una gran cantidad de información relevante que, en principio, podría ser difícil de recopilar mediante las búsquedas habituales que se suelen hacer en los principales motores de búsqueda (por ejemplo, Google, Bing o Shodan).  Es el arte del Hacking con Buscadores, donde apuntando a los keywords adecuados, puede obtenerse información privada que no ha sido convenientemente protegida en algunos servicios.

Figura 1: Google Hacking sobre Trello para buscar usuarios y passwords de WordPress o Paypal

Son muchos los artículos en los que haciendo Hacking con Buscadores se puede sacar información muy delicada de las páginas indexadas o cacheadas en los motores de búsqueda, como fue el caso de Evernote o los leaks de sitios como la web de WhtasApp o de Faeebook. Esta técnica que vamos a ver hoy, que como veremos ahora nos ofrecerá una gran cantidad de información, es sólo una de las muchas posibles de las que disponemos para realizar hacking con buscadores, a través de las cuales se podrían realizar búsquedas automáticas que facilitarían una futura intrusión.

Figura 2: Hacking con Buscadores

Es por ello por lo que es conveniente conocerse los pormenores de los motores de búsqueda - tal y como se cuentan en el libro de Hacking con Buscadores - y conocerse cosas como el truco de la barra en Google o la búsqueda en el índice secundario, o el funcionamiento de los modificadores de cada uno de los motores como Bing.  Son muchos los artículos en los que se ha hablado de esto en este blog, y puedes leer algunos artículos publicados con anterioridad:
Hacking con buscadores en los repositorios Open Source 
10 motivos por los que debes pensar en hacer Bing Hacking 
Sacándole más partido a BING Hacking con Contains 
Cómo las invitaciones a grupos de WhatsApp filtradas en Internet afectan a tu Privacidad 
Hundir la flota por computador: Fallos de seguridad en miles de barcos navegando por el mundo.
Google Hacking en Trello

Recientemente nos topamos con un artículo que revelaba la posibilidad de encontrar información sensible de usuarios que hacían uso de la SaaS app Trello - muy similar al ejemplo de Google Hacking con Evernote - en aquellos boards que estaban configurados como públicos.

Esta vulnerabilidad se descubrió haciendo uso de Google Hacking, un método de ataque pasivo también conocido como Google Dorking, que nos permite obtener desde nombres de usuario y contraseñas hasta listas de emails, documentos con información sensible, información fiscal de personas o vulnerabilidades de sitios web susceptible de ser usada para actividades ilegales o no lícitas.

La sintaxis más básica  comúnmente usada en un Google Dork query que nos permite restringir una búsqueda incluye los siguientes parámetros:
inurl: seguido por una url, hacia donde apuntamos la búsqueda.

intext: seguido por un string, para quedarnos sólo con aquellos resultados que contengan esa palabra.
 
site: concatenado por un dominio, al que se restringe la búsqueda. 
filetype: especifica la extensión de ficheros en las que estamos interesados (i.e., .doc, .docx, .pdf., .xls, .xlsx… Se puede extender la búsqueda dentro de un mismo query a varios formatos separando las extensiones con “|”.
Un query de este tipo presentaría una estructura similar a la siguiente:
inurl:[target_url] AND intext:[target_text_1] AND intext:[target_text_2] AND filetype:[filetype_target] …
Quisimos probar si, tras habérsele notificado el descubrimiento de la vulnerabilidad a Trello hace ya dos meses, habían puesto algún remedio el filtrado de información. Para nuestra sorpresa, la información sensible seguía disponible en aquellos tablones que fueron creados como públicos. Comenzamos a hacer pruebas rápidas con queries muy simples. En sólo diez minutos, pudimos ver la ingente cantidad de información que actualmente hay disponible en los tablones públicos de Trello.

No sólo teníamos visibilidad de credenciales de acceso a cuentas de todo tipo, sino que también teníamos visibilidad total de todas las publicaciones, conversaciones, ficheros adjuntados dentro de cada tablón y usuarios que conformaban el tablón. Nos encontramos con múltiples tablones creados por empleados de empresas donde se intercambiaban información sensible relativa a los proyectos en los que estaban involucrados.

Algunas muestras de los criterios de búsqueda usados y evidencias de los resultados obtenidos se muestran a continuación:
• Para buscar por usuarios y contraseñas de correos electrónicos almacenados en los tablones públicos de Trello: 
inurl:https://trello.com AND intext:@gmail.com AND intext:password
Figura 4: Credenciales de acceso a WordPress disponibles en un tablón público de Trello
inurl:https://trello.com AND intext:@yahoo.com AND intext:password
Como podéis observar en la figura anterior, con sólo apuntar a los dominios de correo más usados, y sin necesidad de refinar mucho la búsqueda, somos capaces de obtener credenciales de accesos no sólo a los mails de ese dominio, sino también a otras plataformas como Wordpress.
• Para tener visibilidad de información sensible de acceso a cuentas de PayPal:
inurl:https://trello.com AND intext:paypal AND intext:password
Figura 5: Usuarios y contraseñas de PayPal al descubierto en tablones públicos de Trello
• Si lo que queremos es encontrar credenciales de acceso a cuentas de redes sociales como Twitter, Instagram o Facebook, basta con una mínima modificación del query: 
inurl:https://trello.com AND intext:twitter AND intext:password 
inurl:https://trello.com AND intext:instagram AND intext:password 
inurl:https://trello.com AND intext:facebook AND intext:password
Este post debe servir para concienciar sobre la importancia de educar a los usuarios a gestionar de manera adecuada cómo almacenar (o no almacenar) información sensible. No sólo las credenciales deben ser gestionadas de manera adecuada, ser lo suficientemente complejas y modificarse con cierta frecuencia; además, la información que intercambiemos con otras personas debe transcurrir a través de canales lo más seguros posibles.


Figura 6: Cómo proteger cuentas de WordPress con Latch en 10 minutos

Además de las prácticas comunes para garantizar la seguridad de tus cuentas, recomendamos hacer uso de segundos factores de autenticación como Latch o Latch Cloud TOTP para protegerte de accesos no autorizados tanto en los ejemplos de WordPress o PayPal usands aquí como de tus redes sociales. Podéis encontrar en los siguientes artículos algunos ejemplos de cómo aplicar este segundo factor de autenticación basado en el uso de sistemas TOTP (Time One-Time Password):
Cómo proteger tu cuenta de Paypal con Latch Cloud TOTP
Cómo proteger tu cuenta de Twitter con Latch Cloud TOTP 
Latch Cloud TOTP en Facebook sin SMS ni número de Teléfono 
Cómo proteger WordPress con Latch  
Autor: Enrique Blanco (@eblanco_h) es Investigador en el departamento de Ideas Locas CDO de Telefónica

jueves, julio 19, 2018

Cupón Verano 10 % descuento en @0xWord

Como todos los veranos, tenemos que cerrar la editorial de 0xWord durante el mes de Agosto, pero antes de que llegue ese días os vamos a dejar la oportunidad de tomar provisiones con todos el material que queráis utilizando un cupón descuento del 10% para este verano.

Figura 1: Cupón Verano 10 % descuento en 0xWord

El cupón que puedes utilizar en las compras es VERANO2018 y estará disponible desde las 00:00 del día 19 de Julio de 2018 hasta las 23:59:59 del día 26 de Julio. Después, se procesarán los pedidos y 0xWord cerrará para hacer inventario y preparar el nuevo año.

Máster de Ciberseguridad de 0xWord

Para que os sea mucho más fácil elegir los libros, hemos hecho unos nuevos packs y hemos trabajo en organizarlos en un orden lógico de aprendizaje, tal como si estuvieras haciendo un máster de especialización en Seguridad Informática, Pentesting y Hacking en tres niveles. Para que sea más fácil de entender hemos hecho esta infografía.


Todos los packs que están en la infografía los tienes disponibles en la zona de Packs de la web de 0xWord, así que puedes utilizar el código de descuento para ir completando tu camino de formación. En otro post os desgranaré cada pack del máster que hemos diseñado, para que entendáis por qué está diseñado así.

Saludos Malignos!

miércoles, julio 18, 2018

Más seminarios en vídeo de ElevenPaths & LUCA D3 disponibles en Youtube @elevenpaths @luca_d3

Desde casi el comienzo, las unidades de ElevenPaths y LUCA tienes seminarios online en los que se explican conceptos que tienen que ver con Ciberseguridad, Big Data o Inteligenica Artifical. En el caso de ElevenPaths tenemos las Talks y las CodeTalks for Devs, y para los temas de BigData o AI las LUCA Talks. Todas ellas quedan disponibles en los canales de Youtube de sendas unidades, a saber: Canal de Youtube de ElevenPaths y Canal de Youtube de LUCA.

Figura 1: Más seminarios en vídeo de ElevenPaths & LUCA D3 disponibles en Youtube

Hoy os dejo aquí las últimas que han grabado nuestros compañeros, junto con una nueva sección del blog Data-Speaks de LUCA, dedicada a explicar los conceptos con Vídeo Posts. Os los dejo todos por aquí por si os son de interés los temas.


Figura 2: Vídeo Post "¿Qué es la Inteligencia Artificial?" 


Figura 3: ElevenPaths Talks 4 "¿Cómo protegerme en la nube?" 


Figura 4: LUCA Talk 16 "Cómo implementar Big Data en la empresa"


Figura 5: LUCA Talk 17 "Six challenges for AI sustainability

Saludos Malignos!

martes, julio 17, 2018

ibombshell 0.0.1b en GitHub con bypass UAC incorporado: Environment Injection en Windows 10

Recientemente se ha liberado ibombShell 0.0.1 beta en el Github de ElevenPaths, una prueba de concepto que hemos trabajado en "Ideas Locas", en colaboración con mi compañero Álvaro Nuñez. En el propio repositorio de Github se puede encontrar un fichero de Docker con el que se puede automatizar el despliegue de lo necesario para el modo Silentlty. El modo Everywhere es el más sencillo, ya que solo requiere de una Powershell y de un Copy and Paste de una línea a ejecutar.

Figura 1: ibombshell 0.0.1b en GitHub con bypass UAC incorporado
"Environment Injection en Windows 10"

Ya hemos hablado del uso básico de la herramienta, pero ahora podéis probarla, hacer un pull request con vuestras mejoras, proponernos mejoras y darnos feedback a través del propio repositorio o utilizando la comunidad de ElevenPaths. Incluso, os hemos enseñado cómo se puede hacer un módulo de manera sencilla para el modo Silently, escrito en Python. En el último artículo de ibombshell en ell blog de ElevenPaths tienes una recopilación de estos trabajos.

Figura 2: iBombShell en GitHub

Hoy quería hablar de que la prueba de concepto está disponible y que iremos añadiendo nuevas funcionalidades, nuevas funciones y nuevos módulos con el paso del tiempo. Uno de los objetivos de ibombshell es que dispongas de un gran número de posibilidades en un Ethical Hacking sin necesidad de descargar nada, por lo que iremos añadiendo funciones al repositorio con el objetivo de que el día de mañana las tengáis. Cuando ejecutéis un showcommands irán apareciendo nuevas funciones o cuando arranquéis el c2 de ibombshell en Python veréis nuevos módulos.

Figura 3: Módulo de bypass UAC en ibombshell

Por supuesto, iremos documentando las nuevas cosas que vayamos incluyendo o, al menos, la gran mayoría, dentro del poco tiempo del que se suele disponer. El proyecto acaba de nacer y queremos dotarle de lo más básico para que la prueba de concepto se convierta en una herramienta útil en el día a día del pentester.

Integrando el bypass UAC en ibombshell

Hace ya un tiempo hablé sobre un bypass de UAC basado en la inyección en las variables de entorno. Hoy tenemos disponible una función en ibombshell everywhere que implementa este bypass proporcionando una ibombshell ejecutada en un contexto de integridad alto. Además, hemos implementado el módulo para ibombshell en modo Silently. Lo interesante de este bypass es que afectaba a los sistemas Windows 10, por lo que es un bypass muy interesante.

En este artículo se habló sobre el funcionamiento del bypass, el cual es bastante sencillo. Se genera en la rama del registro HKCU:\Environment un valor llamado windir y cuando las tareas, que se ejecutan en un contexto de integridad alto, son lanzadas éstas sustituyen el valor de %windir% por el valor creado en el registro. Es decir, hay una inyección. Esto se aprovechaba para lograr ejecutar código en un contexto alto. En otras palabras, podemos hacer que una ibombshell se ejecute en el contexto que mejor nos viene. Éste es el vídeo del bypass tal y como lo explotamos en el artículo citado y ahora vamos a ver cómo hacer el bypass de UAC con ibombshell.


Figura 4: Bypass de UAC en Windows 10 con Environment Variables in Scheduled Tasks

Lo primero es comprobar cómo podemos ejecutar y lograr el bypass. Si analizamos en qué consiste el bypass vemos que son dos pasos. El primero es crear la entrada de registro, o modificar, que nos conviene para lograr la inyección. En este caso el valor windir. Para ello, podemos utilizar el cmdlet New-ItemProperty de Powershell con el que indicando el parámetro name, path y value lograríamos esto. En la imagen se puede ver.

Figura 5: Parámetros en Powershell para el bypass UAC

Después del cmdlet New-ItemProperty se debe lanzar la tarea que es ejecutada en un contexto de integridad alto y que utilizará el %windir%. Hay que notar que la inyección acaba con un “&& REM” para concatenar un comentario a todo lo que está a la derecha de la inyección y que no se rompa la ejecución.

En la imagen de la Figura 5, podemos que la función console, el prompt de ibombshell, es ejecutado con el modo Silentlty, pero si en vez de eso, invocamos solamente console veríamos algo similar a esto que hay en la imagen siguiente.

Figura 6: Ejecución sin modo Silently

Como se puede ver obtenemos una cmd dónde se ejecuta una Powershell y dentro nuestra ibombshell en un contexto de integridad algo, gracias al bypass de UAC. Con el programa ProcessExplorer se puede observar el nivel de integridad en el que se ejecuta un proceso y aquí se puede ver de forma sencilla. En este instante si se quisiera hacer una acción privilegiada se podría.

Figura 7: Nivel de integridad alto en Process Explorer

Si queremos ejecutarlo en modo Silently dejaríamos la función console como venía en una de las imágenes anteriores, es decir, console –silently –uriConsole [URI]. Antes de nada, hay que configurar el listener para que se quede a la escucha. Para ello, se accede a la carpeta ibombshell c2 del repositorio y se ejecuta el fichero ibombshell.py. Una vez hecho esto, cargamos el listener y ejecutamos con run.

Debemos recordar que para hacer el bypass de UAC tenemos que tener un warrior previo conectado en un nivel de integridad medio, que el usuario propietario del proceso sea del grupo administradores y que la política de UAC esté por defecto.

Figura 8: Warrior conectado al listener

Cuando se ejecuta el módulo del bypass UAC del tipo environment injection se obtiene un nuevo warrior. Este warrior se ejecuta en un contexto de integridad alto, por lo que tenemos privilegio y podemos realizar cualquier acción. En el siguiente video se puede ver un ejemplo de lo que hemos ido comentando.


Figura 9: iBombShell Windows 10 UAC Bypass

En esta imagen se puede ver la ejecución del warrior, si estuviera visible y cómo se conecta con el listener. Por pantalla no sale nada, pero se puede ver en el título de la ventana como se está realizando la ejecución de ibombshell. Si se pudiera ver el resto de la instrucción en el título de la ventana se vería la ejecución de console –silentlty –uriConsole [URI].

Figura 10: ibombshell en ejecución

Por último, dejamos un vídeo sobre el uso de la nueva función en el modo ibombshell everywhere. En el video se puede ver como se descarga directamente a memoria el prompt de ibombshell y después se descarga la función del bypass directamente a memoria.

Figura 11: ibombshell en modo everywhere

Seguiremos trabajando en añadir funcionalidades y módulos a este proyecto que acabamos de arrancar. Recuerda probarlo, darnos feedback y hacer tus pull request. Este es solo ‘the first boom’.
Autor: Pablo González Pérez (@pablogonzalezpe), escritor de los libros "Metasploit para Pentesters", "Hacking con Metasploit: Advance Pentesting" "Hacking Windows", "Ethical Hacking", "Got Root" y “Pentesting con Powershell”, Microsoft MVP en Seguridad y Security Researcher en ElevenPaths

lunes, julio 16, 2018

CodeTalk for Developers de Evil FOCA, Entiéndeme tú a mí y un Curso Online

Normalmente los fines de semana os suelo dejar la agenda de actividades de la semana, pero ayer, después de disfrutar el sábado del concierto de los Iron Maiden, me pasé el día entero viajando para venir a participar esta semana en el Microsoft Inspire en Las Vegas. En este evento, hay varias charlas en las que se va a hablar de Aura y Movistar Home, así que me he venido a estar aquí ayudando en la preparación de las charlas.

Figura 1: CodeTalk for Developers de Evil FOCA, Entiéndeme tú a mí y un Curso Online

Pero mientras tanto, hay algunas citas que tienen lugar esta semana en otras partes, así que os las dejo rápidamente. Probablemente yo, después de que esta semana cierre asuntos antes varios, después cortaré definitivamente la publicación de artículos en El lado del mal durante algunas semanas, que este año quiero tomarme un tiempo de relax total.

La "agendita" de esta semana

La primera cita es la última fecha que tiene la obra de teatro de Entiéndeme tú a mí en el Teatro Lara de Madrid, antes de que se vaya de gira. Las entradas las puedes comprar online, y echarte unas risas este día 17 de Julio en Madrid.

Figura 2: 17 de Julio Entiéndeme tú a mí en Madrid

La segunda de las citas es una CodeTalk for Developers dedicada a la Evil FOCA OpenSource, que impartirán mis compañeros de ElevenPaths. Una oportunidad para conocer más de cómo se amplían las funcionalidades de Evil FOCA con nuevos plugins. Tienes más info en la web de la charla.
Por último, el día 20 de Julio, para terminar la semana dará comiendo el Curso Online de Hacking Ético que impartirán nuestros compañeros de The Security Sentinel. En él, además de tratar los temas avanzados del trabajo de pentesting, se entregará como material de estudio que complementa las 180 horas que tiene el curso, el libro de 0xWord dedicado al Pentesting con PowerShell. Más información en la web del curso.

Figura 4: Curso Online de Hacking Ético

Y esto es todo, que no es mucho, pero es que estamos llegando a finales de Julio. Como la próxima semana no habrá muchas citas, os dejo por aquí el único evento que tengo en el radar para ella. Será el día 24 de Julio en Chile, y nuestro compañeros Gabriel Bergel estará allí. Es el CyberSecurity Day 2018. Más info en la web del evento.

Saludos Malignos!

sábado, julio 14, 2018

Docker de My WordPress In Paranoid Mode (WPM): "The making of" (Parte 2 de 2)

En esta parte continuamos el trabajo que sigue a lo que hemos visto en la primera parte de este artículo sobre cómo hemos dockerizado WodPresss in Paranoid Mode. Una vez ya tenemos preparados los ficheros Dockerfile es el momento de preparar el fichero Docker Compose, el cual es el encargado de montar todo el sistema.

Figura 9: Docker de My WordPress In Paranoid Mode (WPM): "The making of" (Parte 2 de 2)

Vamos a echar antes un vistazo al código de este fichero llamado docker-compose.yml. Aquí es donde se produce toda la magia de Docker. Este fichero compose se ha realizado utilizando la versión 2.0. Se pueden observar dos etiquetas principales llamadas services y volumes. En la primera, services, se definen los contenedores con sus aplicaciones o servicios, así como las variables necesarias para su configuración.

Figura 10: Contenido del fichero Docker-Compose del proyecto WPM.

La etiqueta volumes indica el nombre del volumen principal donde se crearán los espacios de almacenamiento de cada contenedor. En services se han definido dos, uno llamado db (para MySQL) y otro wordpress (para WordPress).

El servicio que crea el contenedor db de MySQL en la línea 5 le asignamos un nombre para poder tenerlo identificado en todo momento y evitar utilizar nombre aleatorios definidos por Docker. Lo mismo ocurre con el contenedor para Wordpress, en la línea 20 se le asigna el nombre wpm.

Cuando lo tengamos todo en ejecución, si utilizamos el comando:
docker container ls
Este comando nos mostrará la siguiente salida, en la cual tendremos identificado en todo momento el contenedor que corresponde a cada servicio (marcado en rojo en la imagen inferior):

Figura 11: Listado de contenedores en ejecución y sus nombres

Las imágenes resultantes de la creación de los contenedores tendrán los nombres mysqllatch (para MySQL) y wplatch (para WordPress). Estos nombres se asignan en las líneas 6 y 24 del fichero docker-compose. Centrándonos en el contenedor db de MySQL, además de asignar un nombre de la imagen que se generará a partir de estos, también se define la ubicación de los mismos, en este caso en la carpeta ./db (línea 7, comando build). El siguiente paso, línea 8 y 9, será asignar el volumen. Para ello se indica primero el volumen principal y luego la ruta de la aplicación.

El comando de la línea 10 simplemente nos asegura que el contenedor se ejecutará cada vez que lo haga el host. Finalmente, tenemos la parte de asignación de variables de entorno. En este caso se definen las variables correspondientes a los parámetros necesarios para la creación de la base de datos y añadimos también dos para asignar los valores de las key de la aplicación WPM que previamente hemos creado desde nuestra cuenta de Latch.

Figura 12: Estructura en árbol de todas las carpetas y ficheros que componen WPM para Docker

La parte del contenedor que hemos llamado wordpress es parecida a la asignación de valores para db pero con algunos cambios. Por ejemplo, en las líneas 29 y 30 se definen los puertos desde los cuales la aplicación será accesible. En la parte de asignación de variables esta vez se crean aquellas que WordPress necesitará para conectar con la base de datos MySQL creada en el contenedor db.

También hay que destacar la línea 22 donde se utiliza el comando depends_on el cual asigna las dependencias de los contenedores, en este caso db, el contenedor que tiene la base de datos MySQL de Wordpress.

Para que todo funcionara correctamente intentando la menor intervención del usuario, hemos tenido que modificar el script bash de instalación de WPM. En principio, necesitaba dos parámetros para su ejecución, uno era la key de la aplicación WPM y el otro el secret key de WPM. Para que el script tome estos parámetros directamente del docker-compose, en concreto del que pertenece a la creación del contenedor llamado db (MySQL), tendremos que asignarlas internamente utilizando las variables de entorno creadas en el fichero compose.

En concreto serán las variables LATCHAPPID y LATCHSECRET las que luego usaremos dentro del script (por ejemplo, sustituir todas las llamadas que usaban los parámetros de entrada referenciados como $1 o $2) asignándolas a otras variables internas como se puede observar en estar parte del código del mismo:

Figura 13: Asignación de variables internas a las variables de entorno
definidas en el fichero docker-compose del script install.sh de WPM

Finalmente, sólo nos queda ejecutar el comando docker-compose para levantar los contenedores y probar la aplicación siguiendo los pasos del readme. La primera vez tardará un poco ya que tiene que descargar todas las imágenes necesarias para crearlos. En el siguiente video podéis comprobar todos los pasos de ejecución, configuración y los resultados finales:


Figura 14: Docker de WordPress in Paranoid Mode

Si queremos volver a ejecutar y crear desde cero los contenedores en el mismo host, será necesario primero eliminar los contenedores, imágenes y los volúmenes creados. Para realizar esta limpieza utilizaremos el comando prune para cada elemento. En este enlace podéis encontrar un fantástico tutorial sobre cómo borrar los recursos creados en Docker.

Más recursos sobre WordPress in Paranoid Mode

Si quieres saber más sobre WPM, echa un vistazo a esta charla de Chema Alonso donde explica cómo fortificar un Wordpress usando WPM y de paso entender un poco mejor su funcionamiento:


Figura 15: Presentación de WordPress in Paranoid Mode

Y para saber en detalle cómo funciona WPM y la teoría en la cual se basa, siempre podéis consultar el paper oficial de este proyecto:



Sin duda seguiremos utilizando Docker para ir incluyendo nuevas PoC (aparte de WPM) para que sea más sencillo probarlas y jugar con ellas. Puedes descargarte de nuestro repositorio de GitHub el docker de WordPress in Paranoid Mode.

Figura 18: Docker de WordPress in Paranoid Mode

El 19 de septiembre, Pablo González realizará un Code Talk For Developers sobre WPM en el cual también explicará algunos detalles más de cómo ha sido la integración de Docker con el script de WPM. No os lo perdáis.

Autor: Fran Ramírez, (@cyberhadesblog) miembro del equipo de Crazy Ideas 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.

viernes, julio 13, 2018

Docker de My WordPress In Paranoid Mode (WPM): "The making of" (Parte 1 de 2)

Hace unos días presentamos en el blog de ElevenPaths nuestro proyecto de dockerizar WordPress in Paranoid Mode (WPM) y de esa forma, hacer más sencillo poder probarlo de una forma rápida y segura. En este artículo vamos a ver un poco más en profundidad cómo hemos realizado la tarea de pasar a Docker nuestro querido WPM ya que pensamos puede ser útil para aquellos que queráis descubrir y practicar con las maravillas que ofrece esta tecnología basada en contenedores.

Figura 1: Docker de My WordPress In Paranoid Mode (WPM): "The making of" (Parte 1 de 2)

Escribir el libro sobre Docker llamado “Docker: SecDevOps” de 0xWord junto a dos grandes como son mi gran amigo Rafael Troncoso (@tuxotron, ¡gracias maestro!) y Elías Grande (@3grander) también ayuda un poco a entender cómo funcionan los contenedores Docker.

Figura 2: Libro de Docker SecDevOps

WordPress in Paranoid Mode

Antes de empezar a hablar del proyecto de crear Docker WordPress in Paranoid Mode, hay que recordar que lo que en él se incluyen son las publicaciones, ajustes, e integraciones de tecnologías de seguridad de las que estuvieron hablando Chema Alonso y Pablo González, y que acabaron formando parte del libro de Máxima Seguridad en WordPress de Daniel Martín Maldonado. En la siguiente lista tienes todos los recursos sobre este tema enlazados, y esta conferencia recoge casi todos los detalles en WPM.


Figura 3: Configurar Wordpress like a hacker

[Libro] Máxima Seguridad en WordPress
[Libro] Hardening GNU/Linux
[Paper] WordPress in Paranoid Mode (Parte 1)
[Paper] WordPress in Paranoid Mode (Parte 2)
[Vídeo] Proteger WordPress con Latch
[Vídeo] Proteger WordPress con Latch Cloud TOTP
[Vídeo] MyWordPress in Paranoid Mode (conferencia Chema Alonso)
[Vídeo] MyWordPress in Paranoid Mode (ElevenPaths Talks de Pablo González)
[Vídeo] Ejemplo de uso de Latch en WordPress
[Vídeo] Hardening WordPress like a hacker
[Vídeo] WordPress Demo XSS en WP-UserAgent
[BlogPost] My WordPress in Paranoid Mode
[BlogPost] Máxima Seguridad en WordPress
[BlogPost] Hackear un WordPress con Network Packet Manipulation
[BlogPost] Fortificar comunicación entre WordPress y MySQL
[BlogPost] WordPress Latch Enforcement
[BlogPost] WordPress aún más seguro con Latch Lock After Request
[BlogPost] Fortificar WordPress frente a ataques de fuerza bruta
[BlogPost] Ataques (al corazón) de tu WordPress
[BlogPost] Cómo robarle las contraseñas a los administradores de WordPress
[BlogPost] Agrupar el control de varios WordPress con un solo Latch
[BlogPost] WordPress: Time-Based XSPA (Cross-Site Port Attack)
[BlogPost] Cómo debería ser un WordPress un poco más seguro
[BlogPost] WPHardening: Automatizar fortificación de WordPress
[BlogPost] Protege los borradores de los artículos de tu WordPress
[BlogPost] Registro de cuentas en WordPress públicos
[BlogPost] Riesgos en la ejecución de tareas de Cron
[BlogPost] WordPres: XSS en plugin WP-UserAgent
[BlogPost] Listar los plugins de WordPress en un pentest
[BlogPost] WordPress: SQL Injection en Scarcity Builder Plugin
[BlogPost] Docker WordPress in Paranoid Mode

Y ahora, vamos a centrarnos en el proceso de dockerización de WPM para que pueda ser implantado fácilmente en los entornos que sean necesarios.

Dockers: Essentials

Un contenedor es básicamente un paquete de software donde se incluye una aplicación y todo lo que necesita para funcionar como por ejemplo librerías, componentes, entornos runtime, herramientas, etcétera. La gran ventaja frente a las máquinas virtuales es que los contenedores comparten la base del sistema operativo en el cual se ejecutan (host), ya sea GNU/Linux o Microsoft Windows. De esta forma se consigue una gran optimización tanto en la ejecución como en el tamaño de los contenedores gracias a que, como se ha comentado antes, sólo tienen lo necesario para ejecutar la aplicación, el resto lo obtendrán del sistema operativo host.

Figura 4: Comparación entre VMs y Contenedores Docker 

En dicho host - en nuestro caso era una máquina virtual con Ubuntu 16.04 Desktop 64bits (esto es importante) - es donde se ejecutará el motor Docker (Docker Engine) el cual es el encargado de gestionar los contenedores. Este motor consta de un cliente, desde el cual se introducen los comandos y un demonio el cual se ejecutará en el servidor host y es el encargado de gestionar los contenedores.

Básicamente la idea es crear dos contenedores, uno para ejecutar MySQL y otro para WordPress. Ambos tendrán a su vez una ubicación en el sistema de ficheros del host para poder asegurar la consistencia de la información. Es decir, necesitaremos un espacio en el disco duro (volumen Docker) para que los datos almacenados tanto en la base de datos MySQL como los cambios que se realicen en el WordPress se mantengan cuando reiniciemos el host.

Figura 5: Explicación técnica del funcionamiento de un volumen en Docker.

Necesitaremos dos ficheros Dockerfile, uno para el contenedor MySQL y otro para el Wordpress donde se definen los parámetros básicos necesarios para montarlo, como por ejemplo la imagen base o los comandos que necesitemos ejecutar (como las dependencias necesarias para instalar el script de WPM o copiar el plugin de Latch). El siguiente gráfico muestra el proceso de creación (A) y de ejecución (B) de los contenedores y los volúmenes:

Figura 6: Esquema de creación y ejecución de WPM Docker

La fase (A) es donde se definen los contenedores y la fase (B) corresponde a la ejecución del docker-compose y es donde se crean los contenedores y los volúmenes. Tal y como ya hemos mencionado antes, cada contenedor tiene su propio fichero Dockerfile. Estos ficheros deben de tener este mismo nombre, por lo tanto, cada contenedor tendrá su propia carpeta sobre la cual se creará tanto el fichero Dockerfile correspondiente así como su volumen para los datos.

En el caso del contenedor MySQL, será necesario instalar las dependencias necesarias para ejecutar WPM así como copiar dentro del mismo contenedor el script de instalación WPM. Vamos a verlo en detalle, este es el contenido del fichero Dockerfile de MySQL (carpeta /db):

Figura 7:  Contenido del fichero Dockerfile para el contendor de MySQL

La línea número 1 define la imagen que vamos a recuperar del repositorio de Docker utilizando el comando FROM y la etiqueta mysql:5.7 (la cual se descargará desde el Docker Hub) que servirá como base para configurar el contenedor y ejecutar MySQL. La línea número 3, comando RUN (este comando permite ejecutar instrucciones directas del sistema operativo), se encargará de instalar (usando el típico apt-get) en el contenedor todas las dependencias necesarias para poder ejecutar el script que instala WPM, como por ejemplo ruby, gcc, etcétera.

En la línea 6, el comando ADD añade o copia el directorio /WPM_Latch el cual contiene WPM al completo dentro de una carpeta y que se ubicará en el directorio raíz del contenedor, también con el nombre WPM_Latch. En la línea 7 activamos los permisos necesarios para poder ejecutar el script en la carpeta donde se encuentra WPM y finalmente en la línea 8 establecemos como directorio de trabajo (el que aparecerá por defecto cuando accedamos al contenedor) /WP_Latch.

Figura 8: Contenido del fichero Dockerfile para el contendor de WordPress

El fichero Dockerfile del contenedor que ejecutará WordPress es un poco más sencillo. Sólo necesitamos definir la imagen sobre la cual lo vamos a ejecutar, en este caso wordpress:latest (la última versión que exista en el repositorio) y copiar Latch. Para copiar el plugin de Latch, usamos de nuevo el comando ADD.

La carpeta Latch con el plugin ya está preparada dentro de los datos que hemos descargado desde GitHub así que simplemente se copiarán a la ruta que aparece, dentro de la carpeta plugins de WordPress. Esto instalará Latch pero no lo activará, esta acción tendremos que realizarla manualmente durante el proceso de configuración, como ya explicamos en el post de "·Cómo fortificar tu Base de datos de WordPress con Latch".

Continúa en la Parte 2

Autor: Fran Ramírez, (@cyberhadesblog) miembro del equipo de Crazy Ideas 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.

jueves, julio 12, 2018

Un evento, un pack y unas pegatinas "malignas" de @0xWord

Mañana doy mi última charla antes de las vacaciones, en el Evento Décimo Aniversario de 0xWord. El evento tiene un aforo muy limitado, y hoy, después de que termine el proceso de registro tendremos todas las vacantes asignadas y confirmadas. Tienes toda la información del evento en este artículo que os dejé publicado la semana pasada.

Figura 1: Un evento, un pack y unas pegatinas "malignas" de @0xWord

Entre otras cosas, en el evento os contaré cuál fue la historia de este cómo nacieron los libros y cómo se llegó al CodeProject: 0xWord y cómo hemos seguido evolucionando día a día el concepto. No sabemos cuánto tiempo seremos capaces de mantener vivo el proyecto, pero de momento hemos reorganizado todos los packs y hemos hecho un trabajo de conceptualización en un "itinerario" de todos los títulos que tenemos, y que os vamos a contar allí.

Figura 2: Agenda del evento Décido Aniversario de 0xWord

Además, los compañeros de 0xWord han hecho packs nuevos, entre los que están el de Pablo González o el Pack de "Chema Alonso", donde están los libros en los que hemos participado nosotros. Los que compréis los míos os los podéis llevar dedicados con un No Lusers si lo ponéis en las observaciones.

Figura 3: Pack Chema Alonso en 0xWord

Tanto los libros como los packs, los puedes comprar en la web de 0xWord y pedir la opción de "Recogida en Tienda" y en las observaciones solicitar recogerlos en el lugar del evento, por los que te los podrás llevar mañana en el descanso de las charlas.


Y para conmemorar esto, a los packs "Chema Alonso" les vamos a poner desde hoy una pegatina "Maligna" que yo ya he puesto como parte de la decoración de mi ordenador portátil, junto con la de 0xWord, o la de AURA.


En definitiva, que teneos un evento en Madrid este Viernes 13 de Julio por la tarde en el que daré mi última charla antes de cortar en verano, que tienes nuevos packs oferta en 0xWord, y unas nuevas y molonas pegatinas "malignas"

Saludos Malignos!

miércoles, julio 11, 2018

Cómo usar Movistar + con Aura: Unos vídeo-tutoriales

Desde que lanzamos Aura en Movistar + para España en el pasado Mobile World Congress, el número de casos de usos ha ido creciendo a la par que los usuarios. Cada día Aura va aprendiendo nuevas cosas, y para que sea más fácil estamos grabando unos tutoriales de uso. Alguno de ellos me ha tocado hacerlo a mí, como podéis ver en el post de hoy.

Figura 1: Cómo usar Movistar + con Aura: Unos vídeo-tutoriales

A mí me hicieron grabar tres tutoriales con cierto humor, y yo, que me presto a todo con mis compañeros, me animé. Uno de ellos explicando cómo cambiar de canal, cómo poner una película de superhéroes y cómo poner una película de dibujos.


Figura 2: Cómo poner Canal #0 con Aura en Movistar + 


Figura 3: Cómo poner una película de Superhéroes en Movistar + usando Aura

Figura 4: Cómo poner una película de Dibujos en Movistar + usando Aura

Para poder utilizar Aura en tus servicios de Movistar+ debes bajarte la última versión de la app de Movistar + para iPhone o la app de Movistar+ para Android directamente desde los markets de aplicaciones oficiales.

Figura 5: Movistar+ con AURA para Android

Además de estos tres tutoriales míos, el equipo de comunicación de Movistar+ ha hecho varios tutoriales que explican algunos de los casos de usos más comunes, que os recopilo en este post y que se ven en un minuto.


Figura 6: Lo que puedes hacer con Aura en Movistar +


Figura 7: Tutorial Movistar+ con AURA


Figura 8: Tutorial Cómo buscar una serie en Movistar+ con AURA


Figura 9: Cómo buscar contenidos similares en Movistar + con Aura 


Figura 10: Cómo buscar una película en Movistar + con Aura 


Figura 11: Cómo buscar una carrera de Formula 1 en Movistar + con Aura

Al final, Aura está diseñada como una Congnitive Intelligence con sistemas de NLP (Natural Language Processing) e intenta que las personas no tengan que aprender los interfaces de los sistemas, sino que sea al contrario. Por eso, si no sabes cómo se usa, simplemente pregunta. Si al principio no te entiende, no pasa nada, estamos enseñando cosas nuevas a Aura cada día.

Saludos Malignos!

Entrada destacada

Cupón Verano 10 % descuento en @0xWord

Como todos los veranos, tenemos que cerrar la editorial de 0xWord durante el mes de Agosto , pero antes de que llegue ese días os vamos a ...

Entradas populares