El uso de LLMs para seguridad ofensiva ya es un tema recurrente. Os hablé de ello en el artículo de "Cómo usar LLMs en Ciberataques: Cibercrimen, Ciberespionaje, Ciberguerra o Red Team" donde Microsoft hacía un recorrido de los usos que ataques de ciberespionaje y ciberguerra, que iban desde el reconocimiento de objetivos, hasta la creación de piezas de software necesarias para crear exploits o herramientas de persistencia.
Para tener un "Copilot" para técnicas de seguridad ofensiva, cuando se utilizan modelos generalistas que viene con la detección del "Harmful Mode", exige realizar un Jailbreak antes de poder ser utilizadas, y por eso han aparecido soluciones como WormGTP o FraudGPT en el underground, o servicios como 0dAI para el mundo del pentesting o el Red Team.
Recientemente, los investigadores de Proofpoint hablaban de que al analizar un ataque habían notado que el dropper del malware estaba escrito en un PowerShell que parecía haber sido creado por un LLM por la forma en la que está escrito, por los comentarios, la elección de las variables, el código auto-explicativo, etcétera, aunque es una especulación más que una certeza.
Figura 3: El dropper descubierto por Proofpoint
Lo cierto es que hacer piezas de software que puedan utilizarse en un esquema de ataque es algo muy difícil de controlar por el "Harmful Mode", ya que si tu pides código para funciones concretas cualquier sistema te ayuda con ellas.
En el pasado ya vimos cómo era posible utilizar ChatGPT para hacer las herramientas necesarias para hackear una red WiFi, en un artículo que os publiqué hace ya un tiempo, y hacer un Dropper en PowerShell que pueda ser utilizado en un esquema de distribución de malware es bastante sencillo.
Figura 5: Pidiéndole un dropper en PowerShell a ChatGPT
En la imagen anterior le estoy pidiendo, con muy buenos modales, que me haga un dropper en PowerShell, y ChatGPT me lo hace muy diligente.
Como quería ver si se podía hacer algo similar al del ataque, le voy a pedir que me lo haga en inglés, pero que no me imprima nada por pantalla, que se supone que el dropper no debe alertar a la víctima cuando se ejecute.
Ahora pedimos que el fichero lo descargue codificado en BASE64 para que no sea un binario lo que pase por cualquier firewall o WAF que haya por medio, sino una cadena de texto codificada. Algo muy común en transferencias web.
Ahora le pedimos como se ve en la imagen anterior que borre el fichero, y como podéis ver en la imagen siguiente, que ofusque el código para que sea más complejo su análisis.
Para ir terminando la prueba, vamos a pedirle que reduzca el tamaño para que ocupe pocos bytes y su transmisión sea lo más rápida posible.
Figura 10: Que reduzca el número de bytes que ocupa
Figura 11: Variables de un sólo carácter de longitud
Al final, la gracia está en que no ha saltado ningún "Harmful Mode" y como es una pieza de código genérica que puede ser un dropper o un actualizador de software, cualquiera lo puede utilizar para hacer el bien o para hacer el mal, así que todos lo usarán. Si aún no usas los LLMs en tus pentesting... estás quedándote desactualizado.
¡Saludos Malignos!
Autor: Chema Alonso (Contactar con Chema Alonso)