Archivo de la etiqueta: hacking

#Docker para #hackers y pentesters, ejecutando #metasploit desde un container

Se acabó el 2016 y como ultima publicación del año les traigo un tutorial exprés que involucra docker y seguridad informática. En publicaciones anteriores explicaba que durante estos últimos meses he estado trabajando bastante con docker, orchestration e infraestructura de cloud en general (parte habitual en un trabajo de full stack engineer).

Docker es una herramienta muy poderosa para desarrolladores pues nos ayuda a construir imágenes con todas sus dependencias y nos deja el paso libre para enfocarnos en lo que realmente importa: deployar rápidamente una aplicación (o varias) que sabemos que va a funcionar.

Bajo esa premisa no es de extrañarse que la comunidad de seguridad haya adoptado docker tan rápidamente, docker es una herramienta fantástica 🙂 y así como nos permite dockerizar una aplicación también podemos dockerizar herramientas de seguridad y en general cualquier cosa que tengamos en nuestro arsenal para pentest.

La gente que trabaja o ha trabajado en seguridad, específicamente en el área de penetration testing, estará de acuerdo en que uno de los recursos más importantes que tenemos son las ventanas de tiempo, por lo general cuando se realiza una prueba de penetración a alguna aplicación o sistema se hace durante un periodo de tiempo bien definido, el tiempo es valioso y no podemos desperdiciarlo en instalar y configurar herramientas, o peor aun ¿que pasa si la infraestructura que estamos auditando nos bloquea? ¿cuánto tiempo vamos a invertir en preparar un nuevo nodo desde donde podamos lanzar ataques y recibir shells?, para todo lo anterior llega docker al rescate 🙂

En este tutorial mostraré como ejecutar una de las herramientas de seguridad más populares utilizando docker: metasploit, específicamente utilizaremos el módulo exploit/multi/handler para recibir sesiones de meterpreter.

ojo: no voy a mostrar como dockerizar metasploit, eso lo dejamos para un siguiente tutorial donde veamos como dockerizar aplicaciones

Ejecutando metasploit desde un contenedor de docker

Para evitarte el problema de abrir los puertos en tu router y hacer un mapeo de puertos para exponer tu maquina a internet, puedes contratar un vps con algún proveedor de tu elección, hoy en día es muy sencillo contratar un vps y puedes tener uno en línea prácticamente en minutos, yo recomiendo digitalocean por qué sus vps son baratos y el soporte es muy bueno, con un nodo de 10 USD al mes es suficiente para correr una imagen de metasploit, puedes contratar el de 5 USD pero tendrás que habilitar el swap o si no quieres gastar dinero siempre puedes aprovechar la promoción que te ofrece Amazon Webservices (más o menos 1 año de uso gratuito de una instancia micro)

Sea cual sea el proveedor que hayas elegido el siguiente paso es instalar docker en tu instancia, para este tutorial lo haré sobre ubuntu / debian pero podrías instalarlo en el sistema operativo de tu elección, acá tienes una lista de sistemas operativos soportados

Desde la terminal de tu instancia y como root vamos a ejecutar algunos comandos para instalar herramientas necesarias como compiladores de gcc/g++, algunas librerías, utilidades, etc. al final vamos a instalar docker

apt-get install build-essential
apt-get install libxslt-dev libxml2-dev zlib1g-dev --yes
apt-get install docker
apt-get install docker.io

Lo siguiente que vamos a hacer es crear un directorio en nuestra instancia, este directorio lo vamos a utilizar como un volumen persistente cuando ejecutemos metasploit desde el contenedor para poder almacenar ahí todo el loot, scripts y en general archivos que nos genere la herramienta.

mkdir /root/.msf4

Llego el momento, en el docker registry oficial existe una imagen llamada remnux/metasploit que contiene todo lo necesario para ejecutar la herramienta, ejecutamos el siguiente comando y docker comenzara a descargar la imagen y posteriormente procederá a correr el contenedor.

docker run --rm -it -p 443:443 -v ~/.msf4:/root/.msf4 -v /tmp/msf:/tmp/data remnux/metasploit

En el tutorial de docker anterior explicaba para que era cada parametro, en resumen -p nos permite mapear puertos y -v definir volúmenes persistentes (mapear una carpeta de nuestro sistema de archivos a una del sistema de archivos virtual del contenedor).

Una vez la imagen haya sido descargada el contenedor será creado y todas las dependencias necesarias comenzaran a ser instaladas, nos olvidamos de instalar todas las gemas y resolver conflictos y nos podemos ir por un café ya que es un proceso bastante automatizo 🙂

Después de unos minutos tenemos un nodo listo para recibir conexiones.

En el caso de necesitar más listeners no hay problema pues podemos ejecutar múltiples contenedores de metasploit en diferentes puertos y así tener nuestras shells organizadas, y si nuestro servidor es baneado rápidamente podemos desplegar otro ejecutando esos 6 comandos.

Como lo he comentado en varios artículos, docker es una herramienta muy poderosa que puede ser utilizada en varias situaciones además del desarrollo de software, como lo vimos en este tutorial. Puedes dockerizar casi cualquier cosa, yo en lo personal tengo una imagen con un set de herramientas que utilizo en mi día a día (fierce, dirb, sqlmap, nmap, enum4linux, hashcat, Responder, etc.)

Saludos y Happy Hacking.

StringTransformer: the transformation tool

st

Hola lectores, en esta ocasión me gustaría compartir con ustedes una herramienta opensource que he publicado en mi repositorio de github, se trata de StringTransformer, un script desarrollado en python cuya finalidad es tomar una cadena de texto y transformarla a distintas representaciones equivalentes de la misma, por ejemplo binario, hexadecimal, octal, md5, sha256, etc. Las funciones de transformación son clases separadas del script principal por lo que la herramienta es modular, esto significa que es bastante fácil para cualquier programador (que sepa python) crear sus propias transformaciones y extender la funcionalidad de la herramienta.

Esta herramienta les puede ser útil cuando están jugando Capture the flags y necesitan una forma rápida de analizar cadenas de texto (o al menos esa es su finalidad), la herramienta sigue en desarrollo, corrigiendo bugs e implementando nuevas funcionalidades.

Instalación

Su instalación es bastante sencilla, primero deben de clonar el repositorio usando git

$ git clone https://github.com/Alevsk/stringTransformer.git

Una vez descargado el repositorio acceden a la carpeta del proyecto, dan los permisos de ejecución necesarios y lanzan el script:

$ cd stringTransformer
$ chmod +x stringTransformer.py
$ ./stringTransformer.py
                  
              _______         
       _____ |   _   |  ____  
      |    |  \  V  /  |    | 
      |   \ \  \_ _/  / /   | 
      \  \ \ \   '   / / /  / 
       \  \   | 'V' |   /  /  
     |\ \_____| \ / |_____/ /|
     | \        | |        / |
     |  |    ,/|| ||\,    |  |
     |   `| '  || ||  ' |`   |
     |    | |  || ||  | |    |
     \    | |  || ||  | |    /
      \.  | |  ||_||  | |  ./ 
       \  | |  |___|  | |  /  
         \' ,  _____  , '/    
             \/ ___ \/        
               /___\          
                           

stringTransformer v0.1 (https://github.com/alevsk/stringTransformer/)

Usage: stringTransformer.py -i INPUT_STRING | --input INPUT_STRING | --load FILE

stringTransformer.py: error: Required argument is missing. Use '-h' for help.

Con el comando -h o –help podran ver el menu de ayuda:

Options:
  -h/--help             show this help message and exit
  -i/--input=INPUT      set the input string to test with
  -l/--load=LOAD_FILE   load list of input strings (one per line)
  -x/--exclude=EXCLUDE  exclude this representations
  -o/--only=ONLY        transform input only to this representations
  -O/--output=OUTPUT    generate an output file
  -p/--params=PARAMS    use custom parameters on transformation functions
  --list                list available input representations
  --update              update from the official git repository

Examples:
./stringTransformer.py -i [STRING]
./stringTransformer.py -i [STRING] --exclude "hexa, octal"
./stringTransformer.py -i [STRING] --only "hexa, octal"
./stringTransformer.py -i [STRING] --params "rot.cipher=13,rot.encoding=utf-8"
./stringTransformer.py --load list.txt
./stringTransformer.py --list

Para ver las funciones de transformación actualmente disponibles pueden utilizar –list:


stringTransformer v0.1 (https://github.com/alevsk/stringTransformer/)

- sha1
- octal
- binary
- sha256
- html_entities_decode
- html_entities_encode
- md5
- base64_encode
- base64_decode
- ascii
- slug
- rot_encode
- hexa
- urlencode

Puedes ayudar a crear más funciones de transformación para la herramienta, para eso sugiero lean la documentación en la página principal del repositorio (o en el archivo README.md) https://github.com/Alevsk/stringTransformer

Ejemplos de uso

Queremos aplicar una transformación hexadecimal, rot 13 encode y ascii a la cadena de texto “The transformation tool”

$ ./stringTransformer.py -i "The transformation tool" -o "hexa,rot_encode,ascii"

Obtenemos como resultado:

stringTransformer v0.1 (https://github.com/alevsk/stringTransformer/)

[i] Loaded 3 representations to apply.
[i] Starting tests at: "23:54:04"

The transformation tool

[i] applying transformation...

ascii:

84 104 101 32 116 114 97 110 115 102 111 114 109 97 116 105 111 110 32 116 111 111 108

rot_encode:

Gur genafsbezngvba gbby

hexa:

54 0x68 0x65 0x20 0x74 0x72 0x61 0x6e 0x73 0x66 0x6f 0x72 0x6d 0x61 0x74 0x69 0x6f 0x6e 0x20 0x74 0x6f 0x6f 0x6c 

==================================

Incluso podemos pasar parámetros a las funciones de transformación que lo soporten, rot_encode por defecto utilizar 13 posiciones de desplazamiento pero aquí indicamos que use 51

$ ./stringTransformer.py -i "The transformation tool" -o "rot_encode" --params="rot_encode.cipher=51"

stringTransformer v0.1 (https://github.com/alevsk/stringTransformer/)

[i] Loaded 1 representations to apply.
[i] Starting tests at: "23:58:11"

The transformation tool

[i] applying transformation...

rot_encode:

Sgd sqzmrenqlzshnm snnk

==================================

La herramienta cuenta con muchísimos otros parámetros que los invito a explorar.
saludos

Un poco de OSINT (stalking) utilizando Facebook Graph Search

Mucha gente utiliza Facebook hoy en día, en sus computadoras, tablets y smarthphones, aun así es realmente poca la gente que sabe cómo sacarle el máximo provecho, estoy hablando de sus Apis y su capacidad para crear aplicaciones que se integran directamente con la red social.

A inicios de 2013 Facebook anuncio su nuevo servicio y motor de búsqueda llamado Graph Search, se trata de una herramienta que nos permite buscar información en la red social de forma eficiente, mediante el cruce de información y la inferencia de sus algoritmos nos permite encontrar cosas interesante.

Facebook-Graph-Search-1-20022013

Facebook Graph Search es una herramienta muy potente que se encuentra a disposición de todo el público, a lo largo de su historia ha sido limitada debido a preocupaciones de seguridad que han surgido, sin embargo la información a la que todavía nos da acceso resulta ser invaluable y sigue siendo una de las principales opciones a la hora de realizar stalking OSINT (Open Source Intelligence) a las personas.

A estas alturas ya todos los usuarios deberían de tener acceso a la funcionalidad Graph, es un buscador y luce de esta forma:

1

Muchos de ustedes ya estarán familiarizados con la barra de búsqueda, seguramente la utilizan para encontrar rápidamente el perfil de un amigo, el nombre de una fan page, etc., pero lo que no muchas personas saben es que es posible escribir una serie de consultas en lenguaje natural. Me he dado a la tarea de recolectar algunas de las que me parecen, arrojan la información más interesante.

Publicaciones

Las publicaciones son una parte importante de Facebook ya que es la principal manera en que interactuamos con otros usuarios, si queremos obtener una lista de nuestras publicaciones en las que nos ha comentado un stalker usuario en específico podemos utilizar la siguiente consulta: posts by me commented on by [NOMBRE DE UNA PERSONA]

posts by me commented on by jorge alejandro Velasco
(Publicaciones hechas por mí y comentadas por Jorge Alejandro Velasco)

2

El resultado es una lista de nuestras publicaciones en donde la persona específicada nos ha comentado algo.

Por otra parte, si lo que queremos saber es que tanta interacción ha habido entre dos personas, la consulta posts commented on by [PERSONA 1] and [PERSONA 2] es la que necesitamos, por ejemplo:

posts commented on by jorge alejandro velasco and enrique ortega Cardoso
(Publicaciones comentadas por Jorge Alejandro Velasco y Enrique Ortega Cardoso)

3

Como podemos ver, la consulta nos regresa una lista de publicaciones donde ambas personas han interactuado, no importa si es una publicación propia de ellos o de un tercero, es posible concatenar más personas en la consulta, solo tenemos que agregar “and [PERSONA 3] and [PERSONA 4] …”

Al igual que obtuvimos las publicaciones donde una persona en específico nos ha comentado, también es posible obtener la lista en donde nos ha dado “like”: posts by me liked [PERSONA] Por ejemplo:

posts by me liked by enrique ortega Cardoso
(Publicaciones hechas por mí a las que Enrique Ortega Cardoso les dio Like)

4

Es posible combinar todas estas consultas para cruzar información y obtener información todavía más específica, solo es cuestión de jugar con ellas.

Fan pages

Para las personas que tenemos una fan page, también es posible obtener información que nos ayude con la gestión de la misma, no es ningún secreto que Facebook no proporciona a los administradores una lista completa de fans, sin embargo es posible obtener esta lista mediante la siguiente consulta:

People who like Blog de Alevsk
(Personas a las que les gusta Blog de Alevsk)

5

¿Quieren ser más específicos?

People who like Blog de Alevsk and live in Morelia, Mexico
(Personas a las que les gusta Blog de Alevsk y además vivien en Morelia

6

¿Quieren más todavía?

People who like Blog de Alevsk and live in Morelia, Mexico and go to Tec de Monterrey Campus Morelia
(Personas a las que les gusta Blog de Alevsk, viven en Morelia y además estudian en Tecnológico de Monterrey campus Morelia)

7

Al final del dia obtenemos una lista y solo es cuestión de seguir bajando en la página para cargar la información de más personas que cumplen el perfil que especificamos, podemos obtener la lista completa pero eso puede tardar horas (a menos que tengas un script para automatizar el proceso XD https://github.com/Alevsk/FFFExtractor).

Enfocándonos mas al terreno de la seguridad informática y la ingeniería social (sé que ya lo están pensando) esto puede ser aplicado para obtener información y el perfil de todos los empleados de una empresa (personas a las que les guste X empresa y vivan en X ciudad), un perfil de Facebook nos dice muchísimas cosas, y tener una fotografía actualizada de como luce la persona ayuda bastante, continuamos

Cumpleaños

Esa época del año en donde nuestro muro se llena de felicitaciones :), pues verán, también podemos encontrar información interesante, por ejemplo obtener todas las felicitaciones que nos ha hecho una persona

birthday comments on by rafael bucio on my timeline
(Comentarios de cumpleaños de Rafael Bucio en mi timeline)

8

Bucio me felicito una vez y luego ya nunca más lo hizo :(, también podemos obtener la lista de felicitaciones de un año específico:

birthday comments on my timeline in 2013
(Comentarios de cumpleaños de 2013 en mi timeline)

9

Fotos

Las fotos son de las cosas más interesantes que hay en Facebook y la funcionalidad para etiquetar personas nos permite realizar búsquedas sobre ellas.

Para obtener las fotos de una persona en específico (Ya sea que el la haya subido o lo hayan etiquetado): Photos of [NOMBRE DE LA PERSON]

Ejemplo:

Photos of Enrique Ortega Cardoso
(Fotos de Enrique Ortega Cardoso)

10

Fotos donde aparezcan dos personas etiquetadas en específico:

Photos of Enrique Ortega Cardoso and Jorge Alejandro Velasco
(Fotos de Enrique Ortega Cardoso y Jorge Alejandro Velasco)

11

Finalmente, podemos agregar un filtro para obtener fotos que hayan sido tomadas en lugar específico y donde aparezcan personas específicas.

photos of enrique ortega cardoso and jorge alejandro velasco on porter british pub
(Fotos de Enrique Ortega Cardoso y Jorge Alejandro Velasco en Porter British

12

Todo esto de lo que les he hablado hasta el momento puede ser combinado con los filtros anteriores de Publicaciones, Likes y cumpleaños, sean creativos 🙂

Lugares

A todo mundo le gusta hacer checkin, es por eso que Facebook Graph Search nos permite hacer búsquedas tomando como parámetro un lugar, si queremos obtener la lista de los lugares en los que ha estado una persona y que han sido registrados por la plataforma deberíamos utilizar:

Places visited by Enrique Ortega Cardoso
(Lugares por Enrique Ortega Cardoso)

13

Si además queremos saber los lugares en común que hemos visitado o que nos personas han visitado lo haríamos de la siguiente forma:

Places visited by me and Enrique Ortega Cardoso
(Lugares visitados por mí y Enrique Ortega Cardoso)

14

Si por ejemplo eres una persona nueva en la ciudad, te fuiste de intercambio a estudiar, podrías buscar quienes son las personas que viven ahí y estudian en la universidad a la que iras, por ejemplo:

People who live in Morelia, Mexico and go to Tecnológico de Monterrey de Monterrey Campus Morelia
(Personas que viven en Morelia y van al tecnológico de monterrey)

La consulta te entregaría una lista de todas las personas que viven en la ciudad de Morelia y estudian en Tecnológico de Monterrey, incluso las que no son tus amigos, si estos interesados en lo último y quieres solo esas personas en específico, debemos agregar un filtro más:

people who are not my friends and live in morelia, mexico and go to tecnológico de monterrey de monterrey campus morelia
(Personas que no son mis amigos y viven en Morelia y van al tecnológico de monterrey)

15

Conclusión

Facebook Graph Search es sin duda una gran obra de ingeniería, una herramienta que nos permite cruzar datos y obtener información específica acorde a nuestras necesidades, su potencial es gigantesco y es una herramienta que pueden integrar muy bien los mercadologos, community managers, stalkers ingenieros sociales, etc.

Antes de que alguien saque el tema de la privacidad les puedo decir que si su información es devuelta en las consultas es porque sus opciones de privacidad así lo permiten XD, la información siempre ha estado ahí, de manera pública, Graph Search es solo una herramienta para encontrarla de manera más rápida esto por parte de la herramienta a la que tenemos acceso, seguramente los gobiernos utilizan algo como esto pero más potente.

Bonus extra

Para terminar, Las consultas que todos están esperando, y con la que se consumaran como grandes stalkersingenieros sociales.

Friends of my friends who are single women and live in [CIUDAD]
(Amigos de mis amigos que son mujeres solteras y viven en la ciudad X)

Friends of my friends who are single women and live in [CIUDAD] and go to [UNIVERSIDAD]
(Amigos de mis amigos que son mujeres solteras y viven en la ciudad X y estudian en la universidad X)

Happy stalking hacking

Los programadores y la seguridad informática

En esta ocasión quiero compartir con ustedes una pequeña experiencia que me sucedió en uno de los muchos grupos de programadores a los que pertenezco en la red social Facebook, esta anécdota me hizo reflexionar acerca del nivel de cultura de seguridad informática que tenemos en México y al final me hizo terminar escribiendo este post a manera de auto crítica constructiva para la misma comunidad de desarrolladores.

Son muchos y muy variados los grupos de programación que uno encuentra Facebook: desarrolladores web, desarrolladores iOS / Android, desarrolladores C#, desarrolladores de videojuegos y todo lo que uno se imagine; esta funcionalidad de Facebook (los grupos) ha pasado a sustituir los antiguos foros de discusión (como smf o phpbb) para la generación millennial ya que de alguna forma es mucho mas cómodo tener todo integrado en la misma plataforma social, pero ese no es el tema de discusión aquí.

La Anécdota

Lo que verdaderamente me llamo la atención fue hace unos días cuando un miembro del grupo hizo una consulta acerca de cómo podía realizar una validación de correo electrónico en un sistema que estaba desarrollando, no me llamo la atención la duda, pues todos los días hay gente que pregunta y mucha otra que le responde, lo que me llamo la atención fue la respuesta que le dio una persona del grupo y sobre todo la convicción con la que escribió la misma.

La imagen esta censurada por que la idea no es quemar a nadie sino más bien sacar algo bueno de todo esto.

La imagen esta censurada por que la idea no es quemar a nadie sino más bien sacar algo bueno de todo esto.

En cuanto termine de leer su respuesta no pude esperar para unirme a su conversación y explicarle por qué su solución era incorrecta desde el punto de vista de seguridad, lo bueno fue que no lo tomo mal y se interesó bastante en el tema.

La solución del comentario de Facebook va más o menos así

mail_fail

¿Pueden ver dónde está el problema de su solución?

La solución iba bien hasta el momento en donde decide regresar el token aleatorio al navegador del usuario y realizar ahí la validación. Explicando un poco más acerca de por qué este esquema de solución era malo le mostré un escenario en donde un atacante podría crear miles de cuentas saltando su sistema de verificación.

Haciendo un pequeño ejercicio de reflexión le propuse lo siguiente:

Partimos de la siguiente premisa: el objetivo del sistema de activación por correo es validar una identidad (así como detener posibles ataques automatizados que te creen cuentas falsas y te llenen la base de datos de usuarios ficticios), para lograr esto se utiliza el concepto de “secreto”, un secreto es un token que debe ser compartido solamente con el usuario mediante el método que él especifico (el correo electrónico), enviando ese token al correo que se supone tiene acceso y es el único medio en el que pueda recibir ese secreto nos aseguramos que la cuenta que el usuario especifico existe y es válida, por lo tanto su identidad ha sido avalada por un proveedor de correo.

Ahora, en el escenario que nos plantean de realizar toda la validación del lado del cliente el problema es que realmente no estas validando nada, si el servidor le está regresando al navegador mediante Ajax el token que se supone el usuario debe escribir ¿Cuál es el punto pedirle revisar su correo? Fácilmente se podría crear un bot que registrara cuentas y las activara de forma masiva, es por eso que no es una buena solución.

source-code-583537_1280

La solución óptima seria (o al menos como se usa en la industria de software hoy en día):

Al momento de crear el usuario en la base de datos debemos manejar un campo para representar el estado actual de su cuenta (activada o desactivada), y cuando el usuario reciba el token por correo este lo introduce en un formulario y es enviado para su comparación del lado del servidor (el token generado también debimos haberlo almacenado de alguna forma en el servidor) y dependiendo de si es válido o no activamos su cuenta.

Lo que me interesaba al final es dejarles en claro que todo el código y los datos (por ejemplo funciones de validación en JavaScript) que enviemos al navegador pueden ser modificados por el usuario, y por lo tanto jamás debemos confiar en esa información.

Bueno aquí termina la anécdota, satisfecho de saber que al menos ese programador siguiendo mis recomendaciones seria capas de lanzar ese componente de forma segura a producción me puse a pensar en todos los demás desarrolladores que tienen dudas pero por X o Y motivo no preguntan y siguen produciendo mas y mas código vulnerable que al final contribuye a llenar las bases de datos sobre hackeos de sitios como https://haveibeenpwned.com o http://www.zone-h.org/

Mi opinión

Como muchos sabrán, actualmente soy consultor de seguridad informática, sin embargo tengo una formación de desarrollador de software, antes de dedicarme a la seguridad y durante la universidad cree muchísimas plataformas web y aplicaciones móviles (y lo sigo haciendo de vez en cuando como FreeLancer xd), estoy convencido de que al realizar una prueba de penetración en algún sistema o aplicación, en el 95% de los casos los hackeos se hubieran evitado si el software hubiera sido diseñado con la seguridad en mente.

Desarrollar software seguro no es una tarea sencilla, nadie nunca lo dijo, pero las empresas de desarrollo y pequeñas agencias tienen la manera de mitigar este problema.

Capacitación del personal

En mi opinión por cada equipo de desarrolladores debería de haber por lo menos una persona con nociones básicas de seguridad, “Nociones básicas” es un término muy relativo, es por eso que las empresas (lideres técnicos, Project managers, IT managers, etc.) deberían voltear a ver estándares y buenas prácticas de seguridad en el desarrollo de software y no solo eso, integrarlas en su ciclo de desarrollo.

Hay un documento que me gusta recomendar bastante.

OWASP Top 10: los diez riesgos más críticos en aplicaciones web

Este documento explica las diez vulnerabilidades más populares en las aplicaciones web hoy en día, así como su riesgo, impacto y mitigación.

owasp

Ya sea que trabajes para una empresa o seas un desarrollador FreeLancer, te aseguro que si desarrollas tu software tomando como referencia los 10 puntos de OWASP tu aplicación sera lo suficientemente robusta para que no venga cualquier lammer / hackerucho de tercera y vulnere tu sistema usando sus herramientas automatizadas.

Como decía mas arriba, producir software seguro es compromiso de todos, las metodologías de desarrollo ágil como SCRUM son buenas y funcionan, pero muchas veces el personal que las lleva acabo deja de lado el tiempo requerido para hacer un buen diseño de software (con la seguridad en mente, programación defensiva, etc.) o lo minimiza

Aunque lo ideal sería tener un departamento de seguridad que apoyara al departamento de desarrollo durante todo el ciclo de vida del proyecto.

Después de todo, ¿cuánto te cuesta contratar un arquitecto de seguridad? ¿Cuánto te costaría recuperarte de un hackeo (hablando de información, dinero y prestigio de la empresa)?

#Latch Plugins Contest 2015 + tutorial de instalación en #WordPress

Regresa el concurso de desarrollo de plugins de seguridad con Latch de elevenpaths, en esta segunda edición los organizadores no han escatimado en gastos y están ofreciendo los siguientes premios:

  • Primer lugar: USD 5,000
  • Segundo lugar: USD 2,000
  • Tercer lugar: USD 1,000

El concurso esta abierto del 8 de octubre de 2015 al 7 de enero de 2016, así que a programar 🙂

Si no saben que es Latch ahora les digo, Latch es un servicio que nos permite implementar mecanismos de autenticación de dos factores en nuestras aplicaciones de manera muy sencilla, es decir una capa de seguridad extra.


(Un vídeo donde creo que queda mas claro que es Latch)

Por ejemplo en los portales bancarios es común que ademas de un usuario y contraseña se nos solicita un PIN o TOKEN que es mandado por mensaje a nuestro teléfono, eso significa que si un atacante logra obtener nuestros datos de acceso (usuario y contraseña) todavía necesita obtener acceso físico a nuestro teléfono para utilizar el servicio. Pues con Latch podemos implementar una arquitectura de seguridad de este tipo para nuestros sitios web.

zoho-two-factor-authentication1

Lo más interesante de Latch es que cuenta con una API Rest que nos permite realizar nuestras propias implementaciones, así como también varias SDK para muchisimos lenguajes de programación, les dejo las bases del concurso en el siguiente link.

Tutorial sobre cómo proteger nuestros sitios WordPress

Si se animan a probar Latch, y tienen un blog de wordpress su instalación es bastante sencilla, lo primero que tenemos que hacer ir al sitio web oficial del servicio y crear una cuenta, después en el área de desarrolladores iniciamos sesión en la plataforma.

iniciar_sesion

Latch cuenta con un panel de administracion bastante intuitivo para administrar nuestras aplicaciones, damos clic en el botón verde que dice “Añadir nueva aplicación”

nueva_app

Nos pedirá que definamos un nombre, recomiendo que sea algo descriptivo, como por ejemplo “Mi blog personal”, damos clic en añadir aplicación.

nombre_nueva_app

El siguiente paso es importante, después de crear la aplicación el sistema automáticamente nos generó dos valores:

  • ID de aplicación
  • Secreto

Estos datos guárdenlos y téngalos a la mano, pues los necesitaremos más adelante.

api_secret_key

Ahora vamos a wordpress, en la sección de plugins buscamos Latch y lo instalamos, si por alguna razón no pueden instalar plugins desde el administrador entonces tienen que descargar el archivo zip, descomprimirlo y subirlo directamente a su servidor por FTP, SFTP, etc a la carpeta plugins de wordpress (sitio/wp-content/plugins)

wordpress_latch

Una vez instalado el plugin de latch en wordpress tenemos que configurarlo, en el menú del lado izquierdo vamos a Ajustes > ajustes Latch, nos aparecerá un formulario como el siguiente.

latch_configuration

Aquí vamos a poner el ID de aplicación y el Secreto que generamos y obtuvimos anteriormente, por ultimo guardamos los cambios. Ahora vamos a parear (sincronizar) el servicio (wordpress) de una cuenta de usuario en específico, puede ser cualquiera, por ejemplo un redactor, un administrador, un suscriptor, un colaborador, etc.
En el menú de la izquierda vamos a Usuarios > Tu Perfil y buscamos el campo que dice “Token de Latch

token_latch

Ya casi tenemos todo listo, ahora tenemos que abrir la aplicación de Latch en nuestro teléfono Android o iOS, nos encontraremos con una pantalla como la siguiente y damos Tap en “Añadir nuevo servicio”

AuYBLlyLZn41M-j3KNsVXUIUOpvtrhv0Sek_hZyo5KMS

Ahora damos Tap en “Generar nuevo código” y la aplicación nos mostrara un Token que expira en 2 mins y que tendremos que colocar en el campo Token de Latch para sincronizar el usuario y el servicio deseado.

AriRRFRtjN8tzU5r1w-rhB6Kf9Qtkp1sJrTr8NblM9RT

Y listo, eso es todo, así de fácil tenemos un mecanismo de autenticación de dos factores en wordpress. En la aplicación de Latch el nuevo servicio ha sido agregado y desde ahí podemos gestionar el acceso.

Anh3sxKYUDk6DAos8KogaGncL3_Ujmj-JWm9d5O85ZCG

Para hacer algunas pruebas cerramos sesión en wordpress y regresamos a la pantalla de login.

wordpress_login

Intentaremos entrar al administrador del sitio con nuestras credenciales validas (usuario y contraseña de nuestra cuenta), aunque los datos de acceso son los correctos WordPress nos muestra un error de acceso

login_fail

Y en la app también se nos notifica de un intento de acceso no autorizado al servicio.

AvfXza1l9bvg7mLYxnwpEv2BDjNRr8jBKJgulqsgIE3E

Para poder acceder normalmente, primero en la app tenemos que desbloquear el servicio (hacemos slide para bloquear y desbloquear)

AuYBLlyLZn41M-j3KNsVXUIUOpvtrhv0Sek_hZyo5KM3S

Intentamos loguearnos de nuevo en el administrador de wordpress y ahora si nos dará acceso.

wordpress_dashboard

Si quieren aprender mas acerca del funcionamiento interno de Latch, protocolos de comunicación seguros y temas criptograficos pueden leer su documentación en el área de desarrolladores

Happy Hacking 🙂