Jump to content
  • Entries

    16114
  • Comments

    7952
  • Views

    86386876

Contributors to this blog

  • HireHackking 16114

About this blog

Hacking techniques include penetration testing, network security, reverse cracking, malware analysis, vulnerability exploitation, encryption cracking, social engineering, etc., used to identify and fix security flaws in systems.

HireHackking

Pivoting con Chisel

Chisel es una herramienta super útil para usar tanto en máquinas Windows como Linux. Nos permite de forma muy cómoda prácticamente obtener las mismas funciones que SSH (en el aspecto de Port Forwarding).

Índice

  • Introducción
  • Local Port Forwarding
  • Remote Port Forwarding
  • Dynamic Port Forwarding

Introducción

Se puede descargar desde su Repositorio Oficial. Ahí podemos encontrar los diferentes paquetes para los distintos sistemas, tanto Windows como Linux:

image 115

En este caso el «laboratorio» es el siguiente:

  • 3 Equipos
    • Kali –> Mi equipo de atacante
      • IP: 192.168.10.10
    • Windows 7 de 32 Bits
      • IP: 192.168.10.30 y 192.168.20.30 –> 2 Interfaces de Red
    • Debian –> Servidor Web y SSH – Puerto 22 y 80 activados
      • IP: 192.168.20.20 y 192.168.30.10 –> 2 Interfaces de Red (aunque la segunda para este post es irrelevante)
pivoting chisel laboratorio 1

Como Chisel también es una herramienta que sirve en Windows, vamos a mezclar ambos sistemas, ya que es totalmente compatible.

Primero de todo descargamos las versiones correspondientes de chisel tanto para la máquina Kali como para la máquina Windows, ya que Chisel funciona mediante una arquitectura cliente-servidor. Una vez descargado nos aseguramos de que funcione:

image 116
image 117

Una vez tenemos todo listo, vamos a ver las posibilidades que nos ofrece Chisel. Realmente, con esta herramienta podemos simular y hacer todos los forwardings que SSH puede, es decir:

  • Local Port Forwarding
  • Remote Port Forwarding
  • Dynamic Port Forwarding

Y todo sin la necesidad de SSH, lo que nos permite prácticamente poder usar Chisel en casi cualquier situación de forma que no dependamos de este protocolo. Además, de forma conceptual, todos los forwardings funcionan de la misma forma que en SSH.

Local Port Forwarding

Sabiendo que la arquitectura es cliente-servidor, y que estamos ante el Local Port Forwarding, tenemos que establecer el servidor, en este caso, en la máquina Windows. Para ello, la sintaxis es bastante sencilla:

chisel server -p <puerto>

Tenemos que establecer un puerto el cual será donde chisel funcione y el cliente posteriormente se conecte, por lo que conociendo esto, yo voy a establecer el servidor en el puerto 1234:

image 118

Con esto establecido, ahora solo tenemos que ir a nuestro Kali para que se conecte como cliente, la sintaxis en este caso es un poquito mas compleja ya que le tenemos que especificar a que IP y puerto queremos llegar:

chisel client <dirección servidor chisel>:<puerto servidor chisel> <puerto local a abrir>:<dirección a donde apuntar>:<puerto a apuntar de la direccion donde se apunta>

En este caso:

image 119

Como vemos, chisel nos indica que nos hemos conseguido conectar, si no fuese ésto, se comportaría de la siguiente forma:

image 120

Pero en este caso, nos conectamos sin problemas. Con esto, ya solo tenemos que ir al puerto local que hemos abierto, en este caso el 80, el que supuestamente está apuntando al puerto 80 de la 192.168.20.20 (el servidor web vaya):

image 121

Como vemos, llegamos sin problemas.

Chisel también permite tunelizar varios puertos al mismo tiempo, siendo la sintaxis de esta forma:

A = chisel client <dirección servidor chisel>:<puerto servidor chisel>

B = <puerto local a abrir>:<dirección a donde apuntar>:<puerto a apuntar de la direccion donde se apunta>

La sintaxis para tunelizar varios puertos seria entonces la siguiente:

A + B + B + B + B… etc…

Ejemplo:

image 124

Además del puerto 80, estamos tunelizando el puerto 22 (SSH), por lo que:

image 123

Vemos que nos conectamos a la máquina que hemos especificado.

Remote Port Forwarding

Al contrario que en el Local Port Forwarding, en el Remote Port Forwarding, el servidor se coloca en el Kali, mientras que el cliente sería el Windows.

La sintaxis tanto para el cliente como para el servidor tiene algunas variaciones, en este caso, los comandos serían:

  • Servidor –> Kali

chisel server -p <puerto> --reverse

  • Cliente –> Windows

chisel client <dirección servidor chisel>:<puerto servidor chisel> R:<puerto a abrir en el servidor de chisel>:<dirección a donde apuntar>:<puerto a apuntar de la direccion donde se apunta>

Sabiendo esto, establecemos el servidor en nuestro kali:

image 125

Con esto, nos conectamos desde el Windows a nuestra máquina Kali:

image 126

Si miramos ahora nuestro Kali podemos ver como se ha conectado correctamente:

image 127

De esta forma, analizando y trayendo el comando ejecutado en el cliente:

chisel client 192.168.10.10:1234 R:80:192.168.20.20:80

Deberíamos en nuestro kali desde nuestro puerto 80, poder acceder al puerto 80 de la 192.168.20.20 (el Servidor Web):

image 128

Como vemos llegamos sin problemas.

Al igual que en el Local Port Forwarding, podemos tunelizar varios puertos con la misma conexión de Chisel, se haría de la misma forma:

A = chisel client <dirección servidor chisel>:<puerto servidor chisel>

B = R:<puerto a abrir en el servidor de chisel>:<dirección a donde apuntar>:<puerto a apuntar de la direccion donde se apunta>

La sintaxis para tunelizar varios puertos seria entonces la siguiente:

A + B + B + B + B… etc…

Ejemplo:

image 129
image 130

De esta forma, podemos acceder no solo puerto 80 de la máquina, sino también al puerto 22:

image 131

Vemos que funciona perfectamente.

Dynamic Port Forwarding

Con el Dynamic Port Forwarding podemos tunelizar todos los puertos, creando un proxy SOCKS. El funcionamiento y uso es exactamente el mismo que el proxy de SSH.

Chisel nos permite tanto crear un Forward Proxy como un Reverse Proxy. A nivel de uso, se suele usar mas el Reverse Proxy, por la misma razón que las Reverse Shells son mas famosas que las Bind Shells. Hablando de forma genérica, un Reverse Proxy o una Reverse Shell te dará menos problemas en cuanto a firewalls que las otras dos opciones (Forward y Bind). En cualquier caso, sea el que sea el proxy que escojas, ambos harán su cometido.

Para cada uno, la sintaxis es un poco distinta:

  • Forward Proxy
    • Servidor –> Windows
      • chisel server -p <puerto> --socks5
    • Cliente –> Kali
      • chisel client <dirección servidor chisel>:<puerto servidor chisel> <puerto que actuará como proxy>:socks
  • Reverse Proxy
    • Servidor –> Kali
      • chisel server -p <puerto> --reverse
    • Cliente –> Windows
      • chisel client <dirección servidor chisel>:<puerto servidor chisel> R:<puerto que actuará como proxy>:socks
pivoting chisel laboratorio 1

Vamos a ver ambos de forma práctica, pero antes, configuramos el firefox para que tire contra el puerto 1080, que será el puerto donde en cada caso de cada proxy funcionará éste (para que no tengamos que cambiarlo).

image 133

Con esto listo, vamos a empezar.

  • Forward Proxy
image 135
image 134

De esta forma, si intentamos acceder a la IP 192.168.20.20 en Firefox:

image 136

Vemos que accedemos.

  • Reverse Proxy:
image 137
image 138

De esta forma, si intentamos de nuevo acceder al Servidor Web:

image 139

Seguimos llegando sin problemas.

En este caso, solo estamos usando el proxy para firefox, pero se puede usar para otros programas o comandos. Para ello, podemos hacer uso de Proxychains, el cual aprovechará este proxy SOCKS creado para tramitar todo el tráfico. Esto se puede ver con mayor detalle en el post de Pivoting con Proxychains.