Saltar a contenido

03.-Concepto de Payload

Tal y como hemos visto anteriormente, un payload es la porción de código o instrucciones que se ejecuta inmediatamente después del exploit y que obliga a la víctima a realizar una serie de operaciones. Atendiendo a cómo se transmita este payload a la víctima, podemos agruparlos en dos categorías:

Non-Staged

Se denominan payloads autocontenidos, normalmente se corresponden con la ejecución de un comando muy específico en la víctima para añadir un usuario en el sistema remoto, añadir un usuario a un grupo privilegiado, establecer una conexión secundaria entre víctima y auditor.

Staged

En este caso el payload se transmite en varias partes con la finalidad de evitar posibles bloqueos que pudieran realizarse debido a los dispositivos de seguridad existentes en la red. La primera parte que se inyecta en la víctima corresponde a una pequeña porción de código que es ejecutado y espera al envío de la segunda parte del payload. La segunda parte del payload se corresponde con un payload más avanzado como pudiera ser una shellcode avanzada, un servidor de VNC para controlar el sistema remoto, etc.

Shellcode

Una shellcode es un tipo especial de payload que normalmente inicia una shell de comandos, más o menos avanzada, a través de la cual el auditor puede controlar la máquina comprometida.

Tipos de Shellcode

Según la posición del auditor en el sistema objetivo

  1. Local:
    • Se utilizan cuando el auditor dispone de acceso a un equipo, pero con un acceso limitado.
    • Mediante una vulnerabilidad concreta, ejecutan una shellcode específica que permite una escalada de privilegios para obtener mayor acceso en el sistema local.
  2. Remota:
    • Se emplean cuando un atacante no dispone de acceso previo al equipo remoto.
    • Al ejecutarse la shellcode, se establece un canal de comunicación remoto entre el auditor y la víctima.

Según cómo se establece la conexión

  1. Bind:
    • Cuando este tipo de shellcodes son ejecutadas en la víctima, se inicia un servidor de conexión que abre un puerto en el equipo comprometido.
    • El atacante establece la conexión con el puerto que se ha levantado en la víctima.
    • Limitación: Solo son funcionales si se está en la misma red local que la víctima y no hay firewalls que bloqueen la comunicación.
  2. Reverse:

    • En este tipo de shellcodes, no se inicia ningún servicio en la máquina víctima.
    • Es el auditor quien levanta un servidor a la escucha en un puerto determinado, y el shellcode en la víctima inicia la conexión hacia el equipo del auditor en el puerto apropiado.
    • Ventaja: Dado que la víctima inicia la conexión, los firewalls que bloquean conexiones entrantes no afectan la comunicación.

    https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvaEIR8U9GVmWiVKLH7Dr6A9zT12QLaPN3aIKTygcAFSdpC2_8zZZJIL0wPOkvgeUCAYKmKk4Bajuha7TSHWuJcd07jqjwNE8SnbntCBFl6ib4LF42LSOoEsUc1FSsCsiONu14B8K0wXvi/s1600/bindreverse-tcp-shell.png

Una shellcode puede categorizarse combinando una categoría de cada grupo.
Ejemplos: - Shellcode inversa remota. - Shellcode local de tipo bind.

Autoevaluación

  1. Si el equipo que quiero comprometer mediante una determinada vulnerabilidad se encuentra tras un firewall mientras que yo, como atacante, estoy situado en una dirección de internet, he de utilizar una shell de tipo reverse.
    • Respuesta: Verdadero
    • Explicación: Dado que la víctima se encuentra tras un firewall, no se puede utilizar una shell de tipo bind que levante un puerto en la máquina de la víctima, ya que el firewall bloquearía la conexión. Al utilizar una shell de tipo reverse, es la víctima quien inicia la conexión hacia la máquina del atacante y, normalmente, el tráfico de salida a internet no está filtrado.
  2. Los payloads staged son autocontenidos y la explotación se realiza en una sola fase en la que se ejecutan el exploit y el payload a la vez.
    • Respuesta: Falso
    • Explicación: Los payloads staged se envían en dos fases. La primera fase explota la vulnerabilidad y carga un pequeño downloader. La segunda fase carga el payload final a través del downloader.
  3. El payload es el código que se inyecta en la víctima una vez se ha explotado con éxito la vulnerabilidad.
    • Respuesta: Verdadero
    • Explicación: El payload es el código o conjunto de instrucciones que se ejecuta una vez explotada la vulnerabilidad. Este permite ejecutar código no autorizado en el cliente, como, por ejemplo, la ejecución de una shellcode.