Exploit
# Exploit

Exploit es una palabra inglesa que significa explotar o aprovechar, y que en el ámbito de la informática es un fragmento de software, fragmento de datos o secuencia de comandos o acciones, utilizada con el fin de aprovechar una vulnerabilidad de seguridad de un sistema de información para conseguir un comportamiento no deseado del mismo.

Su uso principal es como vector para la inyección de una carga útil (en inglés payload) que ofrezca al atacante algún tipo de acceso y/o control del equipo comprometido. Un payload puede ser usado por varios exploits y un mismo exploit puede utilizar varios payloads.

## Clasificación

Según la forma en la que el exploit contacta con el software vulnerable:

* Exploit remoto. Si utiliza una red de comunicaciones para entrar en contacto con el sistema víctima. Por ejemplo puede usar otro equipo dentro de la misma red interna o tener acceso desde la propia Internet.
* Exploit local. Si para ejecutar el exploit se necesita tener antes acceso al sistema vulnerable. Por ejemplo el exploit puede aumentar los privilegios del que lo ejecuta. Este tipo de exploits también puede ser utilizado por un atacante remoto que ya tiene acceso a la máquina local mediante un exploit remoto.
* Exploit en cliente. Aprovechan vulnerabilidades de aplicaciones que típicamente están instaladas en gran parte de las estaciones de trabajo de las organizaciones. Ejemplos típicos de este tipo de software son aplicaciones ofimáticas (p. ej. Microsoft Office, Open Office), lectores de PDF (p. ej. Adobe Acrobat Reader), navegadores (p. ej. Internet Explorer, Firefox, Chrome, Safari), reproductores multimedia (p. ej. Windows Media Player, Winamp, iTunes). El exploit está dentro de ficheros interpretados por este tipo de aplicaciones y que llega a la máquina objetivo por distintos medios (p. ej. mediante un correo o en una memoria USB). El archivo será usado por el programa y si no es detenido por ningún otro programa (p. ej. cortafuegos o antivirus) aprovechará la vulnerabilidad de seguridad. Las peculiaridades de este tipo de ataques son:
   * Requieren la intervención del usuario del lado del cliente. Por ejemplo, necesitan que abra cierto archivo o que haga clic en cierto enlace
   * Es un ataque asincrónico porque el momento en que se lanza no es el mismo en que se consigue ejecutar el exploit (ya que necesita la acción del usuario).
   * Se lanza a ciegas, no se sabe qué aplicaciones y versiones de esta utiliza el objetivo real.

Según el propósito de su ataque:

* Curiosidad
* Fama personal
* Beneficio personal
* Espionaje

## Entornos de trabajo para exploits

Los entornos de trabajo o frameworks para exploits son paquetes software de apoyo que contienen módulos que ayudan para la construcción de exploits. Estos frameworks permiten la reutilización del código, la estandarización de los exploits y la simplificación del proceso de ataque. Ejemplos de este tipo de frameworks son Metasploit Framework, Core Impact, xploitz o Inmunity Canvas.

## Exploits en los videojuegos

En los videojuegos existen vulnerabilidades o fallos en el código o en la jugabilidad que permiten a los jugadores aprovecharse de una funcionalidad para obtener beneficios exponencialmente mayores a puntos irreales. Tales son los casos de obtener dinero virtualmente infinito repitiendo una acción que, durante una partida normal, no se permitiría. Mientras que en partidas de un solo jugador esto es normal de ver, esto es típicamente castigado en salas multijugador dada la naturaleza injusta del fenómeno.

Existe una controversia acerca de lo que es o no un exploit: mientras que en un caso específico algunos jugadores podrían decir que algo está siendo injustamente explotado para un beneficio inmenso a un jugador, otros podrían defenderlo argumentando que es parte de la jugabilidad y que, en ese caso, los programadores están al tanto de su existencia porque lo han publicado así.

Hasta ahora uno de los juegos en Internet más afectados por estos comandos maliciosos es Roblox, que es afectado en los servidores publicados en la red. Un cracker con ayuda de un programa especial edita los códigos del servidor activo, causando desde la aparición de nuevos elementos en el juego, hasta la desconexión de todos los jugadores y robo de su información actual en el sitio.

### Tipos de exploits

* Duping (duplicación): consiste en la duplicación de un elemento cuya multiplicación por medios no legítimos es considerada injusta. Un ejemplo de esto es la multiplicación de monedas en un juego donde la obtención de dinero es algo que conlleva un moderado esfuerzo.
* Lag: el lag o latencia es retardo entre el cliente y el servidor del que, entre otras cosas, puede funcionar como un recurso aprovechable para otorgar ventajas injustas a ciertos jugadores por sobre otros. Un ejemplo de ello es la saturación de una sala multijugador para que los otros jugadores no tengan la velocidad de respuesta que deberían tener, poniéndolos en desventaja. La manipulación de la latencia es una forma de ataque DDoS (Distributed Denial Of Service, o Negación De Servicio Distribuido en español), ya que consiste en saturar tu red de Internet y usualmente lo hacen a través de tu dirección IP (a no ser que dispongas de VPN); a base de mandar masivas e ingentes cantidades de paquetes basura a través de un equipo de botnets, haciendo que aparezcan retrasos de latencia (lag) o directamente desconexiones temporales, que vuelven a la normalidad cuando el ataque DDoS cesa.
* Geometría: algunos jugadores pueden aprovecharse de la forma de un mundo en un videojuego para saltarse espacios físicos o acceder a zonas que no fueron diseñadas para ser exploradas u observadas. Normalmente, esto muestra sectores incompletos del mapa o áreas con objetos sueltos dejados por los desarrolladores durante el diseño del juego a modo de pruebas.
* Twinking: esto puede considerarse más un truco social que un exploit, y consiste en engañar a otros jugadores de que uno mismo es menos habilidoso de lo que aparenta a través de mostrarse con equipamiento y aspecto menos complejo y avanzado de lo que el juego ofrece a esas alturas. Un ejemplo de esta situación es un jugador de alto nivel no vistiendo nada de armadura ni llevando armas, a veces incluso comportándose como si ignorara el funcionamiento del juego, solo para después demostrar lo contrario a través de sus habilidades y nivel reales.
* Bunny hopping: traducido como "saltos de conejito", consiste en aprovecharse de la forma en la que el movimiento de un jugador fue programado para moverse más rápidamente. En la mayoría de juegos esto se logra saltando constantemente en vez de hacer correr al personaje, y de ahí el nombre. Esta táctica es utilizada frecuentemente durante speedruns, donde el objetivo es terminar un videojuego o un segmento de este en el menor tiempo posible.
* Zonas seguras: se trata de un segmento del mapa en donde un jugador puede atacar a otras entidades (IA u otros jugadores) sin sufrir el riesgo de ser atacado de vuelta. Un ejemplo de esto es disparar a otros jugadores desde una zona donde estos tienen prohibido acceder.
* Cheesing: es un modo de atacar repetidamente de una manera en la que el oponente no puede atacar por la frecuencia y rapidez con la que estos ataques tienen lugar. Un ejemplo claro de esto es atacar a un oponente en un juego de pelea contra los límites de la pantalla, de manera que no pueda moverse ni contraatacar.

### Pivoting

Pivoting se refiere a un método utilizado por los Pentesters (Probadores de penetración) que usa el sistema comprometido para atacar otros sistemas en la misma red para evitar restricciones como configuraciones de firewall, que pueden prohibir el acceso directo a todas las máquinas.

Por ejemplo, si un atacante compromete un servidor web en una red corporativa, el atacante puede usar el servidor web comprometido para atacar otros sistemas en la red. Estos tipos de ataques a menudo se denominan ataques de varias capas.

El pivote se puede distinguir además en pivote de proxy y pivote de VPN. El pivote de proxy generalmente describe la práctica de canalizar el tráfico a través de un objetivo comprometido utilizando una carga útil de proxy en la máquina y lanzando ataques desde la computadora. Este tipo de pivote está restringido a ciertos puertos TCP y UDP que son compatibles con el proxy.

El pivote de VPN permite al atacante crear una capa encriptada para hacer un túnel en la máquina comprometida para enrutar cualquier tráfico de red a través de esa máquina objetivo, por ejemplo, para ejecutar un escaneo de vulnerabilidades en la red interna a través de la máquina comprometida, dándole al atacante acceso total a la red de manera efectiva, como si estuvieran detrás del cortafuegos.

Por lo general, las aplicaciones proxy o VPN que permiten el pivote se ejecutan en la computadora de destino como la carga útil de un exploit.

## Bases de datos de exploits

Las principales bases de datos de exploits son:

* Exploit DB
* Rapid7
* CXSecurity
* Vulnerability Lab
* 0day
* SecurityFocus
* Packet Storm Security
* Google Hacking Database . Es un proyecto de Exploit DB que obtiene la información usando Google (Google Dorks.
