前段时间看报道,一家云矿机公司估值都快有小米市值的1/3了,而且国外很多网店跟实体店都相继开始支持数字货币付款,当然,挖矿相关的恶意程序在服务器保卫战中更是拼到刺刀见红,引得众网友纷纷调侃“本自同根生”。此外,伴随区块链造币的兴起,近两年来创业公司竞相入局誓要分上一杯羹。币圈这么火,除了合约安全,钱包安全自然也免不了要引起大量关注。本次议题将由北京知道创宇总监、工业控制系统信息安全国家安全技术国家工程实验室分部主任胡铭德为我们带来有关硬件钱包的分享,并着重讲述了国内外硬件钱包的安全现状及存在问题,就像演讲者提到的由于大家都忙着攻城略地,很多时候就把安全问题给忽略了,相信文章能够进一步增进各位对币圈安全的了解。
——看雪『Pwn』版主BDomne
胡铭德
从事信息安全20余年,硬件、编程爱好者。曾在XPwn 2016 发表Sony 笔记本电脑后门口令破解演讲。
现担任北京知道创宇先进技术部总监、工业控制系统信息安全国家安全技术国家工程实验室分部主任。
以下内容为胡铭德在看雪2018安全开发者峰会上的演讲实录:
这是我的个人介绍,我是看雪非常早期的会员了。
今天我的演讲分为四个部分:第一,硬件钱包的现状;第二,国内钱包的安全分析;第三,国外钱包的安全分析;第四,硬件钱包下一步研究计划。
一、硬件钱包现状
这个背景介绍大家应该都很清楚了,现在大家都炒币,“比特币”、“韭菜”,所以这块只做简要介绍,因为大家都很清楚。
硬件钱包的定义,硬件钱包是指将数字资产私钥单独存储在芯片中。
所以,一般客户觉得用硬件就很安全了,这其实跟人的先天属性有关系。
我现在讲的是两种类型,这里有一个亮点,Ledger已经获得8350万美元融资,剩下的其他钱包厂商都已经融资了千万级美金。因为Ledger它是开源的,我非常欣赏它。
有的公司把数字钱包做成一个平板,也有的把它做成纽扣蓝牙的。但钱包里面终归是钱,这就衍生出了一个问题,钱包里的钱谁来付?区块链、比特币,我个人买了很多钱包做测试,收了很多虚拟货币。厂家为了快速的占领市场,抓住风口,所以硬件钱包以不可能的速度推出来了,快的有的1个月就生产完毕,慢一点2个月也就出来了,这时便又衍生出另一个问题了。
硬件钱包包括:部件、软件、接口,大了来说包括了安全、金融、区块链。所以它是非常复杂的。一般的外行、原来有部件基础的、有APP开发基础的、在深圳做代工的,他们可能感觉这个东西非常容易,所以大家就随便凑了一下,迅速将之推出了市场。
(这里我有一个重要声明,后一个是讲法国的,怎么讲都可以;前一个是讲通信,会后有机会大家可以找我探讨,这里不太好分享。)
二、国内钱包的安全分析
在一环节我们先讲钱包怎么设计的,然后讲一个很通用的usb漏洞,这个漏洞非常恐怖,我个人感觉它会对很多手机有影响,2亿台甚至3亿台都是有可能的。第三块是演示,这个演示今天就取消了,大家如果有兴趣的话可以下来跟我探讨。
(一)硬件安全设计分析
原来我们已经破解了国外一些钱包,后来发现国内的厂商也比较多,我们只能避嫌,随便找了一个手机来做破解。这个是真实的MTK6753,安卓系统6.0,我发现有的厂家有5的、7的,但是8的却没有。
这是我们的导出固件,固件一般是基于钱包存在的,而我们主要还是要关心钱包软件的APP。这是数据。这是我的一个使用软件。这是我们找到了它支持的币种,大家请误对号入座,因为你的APP我改了之后便是我的,所以大家不要多想。
在我们领域设计一个东西,第一点,它必须非常安全,一般的做法是它通过APP白名单把蓝牙禁止掉了,另外一个是它禁用WiFi了,在APP里检测到存在互联网网络,它就退出。做得比较好一点的是在电路板里真的把蓝牙去掉了,毕竟这个成本本身也比较高。
这是助记词,有英文的,有数字的。
我们发现很多开发者使用的java是bitcoinj库。
(二)一个很通用的usb漏洞
在MTK芯片组,它有这样一个洞,有一个行动,利用这个洞我们可以随时去把别人的图片拷出来,也可以把木马种进去,还可以把调试门打开、更改手机号。这个漏洞获取敏感信息,不光是对钱包,对手机上装的微信、支付宝都是一样的。
你可以烧录自己的安卓系统,快的话可能3-5天搞出无款钱包,只要找一个壳子。
MTK它的市场占有率是比较少的,千元左右或者千元以下的用别的方案做不出来这么低的,千元以下的手机,像魅族,还有一些品牌我们就不提了。高通也是存在这个问题,要么是小公司用这个方案,比如手环、平板的很大程度也是用这个。三星也存在这个问题,华为没有研究,苹果可以搞。
大家应该都知道,当你有了交易口令,私钥口令就是你的。我们做了一个demo,假设这是一个钱包软件,我们这个是监控一个交易口令。我们前面可以看作获取钱包的文件,当我们知道这个交易口令之后就可以把私钥恢复出来。其实我们就干了一个事情,就是把它的交易口令和平板抓下来就可以了。
我这里把监控下的密码作为文件形式保存下来,然后加在loginactivity。这个请误对号入座。已经获取到硬件钱包的交易口令77588577aA,我们创建新的文件,它输入一个口令,我把它监控下来,我一般设口令是以我自己的生日,所以就设了这个。这种做法要用大概10分钟,后来我们改了一下,10秒钟就可以了。
三、国外某知名钱包安全分析
(一)硬件安全设计分析
我们讲讲获得8000多万美金的这个,它以普通的mcu加安全单元,前面一个屏,大概几十块钱,特别糙,屏碰一下就坏了。这是MCU,这边是它的安全单元,它是怎么交互的?是通过芯片。这是它的协议。我们可以看出它支持的品种,有蓝牙的、usb的、触摸屏couch的、二维码的。这家公司卖了100万只,现在是全球最大的,公司人数已经超过百人了,所以代码写得是比较好的。
这是它们自己说的,厂商宣布“硬件不可篡改”。它的原理是什么?原理是把不安全的芯片内容32K进行一个哈希,哈希之后在椭圆算法签名,如果发现被篡改了,它就提示“这个芯片不安全”,然后就把所有的资料全部删除。
非常好玩的是bp中断了,后面我给大家演示的是我调试出来的。它自己接了几根线,复位线、调试线,它的壳子非常容易打开,基本上我用手一掰就掰开了。这是jtag读出来的完整的固件。
(二)演示
这是记录pin码,我现在做一个现场演示。它的口令最后输入是通过光标形成的,比如光标定义了0-9,我们是通过调试器调出来的,,现在我们这个阶段是把数据放到屏内显示,准备存到其他空间里,然后通过这个U口,比如通过usb符号把口令传出来。怎样解决传出来,这个是我们下一步的研究计划。
四、硬件钱包的下一步研究计划
第一,我们下一步将会研究更多数量的硬件钱包的安全问题。
第二,将进行软件钱包的安全研究。
第三,我们将更加专注安全。
最后,插一个话题。为什么这两个钱包都会出现问题?它们有共性吗?它们的共性是没有根是可信的,它也用了一个加密芯片,但外面又带了一个非加密芯片,造成如果根是不可信,所有东西就都不靠谱。
谢谢大家!
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)