Cómo realizar movimientos laterales con Socat – Parte 1 de 2
2023-3-22 16:0:26 Author: thehackerway.com(查看原文) 阅读量:15 收藏

Demostración en vídeo de este post

Socat es una herramienta muy potente que se encuentra disponible tanto en sistemas Windows como Linux. A diferencia de otras herramientas como Netcat, cuenta con muchas opciones que permiten gestionar las conexiones y, por supuesto, crear túneles y redirectores para llevar a cabo movimientos laterales.
En este post, explicaré algunos comandos útiles que te ayudarán a dominar esta herramienta y hacer un buen uso de ella.

Para empezar, es conveniente conocer algunas de las instrucciones más comunes en Socat, lo que te permitirá entender cómo funciona la herramienta.
Su sintaxis es simple, es necesario indicar dos posiciones, las cuales representan el origen y el destino, dicho de otro modo, el cliente y el servidor.

Partiendo de esta base, se pueden hacer muchas cosas, ya que la herramienta cuenta con un conjunto muy potente de opciones. Vamos a explorar a continuación, algunos comandos básicos.

Conexión desde la máquina local a un host remoto

El siguiente comando recibe texto en el flujo de entrada estándar y, a continuación, envía dicho texto al destino indicado.

Hay algunas opciones que se pueden establecer tanto en el origen como en el destino. Por ejemplo, se puede indicar un tiempo de timeout y el número de bytes que se deben leer y enviar al destino.

Crear un redirector simple

Socat permite abrir un puerto en la máquina local para que, todo el tráfico entrante en dicho puerto, sea enrutado a un destino distinto. Esto, como te imaginarás, permite crear túneles y facilita los movimientos laterales en la etapa de post-explotación. Con socat, esto se puede hacer con el siguiente comando

En el ejemplo anterior, se abre el puerto 4444 en la máquina local y, a continuación, todos los paquetes que reciba socat por dicho puerto serán enrutados al destino indicado con la opción «TCP4».

Aplica restricciones y opciones extra en los puertos

Con la opción «TCP4-Listen» es posible abrir un puerto, pero además, también se pueden indicar algunas restricciones para limitar las conexiones entrantes. Por ejemplo, se puede indicar la dirección IP o interfaz de red en la que se levantará el puerto, el usuario con el que proceso se ejecutará y si se debe hacer o no «fork» en el servidor.

En el ejemplo anterior, se abre el puerto 3000 y el proceso se ejecuta con los permisos del usuario «adastra». Además, se realiza un fork tras cada conexión, por lo que el servidor seguirá aceptando conexiones por parte de otros clientes. Finalmente, las conexiones entrantes simplemente se enrutan a «google.com».

Ejecuta comandos sobre la conexión TCP

Con Netcat es muy común utilizar la conexión TCP para ejecutar comandos en una «bind» o «reverse» shell. En Socat esto también es posible, para ello se debe usar la opción EXEC tal como se enseña en el siguiente ejemplo

El cliente simplemente establece una conexión y, cuando Socat la recibe, ejecuta el comando «/bin/bash». A partir de este punto, todas las instrucciones que envíe el cliente son interpretadas por bash y la salida se enseña en la terminal del cliente.

En este primer artículo has visto el uso básico de Socat, pero ofrece muchas más opciones interesantes que explicaré en el siguiente. Concretamente, verás cómo utilizar un proxy para tus conexiones, cifrar los datos del canal de comunicación con OpenSSL o crear una pequeña VPN. Son cosas que explicaré en la siguiente parte de esta serie.

Un saludo y Happy Hack!
Adastra.


文章来源: https://thehackerway.com/2023/03/22/como-realizar-movimientos-laterales-con-socat-parte-1-de-2/
如有侵权请联系:admin#unsafe.sh