Okay, me salto el uso incorrecto del término hacker aquí.
¿Qué lenguaje utilizan los crackers, ciberdelincuentes y expertos en seguridad informática?
Todo lo que necesitan para resolver la tarea. Normalmente están eligiendo al menos un lenguaje para las tres capas de programación 1) capa de aplicación 2) capa de sistema e implementación 3) capa de hardware.
También están aprendiendo a utilizar el entorno del sistema, con depuradores, editores hexadecimales y desensambladores como Radare2 y todo eso. Utilizan lenguajes que les dan el mayor rendimiento y que además pueden enviar por red para trabajar en diferentes sistemas de destino.
Así que naturalmente el primer lenguaje que aprenden es C. El segundo lenguaje que aprenden es Assembler al menos el de su sistema de destino. No se puede profundizar sin él. Luego eligen un lenguaje dinámico, algunos sugirieron Python, pero ese lenguaje es realmente malo en esto, porque viene con un precio enorme, es jodidamente lento, jodidamente hinchado y no compite realmente con LuaJIT en ningún campo de esta aplicación.
Así que los primeros malwares están por ahí, que sí están trabajando con Lua, no con Python. Python es más bien el típico lenguaje de calculadora de bolsillo que muchos de la raza estudiantil reciente han estado aprendiendo.
Pero no me parece un buen lenguaje para este propósito, sí lo sé, Metasploit y eso, lo que sea. Está demasiado hinchado.
Malware de Lua, dos ejemplos destacados de los muchos:
Flame (malware) – Wikipedia
MMD-0057-2016 – Linux/LuaBot – IoT botnet as service
Y vienen y vienen ahora, porque tiene sentido.
Si estás haciendo software de gusanos, también tiene sentido aprender a programar Perl, porque es un lenguaje de scripting que está disponible desde el principio en cualquier sistema objetivo conocido basado en Linux. Como los compiladores de C suelen estar allí y al menos un ensamblador.
Lua no necesita estar en el sistema de destino, que es tan pequeño que puedes traerlo contigo, enlazado estáticamente. Las implementaciones más pequeñas son sólo 120 kb de tamaño que es más pequeño que cualquier otra cosa de HLL. LuaJIT tiene un poco más de carne con 400 kb, pero aún así es minúsculo.
Debes conocer el sistema desde dentro y fuera y cómo funciona, con eso debes ser fluido con Assembly, C, Lua, Perl, Awk, Grep, Gdb, Radare2, Make y todas las demás herramientas de desarrollo, tu shell promedio de Linux, tu libc promedio, POSIX y si planeas romper sistemas Windows, simplemente no hay arte en ello.
Sólo tienes que coger al niño medio del colegio, darle algo de Metasploit y acceso al foro donde pueda copiar y pegar y ya está. Romper Windows no es un arte, esa mierda está rota por defecto. Hay doce nuevos malwares cada minuto en esa plataforma.
Está tan mal mantenida y asegurada que hay una industria en desarrollo sobre kits de construcción de malware, donde simplemente apilas algunas partes de tu malware personalizado que quieres construir, lo compilas y listo. Y estos kits no se rompen después de una semana de entrar en el mercado, se mantienen en el mercado durante años.
Así que, los «hackers» son pragmáticos. Simplemente eligen los lenguajes que les dan más rendimiento, son perezosos, hacen lo que les cuesta menos esfuerzo, son eficientes, un pequeño malware no se detecta, intentan hacer todo lo que pueden en el menor código que puedan.
Además, Lua es un código muy complejo y no es fácilmente detectable.
Supongo que por eso muchos de ellos están usando ese material últimamente. Y es la razón, por la que empecé a indagar en eso y ese lenguaje obtuvo todo mi respeto. Bueno, ahora estoy en eso por bastante tiempo, para ser honesto. Pero no tanto como quisiera. Ojalá lo hubiera descubierto antes, me habría ayudado a saltarme Python.
Me refiero a Lua para el malware. Sólo una reflexión adicional.
Por lo general, uno va y escanea el software, ¿no? Sí. Pero Lua no existe directamente antes de ser ejecutado. No puedes escanear sobre llamadas o marcadores específicos, es un código completo polimórfico y encriptado. No puedes verlo. No lo ves venir.
Adiós a la Ingeniería Inversa: «Bruder-Schwester» https://www.quora.com/I-have…
Literalmente no se puede ver y no hay forma de detectarlo, porque es código oculto, escondido en cualquier lugar, en todas partes.
Se puede escribir código que se desbloquea en ciertos medios de comunicación convencionales. Si algunas palabras aparecen allí. Digamos una ciudad o una persona o algún gran evento que va a venir.
No puedes bloquear eso, no puedes cerrar el medio de noticias y no sabes qué tipo de mensaje activará el código. Incluso no ves el código, sólo ves cosas confusas. Y eso tal vez no sea un solo programa, puede esconder muchos de ellos. Programas que recargan cosas de todas partes.
Esto es «Bruder-Schwester», una de las cosas realmente malas que ideamos en nuestro Centro de Pruebas de Virus VTC en la Universidad de Hamburgo a principios de los 90. Y que estuvo oculto durante unos 25 años. Y yo opté por publicarlo. Mi profesor optó en contra y por eso se ocultó.
No era un científico que creyera en el poder de limpieza del escrutinio, en el poder de la ciencia y del método científico para llegar a ese problema a tiempo. En cambio ahora sucedió en la oscuridad y no nos enfrentamos a un pequeño software de paso de bebé, que es sólo molesto y que podríamos haber traído bajo control.
Ahora tenemos una plaga que se estrellará nuestros sistemas. Una placa que ha evolucionado en las trincheras de esta guerra, entre los sistemas jóvenes sentados allí, conmocionados y como en la Primera Guerra Mundial esta placa se nos viene encima, ahora. Porque el malware ha tenido tiempo de evolucionar, de planificar este ataque, nosotros no tenemos ángulo para contrarrestarlo.
Y por eso los hackers utilizan cada vez más Lua y otras HLL. La nueva generación está llegando, y aunque he prometido no publicar nunca lo que hemos trabajado por ahí, os puedo decir que vienen cosas mucho peores como esta.
Y son capaces de combinar sus poderes con lo que ya hay. ¿Código polimórfico? Sí, eso ya lo hemos visto, puede ser peor, mucho peor.