Active X Inseguros y una Prueba de Concepto


¿Qué es un ActiveX? Es una tecnología de reutilización de software creado en Microsoft COM. Por ejemplo, ActiveX permite un documento de Word embeberlo en una hoja de cálculo de Excel y esta publicarse por medio de un sitio o aplicación Web.

ActiveX habilita una interface de Scripts a través de la cual se pueden aprovechar todas las capacidades de componentes binarios pueden estar disponibles para los lenguajes scripts, tales como VBS y JS (lo que se conoce como Automatización OLE o simplemente Automatización). Es un modelo de plug-in de IE, permitiendo que IE cargue y use componentes binarios personalizados desde o dentro de sitios Web. La interacción entre las páginas se hace por medio de las interfaces script.

Dado que ActiveX es una tecnología de reutilización de código de propósito general y no es diseñado solamente para usarse en páginas Web. No todos los componentes son apropiados para su uso en la Web. Sin embargo, hay límites para estos componentes, por ejemplo, un ActiveX no podría ejecutar código malicioso en su computador sin su consentimiento.

El componente ActiveX debe afirmar que es tanto seguro para inicialización y seguro para scripting.

¿Qué es inicialización y scripting seguro?

«Seguro para inicialización» básicamente significa que el componente no violará la seguridad del usuario, incluso si inicializado con datos no confiables o maliciosos.

«Seguro para scripting» significa que sus interfaces de scripting no pueden ser objeto de abuso por un script malicioso que cause daño al usuario.

¿Cuál es la configuración por defecto de esta característica en IE?

IE por defecto deniega la carga de componentes ActiveX marcados como no seguros para inicializar o ejecutar scripting cuando son referenciados en sitios Web alojados remotamente y en cualquier zona de seguridad del IE, excepto la zona de maquina local que está en la opción “Preguntar”, es decir, en el resto de zonas está configurada en la opción denegar.

Esta configuración se puede hacer de manera diferente por cada zona de seguridad o mediante GPO a partir de IE 7.

Las interfaces del Windows Script Host son también un ejemplo más claro de un componente ActiveX inseguro, ya que permiten la manipulación del registro, manipulación de archivos, y lanzar programas o líneas de comando.

En IE6 en inferior, en la zona de sitios seguros esta opción está marcada para preguntar y no denegar como las versiones actuales, por tanto, le muestra un mensaje al usuario para que permita la interacción al darle clic en “Yes” o “Si”.

Question

La opción de “Preguntar” al usuario, tampoco es una buena idea, ya que los usuarios finales se acostumbraron a que cada vez que ven un aviso del navegador, dan en la opción “Si” para poder trabajar o visualizar lo que desean, por tanto, muchos no leen o son conscientes de que están permitiendo al hacer clic en sí.

Amenazas informáticas:

El problema radica en que IE no permite configurar de manera personalizada un componente ActiveX para fines específicos, sino que cuando se habilita esta opción en una zona del navegador, permite que cualquier o todos los sitios Web que funcionan en esta zona. Lleven a cabo cualquier acción en el computador sin el consentimiento del usuario, esto significa que un atacante o cualquier persona podría controlar el contenido, archivo, entre otras para todos los computadores que visitan el sitios Web.

Un atacante podría instalar un malware (ej. Spyware, virus, ransomware…) sin necesidad de permisos administrativos, configurar programas para ejecutarse al inicio de sesión del usuario, capturar o enviar información privada a externos, borrar citas del calendario o modificar/borrar archivos. Además puede hacer un escenario de ataque en donde con un script en un archivo HTML infecte los usuarios y luego lo restaure al original, sin que sea fácil de rastrear este tipo de ataque.

Prueba de Concepto – PoC:  (Se puede ejecutar codigo remoto desde la Red Interna o desde un sitio Web comprometido en Internet).

Verificar la opción en la configuración del Internet Explorer. (La que no se puede habilitar)

Opcion1

La prueba consiste en ingresar desde el Internet Explorer a un sitio en Internet donde se montó una página HTML que permita ejecutar una calculadora sin consentimiento del usuario. La prueba fue satisfactoria en un Internet Explorer 10 con Windows 7 Service Pack 1.

Se crea una página HTML básica con un llamado a un archivo JavaScript o se modifica una existen en un sitio Web.

Index

Se agregan las lineas de ejecución de codigo al archivo JS con el objeto ActiveX malicioso, que  para este ejemplo solo ejecuta una calculadora en el computador que visita la página.

js

Ejecución desde el navegador.

PoC

Remediación

Para asegurar un ActiveX no solamente basta con fírmalo digitalmente(este es más para la integridad y no repudio del control), sino que también existen dos métodos a nivel de código fuente para asegurarlo, usando un identificador de clase del control (CLSID).

  1. El primer método consiste en usar la interface ICatRegister del “Component Categories Manager” para crear unas entradas en el registro (CATID_SafeForScripting) del sistema operativo y el IE examina este antes de cargar el control ActiveX.

La ruta donde se crea esto es la siguiente:

regedit

Los pasos son:

  1. Create an instance of the Component Categories Manager and retrieve the address of the ICatRegister
  2. Set the appropriate members of a CATEGORYINFO
  3. Call the ICatRegister::RegisterCategories method, passing the address of the initialized CATEGORYINFO

NOTA: En el enlace de referencia está el código fuente de ejemplo con la implementación.

El segundo método tiene que ver con implementar una interface llamada IObjectSafety y su método SetInterfaceSafetyOptions (con 3 parámetros) en el control ActiveX, para poder que el navegador IE lo inicialice y ejecute de forma segura.

ActiveX-Seguro

En el siguiente articulo de Microsoft explican el detalle del asunto:

https://msdn.microsoft.com/en-us/library/aa751977%28v=vs.85%29.aspx

También es recomendable este post sobre el diseño seguro de ActiveX:

https://msdn.microsoft.com/es-es/library/aa752035%28v=vs.85%29.aspx

Espero este ejemplo sirva para que cuando se vaya habilitar una opción en el navegador, se evalue primero el riesgo y en lo posible con una prueba de concepto evidenciarlo; ademas que esto  pueda ayudar a crear lineamientos para los desarrolladores de las Apps corporativas que usan ActiveX, con el fin de no poner en riesgo la organización.

#WackoPicko: Para aprender sobre vulnerabilidades conocidas en aplicaciones Web


Según el cono del aprendizaje de Edgar Dale y Bruce Nylan, el ser humano tiende a recordar y aprender mas fácilmente, el 90% aproximadamente, cuando decimos y hacemos lo que intentamos aprender.

 cono-del-aprendizaje

Desde que aprendí sobre esto, lo he venido poniendo en practica, cada vez que el tiempo y los recursos me lo permitan y los resultados son muy satisfactorios; prácticamente nos volvemos «como una esponja para absorber nuevo conocimiento.»

Con base a lo anterior, voy hablar sobre una de las formas en que podemos aprender un poco sobre análisis de vulnerabilidades en aplicaciones Web, pero desde una forma practica.

Para esto, voy a utilizar WackoPicko, el cual es una aplicación Web tipo LAMP, que fue creada en el 2010 para hacerle una prueba mas realista a las soluciones de software que escanean vulnerabilidades en aplicaciones Web, tales como Acunetix, AppScan, Burp, Grendel-Scan 1, Hailstorm, Milescan, N-Stalker, NTOSpider, Paros, w3af, Webinspect, entre otras…

Acerca de WackoPicko.

WackoPicko es un sitio Web para compartir y comprar fotos. Un usuario registrado de WackoPicko, puede subir fotos, navegar por las fotos de otros usuarios, comentar fotos y puede comprar los derechos para una versión de alta calidad de una fotografía  Debido a esto contiene varios módulos, uno de autenticación para los usuarios que se van a registrar, otro para cargar las fotos o imágenes de los usuarios registrados, otro que permite comentar estas imágenes en forma de hilo como si fuera un foro, otro para comprar una versión de alta calidad de la imagen siguiendo los pasos de un carro de compras como si fuera un sitio de comercio electrónico, otro para realizar búsquedas en el sitio, otro que es un libro de visitas y finalmente el modulo de administración para gestionar la aplicación.

 ¿Que tipo de vulnerabilidades se pueden encontrar?

Se pueden encontrar 15 vulnerabilidades representativas del OWASP, algunas con de acceso publico y otras con acceso restringido o que requieren autenticación para poder explotarlas.

 Algunas de las vulnerabilidades conocidas en WackoPicko:

  1. Reflected XSS.

  2. Stored XSS.

  3. SessionID vulnerability

  4. Stored SQL Injection

  5. Reflected SQL Injection

  6. Directory Traversal

  7. Multi-Step Stored XSS

  8. Forceful Browsing

  9. Command-line Injection

  10. File Inclusion

  11. Parameter Manipulation

  12. Reflected XSS Behind JavaScript

  13. Logic Flaw

  14. Reflected XSS Behind a Flash Form

  15. Weak username/password

NOTA: Cada titulo tiene un link a la pagina donde explican y muestran una prueba de concepto de cada tipo de vulnerabilidad.

Probando las vulnerabilidades…

Para esto, primero se debe montar la aplicación WackoPicko en una maquina que tenga instalado Apache, PHP y MySQL.

Ejemplo de instalación en Linux:

Se descarga la aplicación desde el repositorio de Internet

$ git clone https://github.com/adamdoupe/WackoPicko.git

Se ingresa a la carpeta y se instala la base de datos en el motor MySQL

 cd WackoPicko/
$ mysql -u root -p < current.sql

Luego se mueven los archivos a donde se publican las aplicaciones Web en Linux.

mv website/* /var/www/ $ cd /var/www/

Se ingresa a la carpeta WackoPicko y se le dan FULL permisos a la carpeta donde se cargaran las fotos de los usuarios.

chmod -R 777 upload/

Finalmente, probar desde el navegador de Internet si la instalación fue satisfactoria ingresando a la URL: http://localhost

localhost-WackoPicko

Otra opción, es que se puede utilizar la maquina virtual del proyecto OWASP Broken Web Applications (BWA) ya que contiene una variedad de aplicaciones vulnerables pre instaladas y entre ellas se encuentra WackoPicko.

Solo requiere descargar la maquina, importarla en VMware Player, iniciarla y verificar que dirección IP tomo para acceder por el navegador Web.

OWASP-BWA

Como pueden ver, hay otras aplicaciones con las que se puede jugar, por lo tanto, para mas información sobre el proyectoBWA pueden visitar: https://www.owasp.org/index.php/OWASP_Broken_Web_Applications_Project

 Probamos accediendo desde otro equipo al servidor Linux con la aplicación WackoPicko.

 AccesoRemotoWackoPicko

Ya en este punto, se podrían probar las vulnerabilidades una por una de forma manual o se le corre una solución de software escaner para ver cuales y cuantas reporta; para este caso utilice la versión de prueba de Acunetix, ya que según un paper, indica que es una de las que mejores resultados obtuvo en las pruebas de caja negra.

 Resumen de las vulnerabilidades encontradas por ACUNETIX clasificadas por severidad:

 ResultadoAcunetix-WackoPicko

Ejemplo del análisis de riesgo de una vulnerabilidad con severidad alta encontrada por Acunetix:

Tipo Vulnerabilidad: Directory-Traversal o Unauthorized File Exposure.

Descripción de la vulnerabilidad: La aplicación Web permite ver sin autorización archivos sensibles o confidenciales del sistema operativo u otros, por medio del salto de directorio pasándole parámetros GET por la URL.

Vector de ataque: Interno o externo. De acceso publico y no requiere autenticación para ser explotada.

Posibilidad de ocurrencia: Casi Seguro. Aunque no existen agentes de amenazas conocidos, existe mucha documentación y herramientas
automáticas o exploits para que un intruso explote las vulnerabilidades conocidas.

Impacto: Superior. Las vulnerabilidades encontradas afectan la confiabilidad,  disponibilidad e integridad de los activos evaluados y de la información.

NOTA: La clasificación de la posibilidad de ocurrencia y el impacto es cualitativa con base a la metodología de riesgo sugerida por la NIST en su publicación especial 800-30.

Riesgo informático: Muy Alto. Afecta la confidencialidad, integridad y disponibilidad de la información y de los activos (AppWeb y Servidor Web).

Prueba de concepto: La prueba consistió en pasar como parámetro GET la ruta /etc/passwd%00” a la variable “page” del archivo llamado “index.php” en la sesión de administración de la aplicación Web con el fin de listar el contenido archivo /etc/passwd del servidor Linux en donde está alojada la aplicación, con esto se podría posteriormente realizar una intrusión al servidor Web.

Pasos para la explotación de la vulnerabilidad:

1. Se ingresa a la página de administración de la aplicación Web.

Admin-WackoPicko

2. Se le pasa como parámetros al final de la URL el valor “/etc/passwd%00” para que liste el archivo passwd, que contiene los usuarios, contraseñas cifradas y privilegios del servidor Web en Linux.

 PoC-WackoPicko

 Conclusiones y recomendaciones:

  • Con WackoPicko, tenemos una forma practica de probar la efectividad de herramientas que escanean vulnerabilidades Web, así como la posibilidad de aprender y realizar pruebas de concepto de cada tipo de vulnerabilidad.
  • El análisis de vulnerabilidades en aplicaciones Web, es un tema complejo, sobretodo en su remediación, sin embargo, si se inicia probando aplicaciones como estas que son muy realistas y siguiendo una metodología adecuada, puede ayudar a entender mejor y reducir el nivel de riesgo en los activos de información (ej. Sitios Web).
  • Existen muchas otras vulnerabilidades conocidas, que los responsables de sitios o aplicaciones Web deberían estar preocupados por conocer y remediar, con el fin de garantizar la confidencialidad, integridad y disponibilidad de la información.
  • Se recomienda analizar y probar otras aplicaciones que contiene el proyecto OWASP Broken Web Applications (BWA) para afianzar los conocimientos en este tema y compartirlos con los demás.

By @JOGAcrack.

#UPnP: sus vulnerabilidades y recomendaciones de seguridad


¿Qué es UPnP? Acrónimo de Universal Plug and Play por sus siglas en Ingles, es un conjunto de protocolos que permiten que diferentes host de la red (routers, PCs, consolas de video juego, impresoras, cámaras IP, entre otros) descubran de forma transparente y silenciosa a otros con el fin de compartir datos, servicios o entretenimiento.

La arquitectura de UPnP está basado en cuatro protocolos, que son: SSDP (protocolo simple de descubrimiento de servicios), GENA (arquitectura genérica de notificación de acontecimientos), SOAP (protocolo simple de acceso a objetos) y formato libre XML (lenguaje de marcas extensible). Cada uno de estos protocolos es encargado de ocuparse de las partes particulares de apilado de UPnP.

UPnP está habilitado por defecto en la mayoría de sistemas operativos Windows,  Mac OS X y muchas distribuciones de Linux. Asi como en muchos dispositivos que compramos o se usan en el día a día.

¿Qué vulnerabilidades conocidas hay publicadas?

Existen varias, que afectan diferentes dispositivos, algunas de ellas son: CVE-2012-5958 CVE-2012-5959 CVE-2012-5960 CVE-2012-5961 CVE-2012-5962 CVE-2012-5963 CVE-2012-5964 CVE-2012-5965.

Vulnerabilidades UPnP
Vulnerabilidades UPnP

Según la reciente investigación de la compañía de seguridad informática Rapid7, revela que aproximadamente entre 40 y 50 millones de dispositivos en Internet se encuentran en riesgo, debido a las vulnerabilidades en UPnP.

El resumen estadístico que publicó Rapid7 en su informe, se pueden ver en la siguiente imagen:

Resumen Estadísticas de Rapid7
Resumen Estadísticas de Rapid7

¿Como detectar dispositivos con UPnP? Se pueden detectar con herramientas de software gratuitas, tales como la nueva publicada por Rapid7, llamada  ScanNow UPnP para Windows o en Linux y Mac OS X con un módulo auxiliar de Metasploit  Framework.

Buscar dispositivos con UPnP
Buscar dispositivos con UPnP en la red interna

Adicionalmente, también existe un subdominio del sitio Web de Rapid7 para verificar si el Router (u otro dispositivo expuesto) es vulnerable desde Internet, a partir de respuestas a peticiones de UPnP.

Verificar UPnP desde Internet
Verificar UPnP desde http://upnp-check.rapid7.com

¿Qué fabricantes están afectados? Existen muchos fabricantes, como los que se muestran en la siguiente imagen:

fabricantes afectados
fabricantes afectados

NOTA: Para ver la lista completa haciendo clic aquí

¿Existe alguna Prueba de Concepto?

La siguiente es una Prueba de Concepto (PoC) realizada en el Webinar de Rapid7, por su CSO, HD Moore, donde se evidencia que se puede obtener información explotando una de estas vulnerabilidades.


 

¿Qué soluciones o mitigaciones existen actualmente? Se recomienda analizar si es posible deshabilitar el protocolo en los dispositivos expuestos a Internet y en sistemas de misión crítica, como por ejemplo SCADA.

Acciones inmediatas recomendadas por Rapid7:

1. Proveedores del Servicio de Internet (ISP)

ISPs deben revisar los equipos que están proporcionando a los suscriptores o clientes para comprobar que UPnP no está expuesto en la interfaz WAN.

Si el dispositivo está afectado, una de las soluciones siguientes puede realizar:

  • Realizar una actualización de configuración que deshabilite UPnP
  • Realizar una actualización de software que elimine las capacidades desde el dispositivo.
  • Remplazar los dispositivos de los clientes con un dispositivo que pueda ser configurado de forma segura.
  • Implementar ACLs para el puerto UPD 1900 y puertos TCP específicos de los servicios que usen UPnP.

2. Empresas

Verificar que todos los dispositivos (ej. routers) no tengan UPnP habilitado hacia Internet. En caso de que se encuentre alguno, se recomienda deshabilitarlo y si no es posible, considere remplazar el dispositivo por otro modelo que permita esto.

Muchos dispositivos de la red internet pueden tener habilitado UPnP, si el dispositivo utiliza una versión de UPnP vulnerable, se debería contactar al fabricante para determinar el tiempo de la actualización. Si el servicio UPnP no se puede deshabilitar y el vendedor no tiene la actualización, sería prudente mover el equipo a un segmento de red (VLAN) aislado de la red corporativa.

3. Usuario móviles y de hogar

Asegurarse de que UPnP este deshabilitado en sus routers domésticos, dispositivos de banda ancha móvil, consola de video juegos y otros dispositivos que usen y soporten esta tecnología.

Si el dispositivo no ofrece la posibilidad de desactivar UPnP, la empresa fabricante o vendedor del dispositivo debe ser contactado para ver si hay una actualización disponible que proporciona esta capacidad. En el peor de los casos, los usuarios deberán reemplazar el equipo vulnerable con dispositivos que no soportan UPnP, o al menos los que proporcionan la opción para desactivarlo.

Fuente: SecurityFlawsUPnP.pdf

Referencias:

https://community.rapid7.com/community/infosec/blog/2013/01/29/security-flaws-in-universal-plug-and-play-unplug-dont-play

https://community.rapid7.com/docs/DOC-2150

http://isc.sans.edu/diary/Exposed+UPNP+Devices/15040

http://www.kb.cert.org/vuls/id/922681