El lado ofensivo de ChatGPT

Escrito por: Fátima Rodríguez

Marzo 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 alrededor del impacto/efecto que tendrá en la industria y los practicantes de ciberseguridad en el mediano plazo. En este artículo vamos a reparar 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. Está utilizando Aprendizaje Reforzado por Retroalimentaci[on Humana (RLHF) y está construido con la última versión de la familia GPT3.5 de lenguaje de modelos 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 Equipo rojo en el modelo de entrenamiento y empezar preguntando ¿¿Qué es un equipo rojo?? ChatGPT dará una definición de 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 el comando de Nmap para encontrar vulnerabilidades en un servidor Apache? O ¿Cuál es el código para generar una shell inversa en PHP? Que si bien, podemos encontrar al alcance de una búsqueda sencilla en internet, ChatGPT responderá con bastante contexto que no 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 iguales 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 familiarizados 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 realizan 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 en el sitio web que desea atacar y asegurarse de que se estará cumpliendo 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 dos puntos (:).
  3. Abre una terminal y ejecuta Hydra con el siguiente comando, reemplazando los valores en mayúsculas con los tuyos:

hidra -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 combinación 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 usos en la sintaxis del comando. Esto, dicho sea de paso, cuando uno no está tan combinado 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:

hidra -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 funcionarán.

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

Clean Recuerda que el uso de la fuerza bruta para acceder a sistemas o aplicaciones sin autorización puede ser ilegal y estar sujeto a sanciones legales. Por lo tanto, asegúrese 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 considera un uso inapropiado y violan las políticas de uso del chat. Pero limpiar que podemos preguntar donde almacenar Gophish las contraseñas, cómo hacer una URL trazable o dónde usar una línea telefónica virtual y todas esas cuestiones que, por partes, nos ayudarían hipotéticamente Hablando, claro, a engañar a algún humano.

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

Para extraer cookies en PowerShell, puede 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 = Nuevo-Objeto -ComObject “InternetExplorer.Aplicación”

# Hacer que el navegador sea invisible

$es decir.Visible = $falso

# Navegar a la página que contiene la cookie

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

# Espere a que la pagina se cargue completamente

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

# Obtener todas las cookies como una cadena de texto

$cookies = $es decir.Documento.cookie

# Separar cada cookie en una matriz

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

# Buscar la galleta específica por su nombre

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

# Si se encuentra la galleta, extraiga su valor

if ($cookieName -eq “nombre_de_la_cookie”) {

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

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

romper

   }

}

# Cerrar el navegador

$es decir.Salir()

Lo anterior, es un script para realizar la extracción de cookies, una tarea que depende de la tecnología utilizada, vulnerabilidades identificadas y otras 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 note 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 desbordamiento de pila.

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 completamente procesadas y scripts útiles pueden ser obtenidos. No escribiré la respuesta de una de estas consultas aquí, para que de como ejercicio para el lector la respuesta de lo siguiente:

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


Considere 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? analizar y colocar estas salidas?

Hay muchas respuestas que podemos prevenir 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 extender 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, eliminación y cambio de vectores complejos de phishing y por supuesto, mayores para desarrollo de capacidades de ataques de Día Cero.

Un escalofriante ejemplo de lo primero enlistado, fue compartido por el equipo de CyberArk, quienes usaron 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 puede 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 vectores complejos 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 que se trata la tecnología? Siendo así, avancemos todos y veamos 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 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, hayas 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.
Si está disfrutando de nuestro contenido, considere compartir esta publicación con su comunidad en las redes sociales.
Compartir este