Archivo de la categoría: Noticias Informáticas

Platica: Contraseñas seguras

password-security

Esta charla se titula Contraseñas seguras Tips y tecnologías que te ayudaran a mantener seguras tus cuentas en Internet y la impartí en mayo para la comunidad Morelia Code en el polifórum digital de Morelia.

En esta ocasión hablamos acerca del uso de las contraseñas en nuestra vida cotidiana, mostramos algunas técnicas actuales utilizadas por los atacantes para hacerse con las mismas y damos consejos sobre como crear contraseñas seguras, también mostramos ejemplos de software manejador de contraseñas para minimizar el riesgo de que nuestros passwords sean robados por usuarios maliciosos.

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)?

Mi experiencia durante MoreliaHacks 2015

Hola de nuevo lectores 🙂 como les comentaba en una publicación anterior, en noviembre estuve participando en el I/O Hack 2015 con un proyecto de agricultura y drones, me divertí bastante y aprendí muchas cosas nuevas, después de todo fue mi primer hackaton. Asistí al evento por varias razones, la primera es porque me gustan los retos, solucionar problemas de la vida real y creo que eventos de este tipo son los ideales, la segunda razon, y de lo que se trata este post, es que a mediados de octubre de este año me junte con un grupo de personas en Morelia para discutir una estrategia en la que pudieramos impulsar proyectos de datos y gobierno abierto en la ciudad, estuvimos investigando bastante, viendo que es lo que se hacía en otros lugares y al final decidimos que lo más adecuado era organizar un hackaton, debido a eso me fui al I/O Hack para aprender lo más que pudiera en cuanto a temas de logística, organización, programación del evento y todo eso 🙂

Planeando el evento

Como decía, todo comenzó con una plática en starbucks, juntas y más juntas donde definíamos una planeación, nuestro objetivo era impulsar el gobierno abierto en la ciudad y para hacerlo antes teníamos que demostrar el poder de las fuentes públicas de información (las redes sociales), en pocas palabras diseñamos un plan en donde pudiéramos obtener suficiente información para responder a preguntas como ¿Qué es lo que se está diciendo de Morelia?, ¿Cuáles son los principales problemas de la ciudad?, etc. todo por medio de la opinión publica de los ciudadanos.

Organizando el evento

Conforme el los días pasaban la fecha del evento se acercaba, y teníamos que tener listo cada detalle del evento, ahora, yo como mentor tecnológico me encargaba de las cosas técnicas: sitio web, registro de participantes, envió de correos y todas esas cuestiones, pero después entendí que un evento de esta magnitud requiere mucho más que eso, se tienen que conseguir todos los patrocinadores, la difusión del evento, protocolos (no protocolos de red xd sino mas bien sociales) de inauguración, comida, ruedas de prensa y muchísimas cosas más en donde no soy experto pero que gracias a que estaba involucrado en la organización pude ver muy de cerca, además los otros miembros organizadores sabían hacer bastante bien su trabajo 🙂

Bonus: durante este proceso tuve la oportunidad de dar varias entrevistas y aparecer en televisión XD.

12303938_10206490936287026_6276593269870553135_o

hack

Se realizó la convocatoria y de todos los aspirantes se eligió a los 40 mejores programadores, me di a la tarea de evaluar sus aptitudes no solo revisando su cv, investigue si habían hecho alguna aportación a proyectos de software libre, si tenían cosas interesantes en github, si pertenecían a alguna comunidad en línea, algún blog personal y cosas de ese estilo, yo estaba buscando ese espíritu hacker y no tanto expertis en un tema específico, me interesaban personas que si tenían un problema iban a buscar la manera de solucionarlo a como dé lugar, gente que estuviera dispuesta a aprender nuevas cosas y a enseñar lo que saben y me dio mucho gusto encontrar a varias personas con esas cualidades.

Primer día del evento

Llego el gran día, viernes 11 de diciembre, se presentó oficialmente el proyecto a la comunidad tecnológica, a los medios y al gobierno de la ciudad, se realizó otra pequeña rueda de prensa y se contestaron varias dudas de los participantes, durante la organización conocí a dos personas increíbles especializadas en manejo de datos abiertos de una empresa llamada Fractal, ellos dieron una plática en donde explicaban todo acerca del gobierno abierto.

12347767_448143095393425_6599439726446076015_n

Al final del primer día cerramos con una sesión de neworking en donde todos los participantes y los mentores interactuaron, aprovechamos para presentarnos, conocernos, hablar acerca de que es lo que hacía cada quien y prepararnos para el día siguiente.

Segundo día del evento

Durante el segundo día yo hable un poco acerca de tecnologías que nos podían ayudar a recopilar información de fuentes públicas, apis de redes sociales (facebook, twitter, youtube, etc) y algunas herramientas que ya existen en el mercado como socialsensor, después organizamos a los participantes mediante grupos que se encargarían de hacer distintas tareas como:

  • Extracción de datos de redes sociales
  • Visualización de datos
  • Crawling de sitios web
  • Datos abiertos
  • Procesamiento de lenguaje natural
  • Prevención del crimen
  • Movilidad

Y así comenzó el hackaton, durante 8 hrs seguidas los programadores trabajaron arduamente para lograr los objetivos asignados, fueron 8 hrs en donde estuve conociendo más de cerca a los participantes, resolviendo sus dudas y también aprendiendo acerca de las tecnologías que estaban usando y su experiencia con ellas 🙂

12359902_10206558445974726_8280400728719171982_n

12341556_448442548696813_6272023644551489969_n

12376532_448442682030133_4535409909592327811_n

Al final del evento cada equipo presento los avances que habían logrado, las herramientas que crearon y las soluciones que planearon, el equipo de visualización se encargó de crear un pequeño sitio web en donde se centralizaron todas las apis desarrolladas durante el evento http://api.moreliahacks.org/, muchas de estas apis continúan siendo desarrolladas por sus creadores.

Comentarios personales

Para concluir la publicación me gustaría terminar con algunos comentarios personales, ser parte de la organización de este evento sin duda me dejo bastantes cosas, yo por lo general siempre me he encargado del aspecto técnico de las cosas, tech guy, la persona que está detrás de la creación de plataformas y aplicaciones, siempre estuve cómodo y conforme con eso, sin embargo cuando te empiezas a involucrar en otros aspectos fuera de tu área, cosas tan básicas como ver qué tipo de comida tendrán los participantes, el color de las playeras que recibirán, la decoración del evento y después tener la oportunidad de tomar el micrófono para expresar tus ideas y tus pensamientos a las personas, eso es algo que de alguna forma te cambia y te hace crecer como persona, pienso yo.

Contribuir con la creación de una comunidad de hackers cívicos en mi ciudad y la organización del primer hackaton de la ciudad es una experiencia que nunca antes había tenido, como mencionaba al inicio de mi post ya había tenido la oportunidad de participar en un hackaton y esta vez me toco estar del otro lado, ser el mentor :).

Como en todos los eventos, y más por ser el primero, hay muchísimas oportunidades de mejora, personas con las que te encontraras que no comparten tus mismas opiniones e ideales pero con las que al final debes lidiar y convencer del por qué haces las cosas que haces, de lo que si estoy seguro es que la colaboración entre las personas es el futuro y al final es algo que nos beneficia a todos como sociedad.

Saludos.

Mi experiencia durante el I/O Hack 2015

Hola lectores, tengo varios post acumulados que me gustaría publicar antes de que termine el año, varios son nuevos tutoriales de desarrollo, avances en mi investigación sobre la seguridad en SmartTvs y eventos de tecnología a los que he asistido estos últimos meses.

El 13 y 14 de noviembre se llevó acabo el I/O Hack 2015 en el Tecnológico de Monterrey campus Santa fe y tuve la fortuna de ser uno de los 40 seleccionados para asistir al hackaton. Era la primera vez que asistía a un evento de este tipo, ya sabía de la existencia de los hackatones y sabia más o menos bien de que se trataba pero nunca había tenido la oportunidad de participar en uno.

Pues llegue el viernes 13 (nunca he creído en la mala suerte hehe) al evento sin conocer a nadie, los organizadores y todo el staff eran bastante amable y procuraban que uno se sintiera cómodo en todo momento, ya una vez dentro de las instalaciones se respiraba un aire muy parecido al de un evento en campus party, pequeños grupos hablando sobre tecnología, personas presentándose y hablando un poco acerca de lo que hacen, un par de impresoras 3D en el centro haciendo modelos, etc. rápidamente me integre a uno de los grupos, me presente y comenzamos a platicar acerca de que les parecía el evento, en que programaban, que frameworks manejaban, hardware y demás cosas en lo que empezaba oficialmente el evento.

El hackaton tenía como temática el Internet de las cosas y había 3 categorías principales en las que se podía participar, estas eran:

  • Agricultura
  • Logistica
  • Retail (soluciones para pymes)

Por cada una de ellas se nos dio una plática y se nos hablo acerca de problemáticas muy puntuales a las que se enfrentan hoy en día, en lo personal me gusto bastante la charla sobre agricultura ya que representa una industria millonaria en México, y uno pensaría que agricultura y tecnología no tienen nada en común pero la verdad es que muchos de sus problemas si se pueden resolver usando tecnología.

Para no extenderme demasiado solo diré que al inicio del evento conocí dos personas bastante interesantes, quienes ademas de tener solidas habilidades en programación eran bastante buenos en las cuestiones de algoritmos, complejidad computacional y específicamente tratamiento de imágenes, Fernando Hernandez y Marco Antonio Cruz, al final participamos en la categoría de agricultura desarrollando una solución de reconocimiento de imágenes tomadas mediante fotografía aérea con drones, la idea era detectar cuando una plantación de caña de azúcar comenzara a secarse (analizábamos los niveles de amarillo en las puntas de la planta desde arriba) y con eso alimentábamos una red neuronal para determinar si se estaba echando a perder el producto, desarrollamos nuestro prototipo, hicimos las pruebas y lo presentamos a los jueces obteniendo el tercer lugar del Hackaton 🙂

Bueno hasta aquí mi resumen sobre el evento, lo que más me gusto y con lo que me quede fueron las experiencias que viví, toda la gente que conocí, las tecnologías que aprendí y sobre todo los buenos amigos que hice, ahora, mi intención con este post además de contarles un poco lo que viví es invitarlos a participar en un evento de este tipo siempre que puedan, así que les dejo los pros y contras de un Hackaton.

Pros de asistir a un Hackaton

  • Conoces gente muy interesante (TI, Makers, hackers, etc)
  • Te expones a nuevas tecnologías
  • Aprendes lo que sabes y te enseñan nuevas cosas
  • Haces amigos
  • Resuelves retos y problemas interesantes

Contras de asistir a un Hackaton

  • Si el evento no ofrece viáticos a sus participantes pues es un gasto
  • Si no te gusta desvelarte frente a una computadora eso es un problema
  • Si eres celoso al compartir tus ideas eso es un problema

Les dejo algunas fotos del evento:

CTxZiYVUEAEj3x0

CTytigUUAAAoUmn

CTvbH3WUwAEVMuy

CTu0T0rUYAA0sXc

12243283_10206406595418557_2330651871028124945_n

#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 🙂