jueves, agosto 31, 2023

VI Edición BootCamp Online de Especialización DevOps en GeeksHubs Academy (Con mucho DevSecOps)

Ya he contado muchas veces que la seguridad de las aplicaciones y los sistemas tiene muchas líneas de defensa. El producto en sí como esté pensado por el equipo de negocio probablemente en las primera, el diseño de la solución que hacen los arquitectos de software es la segunda, las buenas prácticas y la calidad del software que generan los desarrolladores la siguiente. Por supuesto, los procesos de QA de seguridad, y las tareas de pentesting que se hacen en pre-producción.
La verificación de los controles que hace después el equipo CISO antes de dar el "go" a producción para establecer las políticas de fortificación marcadas por el BlueTeam, el cumplimiento de regulación y los KPIs de seguridad que establecen. Y después, todas las tareas de automatización en seguridad que hace el equipo de DevOps para asegurar que todo lo anterior tiene su reflejo en producción.

El puesto de DevOps & SecDevOps es cada vez más relevante en el negocio de las empresas. No solo por su función clave en la seguridad de la compañía, sino porque además son los que garantizan la velocidad de entrega de valor al negocio de manera continúa. Son la pieza clave de innovación de en el ciclo de vida que dio velocidad y competitividad a las empresas por medio de Continuos Delivery

En Telefónica , por ejemplo, tenemos ahora mismo abiertas a 31 de Agosto, un total de más de 40 vacantes de DevOps, para que veas que es un rol de mucha importancia.


Si te gustan las redes, los sistemas, el mundo de IT, la arquitectura de sistemas, hacer scripts de despliegue, etcétera, es un rol fantástico. Es de todo menos monótono, exige aprender muchas herramientas, conocer muchos sistemas, interactuar con muchos grupos diferentes, y tiene una relevancia altísima en los equipos de ingeniería.

Si te apetece formarte en este rol, el próximo 13 de Octubre da comienzo un BootCamp Online de DevOps en GeeksHubs que tiene formación continua y master clases los fines de semana. 12 semanas de campo de entrenamiento currando de lo lindo para que enganches a trabajar justo después desempeñando estas funciones en equipos de ingeniería profesionales. Tienes el detalle completo del curso en el Syllabus que he subido a mi Slideshare.


El temario completo lo tienes en la web del BootCamp Online de DevOps en GeeksHubs pero como puedes ver, está formado por  6 módulos y un Proyecto Final para que automatices tus propios despliegues listo para producción.

El equipo formador de este BootCamp Online de DevOps en GeeksHubs  está dirigido por Javier Rodríguez Soler, del que disfrutarás también de su masterclass, que es Software Manager en Openbank y especialista en montar equipos de ingeniería de Continuous Delivery, con el que puedes contactar a través de su perfil de MyPublicInbox.

Por supuesto, todos los asistentes al BootCamp Online de DevOps en GeeksHubs tendrán el libro de Docker:SecDevOps de 0xWord escrito por Elias GrandeFran Ramírez y Rafael Troncoso y 500 Tempos de MyPublicInbox para utilizarlos en la plataforma, donde podrán contactar con otros profesionales y formadores de este mundo como son Jesús Alcade o Alicia Alcalde Delgado.

y 500 Tempos de MyPublicInbox

Así que, si te gusta este mundo profesional, en 12 semanas te pegas un meneo, y te quiero haciendo entrevistas para venir a trabajar con mi equipo cuanto antes, que nos hacen falta muchos profesionales para crear tecnología.

¡Saludos Malignos!

Autor: Chema Alonso (Contactar con Chema Alonso)  


miércoles, agosto 30, 2023

Level_Up!: El WriteUp del reto "ReLottery" y un nuevo reto de agosto llamado “Pay Me!”

Seguimos con nuestra política de intentar publicar un reto mensual y solucionar otro de los retos antiguos de nuestra plataforma de aprendizaje y retos en Web3 Level_UP! En esta ocasión vamos a solucionar ReLottery, el cual implementa una de las vulnerabilidades más críticas que se pueden encontrar en el mundo Web3. Ya hemos hablado en el blog alguna que otra vez sobre las vulnerabilidades de Re-Entrancy, pero hoy vamos a ver cómo funciona en la plataforma de Level_UP! y conseguir los puntos.

Figura 1: Level_Up!: El WriteUp del reto "ReLottery"
y un nuevo reto de agosto llamado “Pay Me!”

Además, hacia el final del artículo os hablaremos del nuevo reto llamado Pay Me! Un reto de dificultad 1, es decir, de nivel introductorio en el que el usuario deberá interpretar el contrato para entender lo que hay que hacer para conseguir la flag. En este mes de agosto, que estamos acabando, ya viene bien un reto ‘suave’ en temas de dificultad y proporcionar a los que empiezan otro reto con el que aprender nuevos conceptos y nuevas formas de interactuar con los SmartContract.


Comenzamos hablando del reto ReLottery, el cual tiene una dificultad de 4 sobre 5. No es un reto sencillo, aunque conociendo la vulnerabilidad de Re-Entrancy y sabiendo cómo funciona las cosas se simplifican.

El reto ReLottery

En la descripción del reto ya nos comentan que deberemos desplegar un contrato para implementar el ataque. También nos indican como pista que el contrato tiene unos pocos fondos y que deberá quedarse a 0 para poder conseguir la flag. Si observamos la función getFlag() podemos ver en el código del contrato que necesitamos que el balance del contrato sea 0. En el instante que sea 0, se podrá obtener la flag.

Figura 3: Función getFlag()

Leyendo el reto y el contrato podemos encontrar que se simula un entorno de lotería, dónde el usuario o player tiene que adquirir un boleto y puede pedir el reembolso de este si no quiere participar en el sorteo.

Figura 4: Función pagarBoleto()

Para poder pedir un reingreso o reembolso de lo que hemos depositado en el contrato, primero deberemos pagar y adquirir uno o varios boletos. Por esta razón, tenemos la función ‘pagarBoleto’. Se nos pide abonar al menos 1000000 wei. Con esta acción ya conseguiremos al menos un boleto y podremos pedir reembolso. La función ‘anularBoleto’ permite recuperar los fondos pagados en la previa compra de un boleto. Esta es la función ‘anularBoleto’ y su código.

Figura 5: Función anularBoleto()

Lo que se puede ver es que se comprueba que el usuario que pide anular el boleto tiene fondos pagados, es decir, ha comprado previamente un boleto. La segunda instrucción de la función realiza el pago al que solicita el reembolso. Si el solicitante de reembolso es un wallet se le enviará sus fondos, el segundo require se resolvería correctamente y se actualizarían los fondos del usuario en el contrato.

Justo aquí está el problema, se actualizan los fondos del usuario en última instancia. ¿Qué ocurre si cuando devuelven los fondos, no se da el ‘ok’ y se vuelve a solicitar de forma recurrente el reembolso? Aquí tenemos la vulnerabilidad de Re-Entrancy.

Si el usuario que pide el reembolso es un contrato, se puede definir cómo actúa el contrato en el momento que recibe fondos: funciones receive y fallback. A continuación, se muestra un ejemplo de contrato que se puede desplegar para interactuar con el contrato ReLottery

Figura 6: SmartContract attack

Se puede ver la implementación de la función fallback. Esta función será invocada cuando el contrato ReLottery devuelva fondos a este contrato. El flujo del contrato attack es el siguiente:
  1.  El contrato attack a través de su función attack() compra un boleto y luego pide anular el boleto.
  2.  El contrato ReLottery inicia la devolución de fondos al contrato attack.
  3. El contrato attack, a través de la función fallback, comprueba si el balance del contrato ReLottery es 0. Si no es 0, volvemos a solicitar devolución de fondos.
  4. Esto se realiza de forma iterativa hasta que el balance de ReLottery es 0. En este instante se empieza a cerrar las llamadas recursivas a fallback y dichas transacciones se finalizan correctamente.
Ahora, vamos a desplegar el contrato sobre la Blockchain de juego de Level_UP! (nuestro Ganache).

Figura 7: Desplegando el SmartContract Attack en Ganache

En el despliegue se indica la dirección del contrato ReLottery y se le pasa al constructor del contrato attack. Ahora, se invoca la función attack() y se debe indicar en value la cantidad de wei que queremos que el contrato pague.

Figura 8: Contrato desplegado

Se consigue obtener el balance total del contrato ReLottery más lo que el propio contrato pagó. Lo importante es que el balance total del contrato ReLottery queda a 0, por lo que ahora se puede solicitar la flag y validarla para sumar los puntos.

Figura 9: Flag conseguida y validada

Nuevo reto: Pay Me!

En este nuevo reto de dificultar 1 sobre 5, tenemos que interactuar con el contrato con el objetivo de entender cómo funcionan los pagos en un SmartContract. El reto consistirá en conocer cómo funcionan las funciones payable y cómo interactuar con este tipo de escenarios.

Figura 10: Reto Pay_me #14

El reto es el nivel 14, esto quiere decir que es el reto número 15 que tenemos en Level_UP! Es un reto básico, para todos aquellos que comienzan con los SmartContracts y recuerda mucho al reto Questions o Interact, debido a la poca complejidad que se le presupone al reto. Animaos a jugar y aprender con Level_UP! disponible en su Github: https://github.com/Telefonica/level_up/

Seguiremos resolviendo retos y creando nuevos retos para el aprendizaje en seguridad en Web3 y recuerda que si quieres aprender de estas tecnologías, tienes Bit2Me Academy, que es una plataforma online para aprender de Web3, BitCoin, Tokenomics o Ethereum con cursos gratuitos además del libro dedicado a "Bitcoin: La tecnología Blockchain y su investigación" de Yaiza Rubio y Félix Brezo que seguro que te ayudan a ponerte las pilas.

Más artículos de Web3, Blockchain & SmartContracts
Saludos,

Autor: Pablo González Pérezescritor de los libros "Metasploit para Pentesters", "Hacking con Metasploit: Advanced Pentesting" "Hacking Windows", "Ethical Hacking", "Got Root",  “Pentesting con Powershell” y de "Empire: Hacking Avanzado en el Red Team", Microsoft MVP en Seguridad y Security Researcher en el equipo de "Ideas Locas" de la unidad CDCO de Telefónica.  Para consultas puedes usar el Buzón Público para contactar con Pablo González

Contactar con Pablo González

martes, agosto 29, 2023

Charla con Carlos Azaustre, Microsoft MVP Developer Technologies

Durante la pasada OpenExpo Europe 2023, tuvimos una interesante sesión en la que Paco Estrada entrevistó a Carlos Azaustre, divulgador tecnológico, y Microsoft MVP en Developer Technologies, que duró cerca de media hora, y que hemos recuperado.


La sesión se centra en las opciones que tiene el mundo del desarrollo, la divulgación, cómo un profesional de la programación se convierte en Microsoft MVP y el mundo del desarrollo que tenemos hoy en día por delante.


Si quieres contactar, preguntar o proponer algo a Carlos Azaustre o Paco Estrada, puedes hacerlo a través de sus buzones públicos en MyPublicInbox, donde están disponible.


La entrevista la he subido a mi canal de Youtube, donde también puedes ver ya las otras charlas de OpenExpo Europe 2023 que también están disponibles:
¡Saludos Malignos!

Autor: Chema Alonso (Contactar con Chema Alonso)  


lunes, agosto 28, 2023

CrazyToolBox: Una herramienta multifunción de utilidades Web3

En el equipo de Ideas Locas llevamos ya un tiempo jugando con la tecnología Web3 y aprendiendo sobre Blockchain y los SmartContracts. Hemos tenido la suerte participar en eventos y, a la vez que aprendemos, realizar pequeños aportes a la comunidad Open Source como nuestra plataforma de aprendizaje basado en retos Level_Up!, en donde tratamos de seguir ampliando con nuevos retos mes a mes e incluso hacemos pequeñas actualizaciones como la implementación de los NFTs para los jugadores que hicimos hace pocos meses.


En esta ocasión, hemos querido hacer una pequeña caja de herramientas con utilidades varias para Web3 que hemos estado utilizado en nuestro día a día, según vamos aprendiendo nuevas cosas de este apasionante mundo. Estas son:
  • Conversor de unidades
  • Codificador de selector de funciones
  • Decodificador de selector de funciones
  • Decodificador de entrada de transacciones
  • Calculadora SHA-3 (Keccak256)
  • Validador EIP55
  • Validación de firmas
Figura 2: Interface de Crazy Toolbox

CrazyToolBox se trata de una herramienta con GUI, escrita en Python y apoyada principalmente en la librería web3.py y también PySide para la parte gráfica. Puedes descargarla desde su repositorio de GitHub y realizar la instalación en muy pocos pasos con pipenv:
  • pipenv install
  • pipenv shell
  • python main.py
En el archivo Pipfile se encuentran listadas todas las dependencias con las que trabaja la aplicación, y que pipenv instalará en un nuevo entorno virtual con los comandos indicados anteriormente. Con estos sencillos pasos puedes tener CrazyToolBox rápidamente ejecutándose en tu equipo.


A continuación se detalla cada una de las secciones que podéis encontrar en la herramienta:
  • Conversor de unidades: Permite convertir entre wei, gwei y ether, además de un modo avanzado donde se pueden convertir entre más de 20 tipos de medidas. Admite hasta 30 decimales de coma flotante.
  • Codificador de selector de funciones: Permite generar el selector de una función. Para ello hay que indicar el nombre de la función y los tipos de parámetros que tiene en una sencilla interfaz. También es posible pasar directamente la firma de la función, por ejemplo, la función transfer con dos parámetros, un tipo address y otro uint256: transfer(address,uint256).
  • Decodificador de selector de funciones: Esta sección hace justo lo contrario a la anterior, es decir, dado un selector de una función intenta obtener la firma de la función. Para ello se hace uso de la API de 4byte.directory.
  • Decodificador de entrada de transacciones: En este caso se permite decodificar la entrada de una transacción a la firma de función y los parámetros asignados sin necesidad del ABI del contrato. De nuevo, para obtener la firma de la función se hace uso del servicio de 4byte.directory.
Figura 4: Sección del apartado decodificador
de entrada de transacciones en Crazy Toolbox
  • Calculadora SHA-3 (Keccak256): Esta funcionalidad permite calcular el hash keccak256 del texto introducido en el input.
  • Validador EIP55: El validador EIP55 permite comprobar si una dirección cumple con este EIP y, en el caso de que no lo cumpla, calcular el EIP55 correspondiente a la dirección de entrada indicada.
  • Validación de firmas: En este caso, dado un texto que se ha firmado, o el hash del texto, más la firma, devuelve la dirección del propietario de dicha firma.
Figura 5: Sección del apartado de validación de firmas en Crazy Toolbox

Esperamos que esta nueva herramienta pueda resultarte útil. Recuerda que si quieres aprender de estas tecnologías, tienes Bit2Me Academy, que es una plataforma online para aprender de Web3, BitCoin, Tokenomics o Ethereum con cursos gratuitos además del libro dedicado a "Bitcoin: La tecnología Blockchain y su investigación" de Yaiza Rubio y Félix Brezo que seguro que te ayudan a ponerte las pilas. 

Figura 6: Libro dedicado a "Bitcoin: La tecnología Blockchain y su investigación"
de Yaiza Rubio y Félix Brezo

Os animamos a que probéis la nueva herramienta y encontráis algún fallo, o queréis que incorporemos alguna sugerencia de mejora nos lo hagáis saber vía nuestro buzón público en https://MyPublicInbox.com/IdeasLocas.  


Más artículos de Web3, Blockchain & SmartContracts

domingo, agosto 27, 2023

"El Hacker del Gorro" y otros retos de la Identidad en la era de los LLM para evitar el Prompt Injection

Durante este verano, donde he ido todo el tiempo en "modo incógnito", es decir, con el pelo en coleta, gafas de sol o gafas de ver, y por supuesto sin gorro, he estado lejos del gorro de rayas que suelo utilizar para mis charlas, y actos públicos. Solo me lo he puesto para grabar el vídeo de TikTok que publiqué hace unos diez días. Pero he estado lejos de que mi identidad tuviera nada que ver con la imagen del gorro. 

Figura 1: "El Hacker del Gorro" y otros retos de la Identidad en la era de los LLM

Eso hace que la gente que me conoce con esa imagen del gorro no me reconozca, aunque, por supuesto, sigo siendo yo. Algunas personas me han preguntado si era yo, y una de ellas se atrevió a decirme que me conocía pero que no sabía de qué. Y yo le contesté, con normalidad, que era Chema Alonso, y que no sabía si nos conocíamos o no. Y el me dijo: "¡Claro!, ¡El hacker del gorro!".

Figura 2: Google Images de "El hacker del Gorro"

Supongo que muchos me conocen como eso, como "El hacker del gorro", así que para las personas de este país, y para algunas de fuera, supongo que referirse a "El hacker del gorro" es referirse a mí. De hecho, llamado por la curiosidad decidí buscar en Google Images para ver si realmente el apodo de "El hacker del gorro" era tan evidente. Y la respuesta la tenéis en la Figura 2.

Los apodos, las referencia culturales y hechos históricos de la identidad en ChatGPT

Visto esto, y teniendo en cuenta que estamos entrando en el mundo de los LLMs donde la forma de interactuar con la tecnología se basa en "conversar", se abren muchas preguntas que responder, sobre todo desde el punto de vista de la identidad. Podría hablar con ChatGPT y pedirle que me explique algo al estilo de "El hacker del gorro" y usar ese apodo como una referencia de identidad hacia mí, así que fui a preguntarle directamente a GPT4 y... efectivamente, ese apodo lo tiene unido a mi identidad.

Figura 3: El hacker del Gorro en ChatGPT4

Y claro, esto abre un universo de posibilidades y caminos que hay que resolver. El primero de ellos es...¿Podríamos saltarnos filtros de Prompt en técnicas de Prompt Injection para poder acceder a contenido limitado de determinadas personas? Es decir, supongamos que tenemos un filtro que evita que se pregunten cosas en el LLM de una organización sobre una determinada persona pero somos capaces de referirnos a ella mediante apodos aprendidos por el LLM. ¿Se podría hacer que el LLM nos respondiera a esa pregunta?

Figura 4: El Chief Digital Officer de Telefónica

La siguiente pregunta es... ¿de cuántas maneras se puede referenciar a una persona en un LLM sin decir su nombre? Parece evidente que por puestos que ocupa en el momento del entrenamiento del LLM es fácil, como vemos en la imagen anterior, pero también podría ser por cosas que la gente le llame. Yo he explicado muchas veces que al programa de El Hormiguero solo he ido una vez, pero aún así mucha gente, y el propio GPT4 marcan esa referencia de "El Hacker del Hormiguero" como parte de mi identidad.

Figura 5: El Hacker del Hormiguero

De aquél programa me traje no solo la oportunidad de conocer a Pablo Motos, de meter en mi lista de amigos a gente como Pablo Ibáñez "El hombre de Negro", Damián Mollà, Marron y Juan Ibáñez, sino un atributo de identidad que ha quedado unido a mí. Llegado a este punto, podría ser cualquier referencia que se hubiera utilizado con una persona. Por ejemplo, Alejandro Sanz es el "cantante del corazón partío", como podéis ver en esta pregunta que le hago a GPT4.

Figura 6: El cantante del corazón partío

Por supuesto, si has escuchado música española en los últimos años seguro que has entendido la referencia, porque para las personas es una referencia cultural que identifica a Alejandro Sanz con su canción de "Corazón Partío". En mi caso, he buscado por la referencia que usaba Javi Nieves en los años en los que trabajé con él en la radio, y parece que para GPT4 sigue siendo parte de mi identidad.

Figura 7: "El hacker Bueno" por "culpa" de Javi Nieves

Esto abre un sinfín de posibilidades a la hora de gestionar un interfaz de acceso a información y conocimiento volcado en un LLM, donde las técnicas de Prompt Injection pueden tener más herramientas a la hora de saltar filtros de acceso a la información asociada a identidades, si intentamos bloquear la "identidad" en el Prompt de Entrada, y va a ser necesario bloquear el acceso a la identidad después de resolver con el propio LLM el Prompt de entrada y saber de qué identidades estamos hablando.

Figura 8: El mejor director (sesgo de Cine) en el Siglo XX identifica Luis Buñuel

Esto es tan complejo como que puede ser incluso una cuestión de atributo asociado a una identidad en un porcentaje, como en el caso anterior, donde si preguntamos por una referencia opinable, como "El mejor escritor de nuestro tiempo", y sea una referencia compartida por dos identidades, como son el maestro Arturo Pérez-Reverte y Javier Marias.

Figura 9: El mejor escritor español de nuestro tiempo
identifica a Arturo Pérez-Reverte y Javier Marías

Imaginaos que tenemos un LLM con documentos de una administración pública, y está filtrado en el Prompt que se puedan buscar por nombres de personas información, pero alguien dice "Qué sabes de el mejor escritor español de nuestro tiempo". O de "El hacker más famoso". 

Figura 10: El hacker más famoso identifica a Chema Alonso

De nuevo, no confundáis que "Es" con que "Identifica" que es lo importante de este artículo. Puede que lo sea o que no lo sea - que ya sabéis que ChatGPT puede inventarse lo que le dé la gana - pero la clave es que lo pueda identificar como.  No es que importe si Luis Buñuel es el director más famoso del siglo XX, que Arturo Pérez-Reverte o Javier Marías sean los mejores escritores españoles de nuestro tiempo o Chema Alonso el hacker más famoso de España. No. Lo importante es que si pones un LLM que asocia esas referencias a la identidad de esas personas, se pueden hacer preguntas usando esas referencias (acierte o no en las respuestas, que ese es otro cantar).

Figura 11: Prompt que usa "el hacker más famoso de españa"
para evitar filtros de Prompt sobre Chema Alonso que pudiera existir.

Esto lo que hace es que cambie la forma de tener que gestionar los filtros de interfaz que pongas para evitar lo ataques a las aplicaciones basadas en LLMs. Si has entrenado un LLM con muchos datos de tu organización, puede que le hayas puesto en bandeja a un atacante un montón de información que esté disponible directamente o correlacionando datos de la organización al alcance de un prompt adecuado, como vimos en el OWASP Top 10 para LLM Apps.  

Figura 12: José Luis Garci identificado por un hecho histórico

Usar técnicas de Prompt Filtering para evitar los Harmfull Mode, o para evitar el acceso a información "controlando las preguntas" parece difícil de hacer como hemos visto en los ataques de Prompt Injection. E intentar filtrar el acceso a preguntas en el Prompt de determinadas identidades, viendo lo fácil que es referenciar a un identidad - personal o ficticia - por medio de apodos, referencias culturales, cargos, hechos históricos, etcétera, lo complica al infinito.

@chema_alonso ¿Cuál es el plan de ChatGPT, Google Bard o Meta Llama para acabar con la humanidad? #ai #ia #chatgpt #inteligenciaartificial #googlebard #llama #meta #generativeai ♬ WAR GAMES - Intermede Music
Habrá que ver cómo podemos meter dentro de las arquitecturas de LLM Apps medidas de seguridad y control de acceso mucho más sesgadas y administrables, porque si no, podemos tener leaks de información masivos con solo crear un LLM y ponerlo a disposición pública. El mundo que se nos viene por delante va a tener a las técnicas de Prompt Injection como grandes protagonistas.

¡Saludos Malignos!

Autor: Chema Alonso


sábado, agosto 26, 2023

Cómo aprender hacking: El camino en espiral

De vez en cuando, en mi buzón de MyPublicInbox, recibo alguna petición de consejo para aprender hacking. Qué cursos hacer, cómo enfocar el primer trabajo, hacia dónde orientarse, qué certificación sacarse, etcétera. Son preguntas que yo contesto muchas veces, y para las que no hay solo una respuesta buena, pues mentiría si no dijera que he visto a grandes profesionales en la disciplina del hacking que han seguido rutas muy diversas.

Figura 1: Cómo aprender hacking. El camino en espiral

Lo que sí que tengo bastante claro es que para saber de hacking, y ser bueno, tienes que saber de muchas cosas. Y muchas cosas con muchas cosas en muchas disciplinas. Y cuando digo muchas cosas en muchas disciplinas me refiero a muchas cosas en muchas disciplinas con mucha profundidad. Eso no implica que no se pueda ser un buen profesional del hacking si no sabes mucho de bases de datos, de bases de datos XML, de arquitecturas de aplicaciones Web3 o sin conocimiento profundo de modelos de inteligencia artificial. No. Lo que estoy diciendo es que los grandes hackers que he conocido, saben mucho de muchas cosas, y muy profundamente.

En mi caso, el camino que me ayudó fue haber hecho muchos cursos antes de entrar en la universidad, leer y compartir proyectos con mis amigos haciendo "cosas" con la tecnología, y luego ir a la universidad y aprender muchas cosas diversas, desde teoría de señales, construcción de lenguajes de programación, algorítmica, bases de datos, electrónica, diseño de PLAs, modelos concurrentes, sistemas operativos, protocolos de comunicación, etcétera. Muchas cosas que no tenían que ver directamente con el hacking.

Figura 2: El camino en espiral de conocimiento. Llega un momento que para saber mucho de redes, necesitas saber mucho de sistemas operativos, que ya que para sabe mucho de hardware necesitas saber mucho de programación, de hacking, de redes, etc...

De hecho, tuve la suerte de ser nombrado "Embajador Honorífico" de la Escuela Universitaria de la Universidad Politécnica de Madrid por mi trabajo en Seguridad Informática, y me llevé las notas al acto, para explicar que la única asignatura que no había en ellas era justo Seguridad Informática, porque era optativa y yo opté por no hacerla.  Esto lo tenéis en el discurso aquí.

Figura 3: El discurso de la Servilleta

Sin embargo, aprendí muchas cosas. Muchas, muchas, muchas cosas. Cosas como las bases de datos, que me enseñaron a entender los diseños lógicos y físicos de los SGBDOR. A entender la arquitectura de tablespaces, el almacenamiento en estructuras de árboles B*, el diseño lógico siguiendo las formas normales de Boyce-Codd, los lenguajes 4GL basados en SQL, y los 3GL como PL/SQL o TransactSQL. También aprendí a optimizar bases de datos entendiendo el almacenamiento físico, la lógica de los comandos SQL, la importancia de la normalización, el uso o no de Primary Keys y Foreing Keys, o la aplicación de indexación en las columnas correctas, o la destrucción de índices erróneos en columnas incorrectas.  Me encantaban las bases de datos.

Y cuando salí de la universidad hice muchos trabajos de bases de datos. Fui formador de Oracle, hice proyectos de migración de bases de datos Oracle sobre DG-UX a SunOS, e incluso a Windows 2.000. Hice trabajos de optimización de consultas viendo los planes de ejecución de los comandos SQL para saber cuando un pcode tenía Neested Loops innecesarios o índices erróneos, o como conseguir que una consulta tardara en media menos, simplemente cambiando el orden de los condicionantes de la query.

Todos esos trabajos de hacking no vinieron porque estudié mucho hacking - que también ha tocado hacerlo, que esta disciplina tiene sus conocimientos, herramientas y cosas que aprender, así que lo sigo haciendo -, sino porque estudié mucho de bases de datos, pero también de programación, de sistemas operativos para entender los modelos de autenticación integrada en Windows, entender los árboles LDAP, el funcionamiento del Active Directory, etcétera. Esto ha sido siempre así. Tuve que aprender mucho de IPv6 para diseñar los ataques de Evil FOCA que luego utilizamos para hacer el Bridging HTTPs(IPv4)-HTTP(IPv6) en ataques man in the middle en conexiones a Internet. Todo esto, lo incluí en el libro de Ataques en redes de datos IPv4&IPv6 (4ª Edición).

JL. Rambla, ampliado y revisado por Pablo González y Chema Alonso

Ahora no ha cambiado, y para estudiar hacking, hay que estudiar muchas cosas. Hay que estudiar y saber mucho de Machine Learning, de Web3, de Inteligencia Artificial, de comunicaciones satelitales, de Cognitive Services, de APIs, de Servicios en Internet, del funcionamiento de los Certificados Digitales, o de la arquitectura de iOS y Android. Hay que saber mucho de Codesinging, de modelos LLM o de Pyhton, RUST, NodeJs o frameworks de Java. Y cuanto más sepas de todo eso, más preparado estarás para el hacking, porque al final, el camino para aprender mucho hacking, es un camino en espiral. 

Figura 6: El camino en espiral de conocimiento. Al final, para progresar en una disciplina, debes progresar en todas.

Y esto no sucede solo con el hacking, sino con cualquiera de las disciplinas de las que quieras ser bueno. Porque si quieres saber mucho de redes, vas a tener que saber mucho de sistemas operativos, de hacking, de datos y de inteligencia artificial. Así que, no desprecies ninguna disciplina, porque vas a necesitar de ellas para poder progresar en tu área de experiencia. Abraza el conocimiento de la Web3, de la IA, de las bases de datos y del hardware.

Así que, cuando me preguntan sobre estudiar dos carreras que se diferencian en un 10% de las asignaturas, yo siempre les digo que no es tan importante, que el camino es en espiral, que las dos valen, y que elijan la que más exija de ellos porque si quieres ser bueno, vas a tener que saber de todas esas cosas.

¡Saludos Malignos!

Autor: Chema Alonso (Contactar con Chema Alonso)