发布时间:2022-12-04 15:34:08 文章来源:互联网
微博 微信 QQ空间

彩云比特论坛发帖揭示LTC木马钱包盗取LTC的原理分析

近期,比特币安全问题频发。我想找一个钱包来窃取比特币进行分析。这时,有网友smtp在彩云比特论坛发帖揭露了LTC木马钱包,并提供了LTC木马钱包样本。我反了。木马钱包的程序分析了从钱包中窃取LTC的原理,该窃取方法也可用于比特币等山寨币。

近期,比特币安全问题频发。我想找一个钱包来窃取比特币进行分析。这时,有网友smtp在彩云比特论坛发帖揭露了LTC木马钱包,并提供了LTC木马钱包样本。我反了。木马钱包的程序分析了从钱包中窃取LTC的原理,该窃取方法也可用于比特币等山寨币。

他在彩云比特论坛地址发帖: ,并提醒大家从官网下载钱包,千万不要下载非官网(各种网盘)和未签名的钱包。

一、原理分析 这个LTC木马钱包窃取LTC的方式非常简单。查看钱包收款地址时,隐藏钱包的真实收款地址,显示黑客的LTC地址。当向这个接收地址发送LTC时,发送的LTC自然会在黑客的钱包里,永远不会在这个钱包里。

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

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

LTC官网钱包下载地址: ,您需要科学上网。

木马钱包显示的黑客LTC接收地址:

官网钱包显示的真实LTC接收地址:

两者对比,可以看出显示的LTC收款地址是不一样的。

2. 钱包显示接收地址LTC的代码是开源的。黑客下载LTC代码,进行一些修改,重新编译代码,打包程序,放到网盘下载,窃取网友的LTC。

显示钱包的接收地址。LTC和BTC的代码是一样的。主要在列表中显示LTC地址。木马钱包通过修改要在列表中显示的LTC地址字符串来隐藏真实地址。

显示LTC接收地址主要涉及2个模块:程序加载时显示接收地址有哪些比特币钱包可以借钱,新建接收地址。这里我们简单介绍一下如何在地址列表中显示地址。

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

1、程序加载时显示接收地址:

加载litcoin-qt时,在main函数中有哪些比特币钱包可以借钱,创建类WalletModel的对象,在类WalletModel的构造函数中创建类AddressTableModel的对象,然后调用类AddressTablePriv的refreshAddressTable函数。函数refreshAddressTable遍历钱包地址簿,显示在收款地址列表中。

2.新建收货地址:

在Create New Address对话框中确认后,交给EditAddressDialog类的accept函数,调用saveCurrentRow函数,调用AddressTableModel类的addRow函数添加新的地址行。

在addRow函数中调用CWallet类的SetAddressBook函数设置通讯录。

在SetAddressBook函数中,发送NotifyAddressBookChanged信号,在信号处理函数NotifyAddressBookChanged中,调用类WalletModel的updateAddressBook方法更新通讯录。

在updateAddressBook函数中,调用AddressTableModel类的updateEntry函数,再调用AddressTablePriv类的updateEntry函数,将新地址插入到地址列表中。

3、黑客修改代码 木马钱包是修改AddressTablePriv类的refreshAddressTable和updateEntry函数,在显示和插入地址之前修改显示的接收地址。

1.函数refreshAddressTable

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

2.函数updateEntry

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

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

木马钱包中定义了一个数组,指向这10个LTC地址。

木马钱包中定义了一个整型变量,标识地址索引,显示该索引指向的LTC地址,然后自增。当它等于 10 时,它被重置为 0。

这是 IDA 定位的地址数组和索引。

码农实现这个功能非常简单。

黑客的LTC地址在钱包程序中并不是明文存储的,而是加密的,需要解密后才能显示LTC地址。通过逆向分析,解密方式比较简单,逆向操作就是加密。

加密时,遍历LTC地址的34个字符,以0x32('2'), 0x3C(':Vn??lW7}'开头

LMVwz1nQAX56iF8TDMqiK2mJW6PKxrV7wZ

'IJSz}4qN>U89lC;QAJtlH5pGT9MH{uS:zW'

Ld1WBZyPAhdxsmQ8xeFgMrLuTNGwoXAmo8

'Ig4T?W|M>kg{vpN;{hCjJuIxQKDzrU>pr;'

LLHa7b4gz2U6BFKR9suztQQT35zbmoJbuF

'IIEd:e7j}5R9?CHO

LfpkSrZWYAvyTWB1ko2k3njcZQjsQoeYaQ

'IisnPuWTV>y|QT?4nr5n6qmfWNmvNrhVdN'

LdgYTrsTcKmyF9nVB4uWSXUhbbXVJhPC9P

'IgjVQuvQfHp|C

LU6QjPAEKnczUfhkxebpKYY6GQxTeXmoUY

'IR9NmM>BHqf}Rikn{hesHVV9DN{QhUprRV'

LMkNreKBaztuAetjx9o17WmhwwAB7T2gSf

'IJnKuhH?d}wx>hwm{?:Q5jPi'

使用IDA反汇编,可以清楚的看到加密后黑客的LTC接收地址。

这是使用 IDA 对解密地址进行逆向工程的功能。

4. 结论 从以上分析可以看出,被盗钱包的情况比较简单。由于比特币和莱特币的代码是开源的,逆向工程时更容易定位关键点。但最重要的是熟悉比特币的代码和命令,有助于分析问题和实现原理。

如果您的币丢失或被盗,可以将相关软件发给我,并简单描述一下被盗的过程。我可以帮助分析并揭示它以防止其他人被盗用。我的电子邮箱: 。

后面会逐步分析黑客对各种钱包、矿场、交易平台等发起的攻击、钓鱼、木马等,并撰写连载文章。

另一视角

换一换