Title: 比特币安全之一 木马钱包盗币原理分析 Post by: btcshop on August 15, 2014, 05:35:49 AM 最近比特币的安全问题频发,我本想找个盗取比特币的钱包进行分析,恰巧此时网友smtp在彩云比特论坛发帖揭示LTC木马钱包,并提供了LTC木马钱包样本,我就逆向了木马钱包的程序,分析了钱包盗取LTC的原理,盗取方式同样可以用于比特币及其他山寨币。
他在彩云比特论坛发帖 (http://www.cybtc.com/thread-9367-1-1.html),且提醒大家从官网下载钱包,切莫下载非官网(各种网盘)、没签名的钱包。 一、原理分析 此LTC木马钱包盗取LTC的方式很简单,查看钱包的接收地址时,隐藏钱包的真实接收地址,显示黑客的LTC地址,当向此接收地址发送LTC时,发送的LTC自然就到了黑客的钱包中,永远到不了这个钱包中。 验证过程很简单,先安装LTC木马钱包,创建新的接收地址,然后卸载木马钱包,安装LTC官网钱包,查看接收地址,两者显示的地址是不同的,官网钱包显示的是真实地址,木马钱包显示的是黑客的LTC地址。 钱包中不存在黑客的LTC地址,所以导出私钥失败。官网钱包显示的LTC地址是存在的,可以导出私钥。通过命令dumpprivkey可以验证。 LTC官网钱包下载地址:litecoin-0.8.7.2-win32-setup.exe (https://download.litecoin.org/litecoin-0.8.7.2/win32/litecoin-0.8.7.2-win32-setup.exe),需要科学上网。 木马钱包显示的黑客的LTC接收地址: http://bitcoin8btc.qiniudn.com/wp-content/uploads/2014/08/112.jpg 官网钱包显示的真实的LTC接收地址: http://bitcoin8btc.qiniudn.com/wp-content/uploads/2014/08/25.jpg 两相比较,可以看出显示的LTC接收地址是不同的。 二、钱包显示接收地址 LTC的代码是开源的,黑客下载了LTC代码,做了些修改,重新编译代码,把程序打包,放到网盘中提供下载,盗取网友的LTC。 显示钱包的接收地址,LTC与BTC的代码相同,主要是在列表中显示LTC地址,木马钱包通过修改列表中要显示的LTC地址的字符串,来达到隐藏真实地址的目的。 显示LTC接收地址,主要涉及到2个模块:程序加载时显示接收地址、创建新接收地址。在这里先简单讲解如何在地址列表中显示地址。 钱包的接收地址保存在是类CWallet的mapAddressBook中,接收地址列表是类AddressTablePriv的QList<AddressTableEntry> cachedAddressTable控件。 1、程序加载时显示接收地址: litcoin-qt加载时,在main函数中,创建类WalletModel的对象,在类WalletModel的构造函数中创建类AddressTableModel的对象,然后调用类AddressTablePriv的refreshAddressTable函数。函数refreshAddressTable遍历钱包的地址簿,显示在接收地址列表中。 2、创建新接收地址: 在创建新地址对话框确认后,交给类EditAddressDialog的accept函数处理,调用saveCurrentRow函数,调用类AddressTableModel的addRow函数添加新的地址行。 在addRow函数中,调用类CWallet的SetAddressBook函数设置地址簿。 在SetAddressBook函数中,发送NotifyAddressBookChanged信号,在信号处理函数NotifyAddressBookChanged中,调用类WalletModel 的方法updateAddressBook更新地址簿。 在updateAddressBook函数中,调用类AddressTableModel的updateEntry函数,再调用类AddressTablePriv的updateEntry函数,从而把新地址插入到地址列表中。 三、黑客修改的代码 木马钱包就是修改了类AddressTablePriv的函数refreshAddressTable、函数updateEntry,在显示、插入地址之前修改显示的接收地址。 1、函数refreshAddressTable 在调用函数cachedAddressTable.append之前,加入修改显示地址的代码。 2、函数updateEntry 当CT_NEW时,在调用函数parent->beginInsertRows之后,在调用函数cachedAddressTable.insert之前,加入修改显示地址的代码。 黑客的LTC地址一共10个,按照显示、插入地址的顺序,依次显示这10个地址,超过10个地址时,循环显示。 在木马钱包中定义了一个数组,指向这10个LTC地址。 在木马钱包中定义了一个整形变量,标识地址索引,显示此索引指向的LTC地址,然后递增,当等于10时,重置为0。 这是用IDA定位到的地址数组及索引。 http://bitcoin8btc.qiniudn.com/wp-content/uploads/2014/08/32.jpg 实现这块功能对于码农来讲很简单。 黑客的LTC地址在钱包程序中不是明文保存的,而是经过加密的,显示LTC地址之前需要经过解密。通过逆向分析,其解密方法比较简单,反向操作即是加密。 加密时,遍历LTC地址的34个字符,以0×32(‘2’)、0x3C(‘<’)、0×57(‘W’)这3个字符为分界点,根据字符所在的不同范围,进行加减3操作。 解密时进行反向操作。 加解密规则: 当字符大于等于0×0,且小于等于0×32(‘2’),加密时字符加3,解密时字符减3。 当字符大于0×32(‘2’),且小于等于0x3C(‘<’),加密时字符加3,解密时字符减3。 当字符大于0x3C(‘<’),且小于等于0×57(‘W’),加密时字符减3,解密时字符加3。 当字符大于0×57(‘W’),加密时字符加3,解密时字符减3。 规则⑴、⑵相同,可以合并,不明白为啥分开。 黑客的10个LTC地址的明文、密文如下表: Quote LLaVR8Ab5gb6ybgjGxu9D2qisEgUCtJGvN ‘IIdSO;>e8je9|ejmD{x<A5tlvBjR@wGDyK’ LNMuPLzrL2SpZrcwC8US5vQZ6cwC2CRaoL ‘IKJxMI}uI5PsWufz@;RP8yNW9fz@5@OdrI’ LRD63cfZu7Wqt5JSvEC4PDrKByA7YkiZ4z ‘IOA96fiWx:Ttw8GPyB@7MAuH?|>:VnlW7}’ LMVwz1nQAX56iF8TDMqiK2mJW6PKxrV7wZ ‘IJSz}4qN>U89lC;QAJtlH5pGT9MH{uS:zW’ Ld1WBZyPAhdxsmQ8xeFgMrLuTNGwoXAmo8 ‘Ig4T?W|M>kg{vpN;{hCjJuIxQKDzrU>pr;’ LLHa7b4gz2U6BFKR9suztQQT35zbmoJbuF ‘IIEd:e7j}5R9?CHO<vx}wNNQ68}eprGexC’ LfpkSrZWYAvyTWB1ko2k3njcZQjsQoeYaQ ‘IisnPuWTV>y|QT?4nr5n6qmfWNmvNrhVdN’ LdgYTrsTcKmyF9nVB4uWSXUhbbXVJhPC9P ‘IgjVQuvQfHp|C<qS?7xTPURkeeUSGkM@<M’ LU6QjPAEKnczUfhkxebpKYY6GQxTeXmoUY ‘IR9NmM>BHqf}Rikn{hesHVV9DN{QhUprRV’ LMkNreKBaztuAetjx9o17WmhwwAB7T2gSf ‘IJnKuhH?d}wx>hwm{<r4:Tpkzz>?:Q5jPi’ 用IDA反汇编可以清晰的看到加密后的黑客的LTC接收地址。 http://bitcoin8btc.qiniudn.com/wp-content/uploads/2014/08/4.jpg 这是用IDA逆向的解密地址的函数。 http://bitcoin8btc.qiniudn.com/wp-content/uploads/2014/08/5.jpg 四、结束语 由此分析得出,这个盗币的钱包还是比较简单的。因为比特币、莱特币的代码是开源的,逆向时比较容易定位关键点。但最主要的还是熟悉比特币的代码、命令,这样可以帮助分析问题、实现原理。 如果您丢币了,或者被盗币了,可以发送相关的软件给我,简单描述被盗的过程,我可以帮忙分析,揭示出来以防止别人被盗,我的邮箱地址:007longshao@gmail.com。 稍后我会逐步分析黑客对各种钱包、矿场、交易平台等发起的攻击、钓鱼、木马等,写成连载的文章。 作者:龙少 BTC捐赠地址:1CeeGr858xjLJQB3a9uLawHAdZ2qWjzTGT 摘自:巴比特 (http://www.8btc.com/btcsafe01) Title: Re: 比特币安全之一 木马钱包盗币原理分析 Post by: coolmyrig on August 15, 2014, 07:56:26 AM 龙少是不是阿龙?搞得不丑
Title: Re: 比特币安全之一 木马钱包盗币原理分析 Post by: fuyao on August 15, 2014, 09:31:22 AM 论坛里都强调几遍了,下载钱包一定要从官网下载,还是有人从其他地方下载,安全意识一点都没有吗?
Title: Re: 比特币安全之一 木马钱包盗币原理分析 Post by: lihuajkl on August 15, 2014, 09:57:16 AM 太深奥了看不懂!
Title: Re: 比特币安全之一 木马钱包盗币原理分析 Post by: rulesky on August 15, 2014, 10:48:53 AM 太复杂了,看不懂,反正不要在百度网盘下载就好了,之前不是一直有个骗子老是在这发百度网盘共享吗,都不知有没有人中过招!
Title: Re: 比特币安全之一 木马钱包盗币原理分析 Post by: jyaken on August 15, 2014, 11:58:09 AM 除了搞到私钥控制钱包,就是在你用钱包的时候偷换目的钱包地址
Title: Re: 比特币安全之一 木马钱包盗币原理分析 Post by: YUIS1 on August 15, 2014, 03:01:30 PM 除了搞到私钥控制钱包,就是在你用钱包的时候偷换目的钱包地址 偷换钱包地址岂不是币以为转到自己钱包了,其实这个地址是别人的。这太可恶了.Title: Re: 比特币安全之一 木马钱包盗币原理分析 Post by: btcgov on August 15, 2014, 04:58:08 PM 太复杂了,看不懂,反正不要在百度网盘下载就好了,之前不是一直有个骗子老是在这发百度网盘共享吗,都不知有没有人中过招! 这家伙还有出来骗人呢。 Title: Re: 比特币安全之一 木马钱包盗币原理分析 Post by: hemuesen on August 15, 2014, 05:53:04 PM 随着数字交易的发展,个人电脑的安全问题越来越需要加强。
|