Los componentes ActiveX son objetos basados en COM y OLE que sirven para distribuir pequeñas aplicaciones por Internet mediante navegadores web (concretamente Internet Explorer). Cada una de estas aplicaciones son identificadas inequívocamente mediante un tipo de identificador "GUID" denominado "CLSID" (CLaSs IDentifier), que es mapeado opcionalmente a un nombre inteligible denominado "ProgID".
Por ejemplo, el CLSID "{8FEFF364-6A5F-4966-A917-A3AC28411659}", corresponde al ProgID "SOPOCX.SopCoreCtrl.1" y representa el ActiveX que muestra un visor multimedia de una red de televisión P2P llamado SopCast.
Para comprender la seguridad de los controles ActiveX es necesario entender el modelo en el que son cargados en IE sin solicitar permiso al usuario, como ocurre en la siguiente captura.
Los Kill-Bit son una entrada en el registro, que referencia el BIT 11, que marca un CLSID como no ejecutable dentro del navegador u otros entornos programables. Los killbits son liberados en actualizaciones con el objetivo de bloquear controles ActiveX de los que se conocen vulnerabilidades.
x86 IE / x86 OS: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\ActiveX Compatibility\CLSID del control ActiveX
x64 IE / x64 OS: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\ActiveX Compatibility\CLSID del control ActiveX
x86 IE / x64 OS: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\ActiveX Compatibility\CLSID del control ActiveX
Para consultar de forma rápida estas claves, existen herramientas que simplifican la tarea.
AxBan de Errata Security, permite seleccionar a que ActiveX marcar el KillBit.
AxBan de Errata Security, permite seleccionar a que ActiveX marcar el KillBit.
ActiveX Compatibility Manager y ActiveXHelper, de Nirsoft, muestran información de los controles instalados en el sistema, también permite activarlos o desactivarlos. Ambos permiten ser ejecutados por línea de comandos.
- Si está activo el KillBit, no se carga el control.
- En caso de IE7, el ActiveX tiene que tener una firma digital correcta.
- Se comprueba si el control tiene activo el interfaz IObjectSafety:
- Si existe, se solicita "Safe for Initialization with data" y "Safe for Scripting"
- Si no existe, se comprueban la existencia de estas mismas propiedades mediante los valores "{7DD95802-9882-11CF-9FA9-00AA006C42C4}" y "{7DD95801-9882-11CF-9FA9-00AA006C42C4}" en el registro.
- Si el control no implementa IObjectSafety ni las propiedades en el registro, el ActiveX no es cargado
- Si implementa "Safe For Initialization", se permitirá su carga y la obtención de parámetros mediante el atributo data y param de las etiquetas correspondientes del html.
- Finalmente, el control podrá ser manipulado mediante javascripts u otros scripts si implementa o no "Safe for Scripting".
Una vez se instala el componente que se desea auditar, se busca los métodos que exporta así como las propiedades que mantiene de seguridad. Esto se puede realizar de forma sencilla mediante dos herramientas.
OLE/COM Object Viewer, de Microsoft, permite seleccionar de toda la lista de controles el que queremos examinar y muestra sus interfaces, métodos y propiedades, resalta aquellos que no son del sistema y permite filtrar por los que tienen una determinada configuración como Safe for Scripting.
Es posible obtener más información de un interfaz pulsando con el botón derecho y seleccionando "View Typeinfo...", se muestra la siguiente ventana con el detalle de las propiedades y métodos de "IDispatch".
COMRaider de iDefense, pese a que no es su objetivo principal, permite obtener información detallada: ProgID, localización de la librería, CLSID, etcétera.
Y obtener las propiedades y métodos.
Otras herramientas: ActiveX Manager, ActiveXplorer o TypeLib Browser
Investigando la función "SetExternalPlayer", en la documentación del WebPlayer de Sopcast no deja muy claro su uso. Pero la lógica indica que seguramente sirva para configurar un reproductor multimedia distinto al propio de la compañía SopCast...
... Después de hacer varias pruebas, se puede comprobar que el ActiveX no comprueba el valor de entrada de este campo y ejecuta todo aquello que se le introduzca, sea un reproductor multimedia o cualquier otro comando.
Esta vulnerabilidad fue descubierta en Febrero del 2009 y tres meses después no se ha solucionado. Para explotarla es tan sencillo como utilizar el siguiente HTML:
... Después de hacer varias pruebas, se puede comprobar que el ActiveX no comprueba el valor de entrada de este campo y ejecuta todo aquello que se le introduzca, sea un reproductor multimedia o cualquier otro comando.
Esta vulnerabilidad fue descubierta en Febrero del 2009 y tres meses después no se ha solucionado. Para explotarla es tan sencillo como utilizar el siguiente HTML:
2.- Autodesk IDrop ActiveX Control 'IDrop.ocx' Multiple Heap Memory Corruption Vulnerabilities
Para instalar el ActiveX se puede descargar desde: http://www.autodesk.com/prods/idrop/download/idrop.cab, descomprimir el fichero, y ejecutar en la carpeta vía línea de comandos:
Repitiendo el proceso anterior, se obtiene información de OLEViewer y COMRaider:
C:\idrop>regsvr32 idrop_sw.ocx
Repitiendo el proceso anterior, se obtiene información de OLEViewer y COMRaider:
En este caso las propiedades son algo más complicadas y analizarlas manualmente es una tarea lenta y compleja.
Para este tipo de situaciones se utilizan aplicaciones que permitan automatizar el proceso, entre ellas destacan el propio COMRaider, AXman de HDMoore o Dranzer, del CERT-US.
Para este tipo de situaciones se utilizan aplicaciones que permitan automatizar el proceso, entre ellas destacan el propio COMRaider, AXman de HDMoore o Dranzer, del CERT-US.
Fuzzering con COMRaider.
Empezando por COMRaider, se presiona con el botón derecho sobre el miembro a probar y seleccionando "Fuzz member". Esto generará una lista de archivos a chequear. Otra opción es hacer la prueba sobre toda la librería, lo que llevaría bastante más tiempo. Next->Click();
La siguiente pantalla, tras pulsar sobre "Begin Fuzzing", comenzará las pruebas,. Si hay suerte los contadores tras "Exceptions", "Windows" o "ApiTriggers", serán mayores de 0, en ese caso, habrá que analizar manualmente que está ocurriendo, si realmente es una vulnerabilidad y si se puede explotar. También puede generar cualquier tipo de excepción no controlada sin que tenga mayor impacto.
En este caso no hubo suerte, aunque COMRaider puede ser editado para llevar a cabo más y distintas pruebas, sacándole mucho más partido.
Fuzzering con Dranzer.
Dranzer es la herramienta más joven de las tres que se analizan, se liberó recientemente aunque ha permanecido bastante tiempo en el laboratorio del US-CERT. Se usa mediante línea de comandos.
Las opciones son sencillas:Execution mode not specified use -g,-k,-l,-b, or -pEl siguiente ejemplo muestra información de los CLSID que contiene el archivo "idrop.txt", en este caso, únicamente el del IDrop de Autodesk.
Usage: Dranzer
Options:
-o- Output Filename
-i- Use input file CLSID list
-d- Use don't test CLSID List
-g - Generate base COM list
-k - Generate Kill Bit COM list
-l - Generate Interface Listings
-b - Load In Browser (IE)
-t - Test Interfaces Properties and Methods
-p - Test PARAMS (PropertyBag) in Internet Explorer
-s - Test PARAMS (Binary Scan) in Internet Explorer
-n - Print COM object information
-v - Print out version information
Para automatizar las pruebas Dranzer dispone de dos opciones, PropertyBag (-p) y BinaryScan (-s). Al ejecutarlo con ellas (no simultáneamente), irá abriendo y cerrando el navegador comprobando su comportamiento. Desafortunadamente estas pruebas tampoco tienen efecto.
Es interesante el uso del parámetro -g para generar una lista de COMs que posteriormente podrá ser excluida del análisis con el parámetro -d. Evitando analizar controles que se conocen no vulnerables una y otra vez.
Fuzzering con AXMan.
El fuzzer de HDMoore fue presentado en la BlackHat, se usa mediante línea de comandos y un interfaz web. Es posiblemente el más sencillo de usar. Requiere tener instalado algún tipo de servidor web, como por ejemplo xampp
Lo primero es generar una base de datos con los controles instalados en el sistema, para eso una vez descargado se procede a ejecutar el binario con un directorio donde se almacenará la configuración, en este caso "conf"
C:\axman-1.0.0\bin>axman conf
La ejecución de este comando, generará varios errores y ventanas que se pueden cerrar sin problemas. Una vez finalice, es recomendable reiniciar el equipo que se encontrará en un estado bastante inestable.
El nuevo directorio "conf", ha de ser copiado dentro del subdirectorio "html", y este directorio servido por HTTP.
El nuevo directorio "conf", ha de ser copiado dentro del subdirectorio "html", y este directorio servido por HTTP.
Se accede con el propio IE en local (http://localhost/). La aplicación permite analizar un rango de CLSIDs o bien uno individual. Se introduce el identificador del ActiveX de Autodesk y se pulsa sobre "Single". Si se produce algún error el navegador mostrará en la barra de estado la última prueba realizada, que podrá dar pistas de donde se encuentra el fallo.
Con esta herramienta, el navegador dará un error. El exploit es algo más complejo: un buffer overflow tradicional para el que hará falta algo de debug si queremos desarrollar el exploit. El resultado final del exploit se puede consultar aquí: http://www.milw0rm.com/exploits/8560
Otras herramientas de Fuzzering: COMBust, AXFuzz
Referencias:Otras herramientas de Fuzzering: COMBust, AXFuzz
Designing Secure ActiveX Controls
ActiveX Security: Improvements and Best Practices
Preventing ActiveX Exploits with Cisco Firewall Application Layer Protocol Inspection
Developing Safer ActiveX Controls Using the Sitelock Template
ActiveX - Active Exploitation ActiveX Security: Improvements and Best Practices
Preventing ActiveX Exploits with Cisco Firewall Application Layer Protocol Inspection
Developing Safer ActiveX Controls Using the Sitelock Template
Fuente: www.securitybydefault.com - Alejandro Ramos
No hay comentarios:
Publicar un comentario