OpenVPN GUI guardó mi contraseña de Windows: dónde está
Marque «recordarme» y el inicio de sesión acaba en el registro del usuario, en un archivo de perfil o en un script, y cada uno necesita su propia limpieza cuando se pierde un portátil.
El diálogo de conexión ofrece una casilla para recordar el inicio de sesión, y al marcarla los datos de la cuenta salen de la cabeza del usuario y pasan a la máquina. La interfaz nunca dice dónde. En Windows, los candidatos son el área del registro del usuario actual, un archivo de perfil que ya lleva el inicio de sesión y lo que haga un script de automatización. Cada ubicación tiene un lector distinto, un modo de fallo distinto y una limpieza distinta, así que la pregunta útil es qué proceso puede recuperar el secreto y durante cuánto tiempo. Siga la casilla desde el diálogo hacia fuera y luego decida qué expone en realidad un portátil perdido.
Empiece por la casilla del diálogo de conexión
Los valores recordados se guardan por perfil y por cuenta de Windows, en el hive del usuario y no en un almacén compartido de la máquina. Por eso un segundo usuario en el mismo ordenador no ve ningún inicio de sesión guardado, y por eso reinstalar el cliente no borra necesariamente la entrada almacenada.
El archivo de perfil conserva el servidor, el puerto y la configuración, pero ningún secreto, y por eso la gente inspecciona primero el artefacto equivocado. Borrar el perfil elimina por tanto la conexión y deja la credencial atrás. Esa es la sorpresa más habitual durante la limpieza. Elimine ambos artefactos, no uno.
Qué revela el valor del registro
El nombre de la cuenta está en texto legible, así que cualquier cosa que se ejecute como ese usuario puede decodificarlo sin ninguna llamada especial. La contraseña es distinta: está sellada con Windows DPAPI, ligada a la cuenta y, según las marcas, a la máquina concreta. Por tanto, trasladar el bloque sellado a otro ordenador y reproducirlo no produce un secreto utilizable.
Listar los valores responde a la pregunta operativa sin tocar el secreto. No hace falta descifrar nada para confirmar que existe una entrada. El listado sirve también como registro de antes y después para la limpieza.
reg query "HKCU\Software\OpenVPN-GUI\configs" /s
cmdkey /list | findstr /i vpn
reg query "HKCU\Software\OpenVPN-GUI" /s | findstr /i "username password"
Dos límites merecen decirse claramente. Un proceso dentro de la misma sesión iniciada puede llamar a la misma rutina de desprotección que usa el cliente, así que el sellado es protección en reposo y no contra un escritorio comprometido. Y sin cifrado de disco completo, el valor sellado es tan privado como el disco.
Cuando el archivo de perfil ya contiene el inicio de sesión
Algunos portales entregan una configuración con el nombre de cuenta y la contraseña escritos dentro, así que el cliente se conecta en silencio. En ese momento el archivo es una credencial que funciona, y cada copia suya es otra llave para la misma puerta.
Esos archivos acaban en copias de seguridad, hilos de chat y carpetas sincronizadas, y ninguna de esas copias deja de funcionar cuando se borra el original. Editar el archivo local no cambia nada en los demás. Revocar el acceso significa cambiar la contraseña en el servidor, y hacerlo con prontitud. La limpieza en un solo portátil es una tarea aparte y más pequeña.
Donde un aviso sea aceptable, prefíerelo y use los controles de caché del cliente. Si un perfil prellenado es realmente necesario, manténgalo fuera de las carpetas sincronizadas y retírelo cuando termine el trabajo.
La automatización mueve el secreto a otro lugar
Los scripts introducen dos canales más: argumentos de proceso y pulsaciones sintéticas. Un archivo nombrado en una línea de comandos es visible para todo lo que pueda leer los argumentos del proceso o los permisos del archivo, y una contraseña escrita por una herramienta va a la ventana que tiene el foco. Un ejemplo publicado escribe la contraseña del escritorio de esa forma antes de lanzar el cliente. Una semilla de contraseña de un solo uso almacenada merece el mismo cuidado, porque puede generar cada código futuro y sobrevive a un solo inicio de sesión.
El patrón mejor guarda el secreto donde solo la cuenta de servicio puede leerlo, se apoya en las opciones documentadas del cliente de reintento y origen de credenciales, y evita la escritura inyectada en los avisos de privilegios. Si el script necesita la contraseña del escritorio para elevar privilegios, eso es una cuestión de diseño de privilegios, no de VPN.
Limpieza tras perder un dispositivo
Revoque o desactive la cuenta en el servidor antes que nada, porque el borrado local no puede invalidar una copia que alguien ya tiene. Después borre los valores recordados del registro, elimine el perfil y cualquier archivo de credenciales, y busque contraseñas pegadas en el historial del shell y en los directorios de scripts.
Anote qué se eliminó y cuándo terminó el acceso. Ese par responde a la única pregunta que hace una revisión de incidentes: si alguna copia de la credencial seguía funcionando después de que el dispositivo se marchara.