Saltar a contenido

05.-Cómo convertirse en Hacker (from zero to hero)

En los apartados anteriores se han expuesto los conceptos relacionados con la seguridad de la información en general, y de la seguridad ofensiva o hacking ético en particular. En las próximas unidades se presentarán los contenidos teóricos y prácticos fundamentales para sentar las bases que nos permitirán convertirnos en buenos hackers. La lista de todo lo que debería saber un hacker es enorme y es imposible abarcarlo todo en este libro. Este es uno de los motivos por los que hemos querido ofrecer multitud de enlaces a laboratorios prácticos, lecturas recomendadas y bibliografía adicional a lo largo de las diferentes unidades para ampliar los conocimientos. Además, se incluye este apartado específico para ofrecer consejos y recursos de aprendizaje que ayudarán en el estudio y complementarán los contenidos y actividades de este libro.

Todos esos conocimientos no se pueden obtener en unas pocas semanas o meses; es necesario mucho trabajo, esfuerzo y dedicación, además de experiencia, por lo que es recomendable ser paciente para evitar la frustración. Deje para futuras revisiones los aspectos más técnicos y detallados, organice su aprendizaje de manera cíclica, volviendo a los aspectos fundamentales siempre que lo necesite, repita las actividades y laboratorios varias veces una vez haya pasado cierto tiempo, intente no mirar las soluciones la segunda vez que lo haga e interiorice los patrones que se repiten entre distintos laboratorios.

Por otro lado, además de adquirir estos conocimientos centrados estrictamente en aspectos técnicos, es necesario desarrollar un método de trabajo y de aprendizaje que permita desarrollar una actitud crítica y de pensamiento "fuera de la caja", fomentando la mejora y el aprendizaje continuo.

Perfil de un buen hacker o ciberinvestigador

Los conocimientos que debe adquirir un hacker se sustentan sobre una base sólida de conocimientos básicos y avanzados del funcionamiento de los sistemas informáticos. Esto incluye materias o áreas como:

  • Arquitectura de computadoras y lenguaje ensamblador. Constituye la base del funcionamiento de los elementos hardware y software de los sistemas informáticos.
  • Redes de ordenadores y protocolos de red. Incluye las diferentes arquitecturas de red, los tipos de redes (cableadas, inalámbricas, fibra óptica...), los dispositivos que intervienen en las redes de comunicaciones, la capa de protocolos TCP/IP y OSI, y los protocolos de encaminamiento.
  • Administración de sistemas operativos. Instalar y configurar sistemas operativos, tanto Windows como GNU/Linux, que incluyen elementos como políticas de seguridad, permisos y roles de usuarios y grupos, administración de servicios (DHCP, DNS, FTP, HTTP, SSH...), administración de dominios, gestión de cuotas, configuración de reglas de cortafuegos, etc.
  • Gestión y administración de bases de datos. Conocer los diferentes lenguajes de modelado de datos (SQL y noSQL), diferentes sistemas gestores de bases de datos (relacionales, orientados a objetos), su estructura y comandos de administración.
  • Lenguajes de programación. Es un área muy amplia que va desde lenguajes de bajo nivel (C, C++, Go, Rust) hasta lenguajes orientados a objetos (Java, C#), programación orientada a aplicaciones móviles (Android, iOS), tecnologías web (JavaScript, Jakarta EE framework, PHP, ASP, NodeJs), lenguajes de scripting (Python, Bash, PowerShell). La lista no es exhaustiva y es posible que un lenguaje o tecnología encaje en más de una categoría.
  • Criptografía. Son útiles los conocimientos desde dos perspectivas: los fundamentos matemáticos detrás de los algoritmos criptográficos y la aplicación práctica de técnicas criptográficas.

Se asume que se tienen conocimientos mínimos en todas las áreas mencionadas anteriormente. En algunas secciones se repasan algunos de los conceptos fundamentales que son necesarios conocer, pero no siempre es posible hacerlo. Si se carece de esta base necesaria, será más difícil avanzar. Por ello, si en algún momento siente que no entiende los conceptos detrás de alguna explicación, se recomienda volver a la base del funcionamiento del elemento que se está explicando antes de continuar adelante.

Aprendizaje continuo mediante retos CTF (Capture The Flag)

Como se ha mencionado al comienzo de la unidad, realizar acciones de hacking ético sin permiso está considerado delito. Para practicar y mejorar nuestras habilidades, disponemos de numerosos entornos de prueba que simulan escenarios reales y han sido diseñados para ser explotados.

Los retos de captura la bandera o Capture The Flag (CTF) consisten en la obtención de un código oculto (flag) en el reto, que solo es accesible para aquellos que descubren la vulnerabilidad o el punto débil del reto. En este tipo de retos prima el resultado sobre el proceso, por lo que no es necesario explicar cómo se logró resolver. Basta con obtener la bandera para demostrar las habilidades necesarias. Para evitar trampas, existen códigos de conducta que deben respetarse. El más importante es no hacer pública la solución a un reto (writeup o walkthrough) hasta que el reto deje de estar activo.

Los tipos de CTF se pueden clasificar en tres grandes categorías:

  • Retos (challenges). Los challenges son retos que sirven como modelo para un tipo de habilidad técnica o vulnerabilidad concreta. Son los más habituales en los concursos o campeonatos organizados anualmente por diversas empresas, organizaciones, universidades, etc. El tipo de CTF más común es Jeopardy, que consta de una serie de retos de distintas categorías que otorgan puntuación según su nivel de dificultad. Al finalizar el campeonato, gana el individuo o equipo que más puntos ha acumulado.
  • Máquinas (boxes). Este tipo de CTF consiste en explotar una máquina a través de algún servicio vulnerable o mal configurado. La explotación se lleva a cabo en dos fases: la obtención de la bandera de usuario y la escalada de privilegios para obtener la bandera de administrador. También se incluyen las competiciones de ataque y defensa (attack & defense), donde se debe proteger la propia máquina y atacar la del contrario.
  • Redes (networks o labs). Consiste en un entorno que simula una red empresarial donde se deben explotar diferentes máquinas y realizar pivotaje en la red hasta lograr alcanzar el objetivo final.

Existen numerosas plataformas en Internet para practicar este tipo de retos, algunas orientadas a challenges y otras a la resolución de máquinas vulnerables. Entre las más conocidas están Atenea, HackTheBox, TryHackMe y VulnHub.

Recursos de aprendizaje

En Internet existen varias guías interesantes donde se ofrecen recursos de aprendizaje, algunos gratuitos y otros de pago, para lograr obtener la certificación de ciberseguridad OSCP (Offensive Security Certified Professional), una de las más valoradas y perseguidas. Entre las más recomendadas están la guía elaborada por TJNull, The Journey to Try Harder, y la guía de John Jackson, OSCP Reborn - 2023 Exam Preparation Guide.

También destacan algunos streamers y creadores de contenido que publican recursos útiles para el aprendizaje continuo, como Ippsec, John Hammond, LiveOverflow y HackerSploit.

Certificaciones de ciberseguridad

El mundo de las certificaciones se mueve en una delgada línea entre un negocio lucrativo y la utilidad práctica. Algunas de las certificaciones más relevantes en el ámbito de la seguridad ofensiva son:

  • CEH (EC Council Certified Ethical Hacker)
  • Pentest+ (CompTIA)
  • eJPT (eLearnSecurity Junior Penetration Tester)
  • eCPPT (eLearnSecurity Certified Professional Penetration Tester)
  • HTB CPTS (HackTheBox Certified Penetration Testing Specialist)
  • PNPT (TCM Security Practical Network Penetration Tester)
  • OSCP (Offensive Security Certified Professional)

Si está empezando en el hacking ético, nuestro consejo es que no se obsesione con las certificaciones; el aprendizaje es largo y lleva tiempo adquirir los conocimientos suficientes. Tómese su tiempo para ganar experiencia.

Plataformas de recompensas (bug bounty)

Un programa de recompensas (bug bounty) es un mecanismo por el que grandes empresas, fabricantes, etc., pagan una cantidad económica a un hacker por reportar vulnerabilidades en sus sistemas o software. Las empresas suelen gestionar sus programas de recompensas a través de plataformas intermediarias como Bugcrowd, HackerOne, Intigriti e Immunefi.

Distribuciones para pentesting

Para llevar a cabo labores de pentesting se necesita un buen arsenal de herramientas, que se pueden instalar manualmente o usar alguna de las distribuciones creadas específicamente para esta tarea. Entre las distribuciones más destacadas se encuentran Kali Linux, ParrotOS, BlackArch y CommandoVM.

Mantenerse bien informado

El mundo de la tecnología avanza rápidamente, lo mismo ocurre en ciberseguridad; por tanto, es preciso mantenerse al día de todo lo que ocurre. Para ello, se recomienda seguir blogs especializados como Una al día, Un informático en el lado del mal, Flu Project, Hackplayers, The Hacker Way y Google Project Zero.

También se pueden seguir conferencias de seguridad que se organizan cada año, como Blackhat, DEFCON, RootedCON, Navaja Negra, DragonJar y Congreso c1b3rWall.