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)  


No hay comentarios:

Publicar un comentario