El lado Ofensivo de ChatGPT

Written by: Fátima Rodríguez

March 22, 2023

El mundo en general, se ha volcado de lleno a interactuar, preguntar, compartir y encontrar usos en todas las ramas de conocimiento posibles para ChatGPT y la comunidad de Ciberseguridad no es la excepción: encontrando vulnerabilidades y atajos útiles e innovadores. Sin embargo, aún tenemos muchas dudas rodeando el impacto/efecto que tendrá en la industria y los practicantes de ciberseguridad en el mediano plazo. En este artículo vamos a repasar un poco de Chat GPT y sus aplicaciones en el corto plazo -y con la capacidad que tiene actualmente- para la seguridad ofensiva.

Pero empecemos por conocerlo, por si alguien aún no ha interactuado con él: ChatGPT es un chatbot manejado por inteligencia artificial y lanzado por OpenIA en Noviembre de 2022. Es entrenado utilizando Aprendizaje Reforzado por Retroalimentaci[on Humana (RLHF) y está construido con la última versión de la familia GPT3.5 de modelos de lenguaje ampliados, su aprendizaje es a través del reforzamiento y la supervisión de expertos para interactuar en una forma conversacional (únicamente texto). El diálogo con el chat hace posible resolver preguntas, admitir errores, rechazar solicitudes inapropiadas, seguir una instrucción y dar una respuesta detallada.

Podemos iniciar con una sencilla pregunta para introducirnos al mundo del Red teaming en el modelo de entrenamiento y comenzar preguntando ¿qué es un red team? ChatGPT dará una definición que alguien ha poblado con anterioridad a través de preguntas de entrenamiento. Pero esto es lo solo un ejemplo de su funcionamiento.

Avancemos un poco más y hacer preguntas dentro del contexto específico de la metodología de una prueba de penetración y preguntar cosas como ¿cuál es comando de Nmap para encontrar vulnerabilidades en un servidor Apache? O ¿Cuál es el código para generar una shell reversa en PHP? Que si bien, podemos encontrar al alcance de una búsqueda sencilla en internet, ChatGPT responderá con bastante contexto que no necesariamente encontraríamos de forma precisa y con una explicación detallada, pero ¿qué más puede hacer por nosotros? (¿o en nuestro lugar?)

Yendo un poco más allá en la elaboración de preguntas con contenido altamente específico, esperamos obtener respuestas igual de precisas para las tareas de un pentester, por ejemplo:

¿Cómo realizar un ataque para un formulario en  el puerto 8393 con hydra?

Incluso si no estamos famililiarizados con el tema, podemos obtener una buena cantidad de información útil para iniciarnos en el mismo a partir de esta respuesta que analizaremos a continuación:

Lo primero que hace ChatGPT es darnos el contexto de lo que está respondiendo

Para realizar un ataque de fuerza bruta en un formulario HTTP GET para el puerto 8393 con Hydra, puedes seguir los siguientes pasos:

Seguido de una serie de pasos detallados que como podemos analizar (del 1 al 3) son tareas bastante puntuales y lógicas en la secuencia de pasos que realizar antes de utilizar la herramienta en cuestión. Para preguntas en inglés, ChatGPT incluso dá un pequeño resumen de qué herramienta se utiliza y su función principal, esto derivado del entrenamiento obtenido por expertos humanos en ese idioma. Pero las respuestas en español, también están bastante completas:

  1. Identifica el formulario objetivo en el sitio web que deseas atacar y asegúrate de que se esté ejecutando en el puerto 8393.
  2. Crea un archivo de texto plano que contenga una lista de posibles nombres de usuario y contraseñas para probar. Cada línea del archivo debe contener una combinación de nombre de usuario y contraseña separados por un colon (:).
  3. Abre una terminal y ejecuta Hydra con el siguiente comando, reemplazando los valores en mayúsculas con los tuyos:

hydra -L /ruta/al/archivo_de_usuarios.txt -P /ruta/al/archivo_de_contraseñas.txt PROTOCOLO://DIRECCIÓN_IP:8393/ruta/al/formulario

Como pentester, me parece que es una instrucción totalmente correcta del uso de la herramienta para el contexto específico que se le ha solicitado, que podemos intuir para este momento y sin mucha familiaridad, que realiza ataques de fuerza bruta comprobando combinaciones de usuarios y contraseñas. Si bien, no es el comando más específico y profundo del uso de esta herramienta (Por ejemplo, cosas como el método, tipo de protocolo y esos detalles han quedado de lado), es suficiente para iniciar con la misma e incluso, si conocemos estos detalles específicos de la aplicación para formular la pregunta, la respuesta de ChatGPT los incluirá en la sintaxis del comando. Esto, dicho sea de paso, cuando uno no está tan familiarizado con la herramienta, ahorra valioso tiempo invertido en encontrar una sintaxis correcta por búsquedas de internet o simplemente, tecleando en una consola.

Además, ChatGPT nos arroja un ejemplo con los argumentos del comando y el significado de cada parte desglosado:

Por ejemplo:

hydra -L /home/user/usernames.txt -P /home/user/passwords.txt http://192.168.0.1:8393/login.php http-get

Donde:

/ruta/al/archivo_de_usuarios.txt: es la ubicación del archivo de texto plano que contiene la lista de nombres de usuario.
/ruta/al/archivo_de_contraseñas.txt: es la ubicación del archivo de texto plano que contiene la lista de contraseñas.
PROTOCOLO: es el protocolo HTTP o HTTPS.
DIRECCIÓN_IP: es la dirección IP del sitio web que deseas atacar.
/ruta/al/formulario: es la ruta donde se encuentra el formulario que deseas atacar.

Espera a que Hydra complete el ataque. Los resultados se mostrarán en la pantalla, indicando las combinaciones de usuario y contraseña que funcionaron.

Mi parte favorita, son las recomendaciones para mantener el ejercicio ético, que es importante si está uno en esa etapa de script kiddie:

Recuerda que el uso de la fuerza bruta para acceder a sistemas o aplicaciones sin autorización explícita puede ser ilegal y estar sujeto a sanciones legales. Por lo tanto, asegúrate de obtener el permiso explícito del propietario del sistema o la aplicación antes de realizar cualquier ataque.

Si en este punto aún están aún dudan de los alcances de esta tecnología, es comprensible. Al momento es aparentemente un escriba de comandos (que no es poco) pero ¿podría realizar por ejemplo, un ataque directo a un humano y engañarlo, algo conocido como phishing? Y bueno, aquí se acaba un poco la magia porque la respuesta es NO. Si preguntamos directamente por cómo realizar un ataque de Phishing, no recibiremos respuesta.

Y esto es debido a que no DEBEMOS preguntar por actividades ilícitas, ataques o jerga de hacking plenamente identificados dentro de las consultas, ya que se consideran un uso inapropiado y violan las políticas de uso del chat. Pero claro que podemos preguntar dónde almacena Gophish las contraseñas, cómo hacer una URL trazable o dónde uso de una linea telefónica virtual y todas esas cuestiones que, por partes, nos ayudarían hipoteticamente hablando, claro, a engañar a algún humano.

Pero la versatilidad no termina ahí. Podemos incluso interactuar con mayor profundidad técnica de forma que obtengamos la respuesta de un ataque mucho más elaborado:

Para extraer cookies en PowerShell, puedes utilizar el módulo InternetExplorer.Application para crear una instancia del navegador Internet Explorer y acceder a las cookies almacenadas en el mismo. A continuación, te muestro un ejemplo de cómo extraer el valor de una cookie específica en PowerShell:

# Crear una instancia del navegador Internet Explorer

$ie = New-Object -ComObject “InternetExplorer.Application”

# Hacer que el navegador sea invisible

$ie.Visible = $false

# Navegar a la página que contiene la cookie

$ie.Navigate(“https://www.ejemplo.com”)

# Esperar a que la página se cargue completamente

while ($ie.ReadyState -ne 4) { Start-Sleep -Milliseconds 100 }

# Obtener todas las cookies como una cadena de texto

$cookies = $ie.Document.cookie

# Separar cada cookie en un array

$cookieArray = $cookies.Split(“;”)

# Buscar la cookie específica por su nombre

foreach ($cookie in $cookieArray) { $cookieName = $cookie.Split(“=”)[0]

# Si se encuentra la cookie, extraer su valor

if ($cookieName -eq “nombre_de_la_cookie”) {

$cookieValue = $cookie.Split(“=”)[1]

Write-Host “El valor de la cookie es: $cookieValue”

break

   }

}

# Cerrar el navegador

$ie.Quit()

Lo anterior, es un script para realizar la extracción de cookies, una tarea que dependiendo de la tecnología utilizada, vulnerabilidades identificadas y demás condiciones, es totalmente verosímil de realizar cuando estamos haciendo un pentesting sobre una página web, en un entorno Windows. De hecho, no seleccioné la pregunta al azar, sino que verdaderamente lo necesité alguna vez.

También quiero que noten lo agradable de los comentarios en español, cosa inusual en el mundo de la seguridad/ciberseguridad en general. Claro que esto ocurre porque fue el idioma de entrada de mi pregunta pero, eso no lo hace menos impresionante. En fin, habrá quien diga que nuevamente, es código obtenido de la red, pero, (tomando en cuenta que recorté la salida por el bien de la longitud de este artículo) incluye la explicación de cada componente del código y las recomendaciones legales a manera de disclaimer, cosa que vamos a encontrar en poquísimas respuestas de Stack Overflow.

Pueden probar ustedes mismos dentro de https://chat.openai.com/chat que tareas tan útiles como la automatización de la explotación de un puerto mediante herramientas conocidas -como lo son los módulos de metasploit- son plenamente procesadas y scripts útiles pueden ser obtenidos. No escribiré la respuesta de una de estas consultas aquí, para que quede como ejercicio para el lector la respuesta de lo siguiente:

genera un script en bash que automatice una explotación del puerto 80 con Metasploit para el segmento 10.1.0.0/16


Considero que a un blueteamer le daría escalofrío ver la respuesta tan concreta (corta y sencilla) para realizar esto. Si no te dedicas a la seguridad ofensiva, probablemente estarás preguntándote: ¿Ese código es correcto? ¿Qué repercusión para mí puede tener la automatización de las tareas de un “hacker”? Y si te dedicas, seguro vas más por el lado de preguntar ¿Hasta dónde podrá avanzar una vez que la fase gratuita llegue a su fin y tengamos que pagar por la herramienta? ¿existen opciones opensource?  ¿Dónde hará más provecho parsear y colocar estas salidas?

Hay muchas respuesta que podemos preveer por el contexto histórico de proyectos similares de la llamada “inteligencia artificial”, pero en este momento, con la capacidad máxima aún sin alcanzar para la versión 3.5, ChatGPT es una amplia, sencilla y completa puerta para extener las capacidades de los atacantes y con ellos, magnificar la superfie de ataque. Como hemos visto cuenta con capacidades que van desde estos ejemplos sencillos hasta el desarrollo y modificación de exploits conocidos, el desarrollo de malware y código LOLBIN (Living off the Land Binaries), segmentación, proliferación y cambio de vectores complejos de phishing y por supuesto, mayores capacidades para desarrollo de ataques de Día Cero.

Un escalofriante ejemplo de lo primero enlistado, fue compartido por el equipo de CyberArk, quienes utilizaron ChatGPT para crear malware polimófico, es decir, código que cambia su comportamiento en cada víctima para evadir la detección. El informe técnico revelado muestra que pudieron eludir algunas medidas de seguridad utilizando una API en un código de Python. El resultado fue un nuevo tipo de Malware, funcional que cambia para ser indetectable por los antivirus tradicionales basados en firmas.

Es decir, la ofensiva cada día más cerca de cualquiera, volviendo complejos vectores de ataque fáciles de entender para quien quiera preguntar (bueno, tal vez, cualquiera con un mínimo de entrenamiento técnico).  Pero ¿No es esto de lo de que se trata la tecnología? Siendo así, avancemos todos y veámos a dónde nos llevará en un corto plazo, como es finales de 2023, donde se preveé que se encuentre en el máximo de sus opciones de configuración.


Como nota final, a través de este enlace estás a un paso de interactuar con el chat: https://openai.com/blog/chatgpt/ pero también, existen opciones opensource que se pueden entrenar y poblar con respuestas en español como lo es OpenAssistant https://open-assistant.io/es, donde todos podemos colaborar. Espero que tal vez, si no estás impresionado aún, haya podido generar al menos, una pequeña duda.

Fátima Rodríguez es una apasionada de la seguridad ofensiva, trabaja actualmente como Cybersecurity Intelligence Analyst realizando diversos servicios de esta rama. Le gusta aprender, compartir y hacer comunidad en el campo de la ciberseguridad.
If you are enjoying our content, kindly consider sharing this post with your community on social media.
Share This