¿Qué es Shell Directa y Shell Inversa? ¿Para qué Sirven?
¿Qué es una shell?
Antes de ver que es una shell inversa (reverse shell) o directa (bind shell), debemos tener claro lo que es una shell; una shell es un software que actúa como una interfaz que nos permite ingresar comandos en un sistema operativo; estos comandos (ingresados a través del teclado) permiten de “cierta forma” que se ejerza un control sobre el sistema operativo, sin la necesidad de utilizar una interfaz gráfica de usuario ¿por qué digo que de “cierta forma”? Porque el hecho de que usted tenga una shell, no significa que posee el control total sobre la máquina, lo anterior, debido a que todo se restringirá a los privilegios del usuario con el que se ejecuta la shell.
A continuación, puede ver el ejemplo de algunas shell:
shell por defecto en Debian Linux
shell cmd correspondiente a Windows 10
shell PowerShell de Windows 10
shell csh, utilizada por defecto en FreeBSD 13
En el contexto de este post, voy a hacer referencia a la máquina objetivo y a la máquina atacante, adicionalmente, hablaré de listener (software que escucha solicitudes de conexión)
¿Para qué sirven?
La shell directa e inversa, se utilizan durante un pentest, como una forma de acceso hacía la máquina objetivo, para iniciar la fase de post explotación; con ambas shell (debe escoger una de ellas) puede conectarse a la máquina objetivo y, enviarle a esta, a través de la consola, las instrucciones requeridas para continuar con las tareas que va a realizar durante la post explotación.
Algunos sysadmins las utilizan como herramienta de gestión remota, sin embargo, NO lo considero recomendable.
¿Qué es una shell directa?
En este caso, la máquina objetivo se pone a la escucha de la solicitud de conexión, es decir, ejecuta un software que actúa como una “especie” de servidor, en un puerto específico, que está a la espera de que alguien (un software cliente) establezca una conexión, para entregarle la shell; el atacante se conecta desde un “software cliente” a la máquina objetivo.
En conclusión en una bind shell, el listener se configura y ejecuta en la máquina objetivo
¿Qué es una shell inversa?
La shell inversa (reverse shell), funciona de forma inversa a la shell directa; en este caso,el atacante dispone una máquina y, en ella, ejecuta un software que queda a la escucha de solicitudes de conexión, en un puerto determinado; por otro lado, la máquina objetivo (máquina atacada) se conecta hacia el servidor
En conclusión en una shell inversa, el listener se configura y ejecuta en la máquina atacante
¿En qué caso se debe utilizar la shell directa?
Podría ejecutar una bind shell cuando:
Se tenga acceso directo a través de una IP pública,
En una situación en la cual no intermedie alguna traducción de puertos como PAT (Port Address Translation) ó una traducción de direcciones IP como NAT (Network Address Translation),
En el caso en el cual el firewall está configurado incorrectamente (tráfico entrante y saliente aceptado sin excepción alguna) ¿Qué sucede? En un firewall mal configurado, la máquina objetivo podría estar aceptando, por defecto, conexiones nuevas, generadas desde equipos externos.
¿En qué caso se debe utilizar la shell inversa?
La shell inversa se utiliza cuando intermedia alguna traducción de IP o puertos en la conexión hacia la máquina objetivo; también en el caso en el cual exista un firewall que limite el tráfico entrante hacia la máquina objetivo; en estos casos sería más conveniente que la máquina objetivo, iniciara una nueva conexión hacia la máquina del atacante, máquina en la cual estará el software (netcat, socat, etc) escuchando solicitudes de conexión en puertos típicamente habilitados en un firewall como el puerto 443, el puerto 80, puerto 53, etc.
Fuentes:
https://www.sans.org/blog/pen-test-poster-white-board-python-python-reverse-shell/
Libro Hands-On Red Team Tactics – Himanshu Sharma, Harpreet Singh
¿Te gustó este post? por favor déjanos tus comentarios! Sé un buen HackerPro y comparte con tu comunidad! Suscríbete a Behackerpro
Otras Entradas
Introducción a la Seguridad en AI – Parte 2
Después de entender los principales ataques, técnicas, tácticas y procedimientos...
Leer másIntroducción a la Seguridad en AI
Cuando hablamos de Seguridad en AI (Artificial Intelligence o Inteligencia...
Leer más5 pilares para Hackers o Profesionales en Ciberseguridad desde una perspectiva técnica
Después de la master class que realizamos en Be Hacker...
Leer más