Es posible acceder tu red local usando JavaScript

Estándar

En un post de Ionut Ilascu del portal de noticias  Bleeping Computer, nos cuenta que investigadores de seguridad advierten sobre una nueva técnica de hackeo de redes que permite ataques en la red local mediante JavaScript en un sitio web público. Eso se consigue utilizando el navegador de la víctima como un proxy, el código puede llegar a los hosts internos y realizar actividades de reconocimiento o incluso comprometer servicios vulnerables.

Este nuevo método de hackeo no está totalmente obstruido por la política del mismo origen (SOP), que es el modelo de seguridad de las aplicaciones web que en teoría debería restringir la interacción entre páginas de diferente origen (host) y  de esta forma se puede saltar por encima de los firewalls porque el navegador puede acceder tanto al host local y a la red local.

Los investigadores de seguridad de Forcepoint, una compañía en la que uno de los socios es el contratista de defensa de los Estados Unidos Raytheon, afirman que aunque la técnica no es nueva y que la comunidad de seguridad está al tanto de ella. Sin embargo, los escasos recursos sobre el tema y la subestimación de la posible superficie de ataque lo hacen digno de atención.

¿Cómo evadir la política del mismo origen?

La técnica aprovecha la forma en que el SOP normalmente funciona en un navegador, permitiendo la incrustación y escritura de origen cruzado entre dos orígenes diferentes y bloqueando la escritura.

En un escenario típico, esto significa que es posible enviar solicitudes entre dominios, pero el código JavaScript no puede leer la respuesta. El resultado es un acceso unidireccional a la red local.

Sin embargo, los errores de JavaScript pueden proporcionar información valiosa en una etapa de reconocimiento, mientras que la explotación de algunos dispositivos en la red puede ser posible a través de vulnerabilidades de falsificación de solicitudes entre sitios (CSRF), que son comunes en los enrutadores domésticos.

Los investigadores dicen que un atacante puede usar un JavaScript malicioso en un sitio web público para al menos “descubrir hosts internos, realizar escaneos de puertos limitados y hacer detección de servicios por su huella“.

Entre las posibilidades de ataque, Forcepoint enumera el control del enrutador de una víctima al cambiar la contraseña de acceso o su configuración o comprometer dispositivos vulnerables en una organización.

Desanonimizar a los usuarios del servicio TOR con el navegador configurado de forma insegura también sería posible donde se permita la comunicación con la LAN. Usando CSRF, el enrutador podría hacer ping a un host externo para mostrar la dirección IP real del usuario de TOR.

Como un ejemplo más concreto, un atacante puede recurrir a JavaScript para averiguar la dirección IP interna de la víctima y luego realizar conjeturas informadas sobre la IP de otros hosts en la red local. Si hace click aquí, Ud. verá su IP local. Esto es posible debido a que JavaScript puede acceder información relacionada a su interfaz de red.

La ejecución de scripts de exploraciones de puertos en los hosts de tu red local revelará los puertos abiertos y los servicios disponibles, detalles que pueden ser usados para planificar un ataque.

En teoría debido al SOP, JavaScript no debería leer la respuesta de una conexión HTTP directa a los hots. Pero al cargar una imagen desde el puerto HTTP del host, puede ocurrir un evento “onerror” u “onload”, lo que indica que el puerto puede estar abierto; un tiempo de espera significa que el puerto está cerrado. Aunque hay que admitir que este enfoque es propenso a los falsos positivos.

Los investigadores de seguridad de Forcepoint dicen: “Conociendo la dirección IP local y completándola con estimaciones adecuadas de hosts, podemos crear una página maliciosa que conecte estos hosts, similar a algunas herramientas de código abierto disponibles. El archivo HTML con nuestro puerto de escaneo de JavaScript incorporado se coloca en algún otro dominio, que será un servidor disponible públicamente en el caso general

Con una lista de puertos potencialmente abiertos, el atacante puede encontrar los servicios que los utilizan. Un método no directo es nuevamente la clave.

Debido a las restricciones de SOP, el JavaScript no puede leer desde la página, pero puede hacer una determinación mediante el uso de imágenes predeterminadas específicas del servicio para desencadenar eventos “onerror” y “onload” que muestran si están presentes en el host.

La información obtenida de esta manera puede usarse para preparar un ataque con objetivos claros. Según el objetivo, los investigadores dicen que es posible navegar por la red interna de la víctima desde la Internet pública.

Uno de los ejemplos ofrecidos es el que se refiere a un sitio web de destino vulnerable a las secuencias de comandos entre sitios (XSS), configurado para comunicarse con una página de una intranet. La ejecución de JavaScript malicioso en el sitio web defectuoso permitiría un ataque en la red local.

A partir del escenario de reconocimiento inicial, que no implica una vulnerabilidad, un atacante puede adaptar su táctica para una misión exitosa. Aprender sobre los servicios disponibles en la red local y familiarizarse con el software interno de la empresa y descubrir una manera de introducirse en la red local sin ser detectado.

La defensa contra estas tácticas sería navegar a través de un proxy web. Si esto no es una opción, lo mejor que puede hacer es detectar un JavaScript externo que intenta conectarse a una dirección IP privada.