Uno degli strumenti più utilizzati per creare un server VPN è il protocollo OpenVPN. Insieme con WireGuard, la stella nascente in continua crescita, e lo storico IPSec, OpenVPN è uno dei protocolli più utilizzati in assoluto per connettersi a distanza con la rete locale della propria azienda, dell’ufficio o di casa.
La connessione VPN avviene in totale sicurezza ed è possibile accedere da remoto alle risorse condivise come se il dispositivo in uso fosse fisicamente connesso alla LAN via WiFi o cavo Ethernet.
In un altro articolo abbiamo visto quanto conta la scelta del protocollo sul funzionamento di una VPN.
Il client OpenVPN per Windows mostra in fase di connessione una piccola finestra di dialogo che consente di specificare nome utente e password per l’effettuazione del collegamento. Spuntando la casella Ricorda la password, la password usata per la connessione al server VPN remoto viene memorizzata in locale in forma cifrata.
![](/app/uploads/2023/05/openvpn-password.jpg)
Se si fosse dimenticato la password associata a un profilo OpenVPN creato lato client, come si potrebbe fare per recuperarla?
Recuperare le password OpenVPN in forma cifrata
Supponiamo di aver installato il client OpenVPN su un altro PC Windows. Come fare per recuperare le password associate ai vari profili VPN che sono state precedentemente salvate in locale così da copiarle sul nuovo sistema?
La procedura è molto semplice: basta digitare cmd
nella casella di ricerca di Windows sul sistema ove è installato il client OpenVPN, premere Invio e al prompt dei comandi scrivere quanto segue:
Importando il profilo VPN sul nuovo PC (cartella %programfiles%\OpenVPN\config
) quindi cliccando due volte sul file openvpn-pwd.reg
le password saranno importate ma non appariranno nella schermata di login di OpenVPN.
Decodificare le password OpenVPN
Per recuperare le password OpenVPN sul vecchio o sul nuovo PC basta premere Windows+X
quindi scegliere Windows PowerShell in Windows 10 oppure Terminale Windows in Windows 11.
Copiando e incollando quanto segue (fonte: SuperUser) nella finestra di PowerShell, è possibile decodificare e leggere in chiaro tutte le password OpenVPN memorizzate sul sistema locale:
Add-Type -AssemblyName System.Security
$keys = Get-ChildItem "HKCU:\Software\OpenVPN-GUI\configs"
$items = $keys | ForEach-Object {Get-ItemProperty $_.PsPath}
foreach ($item in $items)
{
$encryptedbytes=$item.'auth-data'
$entropy=$item.'entropy'
$entropy=$entropy[0..(($entropy.Length)-2)]
$decryptedbytes = [System.Security.Cryptography.ProtectedData]::Unprotect(
$encryptedBytes,
$entropy,
[System.Security.Cryptography.DataProtectionScope]::CurrentUser)
Write-Host ($item.'PSChildName'+': '+[System.Text.Encoding]::Unicode.GetString($decryptedbytes))
}
Dopo aver selezionato il codice si deve copiarlo in memoria (CTRL+C
) quindi incollarlo nella finestra di PowerShell (CTRL+V
) e infine premere il tasto Invio.
Accanto al nome di ciascun profilo OpenVPN configurato sulla macchina si leggerà la password corrispondente in chiaro: è possibile annotarla e inserirla nella schermata di login del client VPN insieme con il nome utente corretto.
Da qui discende l’importanza di proteggere adeguatamente il contenuto del proprio sistema: un utente malintenzionato potrebbe infatti recuperare le password di OpenVPN e utilizzarle per connettersi alle reti altrui senza averne alcun titolo.
In un altro articolo abbiamo visto come proteggere i dati su disco con BitLocker e chiedere una password all’avvio del sistema.