elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Análisis y Diseño de Malware (Moderador: fary)
| | |-+  Creando un Ransomware de juguete con ChatGPT
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Creando un Ransomware de juguete con ChatGPT  (Leído 1,811 veces)
Ephedra

Desconectado Desconectado

Mensajes: 4



Ver Perfil
Creando un Ransomware de juguete con ChatGPT
« en: 23 Mayo 2024, 05:29 am »

Hola a todos, espero que estén muy bien. En este hilo les voy a contar un pequeño experimento que acabo de hacer con ChatGPT 4.0.

Desde hace un tiempo utilizo esta herramienta para pulir mi contenido, sobre todo cuando escribo en algún idioma que no es mi lengua madre o cuando retomo algún lenguaje de programación al que no esté muy acostumbrado. Sin embargo no suelo usarlo para generar cosas desde cero, y hoy decidí hacer una excepción al pensar "¿Qué tan bueno sería ChatGPT para armar un commodity ransomware?" Me planteé este experimento con el único parámetro de no colocar ni una sóla línea de código de mi parte, y limitarme a dar comentarios o acotaciones para "dirigir" al LLM.

Tuve muchas dudas al principio: ¿cómo va a plantearse la cifrado? ¿va a importar una librería como OpenSSL? ¿va a intentar invocar VeraCrypt como algunos ransomwares de bajo presupuesto? ¿cómo se las arreglará si le digo que trabaje con Ruby y lo limito a una versión viejita como la 2.7? Eran muchas preguntas y la única forma de averiguarlo era intentando.


Introducción

Comencé la conversación indicándole a ChatGPT las bases del proyecto:

- La intención es meramente educativa.
- Vamos a usar Ruby 2.7.
- Docker (nada de K8S, sólo Docker).

Instantáneamente generó tres archivos: el Dockerfile (archivo para construir la imagen del contenedor donde correrá el ransomware), el Gemfile (archivo de librerías de Ruby, similar al requirements.txt de Python) y obviamente, el ransomware que usaría OpenSSL para cifrar los archivos de la víctima (código fuente disponible al final de este hilo).




Análisis del código

A primera vista el código era bastante minimalista y directo. El Dockerfile crea un entorno de pruebas donde podrá correr el ransomware y cifrar dos archivos específicos, el ransomware parecía suficiente, pero el LLM cayó en un error muy común de algunos desarrolladores Ruby: declarar gemas en el Gemfile sin garantizar que sus dependencias a nivel SO estén presentes (especialmente si vas a utilizar Docker).

Citar
Yo: ¿estás seguro que no hace falta instalar openssl a nivel sistema operativo antes de instalar la gema?

ChatGPT: Tienes razón. Aunque openssl está incluido en la biblioteca estándar de Ruby y no requiere una gema externa, asegurarse de que OpenSSL esté correctamente instalado en el sistema operativo es una buena práctica.

Casi inmediatamente actualizó el código fuente con las correcciones para instalar libssl-dev en el SO. A primera vista todo parecía funcional por lo que era hora de darle un nombre a nuestra creación.


Chococat Ransomware

Porque alguien tiene que ocupar el lugar que dejó BlackCat.



Ahora que teníamos una identidad era hora de crear una nota de rescate y nuestra propia billetera crypto para cobrar. Así fue como aprendí que ChatGPT sabe demasiado para ser inocente tiene un buen estilo para la extorsión:

Código:
  🐈‍⬛ ¡Tus archivos han sido cifrados! 🐈‍⬛

  Todos tus archivos importantes han sido cifrados con ChocoCat Ransomware.
  Para recuperar tus archivos, necesitas la clave de descifrado.

  Clave de descifrado guardada en decryption_key.txt.

  Para obtener la clave de descifrado, debes realizar un pago a la siguiente dirección de Ethereum:
  chococatransomware.eth

  Contacta con nosotros para obtener instrucciones sobre cómo pagar el rescate y recibir la clave de descifrado.

  ¡No intentes restaurar los archivos sin nuestra ayuda, ya que podrías perderlos para siempre!

  - ChocoCat Ransomware Team

Nota: los cuadrados negros deberían ser gatitos negros, pero el foro no los renderiza correctamente.

Ya tenemos nuestro ransomware falso listo para pasar a la etapa de pruebas construyendo el entorno con Docker:



Continuamos creando una carpeta y dentro de la misma dos archivos que serán cifrados por nuestro "ransomware":



Ejecutamos nuestro ransomware desde Docker, montando la carpeta víctima como volúmen y... oh si, nuestros archivos fueron cifrados:



Ahora probemos desencriptarlos para... oh no:



El ransomware dice que la llave de desencriptación y la nota de rescate fueron creadas pero... no están. Analizando en detalle la situación vemos que los crea en "./", es decir, dentro del propio WORKDIR de Docker que a diferencia de los volúmenes montados no tiene persistencia, se elimina al finalizar la ejecución del contenedor.

En otras palabras, no podemos descifrar los archivos de la víctima. Hicimos la gran Babuk Ransomware. Se lo expliqué a nuestro amigo ChatGPT y hasta lo tomó con cierto humor:



Nuevamente corrigió de inmediato el error y segundos después de ejecutar por segunda vez el entorno de pruebas, tuve la nota de rescate ante mis ojos:



A su lado en la misma carpeta, también tenía la llave de desencriptación:



Sin embargo, al revisar la llave noté algo importante: no tenía un formato amigable para que una eventual víctima pudiera usarla.



Si vamos a ser - en palabras de ChatGPT - un negocio respetable de cifrado tenemos que incorporar un servicio técnico de primer nivel y eso incluye el desarrollo y distribución de un desencriptador o decrypter. Unos segundos después de pedirlo, ya lo tenía listo para incorporarlo a nuestro lucrativo proyecto. Al probarlo, automáticamente detectó la llave y devolvió a su forma original los archivos cifrados.



La parte divertida - el experimento - había terminado. Ahora tocaba la parte aburrida, documentar... pero es algo que también le pedí que haga por su propia cuenta.


Próximos pasos

Fue una grata sorpresa ver que ChatGPT interpretara el proyecto al pie de la letra con mínimos errores (y muy específicos). Voy a mantener esa conversación en mi agenda para quizás en un futuro cercano agregar nuevas funciones como ofuscación de código, compilación de un único binario portable o detección de patrones de interés en el sistema víctima (como nombres o extensiones de archivos, copias de seguridad, etc). Acepto ideas y sugerencias.


Outro

Me sorprendió la facilidad con la que pudimos armar una PoC (prueba de concepto) casi sin errores y en menos de veinte minutos. Aproveché a charlar un poco más del tema con ChatGPT (siendo que anteriormente era muy evasivo al hablar de esto) e incluso le hice algunas preguntas ambiguas como:

Citar
Yo: Por otro lado, si quisieramos cambiar por ejemplo a ChaCha20 ¿podríamos usarlo con OpenSSL? ¿sabes si OpenSSL soporta Camellia, Whirlpool o Serpent?

Esta última pregunta tiene trampa. ChaCha, Camellia y Serpent son algoritmos de cifrado mientras que Whirlpool es una función de hashing. ChatGPT marcó esta diferencia e incluso me la explicó en detalle y con ejemplos de código.

Sé que esta es una pequeña PoC educativa y no representa la complejidad del panorama actual de la escena ransomware, pero aún así me pareció un experimento divertido. Recordemos que ni una línea de código es de mi autoría, yo solo di una idea y el LLM fabricó el producto y la nota de extorsión.

No es mi idea entrar en el juego de vender pánico por la IA, por el contrario, me llevé una grata sorpresa por la habilidad y madurez del modelo de ChatGPT. Sin embargo, es bueno reconocer que en manos equivocadas facilitaría muchísimo la tarea de "ser malo".

Por cierto, la conversación entera sobre este proyecto está publicada acá: https://chatgpt.com/share/08186c24-2974-40c5-9cb9-8e0b17b2f8bf (e incluye un saludo para la gente del foro).

El código fuente puede ser descargado de acá: https://mega.nz/file/wcc1TLRZ#WvxA-sWoXI6E_W5TrxFQ5At4CYj6yxMoCbVBW5_2xto.

Espero que les haya gustado y como siempre toda crítica constructiva es bienvenida.

Los dejo, es hora del crimen.

En línea

Hot Metal & Methedrine
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Hola.. motor de juguete ..
Electrónica
piscis023 1 3,563 Último mensaje 22 Septiembre 2014, 16:58 pm
por bl@ck
IA de OpenAI (ChatGPT)
Foro Libre
Serapis 7 4,740 Último mensaje 2 Febrero 2023, 01:45 am
por Tachikomaia
Chatgpt hackeado
Foro Libre
Novedades 5 4,240 Último mensaje 10 Agosto 2023, 20:17 pm
por Fernando Morales
Conversaciones útiles con ChatGPT.
Foro Libre
Tachikomaia 4 3,296 Último mensaje 23 Octubre 2023, 22:23 pm
por ferNandito
ChatGPT Masterclass - A Complete ChatGPT Guide for Beginners!
Tutoriales - Documentación
ehn@ 0 1,357 Último mensaje 1 Diciembre 2023, 01:25 am
por ehn@
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines