Decrittare le password di Mago Microarea

Vi sarà capitato di prestare assistenza o fare aggiornamenti di Mago a clienti che non conoscono, o non ricordano, le password dei propri sistemi, una su tutte la password dell’utente “sa” di SQL Server. C’è un modo piuttosto semplice per rivelare tali password.

Infatti Microarea memorizza le password in formato criptato usando l’algoritmo DES, padding PKCS7, nessun salt, chiave esadecimale 496c61726961416e e initialization vector esadecimale 4769757374694261, il tutto codificato in base64. Queste informazioni si possono scoprire con poco sforzo, disassemblando alcuni componenti di Mago con ILSpy.
Per avere le password in chiaro è sufficiente avere accesso a una shell Unix (anche Cygwin va benissimo) con OpenSSL, e passare la stringa criptata a OpenSSL:

$ echo -n "9brfQdTBktifGvK03kStHEc9E5ZpCXp6qWR9rEiMRYMlHGBC4m7hj2qoLlAXrPmXpZe5zDW2PxkNIBdKVGV2MqZU5hCfLV4b6T+XjiYjzKa2aoj07oqHVLPvqOjg2HxfAeO9l8KIfEcCMHT/dALtkQYWBxuVPXm3xoI6LFn2x3XrnNyKXVk7Uw==" | openssl enc -des-cbc -d -base64 -A -nosalt -K "496c61726961416e" -iv "4769757374694261"
Data Source=SRVMAGO\SQLEXPRESS;Initial Catalog='MagoNetSys';User ID='sa';Password='PippoPluto';Connect Timeout=30;Pooling=false;

La stringa criptata dell’esempio è estratta dal nodo SysDBConnectionString del file di configurazione [Mago_root]\Custom\ServerConnection.config. Le password memorizzate nel database di sistema, rispettivamente nei campi MSD_Logins.Password e MSD_CompanyLogins.DBPassword, sono criptate allo stesso modo.
NOTA: il file ServerConnection.config è in una directory che viene condivisa al momento dell’installazione di Mago, e sulla quale vengono concessi i diritti di “full control” per everyone. Tirate voi le conclusioni.

EDIT: se avete a che fare con un’installazione di Mago4, l’algoritmo di criptazione della stringa di connessione al database di sistema è cambiato, così come la chiave e l’initialization vector; resta invece tutto immutato per quanto riguarda i campi delle tabelle MSD_Logins e MSD_CompanyLogins. Il comando openssl nel caso di Mago4 è il seguente:

$ echo -n "STRINGA_CRIPTATA" | openssl enc -aes-256-cbc -d -base64 -A -nosalt -K "0102030405060708010203040506070801020304050607080102030405060708" -iv "01020304050607080102030405060708"