PC版微信木马分析
0x00 概要
最近看到一个PC版微信木马,会窃取电脑版微信的隐私信息。该木马主要分为2个部分,第一部分负责监控运行着的微信进程读取其中包含的微信id、用户名、手机号和数据库密钥,第二部分则负责解密用户的微信数据库以获取聊天信息和联系人信息。
0x01 读取微信密钥
首先,遍历进程快照监控微信进程“WeChat.exe”是否运行。
如果微信正在运行则分别获取该进程“WeChat.exe”和“WeChatWin.dll”2个模块的基址以进行下一步读取工作,否则立即退出。
然后就是关键的数据定位,这个步骤主要通过进程搜索关键的密钥字符串引用来实现,具体是调用了一个搜索函数“find_data_addr_401ea0”来对字符串“-----BEGIN PUBLIC”进行定位,依次对引用该内存地址的位置进行检查和信息读取。
如下通过调试器附加微信进行使用Ctrl+B对进程内存进行字符串搜索“-----BEGIN PUBLIC”,一共找到了3处地址包含该字符串。
发现其中的第二处位置在“WeChatWin.dll”模块中存在引用,先看看该位置的字符串:
引用该字符串地址的位置如下图,可以发现该位置前面的不远处存在微信的用户名数据。
一旦定位到该位置,后面的工作就简单了,想要获取的数据均基于该地址减去对应的固定偏移位置即可,下面列出了该木马实际获取的信息字段和对应的偏移量。
木马运行后获取的数据如下:
0x02 解密微信数据库
上述步骤从微信内存读取了微信数据库的密钥,接下来就可以使用该key对存储在用户硬盘上的数据库进行解密。一般情况登录过电脑版微信都会在我的文档目录下保存用户信息数据库。本次木马主要针对如下“MicroMsg.db”和“Multi/MSG0.db”2个数据库进行解密。
分析解密代码后发现主要工作就是使用libeay32库设置aes-256-cbc模式对微信数据库文件进行解密, key即上述密钥。解密后的数据库格式为SQLite3数据库格式。
解密后的文件用SQLite工具打开即可查看微信通讯录等敏感的隐私数据,“MicroMsg.db”的通讯录数据登录一次即可全部获取。
“MSg0.db”则包含微信的聊天消息,此数据由于第一次登录还没有新的数据缓存,只能看到一些大概的信息字段。
0x03 参考链接
1、《读取微信内存里的信息》,https://422926799.github.io/posts/26c63b49.html
2、《PC版微信数据库解密实践》,https://zhuanlan.zhihu.com/p/340276760
目前没有反馈
表单载入中...