前言
无意中看到一篇文章能恢复Dameware Mini Remote Control 连接记录,这就勾起了我的好奇心,于是分析了一下这个软件本地存储密码的方式
https://blog.51cto.com/u_10868195/2069715
环境
windows 7
Dameware Mini Remote Control
分析过程
首先查看软件结构,搜索关键字符串,如Decrpt和Encrypt
然后下断点尝试
最终在dwrcrss.dll找到导出的加密和解密函数
然后使用火绒剑分析软件储存密码的地方
1.开启火绒剑监控系统监控
2.尝试添加一个新host,并设置密码,点击保存
然后使用火绒剑过滤事件,一般储存本地信息的方式有存放在注册表和文件,所以我们采用过滤这两种动作来进行分析
然后指定过滤进程
过滤出来的数量不多,我们逐个分析,发现这两条可疑的,和上述恢复链接的文件所需要的两个文件对应的上,一个数据库.db文件,一项注册表
首先查看MRCCv2.db文件
这是一个SQLite 3 数据库文件 可能会包含有用的信息
使用Navicat查看数据库
发现只是有一些简单的信息,并没有保存密码
然后我们来查看注册表
HKEY_CURRENT_USER\Software\DameWare\Mini Remote Control\Data
发现两条REG_BINARY
类型的信息,而且前面8个字节都是相同的,符合某些加密特征,恰恰我们的host也只有两个,所以这里极有可能是储存密码的地方
为了验证这就是密码数据,并获取解密流程,我们返回x64dbg
在PBE_InitKey和PBE_Decrypt下断点
先点击连接就会先断在PBE_InitKey
返回上一层设置断点查看参数
在Win64里面传递函数参数的方法类似fastcall调用约定。前四个参数通过RCX,RDX,R8和R9寄存器传参,其余参数通过栈进行传递。
分析它的参数有6个,如果看不太具体使用IDA应该能更加直观
在网上查询了一些关于PBE加密的资料
https://blog.csdn.net/qq_26816591/article/details/83104475
https://www.jianshu.com/p/55a29b701fa7
重复实了几次,6个参数基本都是固定的,参数2更像是图上所述的口令,参数3则是对应口令的长度
PBE_InitKey初始化完成后会返回一个指针,像是一个类
然后接着运行断到PBE_Decrypt
看参数有4个,第1个参数为PBE_InitKey返回的指针,第2参数个参数为注册表里REG_BINARY的加密数据,第3个参数应该为密文的大小,第4个参数多次尝试后确定应该是一个固定值
运行完PBE_Decrypt,我们可以发现传进去的加密数据已经被解密了一部分了,但还是没发现密码,被解密的数据里还是发现了一些类似密文的数据
很大可能是多次加密,我们继续运行
又断到了PBE_InitKey,除了口令和口令长度的参数不同其余参数一致
然后继续运行,又断在了PBE_Decrypt,第2个参数是第一层解密是里面的加加密数据,长度为0x10
继续运行完PBE_Decrypt,发现数据已经完成解密,看到了明文密码
结构体
而第一层解密的注册表里REG_BINARY的加密数据,更像是一个结构体,里面包含了hostname ,userid,password,Domain,Shared Secret这就是有用的数据。
总结:
1.HKEY_CURRENT_USER\Software\DameWare\Mini Remote Control\Data里的数据为每个host信息的加密数据
2.第1次解密的是注册表里REG_BINARY的加密数据,解密完成后包含hostname ,userid,password,Domain,Shared Secre等信息,但password和Shared Secre还是处于加密状态
3.第2次解密的是password,Shared Secre
所以分析到现在,相信后续的了解这个软件本地储存的密码已经很容易了。想要解密也很简单,我这里就不再写出来。