2024-08-20 08:28:27

比特币安全吗?木马钱包盗币原理分析

摘要
2018年,是公认的区块链大年。随着区块链的经济价值不断升高,促使不法分子利用各种攻击手段获取更多敏感数据,“盗窃”、“勒索”、“挖矿”等,下面小编就开给大家分析下木马钱包盗币原理。

2018年,是公认的区块链大年。随着区块链的经济价值不断升高,促使不法分子利用各种攻击手段获取更多敏感数据,“盗窃”、“勒索”、“挖矿”等,下面小编就开给大家分析下木马钱包盗币原理。

最近比特币的安全问题频发,我本想找个盗取比特币的钱包进行分析,恰巧此时网友smtp在彩云比特论坛发帖揭示LTC木马钱包,并提供了LTC木马钱包样本,我就逆向了木马钱包的程序,分析了钱包盗取LTC的原理,盗取方式同样可以用于比特币及其他山寨币。

比特币安全吗?木马钱包盗币原理分析

一、原理分析

此LTC木马钱包盗取LTC的方式很简单,查看钱包的接收地址时,隐藏钱包的真实接收地址,显示黑客的LTC地址,当向此接收地址发送LTC时,发送的LTC自然就到了黑客的钱包中,永远到不了这个钱包中。

验证过程很简单,先安装LTC木马钱包,创建新的接收地址,然后卸载木马钱包,安装LTC官网钱包,查看接收地址,两者显示的地址是不同的,官网钱包显示的是真实地址,木马钱包显示的是黑客的LTC地址。

钱包中不存在黑客的LTC地址,所以导出私钥失败。官网钱包显示的LTC地址是存在的,可以导出私钥。通过命令dumpprivkey可以验证。

二、钱包显示接收地址

LTC的代码是开源的,黑客下载了LTC代码,做了些修改,重新编译代码,把程序打包,放到网盘中提供下载,盗取网友的LTC。

显示钱包的接收地址,LTC与BTC的代码相同,主要是在列表中显示LTC地址,木马钱包通过修改列表中要显示的LTC地址的字符串,来达到隐藏真实地址的目的。

显示LTC接收地址,主要涉及到2个模块:程序加载时显示接收地址、创建新接收地址。在这里先简单讲解如何在地址列表中显示地址。

钱包的接收地址保存在是类CWallet的mapAddressBook中,接收地址列表是类AddressTablePriv的QListcachedAddressTable控件。

三、黑客修改的代码

木马钱包就是修改了类AddressTablePriv的函数refreshAddressTable、函数updateEntry,在显示、插入地址之前修改显示的接收地址。

1. 函数refreshAddressTable

在调用函数cachedAddressTable.append之前,加入修改显示地址的代码。

2. 函数updateEntry

当CT_NEW时,在调用函数parent->beginInsertRows之后,在调用函数cachedAddressTable.insert之前,加入修改显示地址的代码。

黑客的LTC地址一共10个,按照显示、插入地址的顺序,依次显示这10个地址,超过10个地址时,循环显示。

在木马钱包中定义了一个数组,指向这10个LTC地址。在木马钱包中定义了一个整形变量,标识地址索引,显示此索引指向的LTC地址,然后递增,当等于10时,重置为0。

对于上述几种情况在一定程度上可以采用修改注册表,使用第三方的一些任务管理器来停止任务,重新启动进入命令行模式来手工清除木马,使用一些专杀。

声明:文章不代表币圈网观点及立场,不构成本平台任何投资建议。投资决策需建立在独立思考之上,本文内容仅供参考,风险自担!转载请注明出处!侵权必究!
回顶部