25 junio, 2016

Bypass UAC al acceder al recurso compartido C$ de Windows

En Windows existen ciertos recursos compartidos establecidos por defecto con intenciones administrativas. Entre ellos está el conocido C$ (C dolar), 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 haiga una coherencia.

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 2: 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 3: Autenticación de login con UAC para el acceso al recurso compartido C$.

Para poder eludir el UAC, solamente en este caso, podremos hacerlo facilmente 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 todas 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 correctamete.

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 4: 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 disponobles, 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 que Windows comparte, pero que no tienen gran relevacia si no guardamos nada en ellas.

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

Al activar las características anteriores, sobretodo 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 6: 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 7: 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 8: 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 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 9: Creando valor "LocalAccountTokenFilterPolicy" para evitar autenticación manual (bypass UAC) 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 como 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 de Pluton accedió al equipo > Jupiter) .

Figura 10: Evidencia de 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!

13 junio, 2016

Virtualbox error: "Nonexistent host networking interface"

Si usamos máquinas virtuales de Virtualbox desde un dispositivo externo USB, al usar o crear VMs (Virtual Machine) este mapea las VMs desde el dispositivo externo, este mapeo se realiza con la ruta que obtiene haciendo referencia a la la letra de unidad que Windows asigna al origen donde se encuentran las VMs.
Este path puede variar si conectamos el dispositivo USB (en el que tenemos instaladas las VMs) en distintos equipos, de modo que por ejemplo, en el Equipo_A cargue las VMs desde la letra asignada "F:\[PATH_VM]" y el Equipo_B asigna "H:\[PATH_VM]". Dando como consecuencia un error al fallo al abrir la VM seleccionada, fallo con referencia a la tarjeta de red.

El error que se visualiza en virtualbox es algo como: "Fallo al abrir una sesión para la máquina virtual" y en los detalles "Nonexistent host networking interface" (VERR_INTERNAL_ERROR).

Figura 1: Virtualbox "Nonexistent host networking interface" (VERR_INTERNAL_ERROR).

Para solucionar este error simplemente debemos deshabilitar los controladores USB en la configuración de la VM en cuestión dentro de Virtualbox.
En la configuración de la VM > apartado USB > Desmarcar el checkbox "Habilitar controlador USB".

Figura 2: Deshabilitar controlador USB en Virtualbox.

De este modo, al volver intentar arrancar la VM ya no mostrará dicho error y esta arrancará sin problemas.

Saludos!

11 junio, 2016

Virtualbox error: "cannot register the hard disk"

Si trabajamos con VirtualBox en el que tenemos una VM (Virtual Machine) existente a la que se encuentra vinculada un disco VDI (Virtualbox Disk Image) y esta por las razones que fuesen tendríamos que "restablecerla", haciendo una copia preveia del vdi y después eliminarla todo tipo de configuración por completo para volver crear otra instancia de máquina virtual y agregar el disco vdi original de la anterior VM borrada, el problema es que cuando intentamos hacer esto, se nos muestra un error que nos dice que el UUID (Universally Unique IDentifier) ya está asociado a otra máquina, eso es por que Virtualbox alamacena estos datos de referencia.
No siempre tiene que ser por esta causa, ya que esto también se produce con otro tipos de "movmientos" que hagamos entre si movemos o copiamos dos vdi dentro del mismo medio (unidad).

En cualquier caso, virtualbox nos muestra el siguiente mensaje de error: "Fallo al abrir el archivo de imagen de disco..." y en los detalles muestra "cannot register the hard disk...".

Figura 1: Error cannot register the hard disk en VirtualBox.

Lo que habría que hacer para solucionarlo sería establecer un nuevo UUID para el vdi que queremos importar en la nueva máquina virtual, de forma que quede importado correctamente.

Podremos realizarlo primeramente intentando liberar el UUID desde el "Administrador de medios virtuales" de Virtualbox. Seleccionaríamos el vdi en cuestión y lo liberaríamos de la VM asociada. Después intetamos importar de nuevo el vdi en la nueva VM.

Figura 2: Administrador de medios virtuales de VirtualBox (discos .vdi).

En el caso de que lo anterior no resulte efectivo podremos usar la utilidad de comandos VBoxManage (fichero que se encuentra en el path donde tegamos instalado Virtualbox), en la que entonces podremos establecer un nuevo UUID.

Para ver la información de un vdi:
VBoxManage showhdinfo "[PATH_VDI]"
Para establecer un nuevo UUID de un vdi:
VBoxManage sethduuid "[PATH_VDI]"
Figura 3: Establecer un nuevo UUID para el hd desde el VBoxManage desde consola.

En la captura anterior (como ejemplo) vemos como se estableció un nuevo UUID para el disco Win8.1_32IAWEB.vdi y en el showhdinfo vemos como el UUID del vdi es el nuevo establecido, sin embargo existe otro UUID el cual está asociado a la nueva VM "win8iaweb3".

Saludos

20 abril, 2016

Enmascarar una website en un IFRAME (fullscreen)

Para poder enmascarar o incrustar un website completo dentro de un iframe HTML y que esta ocupe toda la pantalla (fullscreen) del navegador, sin barras de scroll ni otras limitaciones. De modo que al visualizarla aparezca la propia página cubriendo todo el espacio del navegador y que a simple viste nose vea que es un iframe (al menos que se mire el código fuente).

Simplemente nos bastaría con aplicar este CSS y HTML donde "URL_WEBSITE" sería la URL completa del sitio web.
<html>
<head>
<style type="text/css">
html, body, div, iframe { margin:0; padding:0; height:100%; }
iframe { display:block; width:100%;  border:none;}
</style>
</head>
<body>
<center><iframe src="URL_WEBSITE"></iframe></center>
</body>
</html>
Para que nos puede ser útil?

Una de las necesidades de encapsular todo un sitio web en un iframe, sería la de mostrar un ese website con un nombre de dominio (DNS) "X" para que apunte a otro dominio "Z" (siendo el mismo website), basicamente como una redirección interna, de modo que al acceder a "X" esta apunte realmente a "Z", mostrándonos así "Z" en "X".

En el caso de tener un website el cual su DNS sea: "www.midominio.nombreServicio.com" y queramos redirigirlo a un dominio más personalizado tipo "www.midonio.com", puede darse el caso de que el servicio que estemos usando no nos permita redirigir a un nuevo dominio de nombres, por lo que la opción sería alquilar un hosting gratuito en el cual nuestro nombre de dominio (previamente adquirido/comprado) podamos establecerlo en dicho hosting y con un fichero HTML simplemente insertar un iframe que redireccione al original nombre de dominio del servicio en cuestión.

Sería como emascarar nuestro website dentro de un iframe para que el usuario final acceda a "midominio.com" y no a "midominio.servicio.com" que es realmente donde está redirigido.

Saludos!
Entradas Relacionadas