Antonio Hernández Domínguez - cubadebate.- Mis estimados lectores sean bienvenidos una vez más a Código Seguro. En esta ocasión, siendo un poco valiente, les propongo hablar acerca de un tema, que siempre ha resultado muy polémico entre la comunidad de Ingenieros de Software. Llega así de esta forma la hora de seleccionar el lenguaje más idóneo, si nos vamos a dedicar a la ciberseguridad.
Pero para calentar los motores, supongamos por un momento que nos encontramos en una cafetería, degustando el postre de nuestra preferencia y de un rico capuchino. En ese momento de gran satisfacción decidimos conectarnos a la red Wi-Fi del local, para revisar nuestro correo electrónico. De repente, alguien en otra mesa —sin que lo notes— ejecuta un pequeño programa que captura todo lo que estas escribiendo. ¿Aterrador, no? Porque los hackers (y los expertos en ciberseguridad que los combaten) dominan ciertos lenguajes que les permiten encontrar fallos, automatizar ataques o proteger sistemas.
Pero no todo es al estilo de Scary Movie: estos mismos lenguajes son las herramientas que usan los profesionales para defender bancos, redes sociales y hasta nuestros dispositivos móviles. Si te interesa la ciberseguridad —ya sea porque quieres proteger tu información o porque sueñas con trabajar en este campo y estas valorando estudiar próximamente una carrera relacionada con este perfil, aquí te explicamos qué lenguajes debes aprender y por qué cada uno es indispensable. Empecemos:
- Python: El "arma secreta" de los expertos
Fácil de aprender y muy poderoso, Python es sin dudas el gran favorito de los especialistas en ciberseguridad. Con él, puedes automatizar pruebas de hacking ético, analizar malware e incluso crear tus propias herramientas de protección. Si solo aprendes un lenguaje, te recomiendo que sea este.
¿Por qué es necesario?
- Automatiza lo aburrido: En lugar de revisar manualmente miles de líneas de código en busca de errores, con Python puedes escribir un script que lo haga en minutos. Herramientas como Metasploit (para pruebas de hacking ético) lo utilizan.
- Analiza malware: ¿Cómo saben los expertos si un archivo es un virus? Python es un lenguaje de programación muy popular entre los analistas de malware debido a su versatilidad y facilidad de uso. La amplia biblioteca de módulos y herramientas de Python puede agilizar el proceso de análisis de muestras de malware y la identificación de su comportamiento. Algunas de ellas: Pyew, Yara, AnalyzePE, entre otras.
- Bibliotecas poderosas: Tiene módulos como Scapy (para manipular tráfico de red) o Requests (para probar vulnerabilidades en páginas web).
Ejemplo real: Un investigador de seguridad usó Python para crear un programa que detecta si un correo es phishing antes de que procedas a abrirlo.
- Bash: El lenguaje de los "magos" de Linux
Si alguna vez has visto a un hacker en películas escribiendo comandos a toda velocidad en una pantalla negra, probablemente estaba usando Bash. Este lenguaje te permite controlar sistemas Linux (los más usados en servidores) y automatizar tareas aburridas en segundos.
¿Por qué es necesario?
- Control total en Linux: Existe a nivel internacional una extensión del uso de Linux en la mayoría de los servidores, y Bash simplemente es la forma de "hablarle" directamente. Si quieres monitorear un ataque o proteger una red, necesitas saberlo.
- Automatiza ataques o defensas: Con solo 3 líneas en Bash, un hacker puede escanear una red en busca de dispositivos vulnerables. Pero también, un administrador puede escribir un script que bloquee automáticamente direcciones IP sospechosas.
Ejemplo real: El famoso ataque WannaCry (que secuestraba computadoras) se propagaba en parte gracias a comandos de Bash maliciosos.
- C y C++: Para descubrir agujeros de seguridad
¿Sabes por qué algunos programas se "dejan de funcionar" cuando los atacan? Muchas veces es por errores en el manejo de la memoria, algo que pasa mucho en C y C++. Aprender estos lenguajes te ayudará a entender cómo funcionan los ataques más peligrosos y cómo evitarlos.
¿Por qué es necesario?
- Vulnerabilidades de memoria: Errores como buffer overflows (que permiten hackear Windows o juegos como Call of Duty) solo se entienden si sabes C.
- Malware lo usa mucho: Virus como Stuxnet (que atacó plantas nucleares) estaban escritos en C++. Si quieres analizarlos, debes entender el lenguaje.
Ejemplo real: El fallo Heartbleed, que robaba datos de millones de páginas web, ocurrió por un error en código C. Esta vulnerabilidad es grave y se produjo en la popular biblioteca de software criptográfico OpenSSL. Esto permitía el robo de información protegida, en condiciones normales, por el cifrado SSL/TLS utilizado para proteger Internet. Prometo hablarles más sobre esto en otra edición de la columna.
- JavaScript: No solo para páginas web, también para hackearlas
JavaScript mueve casi todo lo que ves en internet, pero también es usado por hackers para engañar a sitios web y robar datos. Si quieres proteger (o probar) la seguridad de una página, necesitas entender cómo funciona este lenguaje.
¿Por qué es necesario?
- Ataques XSS: Con JavaScript, un hacker puede inyectar código en una página web (como Facebook) para robar cookies y contraseñas.
- Node.js y seguridad: Muchas apps modernas usan JavaScript en el servidor. Si no está bien configurado, puede ser la puerta de entrada a un ataque en específico.
Ejemplo real: En 2018, hackers usaron JavaScript en un ataque a British Airways y robaron datos de 380,000 tarjetas de crédito.
- SQL: El truco para robar (o proteger) bases de datos
¿Recuerdas cuando hackers robaban millones de contraseñas de Facebook o Twitter? Muchas veces lo hicieron con inyecciones SQL, un ataque que engaña a las bases de datos para que revelen información. Aprender SQL te ayudará a evitar (o encontrar) estos fallos.
¿Por qué es necesario?
- Inyecciones SQL: Es el ataque más común. Con solo escribir ' OR '1'='1 en un formulario de autenticación, un hacker puede engañar al sistema y entrar sin contraseña.
- Forensia digital: Los investigadores usan SQL para rastrear qué datos se robaron y cómo.
Ejemplo real: En 2016, hackers usaron una inyección SQL para robar 200 millones de cuentas del correo electrónico de Yahoo.
- PowerShell: El "lado oscuro" de Windows
PowerShell es esencial para administradores de sistemas Windows y profesionales de blue team (defensa). Se usa para: automatizar tareas de seguridad, analizar malware en sistemas Windows y gestionar políticas de seguridad, entre otros.
¿Por qué es necesario?
- Ataques fileless: Los hackers avanzados usan PowerShell para ejecutar malware sin instalar nada, solo con comandos.
- Defensa en empresas: Microsoft lo usa para detectar amenazas en tiempo real.
Ejemplo real: El ransomware Ryuk (que cobraba millones en bitcoins) se propagaba con PowerShell.
- Ensamblador: Ingeniería inversa y análisis de malware
Si los demás lenguajes vistos hasta el momento son como manejar un auto, Ensamblador es como saber cómo funciona cada pieza del motor bajo el capó. Es complejo, pero te da un superpoder: entender exactamente cómo piensa una computadora. De ahí que sea crucial para el análisis de malware y exploits, permitiendo reversear código binario y analizar vulnerabilidades en programas sin código fuente.
- Ingeniería inversa de malware: Cuando los antivirus no detectan un virus nuevo, los expertos lo desarman en ensamblador para ver cómo funciona.
- Exploits de "día cero": Los hackers usan este lenguaje para encontrar fallos que nadie más conoce en programas.
- Protección de programas críticos: Bancos y diversas empresas del sector gubernamental invierten generosas cifras en expertos en Ensamblador para que revisen su código línea por línea y eviten hackeos.
Ejemplo real: El gusano Stuxnet (que atacó centrifugadoras nucleares) fue analizado instrucción por instrucción en Ensamblador.
Lo cierto es que no necesitas volverte experto o ser un genio en todos estos lenguajes de la noche a la mañana. Recuerda siempre que el aprendizaje es algo complejo al principio, que se cultiva cada día y no hay nada que la dedicación y el esfuerzo no terminen de vencerlo. Ahora bien, si te interesa la ciberseguridad, creo que deberías empezar con Python o Bash ya te pondrá por delante de muchos. ¿Lo mejor de todo es…? Que hay miles de tutoriales gratis en internet para aprender, incluso con buenos materiales audiovisuales.
Tampoco pueden pretender que les haga un compendio de todo un sinnúmero de lenguajes. Ahí seguro estarán los más críticos, aquellos que dirán, pero le faltó este y no habló de este otro que también son muy importantes. Ya nos vamos conociendo estimados, son ya muchas semanas escribiéndoles. Lo que sí es cierto, y estoy más que seguro: la próxima vez que te conectes a una red Wi-Fi pública o cambies tu contraseña, pensarás: Detrás de cada sistema seguro, hay alguien que sabe programar. Y quizás hasta ¿podrías ser tú, sí tú mismo? Entonces. ¿cuál de estos lenguajes te gustaría aprender primero? ¡Déjanos por favor tus impresiones en los comentarios acá abajo! Por hoy nos despedimos, hasta la próxima semana.