miércoles, marzo 22, 2017

Windows 10: (Otro) Bypass (más) de UAC usando AppPaths y sdctl.exe #Windows10 #Hacking #pentesting

Muchas eran las quejas de los usuarios sobre UAC (User Account Control) cuando fue introducido por Microsoft en Windows Vista, pero lo cierto es que desde que se rebajó el nivel de seguridad en Windows 7, Windows 8, Windows 8.1 y Windows 10, son constantes las pruebas de concepto de nuevas formas de utilizar la opción de autoElevate para saltarse UAC, lo que hace que sea bastante inútil en su configuración por defecto.

Figura 1: Windows 10 (Otro) bypass (más) de UAC usando AppPaths y SDCTL.EXE

La semana pasada hablamos sobre una nueva forma de hacer bypass de UAC para Windows 7/8/8.1 en el que además se mostraba cómo encontrar aquellos binarios “potencialmente” débiles que encajen con las condiciones para hacer un bypass de UAC, por medio de la opción de autoElevate de la que se habla en la intro de este artículo.


Figura 2: PoC de laa nueva forma de saltarse UAC publicada la semana pasada

Hoy, como explica Enigma0x3 en su artículo sobre los AppPaths y la posibilidad de utilizarlos para hacer un bypass de UAC, Microsoft parece tener un interés renovado en este tipo de técnicas y va parcheando poco a poco. Quizá la aparición de una técnica para hacer bypass de UAC en Windows 7 publicada por Wikileaks en el famoso Vault7 ayuda a que, cada vez más, se tome en serio.

Figura 3: Bypass de UAC en Windows 7 publicado en Vault7

Como he mencionado en otros artículos, el proyecto UACMe proporciona una serie de métodos de bypass de UAC, algunos de los cuales no están parcheados y son aplicables en versiones como Windows 10. Hoy hablaremos de una nueva forma que ha publicado Enigma0x3 en su blog, el cual es uno de los miembros más activos en la búsqueda de este tipo de debilidades o configuraciones débiles del UAC en Windows.

Figura 4: La configuración Modo Windows Vista es segura a estos ataques

Como se ha comentado en otros artículos relacionados con el bypass, como por ejemplo el de Fileless, el de wusa.exe y CompMgmtLauncher.exe o el de Ole32.dll y .NET, la tecla siempre está en la localización de los binarios firmados por Microsoft que son elevados automáticamente, gracias a la directiva autoElevate de su manifest.


Figura 5: Bypass de UAC con Fileless

En el caso del binario sdclt.exe, éste se eleva automáticamente según se indica en el manifest. Existe una diferencia, en este caso, entre el binario en Windows 10 y en Windows 7. En el caso de Windows 10, el binario se auto-eleva, pero en el caso de Windows 7 la directiva requestedExecutionLevel en el manifest se encuentra establecida como “AsInvoker”, lo que impedirá la auto-elevación cuando se inicia desde un proceso de integridad media. Esto es un dato curioso, ya que en Windows 10 sí nos funcionará.

PoC UAC Bypass con sdctl.exe

Analizando el binario se ve como sdclt.exe utiliza una ventana de panel de control para embeberse. En otras palabras, ejecuta un fichero llamado control.exe. ¿De dónde saca la ruta de este binario? La ruta la obtiene del registro, por lo que monitorizando las acciones que se realizan en el registro de Windows se puede encontrar una operación deseada para nosotros ya que la clave:
HKCU:\Software\Microsoft\Windows\CurrentVersion\App Paths\control.exe 
... devuelve un Name Not Found. Esto quiere decir que busca la ruta de control.exe en esta ruta, pero no la encuentra, por lo que la busca en otra ubicación.

Figura 6: Name Not Found en la invocación de control.exe

Visto esto, ¿qué ocurre si nosotros escribimos un valor modificado por nosotros en esa clave del registro? Lo más probable es que podamos invocar un binario y viendo que sdclt.exe está siendo ejecutado un nivel de integridad algo ya tendremos el bypass de UAC.

Las llamadas a HKCU que genera un proceso ejecutado en un contexto de alta integridad son especialmente interesantes. Cuando un proceso elevado está interactuando con la rama HKCU de un usuario, puede fallar en cualquier instante, dando la posibilidad de que el proceso ejecute cualquier cosa, dando lugar a la ejecución en un contexto privilegiado.

Figura 7: Consiguiendo una consola con nivel de integridad alto

En el caso de sdclt.exe, éste busca la ruta de la aplicación de control.exe en la rama HKCU. Si nosotros escribimos la ruta que no se encuentra y, por ejemplo, ponemos la siguiente ruta:
“C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe” 
...en el valor de la clave, obtendríamos una Powershell ejecutándose en un contexto de integridad alta, por lo que tendríamos el bypass.

Figura 8: Script de Enigma0x3 para simplificar el proceso

Según se explica en Enigma0x3 y se puede comprobar hay que tener en cuenta que esta técnica no permite parámetros, lo cual significa que para ejecutar código arbitrario debemos situar un binario en disco, lo cual hace más fácil que un antivirus detecte este tipo de técnicas. Enigma0x3 ha colgado en su Github un script que simplifica el proceso y enseña cómo aprovecharse de esta técnica.

Figura 9: Sesión elevada tras explotación del bypass de UAC

En la  imagen superior, se puede ver como conseguimos un interfaz de comendos cmd.exe con privilegio o ejecutada en un contexto de integridad alto. Podemos escribir un fichero en C:\ que solo está permitido a este tipo de procesos. En el vídeo siguiente se puede ver la prueba de concepto funcionando completamente.

Figura 10: PoC de bypass de UAC usando AppPaths y sdctl.exe

¿Cómo remediar los bypasses de UAC? Existen diferentes formas, pero una principal es fortificar el sistema Microsoft Widndows y  establecer el nivel de UAC en “Siempre notificar”, cuando se intente ejecutar un proceso en un contexto de integridad alto que requiera los permisos de administración. De esta forma, el usuario o víctima se dará cuenta, ya que el UAC siempre notificará y ningún binario será auto-elevado. En resumen, una nueva técnica que aporta otra forma de lograr ejecutar con privilegio en un entorno Windows.

Autor: Pablo González Pérez (@pablogonzalezpe)
Escritor de los libros "Metasploit para Pentesters", "Ethical Hacking", "Got Root" y “Pentesting con Powershell”, Microsoft MVP en Seguridad y Security Researcher en ElevenPaths

martes, marzo 21, 2017

Big Data Security Tales: Apache CouchDB Relax.... o no.

Han pasado unos meses desde que escribí el último artículo dedicado a la serie de Big Data Security Tales que centré en Kibana y ElasticSearch, así que hoy es un buen día para volver a ella. En concreto, gracias a una referencia que mi amigo rootkit me ha enviado sobre los interfaces de administración de las bases de datos CouchDB, que se usan en muchos entornos web.

Figura 1: Big Data Security Tales: Apache CouchDB Relax... o no

El motor CouchDB se basa en un motor NoSQL para entornos de BigData especialmente diseñados para aplicaciones web, donde la sencillez de instalación y uso priman por encima de todo. Desde el año 2008 es un proyecto de Apache, y localizar los paneles de administración en la web es sencillo haciendo un poco de Hacking con Buscadores.

Figura 2: Buscando servidores CouchDB en Shodan

Como se puede ver, buscando en Shodan por su Well-Known Port rápidamente salen casi 4.000 servidores en los que está desplegado dicho motor de CouchDB, y, como se puede ver en algunos de los resultados, es posible acceder a los nombres de las bases de datos que hay en el catálogo porque no están fortificados la mayoría.

Figura 3: Buscando servidores CouchDB en Google con el Truco de la Barra

En cualquier instalación en la que el interfaz web de administración de CouchDB esté abierto a Internet, se puede acceder a la lista de las bases de datos entrando en el directorio /_utils/, tal y como se puede ver en la imagen siguiente.

Figura 4: Cientos de bases de datos en un servidor CouchDB

A partir de ese punto, lo único que debería realizar un atacante es comprobar a qué puede y a que no puede acceder, simplemente navegando por las diferentes bases de datos y explorando los documentos almacenados en cada una de las bases de datos creadas.

Figura 5: Documentos en formato clave-valor en bases de datos NoSQL sobre CouchDB

Por supuesto, lo que se puede encontrar, teniendo en cuenta que está especialmente centrado en proyectos web, está relacionado desde entornos e-commerce hasta aplicaciones web de gestión masiva de datos, con mucha información, y por supuesto con datos de las cuentas de usuarios de las distintas aplicaciones soportadas.

Figura 6: Datos de cuentas de usuarios en bases de datos CouchDB

El número de sitios que, a día de hoy, está abierto al publico en las instalaciones de CouchDB es muy alto, así que si estás haciendo uso de uno de estos motores en tus proyectos web, más vale que revises qué partes están abiertas para cualquier usuario de Internet, para evitar sorpresas.

Figura 7: Claves en texto plano almacenadas en bases de datos CouchDB...relax

Aprovecho también para dejaros la lista completa de artículos dedicados a la serie de Big Data Security Tales, por si alguno de ellos te pudiera servir de utilidad con el objetivo de fortificar tus entornos de Big Data:
- Big Data Security Tales: ¡Vigila que tu MongoDB no le de tus datos a cualquiera! (Level 100)
- Big Data Security Tales: Cómo funcionan las MongoDB Injection
- Big Data Security Tales: MongoDB y Cassandra (Level 101)

- Big Data Security Tales: Apache Hadoop expuesto por no configurar HUE (Level 102)
- Big Data Security Tales: Django en HUE en modo DEBUG y con Directory Listing (Level 103)
- Big Data Security Tales: Las Interfaces de acceso al HDFS
- Big Data Security Tales: Apache Amabari Default Admin
- Big Data Security Tales: WSO2 Carbon y la ayuda para el Login
- Big Data Security Tales: Los Known-Bugs en WSO2 Carbon Server
- Big Data Security Tales: Kibana & ElasticSearch objetivos del ransomware
- Big Data Security Tales: Apache CouchDB Relax... o no
- Big Data Security Tales: Riak NoSQL Database
Saludos Malignos!

Entrada destacada

Hacking IA: Jailbreak, Prompt Injection, Hallucinations & Unalignment. Nuestro nuevo libro en 0xWord

Pocas veces me ha hecho tanta ilusión que saliera un nuevo libro en 0xWord como con este libro de " Hacking IA: Jailbreak, Prompt Inje...

Entradas populares