
在windows下保存密码无非就是两个位置:注册表和文件。于是用windbg打开查询分析器(版本为SQL Server Management Studio 2005 Express),下几个条件断点:
bp kernel32!CreateFileW ".printf \"file:%mu\\n\",poi(@esp+4);g;"
bp advapi32!RegCreateKeyExW ".printf \"reg key:%mu\\n\",poi(@esp+8);g;"
bp advapi32!RegSetValueExW ".printf \"reg value:%mu\\n\",poi(@esp+8);g;"
执行查询分析器,登录一个服务器,勾选记住密码,然后退出。可以看到windbg输出了很多信息:

依次查看这些文件和注册表,发现mru.dat十分可疑:

可以看出,这个文件是一个标准的.net二进制序列化文件,其中有一段可疑的base64:

解密后为乱码,鉴于windows上绝大部分的可逆加密都是dpapi,于是直接用dpapi进行解密:
Console.WriteLine(Encoding.Unicode.GetString(System.Security.Cryptography.ProtectedData.Unprotect(Convert.FromBase64String("AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAA/GdUMC8fOkSbZeHVvNAo5AAAAAAQAAAARABlAGYAYQB1AGwAdAAAABBmAAAAAQAAIAAAABH2ACkH8BeAkWtFpoTTAJkOVsrKIKhgee/heYeTpF7nAAAAAA6AAAAAAgAAIAAAABsgv9bezhjwgM4UJmBEhO3GVZ+1+dNrvNIIsogzsX/qEAAAAM1k6Re4z8UJWAVWT6excM1AAAAAX/lp4sh4tHXD3OZQcV6Rs35q6HQ21zEfpJpGkDyFDQT6fVieZxe1m5oY02sGKne1nvD24RQAtiS8fb467EWMsA=="),null,System.Security.Cryptography.DataProtectionScope.LocalMachine)));

本文介绍了如何使用windbg分析SQL Server Management Studio的密码存储,通过.mru.dat和.SqlStudio.bin文件的.NET序列化内容,解析并导出密码。详细解释了解密过程,包括文件定位、反序列化、依赖程序集加载和数据结构遍历,适用于SQL Server 2005至2014等不同版本。
最低0.47元/天 解锁文章
227

被折叠的 条评论
为什么被折叠?



