martes, junio 15, 2021

La Inteligencia Artificial comienza a diseñar chips para hacer Inteligencia Artificial

Hace unos días os hablé sobre cómo la Inteligencia Artificial combinada con los robots de combate estaba suponiendo un gran avance en la tecnología armamentística y de cómo esta aplicación de la Inteligencia Artificial había generado una gran polémica tras la primera muerte humana causada por un dron autónomo el cual no había recibido ordenes de acabar con el objetivo. En ambos artículos estos avances en IA hacen que no parezca tan lejana la posibilidad de un futuro distópico controlado por máquinas como en la película de Matrix o Terminator

Figura 1: La Inteligencia Artificial comienza a diseñar chips para hacer Inteligencia Artificial

Hoy toca hablar de otro de los avances mas recientes en la Inteligencia Artificial, que ha generado bastante expectación, y que puede favorecer al desarrollo propio de la Inteligencia Artificial en infinidad de campos (cómo el de la industria armamentística y la robótica), pero también otros como el de la ciberseguridad, la salud o la economía. Hoy el tema es de Inteligencia Artificial y diseño de microchips.

Figura 2: Libro de Machine Learning aplicado a Ciberseguridad de
Carmen Torrano, Fran Ramírez, Paloma Recuero, José Torres y Santiago Hernández

Desde hace unos años no nos resultan extraños algunos términos cómo “circuito impreso” o “microchip” cuando tenemos una conversación, sin embargo, estos no son términos tan antiguos como la mayoría de gente piensa.

Una Microhistoria sobre los MicroChips

Siguiendo la estructura de las "Microhistorias" de nuestros compañeros Fran Ramírez y Rafael Troncoso, vamos a comenzar por el principio. La primera vez que se habló de microchip fue durante los años 50, cuando la empresa alemana Siemens y uno de sus ingenieros, Werner Jacobi, solicitaron registrar la patente de circuitos integrados con dispositivos amplificadores de semiconductores, la cual no tuvo éxito. Unos años después en 1958, Jack S. Kilby, que apenas llevaba unas semanas trabajando para Texas Instruments logró registrar la primera patente de un microchip describiendo esta tecnología como un cuerpo formado por material semiconductor en el que todos los componentes de su circuito están completamente integrados.

Figura 3: Primer microchip funcional desarrollado por Jack S. Kilby.

Para poder registrar la patente Kilby construyó un oscilador de rotación de fase compuesto por germanio que integraba 6 transistores en una base semiconductora. Tras el éxito en la obtención de la patente Texas Instruments comenzó a vender la tecnología de Kilby a las fuerzas aéreas de Estados Unidos.  La patente de Kilby provocó que varias compañías y científicos comenzasen a explorar este tipo de tecnologías.

Figura 4: Libro de "Microhistorias: anécdotas y curiosiades de la historia
de la informática (y los hackers)" de Fran Ramírez y Rafel Troncoso 0xWord.

De hecho, apenas seis meses después de la aparición de la patente Robert Noyce, cofundador de Intel también patento su propio circuito integrado siendo este una versión mejorada del microchip de Kilby, más simple, rápido y fácil de producir en masa. Unos años después con el avance de los circuitos integrados y sus aplicaciones en las nuevas tecnologías (como los teléfonos u ordenadores) Kilby recibió el Premio Nobel de Física por su contribución al desarrollo tecnológico.

Figura 5: Robert Noyce, cofundador de Intel sosteniendo el diseño de su microchip.

Ahora que ya conocéis un poco más la historia de los microchips y cómo aparecieron es hora de hablaros de Inteligencia Artificial y de cómo es posible utilizarla para desarrollar nuevos microchips cada vez mas eficientes. 

La IA de Google que crea chips para hacer mejor IA

Hace apenas unos días un equipo de ingeniería de Google anunció que habían desarrollado una Inteligencia Artificial capaz de diseñar chips tan eficientes (o incluso más) como los diseñados por ingenieros humanos. Hace un año ya se había hablado de este proyecto, pero todavía se encontraba en una fase muy prematura.

Según las ingenieras a cargo del proyecto, esta Inteligencia Artificial ha sido entrenada utilizando el método de Aprendizaje por Refuerzo (AR). Esto quiere decir que la IA se basa en experiencias pasadas para optimizar el diseño de microchips. A medida que se van haciendo nuevas pruebas la Inteligencia Artificial estudia los distintos parámetros cómo la dimensión de la plantilla, el consumo energético o la congestión de enrutamiento con el fin aumentar la velocidad de producción y optimizar el funcionamiento y consumo de los nuevos diseños.

Figura 6: Aprendizaje por Refuerzo aplicado a un problema básico.

A la hora de diseñar un chip los expertos humanos utilizan una técnica conocida como floorplanning, esta técnica consiste en hacer un planteamiento del circuito a replicar en el microchip buscando la distribución mas óptima de sus componentes sobre una plantilla sin que haya interferencias entre los mismos. Esta tarea puede resultar un tanto laboriosa por lo que muchos de los microchips producidos por los humanos suelen ser variaciones de plantillas diseñadas anteriormente. Con este nuevo método de diseño a través de la IA, Google busca romper con el uso de estas plantillas y conseguir diseños similares en tiempo récord. Al fin y al cabo, cuando los ingenieros han desarrollado un plano base que funciona con cierta eficacia no lo cambian para reducir los costes y tiempos de investigación.

Aunque esta tecnología es prometedora todavía esta en fases de prueba, ya que no es lo mismo el diseño de un microchip con una función muy específica que el diseño de un procesador, por ejemplo. Aunque sea temprano para hablar de procesadores como los de Intel o AMD completamente desarrollados por Inteligencia Artificial no se puede descartar que esto sea posible en un futuro. Los procesadores de Google sobre los que se planea aplicar este nuevo método de diseño están optimizados para tareas de aprendizaje automático allanando así el camino a la Inteligencia Artificial.

Figura 7: Chips TPU que Google comenzará a fabricar usando IA.

Tras conocerse esta noticia, Google también ha anunciado que los chips de algunas de sus futuras herramientas de Inteligencia Artificial serán diseñados precisamente utilizando esta tecnología, lo que en el caso de obtener la materia prima para fabricar los microchips podría traducirse en el ahorro de millones de dólares para el gigante tecnológico.  En la actualidad el ser capaz de producir un microchip unas micras mas pequeño que el de otra compañía, diseñado para hacer la misma tarea, puede suponer una fortuna, sobre todo a la hora de conseguir contratos con empresas dedicadas a la fabricación de dispositivos tecnológicos - como Snapdragon con la venta de sus procesadores a distintas compañías dedicadas a la fabricación de smartphones -.

¿Superará la IA a los humanos fabricando IA?

Por el momento la primera aplicación comercial de esta tecnología, como ya ha confirmado Google en una entrevista para la revista Nature, será en el desarrollo de una nueva versión de los chips TPU (Tensor Processing Unit) como los que se utilizan en los centros de datos de la compañía. Para demostrar que los resultados obtenidos por su IA eran viables Google ha hecho pública una imagen en la que se muestra, aunque de forma borrosa (ya que el diseño de ambos es confidencial), la diferencia entre la estructura de un chip diseñado por humanos y uno diseñado por su innovadora herramienta. 

Figura 8: Comparativa de chip fabricado por humanos (izquierda)
y chip fabricado por la IA de Google (derecha).

Aunque en la imagen solo se puedan apreciar unas manchas de distintos colores, cada color representa un tipo de componente y es fácil apreciar las diferencias entre una estructura y otra, además del ahorro de espacio que proporciona la propuesta de la inteligencia artificial. Al igual que Jack S. Kilby sirvió de precedente para otros científicos y grandes compañías Google y su Inteligencia Artificial pueden haber marcado el comienzo de una nueva era en el diseño de microchips cada vez mas eficientes y que sin duda darán mucho de que hablar durante los próximos años.

Saludos,
 
Autor: Sergio Sancho, Security Researcher en Ideas Locas.

lunes, junio 14, 2021

Calendario de Junio: Eventos, charlas, bootcamps y webinars de Ciberseguridad

Este mes de Junio me he animado a hacer algunas charlas y conferencias más. Tenía muchas ganas de volver a preparar alguna ponencia, y se me han acumulado algunas para finales de este mes. Hoy os dejo una lista de las fechas, por si alguna de ellas os encaja, que hay buena variedad.

Figura 1: Calendario de Junio: Eventos,  charlas, bootcamps y webinars de Ciberseguridad

La primera cita donde participaré será el día 22 de Junio, en un Webinar Online de Ciberseguridad organizado por la empresa Unitel, donde hablaré de "Cómo los cibercriminales utilizan el Big Data y la AI en el año 2021" para cometer sus fechorías. Un webinar gratuito.
La segunda cita que tengo será en el evento de 4YFN (Four Years From Now) del Mobile World Congress, donde este año yo daré la Keynote de Telefónica en el evento, hablado de "Hacking & Emprendimiento", que voy a aprovechar a hacer algo diferente ese día. Si vienes al MWC, acuérdate que el día 29 a las 13:00 yo estaré en el 4YFN dando esta charla. Los detalles se publican esta semana.
La tercera cita de Junio que tendré, será este Webinar también gratuito que haré con la Cámara de Jeréz el 30 de Junio. Para acabar el mes. Será una sesión para empresas con el objeto de que ver cómo el cibercrimen afecta a la pequeña y mediana empresa en nuestro país. Puedes apuntarte en la web.
A parte de estas tres conferencias que yo voy a realizar y que son de divulgación, tienes un calendario de formaciones disponibles para aprender en esta profesión. Nuestros compañeros de HackBySecurity han abierto todos sus Cursos Online de Ciberseguridad para este verano y puedes apuntarte a cualquiera de ellos. Todos llevan libros de 0xWord y Tempos de MyPublicInbox.
Y dos citas muy especiales. El día 20 de Junio un seminario sobre Ciberseguridad y Fortificación de SMTP, para los que tengáis que auditar o implantar servidores de comunicaciones SMTP en la empresa, y recordad que el día 21 de Junio da comiendo el Bootcamp de Ciberseguridad, nuestros compañeros de HackBySecurity que incluye no solo la formación de aceleración en ciberseguridad para empezar en esta profesión, sino también una evaluación con Singularity Hackers de todos los alumnos, lo que les ayudará a que se orienten mejor y más rápidamente hacia los puestos de ciberseguridad de mayor afinidad con sus capacidades.
Y esto es todo por ahora, que no es poco. En solo dos semanas puedes asistir a un montón de actividades que tienen que ver con ciberseguridad. Si de verdad te apetece aprender y conocer más de este mundo, tienes muchas formas de engancharte a él.

¡Saludos Malignos!

domingo, junio 13, 2021

Cómo el sesgo de género en el traductor de Google se extiende a Twitter

Ya sabéis que a principios de este año abrí una petición para que, tanto Microsoft como Google, trabajen en eliminar el sesgo de género que tienen en sus servicios de traducción entre Español e Inglés, donde las profesiones salen sesgadas por género, para hacer que "judge" sea "juez", "nurse" sea "enfermera" y "engineer" sea "ingeniero", y no al contrario, como pudiera ser también en las traducciones.

Figura 1: Cómo el sesgo de género en el traductor de Google se extiende a Twitter

Me consta que ambas compañías están trabajando duro para conseguir solventar esas soluciones, buscando todo tipo de soluciones para ello. Un día os hablaré de los trabajos de investigación que se están publicando al respecto para solucionar estos problemas, que tienen un impacto brutal en nuestra sociedad. 
Y un ejemplo de esto es lo que os muestro en este sencillo ejemplo con Twitter, que es cliente de los servicios de traducción de Google, y que como veis, el mensaje de arriba, se traduce con sesgo de género en las profesiones al ser un servicio proporcionado por los mismos motores de traducción. En el caso de Twitter, donde los mensajes son cortos, y se suele recortar términos, el sesgo se producirá, por pura estadística, más veces. 

Figura 3: Tweet traducido con sesgo de genero por los servicios de Google

Esperemos que esta situación sea transitoria, y se pueda arreglar pronto, pero aún quedan muchos rincones donde tenemos que mejorar los datos de entrenamientos de los sistemas de Inteligencia Artificial, porque si no, crearemos tecnología que no queremos tener. Si quieres apoyar la petición, puedes hacerlo aquí.

¡Saludos Malignos!

sábado, junio 12, 2021

Cómo programar Bots con Inteligencia Artificial para ganarte en los juegos: Un ejemplo con Bomberman & Pommerman

Hace unos años era muy fan de los videojuegos, en concreto de la serie Call of Duty y los NBA 2K. Pero mis andaduras en el mundo “friki” empezaron mucho antes, con la PlayStation 1 y 2: Bomberman y el Crash and Bandicoot. En esa época, mi frase favorita era “Malditos Bots” cuando perdía (tenía muy mal perder), y en meterme en el mundo de la inteligencia artificial… aprendí realmente a cómo se hacen esos bots

Figura 1:Cómo programa Bots con Inteligencia Artificial para ganarte en los juegos: Un ejemplo con Bomberman & Pommerman

Pero primero, empecemos con un poco de introducción al tema. Cuando escuchemos la palabra bots, y en el caso particular de "Bots de aprendizaje para videojuegos", os debe venir a la mente una tecnología: Reinforcement Learning (RL)

Intro a los bots y sistemas multiagente

El RL o aprendizaje por refuerzo es una rama de investigación de la IA muy interesante, donde distintos agentes interaccionan entre sí bajo un escenario realizando acciones. El Reinforcement Learning se diferencia de otros sistemas Multiagente por distintos motivos, entre los cuáles se destaca que estos obtienen un score/reward por cada secuencia generada de acciones, y se aprende a partir de ese valor. Este score es utilizado para que redes neuronales profundas (Deep Learning) o Planificadores Automáticos clásicos (utilizando heurísticas como A*) predigan qué acción se debe realizar en cada momento en función del conjunto de acciones que mejor reward dé. 

Figura 2: Libro de Machine Learning aplicado a Ciberseguridad de
Carmen Torrano, Fran Ramírez, Paloma Recuero, José Torres y Santiago Hernández

Aunque es muy interesante todo lo relativo a las redes de neuronas, hablaremos más sobre heurísticas, ya que es el principal componente que hizo grandes avances. Por decirlo de alguna forma, uno no puede correr sin saber cómo se camina. Para definir lo que es una heurística, utilizaremos la RAE

“En algunas ciencias, manera de buscar la solución de un problema mediante métodos no rigurosos, como por tanteo, reglas empíricas, etc.”

Por tanto, queremos resolver el problema sin realizarlo realmente. Estas heurísticas se pueden ver en el mundo real, un ejemplo:

- Un bate y una pelota cuestan 1,10€. 
El bate cuesta 1 euro más que la pelota. ¿Cuánto cuesta el bate?

1,10€ - 1, la pelota cuesta 0,10€ y el bate 1€, ¿no? Error. Quién haya pensado 1€, ha sido rápido que no preciso, y ha utilizado una heurística de aproximación. Realmente el bate cuesta 1,05€ y la pelota 0,05€.

Aunque estos ejemplos nos pueden hacer pensar que las heurísticas son malas, se utilizan mucho en problemas de competición entre agentes. El agente simulará “en su cabeza” qué acciones debe realizar y las seleccionará en función de una heurística. Después realizará estas acciones y verá si su previsión se adecua a la realidad del reward. Esto permite que la Inteligencia Artificial prediga qué acción realizar en función de posibles escenarios futuros.

En los algoritmos basados en normas había un techo de aprendizaje basado en la cantidad de datos que un sistema podía aprender. Deep Blue, que no utilizaba sistemas de RL sino planificadores clásicos, fue capaz de ganar al famoso ajedrecista Garry Kasparov en 1996, algo que antes parecía imposible. Pero un algoritmo más nuevo y complejo como AlphaGo llegó al nivel de expertos en el famoso y complicado juego asiático Go. Pero no se utiliza únicamente redes neuronales, como si de magia se tratara: AlphaGo Zero por ejemplo utiliza internamente heurísticas para simular pasos a corto plazo (MCTS, que comentaremos luego). Si queréis ver una implementación muy divertida de esta tecnología, el caso más sonado fue el de OpenAI, donde los personajes rompieron el juego “surfeando” las cajas.


Figura 3: OpenAI juego del Hike and Seek, donde los agentes compiten
y/o colaboran entre ellos para su objetivo particular (pillar o no ser pillados)

En otros sistemas Multiagente no competitivos, como esta simulación de un mundo con COVID que realicé, los agentes interaccionan con el entorno a partir de un modelo BDI (Belief, Desire and Intention): cada agente tienes unas creencias sobre el entorno (por ejemplo, creo que no tengo Covid), tiene unos deseos (quiero ir a trabajar y al bar los jueves) y realiza unas acciones (se desplaza al sitio y se toma una cerveza en su bar favorito). En este tipo de simulaciones, los agentes no aprenden qué acciones deben realizar en cada momento, sino que nos sirven para simular situaciones reales donde distintos agentes interaccionan y se comunican entre sí.

Figura 4: Rutinas para cada uno de los tipos de agente (Young y Adult) en un mundo con Covid. En este tipo de simulaciones, los agentes no aprenden qué acciones deben realizar. 

Pommerman

Trasteando con tecnología, encontré la implementación en Java de Pommerman, un juego que seguro que a mi hermano Victor Ibáñez le sonará mucho, ya que nos pasamos horas jugando a otro muy similar. A mi parecer, la primera implementación parecida a un Battle Royal estilo Fortnite. En ese juego, diferentes jugadores se posicionan en las 4 esquinas de un tablero y deben atacar a los adversarios insertando bombas en el tablero. Aquí tenéis el paper asociado.


A partir de comandos podéis definir bots, cada uno con sus características. Cada uno de los bots podrá realizar 5 acciones (poner una bomba y los movimientos izquierda, derecha, arriba, abajo), además de poder quedarse quieto. Los agentes inteligentes tendrán una heurística concreta para este problema, que en el paper mencionan como una diferencia entre el nodo de búsqueda inicial (nodo root) y el estado final, donde se consideran distintos factores: el número de compañeros vivos, el número de enemigos vivos, el número de bloques de madera existentes, la fuerza de explosión y la habilidad de poder chutar bombas (algunos objetos recogidos aumentan estas dos últimas capacidades).

Por ejemplo, a menos enemigos vivos en nuestro estado evaluado, mejor es esa solución. Según la “inteligencia” de cada uno de los bots, podemos encontrar las distintas tipologías de agentes:
  • DoNothing (0): El agente no realiza acciones.
  • Random (1): El agente selecciona acciones de su pool de forma aleatoria.
  • OSLA (2): One Step Look Ahead, este tipo de agente calcula (a partir de la heurística comentada) el siguiente paso a realizar, y escoge el que dé mejor resultado.
  • Simple Player (3): Este agente calcula con Dijkstra (máximo 10 steps) el path más corto a los objetos del entorno. Entonces se escapa en caso de estar en la potencial área explosiva de una bomba, deja una bomba en caso de estar adyacente a un jugador rival, se acerca a un enemigo en caso de estar cercano a 2-3 pasos y puede dejar una bomba en caso de estar cerca de un trozo de madera.
  • RHEA 200 (4): o Rolling Horizon Evolutionary Algorithm, este algoritmo genera N individuos de L pasos/acciones a realizar, utiliza métodos de algoritmos genéticos (como mutación o elitismo) para generar nuevos individuos y a partir de la heurística mencionada escoge el primer paso del mejor individuo.
  • MCTS (5): o Monte-Carlo Tree Search, es otro Stocastic Forward Planning. Como algunos recordaréis, Monte-Carlo se puede utilizar, por ejemplo, para aproximar PI a partir de N simulaciones del experimento, para estimar la probabilidad de que suceda un evento... MCTS balancea entre exploración-explotación para desplegar el árbol de búsqueda a partir de los nodos más prometedores (no lo despliega entero). Se simulan distintos escenarios des del nodo aún no expandido, y se selecciona la primera mejor acción a realizar.
Además, tenemos la opción de controlar a uno de los personajes (6), para jugar contra los bots en esta simulación, y seleccionar qué campo de visión tienen los personajes y si es una competición por equipos.

Si vemos la implementación del player DoNothing, observaremos el esqueleto que deben tener todos los otros jugadores. Debemos extender la clase Player y crear nuestras normas o algoritmos para la selección de acciones en la función act. En el caso de SinglePlayer, la norma de escaparse en caso de estar en una posición no safe, debemos movernos a una posición safe en la siguiente jugada.

Figura 6: Implementación del DoNothing player (izquierda) y acción de escaparse en SinglePlayer (derecha)

Una vez hemos compilado y ejecutamos el programa con los parámetros adecuados, podremos jugar contra los tipos de jugadores mencionados anteriormente o los que hayamos creado. Por ejemplo, un juego contra los 3 jugadores más sencillos (DoNothing, RandomPlayer y SimplePlayer) se ejecutaría como:

 .\run.jar 0 1 1 -1 0 1 2 6

Los primeros parámetros corresponden a qué tipo de juego se simula (individual o por equipos), la semilla del juego, repetición por cada semilla (queremos simular un juego) y el tipo de visibilidad (en nuestro caso -1 ya que queremos ver todo el tablero). Los últimos cuatro parámetros (0 1 2 6) corresponden a los tipos de jugadores, por lo que la distribución de los jugadores será: arriba-izquierda DoNothing, abajo-izquierda RandomPlayer, abajo-derecha OSLA y arriba-derecha el jugador que yo moveré. Veamos un juego:

Figura 7: Videojuego “sencillo”

Sí, me ganó el jugador DoNothing porque nos morimos a la vez el jugador OSLA y yo… Ahora escribo con el teclado roto. El jugador random, en cambio, se suicida en las primeras iteraciones dado que no aprende qué jugadas realizar, sino que escoge una del pool de posibles jugadas.

Si jugamos un juego contra los agentes más “inteligentes” (SimpleAgent, RHEA y MCTS) aumenta la dificultad. El comando es “.\run.jar 0 1 1 -1 3 4 5 6”, por lo que la distribución será arriba-izquierda SimpleAgent, abajo-izquierda RHEA, abajo-derecha MCTS y arriba-derecha mi jugador. Veamos un juego:

Figura 8: Vídeo juego modo “hard”

Entre mis amigos esto le llamamos la 13,14. Lo que sí que hemos podido aprender de hoy, a parte de la notable pérdida de mis habilidades jugando videojuegos, es un repaso sobre la IA en competiciones, qué es una heurística y cómo se programan bots para Bomberman con ellas. ¡No dudéis en descargaros el código, implementar algún bot y/o jugar!

Saludos,

Autor: Bruno Ibáñez, Investigador de Ciberseguridad e IA en Ideas Locas

viernes, junio 11, 2021

Singularity Hackers: Cómo elegir tu empleo de Ciberseguridad... (y acertar).

Entrar a trabajar en Ciberseguridad es algo que muchos, como fue mi caso, quieren y hemos querido. Pero puede resultar frustrante saber qué elegir para empezar a formarse, o por qué rama comenzar a especializarse. Hoy en día es una profesión madura donde un especialista de un SOC (Security Operations Center) necesita unas capacidades y unas habilidades personales distintas a las que necesita un DPO (Data Protection Officer), un Auditor de Compliance en la unidad CISO o un Pentester en el Red Team
No necesariamente todas las personas valen para todos los roles en ciberseguridad, ni necesariamente, y esto es lo más importante, vamos a poder brillar y ser felices en nuestro día a día, desarrollando cualquier trabajo en ciberseguridad. Para averiguar cuáles son tus habilidades y en qué trabajo de ciberseguridad se ajustan mejor, creamos Singularity Hackers.
La idea es tan sencilla, como compleja en su ejecución, y se ha hecho gracias al trabajo de expertos en análisis de capacidades, y una catalogación de una veintena de trabajos en ciberseguridad, midiendo para cada una de las personas, y de los puestos de trabajo, el impacto que tiene en cada uno de ellos las diferentes habilidades medidas en las diferentes pruebas que debes pasar.
La primera de ellas es la Prueba de Inteligencia, que mide las capacidades de cada uno de los candidatos de Singularity Hackers para saber cuáles son sus fortalezas y debilidades en las principales aptitudes cognitivas, sacando un mapa detallado de la aptitud verbal, espacial, de atención, de concentración, de razonamiento, numérica, ortográfica y mecánica.
Todas estas capacidades son necesitadas, en mayor o menor medida, en cada uno de los puestos de trabajo en Ciberseguridad que están catalogados en Singularity Hackers. Pero son necesarias más pruebas para evaluar la pareja más adecuada entre una persona y un puesto de trabajo en ciberseguridad. La segunda prueba que se realiza para alimentar el algoritmo de evaluación en Singularity Hackers es la Prueba de Competencias, que como podéis ver, llevará bastante tiempo realizar.
Esta prueba es fundamental, y mide las capacidades de cada persona en diferentes habilidades que serán necesarias en el día a día de capa puesto de trabajo. Una persona que está en el equipo de cumplimiento regulatorio del CISO no necesita las mismas habilidades que un pentester en un equipo de Quality Assurance, ni que un Security Researcher en un área de Innovación, y por eso se busca medir lo más acertadamente posible todas esas vertientes en cada uno de los perfiles que vienen a Singularity Hackers a buscar qué puesto de trabajo en ciberseguridad es el que mejor se adapta a ellos.
Después, hay que pasar la Prueba de Orientación Vocacional y Profesional, donde se mide la afinidad de cada una de las personas con las vocaciones Técnico-Manual, Científico-Investigador, Artístico-Creativo, Social-Asistencial, Empresarial-Persuasivo y Oficina-Administración. Es fácil de entender que cada puesto de trabajo requiere vocaciones distintas, y una persona creativa puede sufrir - y no brillar - en un trabajo que sea mecánico, y al revés. 
Por último, una de las pruebas especiales que se hacen es la Prueba del Pensamiento Computacional, que ayuda a medir en este tipo de trabajos de ciberseguridad las capacidades de resolución de problemas necesarias a tener para desarrollar con éxito estas profesiones.
Una vez pasadas todas las pruebas, que las podrás realizar en unas 4 horas más o menos, tendrás el resultado del informe, y algo que es lo más fácil y a la vez lo que más puede determinar el éxito de futuro en los estudios y en tu carrera profesional. Singularity Hackers te recomendará los Tres puestos de trabajo en Ciberseguridad que tienen más afinidad con tu perfil personal. 
Esto no quiere decir que ya estés preparado para desempeñar esas profesiones, ni mucho menos, pero sí quiere decir que las habilidades que tú tienes se adecúan más a esos tres puestos de trabajo, por lo que si quieres tener una experiencia positiva y un desarrollo profesional satisfactorio, más que probablemente esos son los trabajos a los que deberías orientarte. 

Fórmate para aquellos empleos donde vas a brillar

Antes de invertir mucho dinero para formarte en algo para lo que, a lo mejor, no tienes las habilidades adecuadas, invertir en analizarte durante un día para saber qué puestos de trabajo de ciberseguridad van a premiar más tus capacidades es una buena opción. Con el Bootcamp de Ciberseguridad, nuestros compañeros de HackBySecurity incluyen no solo la formación de aceleración en ciberseguridad para empezar en esta profesión, sino también una evaluación con Singularity Hackers de todos los alumnos, lo que les ayudará a que se orienten mejor y más rápidamente hacia los puestos de ciberseguridad de mayor afinidad con sus capacidades.


Conocerse a uno mismo es un camino largo, que a muchas personas lleva años. Yo no soy una persona de trabajo de oficina, ni de ir a un mismo sitio con rutina. Se me da bien resolver problemas y me encanta tenerlos, y eso lo descubrí con el tiempo. Pero cada uno somos distintos, y en los trabajos de ciberseguridad he visto a gente que no ha brillado como pentester y ha sido un auditor de seguridad espectacular.

Para empresas que buscan candidatos y personas que buscan empleo

Por supuesto, esto también funciona al revés. Si eres una empresa que estás buscando candidatos, el coste de equivocarte a la hora de elegir a una persona para un rol concreto en ciberseguridad puede ser altísimo. Contratar a una persona para un puesto de ciberseguridad para el que no tiene las competencias puede resultar carísimo. Evaluar a los candidatos con una prueba de Singularity Hackers te ayudará a tener un foto muy clara de su afinidad con el puesto. Y si estás buscando un puesto de trabajo, y pasas por Singularity Hackers, adjunta tu informe con los resultados al currículo, que será una buena carta de presentación sin duda.

¡Saludos Malignos!

jueves, junio 10, 2021

Blade Runners & Virtual Replicants con DeepFakes. La charla ya en Youtube

Antes de ayer fue el día en el que me tocó inaugurar el evento de OpenExpo Europe 2021 Virtual Experience con una charla en la que quise hablar de cómo las DeepFakes se están utilizando para engañar a través de vídeo conferencias y todas las técnicas que se están desarrollando para detectarlas. De todo esto os iré hablando en un artículo largo de varias partes con todos los vídeos y explicaciones, que ya sabéis que me gusta dejar las charlas documentadas.

La charla ya en Youtube

Pero desde hoy, la tienes disponible en mi canal Youtube, para que puedas ver la charla con el trabajo que hemos hecho en este año en el equipo de Ideas Locas con este asunto. Son solo 37 minutos, así que si tienes un ratito aburrido y quieres ver lo que conté, ya lo puedes ver. Aquí lo tienes.


Figura 2: BladeRunners & Virtual Replicants con DeepFakes

Las jornadas de OpenExpo continúan todavía con una agenda larga. Tenéis un código descuento del 10% en la compra de todo el material de la tienda de 0xWord, y los asistentes a la conferencia tendrán 100 Tempos gratis en MyPublicInbox patrocinados por Microsoft para que puedas consultar a los Perfiles Públicos de la plataforma.
Además, este jueves y este viernes hay unas entrevistas sobre innovación, startups y emprendimiento a nuestros compañeros de Wayra, Miguel Arias e Irene Gómez, así que tienes motivos para estar entretenido y disfrutar aún del evento.

¡Saludos Malignos!

miércoles, junio 09, 2021

MagicRecon: herramienta para la recolección de datos y la búsqueda de vulnerabilidades en un objetivo

En el mundo del pentesting la fase de reconocimiento, o también conocida como recolección de información, es una de las más importantes para poder llevar a cabo un proceso de Ethical Hacking efectivo, y de manera cómoda. La principal misión de esta fase es conocer todos los detalles de nuestro objetivo. Si utilizamos de ejemplo algún programa de Bug Bounty, nuestra fase de recolección de información se centrará principalmente en conocer todos los activos que tiene el objetivo, que tecnologías y servicios utilizan, en qué puertos están los servicios, etcétera.

Figura 1: MagicRecon: herramienta para la recolección de datos
y la búsqueda de vulnerabilidades en un objetivo

Para realizar esta fase de manera cómoda en el ámbito del Bug Bounty y también del Ethical Hacking en general, hemos creado la herramienta MagicRecon. La puedes encontrar en su repositorio de GitHub oficial: https://github.com/robotshell/magicRecon


MagicRecon es una herramienta escrita en bash cuya principal finalidad es maximizar el proceso de recolección de datos sobre un objetivo y la búsqueda de vulnerabilidades comunes. Ejecutando la herramienta e introduciendo la URL del objetivo, podemos empezar a obtener información sobre el objetivo así como comprobar si es vulnerable a varias vulnerabilidades comunes como puedan ser Cross-Site Scripting (XSS), SQL Injection o Open Redirect

Figura 3: Libro de Ethical Hacking 2ª Edición
de Pablo González en 0xWord

También podemos comprobar otro tipo de vulnerabilidades como por ejemplo la falta de cabeceras, vulnerabilidades en certificados SSL, la falta de los registros SPF y DMARC en la configuración del correo o vulnerabilidades CORS. Todo ello, almacenado en diferentes formatos para que el usuario pueda posteriormente manejar los datos extraídos de forma fácil. A continuación, vamos a detallar cada una de las opciones de la herramienta.

Figura 4: Ejecución de MagicRecon

1) Install dependencies: La primera vez que descarguemos la herramienta desde su repositorio oficial, tendremos que utilizar esta opción para instalar todas las dependencias que hacen falta para utilizar la herramienta. Entre las dependencias encontramos muchas herramientas conocidas como Subfinder o Nuclei y lenguajes de programación como Go.

2) Massive vulnerability analysis with notifications via Discord, Telegram or Slack: La segunda opción que encontramos en la herramienta, es quizás unas de las opciones más interesantes para los usuarios que utilizan la herramienta en programas de Bug BountyAntes de poder lanzar esta opción, deberemos de configurar la herramienta Notify para poder recibir las alertas en alguna de las tres aplicaciones disponibles, Slack, Discord o Telegram. Una vez configurado, podremos lanzar esta opción de la herramienta. Lo primero que se nos pedirá es una URL objetivo y un número de segundos.

La herramienta empezará a realizar una enumeración de subdominios sobre la URL objetivo introducida por el usuario y posteriormente a cada uno de los subdominios activos encontrados se le pasarán todas las  plantillas de la herramienta Nuclei en busca de vulnerabilidades. Si en alguno de los subdominios se descubre alguna vulnerabilidad, se nos enviará una notificación a la herramienta que hayamos configurado (Slack, Discord o Telegram) para recibir las alertas. 

Figura 6: La app Slack recibiendo notificaciones

Este proceso de enumeración de subdominios y posteriormente la búsqueda de vulnerabilidades se repetirá cada X segundos, donde X es el número de segundos que ha introducido el usuario.En resumen, con esta opción de la herramienta podemos tener un escáner automático de vulnerabilidades que está constantemente buscando nuevos subdominios y vulnerabilidades sobre un objetivo.

3) Subdomain enumeration: La tercera opción que encontramos en la herramienta nos permite realizar una enumeración de subdominios completa utilizando la herramienta Subfinder y Gobuster. Con httpx comprobaremos que subdominios están vivos y finalmente, con Aquanote, la herramienta realizará una captura de pantalla de cada uno de los subdominios para poder visualizar de forma fácil su contenido.

Figura 7: Aquatone realizando capturas de pantalla sobre
algunos subdominios de Hackerone.

4) Subdomain enumeration and vulnerability scanning with nuclei: Con esta opción de la herramienta podremos realizar la misma función que la opción anterior, pero cada uno de los subdominios activos descubiertos se ejecutará con la herramienta Nuclei para buscar vulnerabilidades.

5) Subdomain enumeration with common vulnerabilities scanning: Con esta opción de la herramienta realizaremos todos los pasos de la opción 3 pero incluiremos la comprobación de una serie de vulnerabilidades como la falta de cabeceras en los dominios, la falta de los registros SPF y DMARC en la configuración del correo, vulnerabilidades CORS, Open Redirect, XSS, SQL Injection, etcétera.

6) Scan for javascript files: Los ficheros JavaScript pueden esconder información interesante para un atacante como usuarios, contraseñas, endpoints o API keys. Con esta opción lo que hará la herramienta es analizar todos los ficheros JavaScript que se encuentren en el dominio y analizar su contenido en busca de datos de interés.

Figura 8: Libro de Hacking Web Technologies 2ª Edición en 0xWord de
Chema Alonso, Enrique Rando, Amador Aparicio, Pablo González y Ricardo Martín

7) Scan for files and directories: Mediante esta opción, podremos realizar un escaneo de directorios y ficheros usando la herramienta Wfuzz, para ello, el usuario deberá introducir un diccionario en las variables de configuración del script.

8) All in one!: Esta es sin duda la opción más usada de la herramienta ya que junta la opción 3, 5, 6 y 7 en una sola. Inicialmente esta opción era el core del proyecto MagicRecon ya que simplemente introduciendo una URL objetivo, la herramienta nos devuelve todos los subdominios posibles, las vulnerabilidades que se encuentran en cada subdominio, se analizan todos los ficheros JavaScripts encontrados y se realiza un escaneo de ficheros y directorios. Todo ello, almacenado de forma ordenada y en diferentes formatos para que el usuario pudiera manejar los resultados de la herramienta de forma fácil.

Figura 9: Resultados de utilizar la opción Subdomain Enumeration.

Acabamos de ver en detalle cada una de las opciones disponibles dentro de la herramienta, cabe destacar que la herramienta está en continuo desarrollo y es posible que se añadan nuevas funcionalidades o se mejoren algunas de las que ya había. Actualmente se está trabajando en mejorar el rendimiento de la herramienta y en la función de reporting para que los usuarios dispongan de un resumen más cómodo y llamativo, para ello, se está trabajando en poder almacenar los resultados en formatos como PDF, CSV y JSON.

Sin duda, se trata de una herramienta muy interesante y fácil de utilizar que hay que incluir en nuestra mochila de Red-Team, ya que con ella podemos abordar diferentes ámbitos del proceso de Ethical hacking, como la fase de recolección de información o la fase de búsqueda de vulnerabilidades.

HAPPY HUNTING!

martes, junio 08, 2021

Contacta con los Microsoft MVP - Most Valuable Professionals - en MyPublicInbox

Desde ya, la comunidad de Microsoft (MVP) Most Valuable Professionals tienen un sitio especial en MyPublicInbox. Hemos colaborado con Cristina González, MVP Lead de Microsoft en el Sur de Europa, para que todos los MVPs de Microsoft de esta comunidad estén en MyPublicInbox con un buzón público, que tiene un distintivo especial, con lo que vas a poder conectar con los mejores profesionales en tecnologías Microsoft a través de MyPublicInbox.
Los profesionales premiados con el distintivo de MVP por Microsoft son aquellos que tienen una especial colaboración con las comunidades técnicas en sus áreas de reconocimiento, como son Developer Techologies, Azure, Business Apps, Ciberseguridad, Cloud Computing, Datacenter Managemente, Office Apps, etcétera, y que suelen ser muy activos en conferencias, blogs, foros, redes sociales, grupos de trabajo, asociaciones, etcétera. 
Yo tuve la suerte de ser parte de la comunidad de MVPs durante 14 años, y algunos compañeros míos como Ivan González, Sergio de los Santos, Pablo González, Luis Fraile, Unai Zorrilla o Iñaki Ayucar, tienen o han tenido esa distinción. Ahora podrás encontrar a esta comunidad en una zona especial dentro de la etiqueta Microsoft MVP de los Perfiles Públicos de MyPublicInbox.
Como verás, todos ellos tienen un distintivo de MVP en su perfil, el área de conocimiento por el que han sido premiados, y la fecha durante la cual han obtenido esta distinción, como puedes ver aquí en el perfil de Eduard Tomàs o el de Ángel Álvarez Núñez, que escribió el libro de Windows Server 2016: Administración, Seguridad y Operaciones en 0xWord.
Todos los Perfiles Públicos que hayan sido premiados por Microsoft como expertos en alguna tecnología con la distinción de MVP tendrán ese distintivo en su perfil, asegurándote que vas a contactar con algún profesional destacado en ese área de conocimiento y, por tanto, con experiencia sobrada en esas materias.

Si tienes una necesidad profesional o una duda concreta que tiene que ver con tecnologías Microsoft, ellos son los más adecuados con los que debes conectar, además, como miembro de esa comunidad durante tanto tiempo, os aseguro que todos son personas muy especiales en el trato.

¡Saludos Malignos!

Entrada destacada

Singularity Hackers: Para descubrir el trabajo de Ciberseguridad & Seguridad Informática que mejor se adapta a ti

Hoy me toca hablar de Singularity Hackers , la nueva plataforma de Inteligencia Artificial que te ayuda a descubrir el trabajo en Cibersegu...

Entradas populares