Páginas

25 junio, 2016

Permitir ejecuciones remotas con cualquier usuario al intentar acceder al recurso compartido C$ (LocalAccountTokenFilterPolicy)

En Windows existen ciertos recursos compartidos establecidos por defecto con intenciones administrativas. Entre ellos está el conocido C$ (C dolar, el símbolo "$" indica que se trata de un recurso que el sistema mantiene "oculto"), que seguramente muchos usaríamos para poder conectarnos al equipo remoto de una red de forma subyacente al usuario de ese equipo, básicamente tener acceso a su disco del sistema C: (letra de unidad asignada por defecto en sistemas Windows).

Podemos ver en la consola de Microsoft (fsmgmt.msc) de "Carpetas comparitdas", los recursos que por defecto son compartidos, donde veremos el conocido c$ (C dolar) entre otros.

Figura 1: Consola Miscroft fsmgmt.msc "Carpetas compartidas".

Para que esta conexión sea posible, a parte de tener las debidas configuraciones de red bien configuradas como veremos más adelante. Hablando en este caso de una "red privada o doméstica" es necesario una de las dos siguientes posibilidades:
  • Conocer el usuario y contraseña con privilegios administrativos de la máquina remota.
  • Crear un usuario y contraseña igual que el usuario con el que intentamos conectarnos al equipo remoto.
En este caso nos quedaremos con la opción más cómoda que sería la de añadir el usuario al equipo remoto.

En el caso de formar parte de una red de dominio, esto se debería administrar con grupos en el propio controlador de dominio (DC). En este caso podríamos crear un grupo en el que incluiríamos a los usuarios administrativos y ese grupo incluirlo en grupo de administradores de forma manual o por algún script mediante GPOs en los equipos de la red de Dominio.

Escenario de ejemplo:
  • Equipo: PLUTON | Usuario activo: maria
  • Equipo: JUPITER | Usuario activo: juan
En el siguiente ejemplo, de una red privada, el usuario activo en el equipo local es "juan" (equipo: Jupiter), pero el usuario remoto con el que queremos acceder desde el cliente es "maria" (del equipo: Pluton, pero que se creará también el equipo Jupiter). Por lo que en el equipo remoto crearíamos una cuenta de usuario con la misma contraseña que la del equipo donde queremos acceder y lo agregamos al grupo de Administradores, de modo que haya una coherencia entre este usuario en ambas máquinas.

Figura 2: Usuarios administradores del equipo remoto.

Hasta este punto todo correcto. Pero cuando intentamos acceder con el usuario y contraseña del mismo que el del equipo remoto aunque exista dicha coherencia de credenciales igualmente, por seguridad, nos solicita usuario y contraseña a través del UAC. Por lo que queremos es evitar o eludir el UAC en este caso.

Escribiendo en una ventana de ejecución el nombre o dirección IP del equipo remoto seguido del recurso compartido C$: \\equipo_remoto\c$.

Figura 3: Ejecutando el recurso compartido C$ hacía un equipo remoto de la misma red.

En sistemas Windows XP dentro de una red era común si teníamos los suficientes privilegios en un usuario frente a un equipo remoto el poder acceder a su disco C: (letra de unidad asignada por defecto a un sistema Windows) ya que este por defecto se compartía.

Esto a partir de Windows Vista en adelante con la incorporación del sistema UAC (User Account Control) nos solicita, por seguridad, que nos autentiquemos con un el usuario privilegiado de la máquina remota y por lo tanto confirmemos las credenciales del usuario con el que intentamos acceder a la máquina remota. En siguiente caso el usuario maria del equipo Pluton quiere conectarse al equipo Jupiter.

Figura 4: Autenticación de login con UAC para el acceso al recurso compartido C$.

Para poder eludir el UAC, solamente en este caso, podremos hacerlo fácilmente añadiendo un valor con un dato específico en una clave concreta del registro de Windows. Pero antes comentaré algunas configuraciones previas a tener en cuenta para todos los equipos de red o en los que queramos tener este tipo de acceso.

Antes de establecer la clave de registro oportuna, revisamos la configuración de la red privada para comprobar si está todo bien establecido, por defecto cuando nos unimos a un grupo de trabajo de una red privada o de hogar esto se autoconfigura correctamente.

En el caso de usar una red privada, formar parte de un grupo de trabajo o grupo del hogar, nos centraremos en la configuración de uso compartido avanzado de este. En el apartado privado (que sería el que correspondería en este caso) comprobaremos que esté activado la "detección de redes, compartir archivos e impresoras, y que Windows administre las conexiones del grupo del hogar".

Por defecto, cuando configuramos un equipo para que este se una a un grupo del hogar esta configuración debería estar ya preestablecida del siguiente modo.

Figura 5: Configuración del uso compartido de redes (entorno privado).

En un segundo bloque vemos la configuración de "Todas las redes" las cuales son otro tipo de características en la que digamos que el uso compartido no afecta para "perfiles públicos o invitados".

Deberemos tener activa las tres opciones disponibles, o simplemente las dos últimas opciones "Usar un cifrado de 128 bits y activar el uso compartido por contraseña", el cual en este caso no tendrá relevancia si lo tenemos activado o desactivado, ya que no se trataría de recursos compartidos de forma intencionada sino de los recursos compartidos por defecto del sistema, esta característica no está disponible en equipos que se encuentren en un dominio.

En la primera opción "Activar el uso compartido para todos los usuarios a carpetas públicas" se refiere aquellas carpetas del perfil de usuario que por defecto Windows comparte, pero que no tienen una gran importancia si no guardamos nada en ellas.

Figura 6: Configuración del uso compartido de redes (todas las redes).

Al activar las características anteriores, sobre todo la que respeta al uso compartido de archivos e impresoras, esta por defecto añade unas determinas reglas de entrada en el WFAS (Windows Firewall Advanced Security) referentes al protocolo SMB (Service Mensage Block), las cuales se deberían aplicar en este caso solo al perfil privado.

Figura 7: Reglas de entrada del Firewall avanzado para SMB "Compartir archivos e impresoras".

Por último comprobaremos un par de servicios. El servicio "Examinador de equipos" (Browser) realiza repetidas comprobaciones de actualización para conocer a los equipos vecinos de una misma red, de modo que así nuestro equipo estará actualizando la lista de equipos latentes dentro de la red.

Figura 8: Servicio "Examinador de equipos de red" (Browser).

El servicio "Servidor" (LanmanServer) nos proporcionará compatibilidad para todos aquellos equipos que quieran acceder a este, ofreciendo así el servicio necesario para acceder a sus recursos compartidos.

Figura 9: Servicio "Servidor" (LanmanServer)

Finalmente y el motivo por lo que escribo este artículo, sería añadir el valor necesario el registro de Windows para poder bypassear la autenticación UAC. La autenticación se hace pero se hace forma subyacente, esto simplemente nos evita autenticarnos con usuario y contraseña de forma manual.

En el registro de Windows del equipo remoto que queremos conectarnos (Jupiter), buscamos la clave:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
Añadimos un nuevo valor REG_DWORD de 32 bits (aunque el sistema sea de x64 el valor tendría que ser igualmente de 32 bits). El nombre de este valor será: LocalAccountTokenFilterPolicy y la información de dato la establecemos a "1".

Figura 10: "LocalAccountTokenFilterPolicy" para evitar la autenticación manual en acceso a C$.

Ahora simplemente cerramos el registro y probamos, si aún así no se actualizasen los cambios, cerraríamos sesión o si fuese necesario (que en las pruebas que he realizado no ha sido necesario) reiniciaríamos el equipo.

Veremos que ahora al intentar acceder al recurso compartido C$ del equipo remoto al que hemos añadido este valor no nos pedirá de forma visible la autenticación de un usuario con privilegios para acceder a el y a ese recurso.

Se puede ver en una fsmgmt.msc la existencia de una sesión remota activa del usuario maria procediente del equipo remoto Pluton, la cual solo usó el usuario usuario local creado en el grupo administradores del equipo Jupiter (equipo al que remoto al que se conectó maria) para autenticarse, aunque como se ve en la captura de pantalla la sesión es con referencia al equipo remoto que accedió. (usuario maria del equipo Pluton accedió al equipo > Jupiter) . Visualizando las sesiones activas en la consola fsmgmt.msc.

Figura 11: Conexión remota activa, existencia de una sesión de usuario conectada al equipo.

Esto está definido por Microsoft (KB951016): https://support.microsoft.com/es-es/kb/951016

Saludos!

14 marzo, 2016

Shadow Explorer: Recuperar información a través de instantáneas

Shadow Explorer es una herramienta gratuita en la cual podemos recuperar información a través de instantáneas creadas en el tiempo gracias a la habilitación de protección del sistema de Windows.

Nos permitirá seleccionar determinadas fechas (en las que se establecieron las instantáneas) recuperar información de ficheros/directorios en puntos del sistema. Simplemente seleccionamos la unidad, la fecha y el buscamos el directorio a examinar para recuperar dichos datos y con el botón derecho los restauraremos en su ubicación original donde habían sido borrados.

Figura 1: Instantáneas cronológicas de Shadow Explorer en Windows

Esta aplicación hace esta tarea de forma sencilla, pero la característica de mostrarnos estas instantáneas es debido a la "Protección del sistema" característica de Windows 7 en adelante la cual nos permite recuperar versiones anteriores de archivos en las cual previamente de forma programa Windows fue haciendo sus "shadow copy" para versiones anteriores en archivos.

En propiedades del sistema > Protección del sistema > Configurar. Habilitamos y personalizamos el tamaño de uso de esta característica.

Esta servicio es denomicando por Microsoft como: Volume Shadow Copy Service (VSS).

Figura 2: Protección del sistema para versiones anteriores.

Como ejemplo vemos que en las propiedades de esta carpeta de en la pestaña de "Versiones anteriores" están las shadow copys que se fueron haciendo a lo largo del tiempo desde su creación hasta la actualidad.

Aunque en la siguiente captura (Windows 7) nos describe que las versiones anteriores provienen o bien de Copias de seguridad o bien de Puntos de restauración.

Figura 3: Versiones anteriores en distintas fechas de un directorio.

Realmente en Windows 10 nos comentan en la misma descripción que las versiones anteriores de archivos provienen de estas dos anteriores y a mayores del historial de archivos ese sería el afectado en esta característica de Windows.

Ya que no es necesario tener habilitado o creado puntos de restauración o copias de seguridad para tener este característica habilitada (Volume Shadow Copy Service - VSS).

Figura 4: Configuración de "Historial de archivos de Windows" (Shadow Copy).

Saludos!

08 febrero, 2016

Steghide: Ocultar información dentro de otra

Steghide es una herramienta para esteganografía la cual que nos permitirá ocultar determinada información dentro de otra.

Es compatible con sistemas Windows y Linux. Por lo que la descargaremos y simplemente a través de la respectiva consola la ejecutaremos.

Cuenta con un manual detallado para cada uno de sus modificadores.

Para incrustar información dentro de otra, de un texto a una imagen por ejemplo.
steghide embed -cf {PATH_IMAGEN} -ef {PATH_fichTexto}
Nos pedirá una contraseña para proteger el fichero raíz.

Para extraer el fichero de texto que mantiene nuestra información "oculta", lo extraemos nos pedirá la contraseña establecida para desbloquear el fichero raíz.
steghide --extract -sf {PATH_IMAGEN}
Figura 1: Ocultando fichero de texto en una imagen .jpg con Steghide.

Saludos!

19 enero, 2016

Hot Potato: Elevación de privilegios en Windows

El equipo de Foxglovesecurity.com hace pocos días ha publicado en su blog un exploit el cual desde un usuario de nivel bajo puede elevar sus privilegios dentro de un sistema hasta el nivel más alto. Haciendo uso de una pequeña herramientas de comandos que estos denominaron como "Hot Potato".

Esto es posible a unos fallos de diseño de Windows que no están bien gestionados en el que se realizan tres ataques en uno. NBNS Spoofing (NetBios sobre TCP/IP o NetBios Name Service), WPAP (Web Proxy Autodiscovery Protocol) y HTTP > SMB NTLM Relay (autenticación NTLM de HTTP a SMB). Siendo posible que un usuario sin privilegios consiga una escalada de privilegios y obtenga el nivel de acceso "NT AUTHORITY\SYSTEM".

Como ejemplo en una máquina virtual con Windows 7 PRO de 32bits el cual tiene las configuraciones por defecto. Haciendo uso de Potato intentaré escalar a un usuario raso y hacerlo formar parte del grupo Administradores del sistema en un Windows 7.

Nos descargamos a local Potato abrimos una consola de comandos y comprobamos la dirección IP local y el usuario local de esa instancia el cual no tiene privilegios y es el usuario el cual queremos elevar sus permisos.
potato.exe -ip <local_ip> -disable_exhaust true -cmd "C:\\Windows\\System32\\cmd.exe /K net localgroups administradores <local_user> /add"
Figura 1: Uso de Hot Potato en Windows 7.

El uso de Hot Potato en Windows 10 o Windows Server los parámetros serían distintos, en la web de los desarrolladores hay más información para estos casos.

¿Mitigación a estos tres ataques?

Lo que podemos hacer para solucionar esto sería revisar el tráfico NBNS de nuestra red, para WPAD detener el servicio de detección automática de proxy web WinHTTP, y para NTLM forzar la autenticación de Kerberos y NTLMv2, forzar la política para firmar siempre comunicaciones SMB.

15 enero, 2016

DeepSound: Ocultar información dentro de ficheros de audio

La práctica o técnica de ocultación de información de mensajes u objetos dentro de otros se conoce como Esteganografía. En este caso orientado al mundo te la tecnología de la información, existen diversos tipos de esteganografía, aunque fundamentalmente en este blog hablaré en la mayoría de los casos de esteganografía por técnicas de software.

Para aquellos que hayan visto la serie Mr. Robot, el protagonista Elliot hace uso de una herramienta para ocultar información de ficheros de imagen en ficheros de audios que posteriormente graba en CD, esta aplicación solo funciona bajo sistemas Windows, por en la escena de la serie que vemos esto Elliot arranca una máquina virtual de Windows bajo su Linux.

DeepSound es una herramienta que solo funciona bajo sistemas Windows y que nos permite ocultar información dentro de ficheros de audio y también convertir ficheros de audio a otros formatos.

Lo bueno de esto, es que conservamos el contenido original del fichero de audio, es decir, que no altermos el contenido de reproducción del mismo así quien abra este fichero de audio lo reproducirá correctamente sin saber que hay información oculta "dentro de el". Lo único que podemos notar es un ligero aumento de tamaño del fichero de audio lo cual en principio no llevará a mucha sospecha.

Será necesario tener instalado en nuestro equipo el paquete Microsoft .NET Framework 4.0.

Es sencilla de utilizar, simplemente seleccionamos los ficheros de audio en los que queremos ocultar otros ficheros de información y marcamos el tipo de comprensión (low, normal, high).

Figura 1: Añadiendo ficheros a ocultar dentro de un fichero de audio en DeepSound.

Una vez tenemos los ficheros que queremos ocultar encapsulados en los ficheros de audio correspondientes los encodeamos para unificarlo en un mismo fichero con formato de audio que escojamos, en mi caso hice referencia a dos fichero .pdf. Finalmente hacemos referencia a un directorio y tendremos la opción de establecer una password con un cifrado AES de 256bits.

Figura 2: Encapsulando ficheros dentro de un fichero de audio .wav con password AES-256.

Para poder extraer y ver el contenido encapsulado en los ficheros de audio, abrimos el fichero de audio que queramos extraer, introducimos la password (en caso de a ver establecido alguna) y lo extraemos, si nos vamos al directorio de salida por defecto establecido, veremos los fichero .pdf que se habían agregado al fichero .wav.

Figura 3: Extracción de información contenida en el fichero de audio original.

Un ejemplo en el que considero que tendríamos una ofuscación de información muy robusta, podría ser de la siguiente manera:

Comprimir un conjunto de ficheros, a este le establecemos una contraseña robusta a través de 7-zip y a su vez este fichero comprimido lo dividimos en varias partes (para que sea de un tamaño más ligero), cada parte separada de compresión las iremos encapsulando en distintos ficheros de audio con otro password a mayores establecida en Deepsound y a su vez después convertir también desde Deepsound un formato de fichero .wav a otro formato.

Descargar DeepSound

Saludos!

Entradas Populares