blockchain | 区块链安全靶场 The Ethernaut
Posted Mz1
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了blockchain | 区块链安全靶场 The Ethernaut相关的知识,希望对你有一定的参考价值。
blockchain | 区块链安全靶场 The Ethernaut
最近在学这一块,找个靶场玩玩:https://ethernaut.openzeppelin.com/
可以参考:https://blog.csdn.net/rfrder/article/details/115572137
需要提前安装好MetaMask和自己的链子(用测试链也行,主要自己的链子有用不完的ether)
然后先部署,通过contract查看合约。
然后在控制台进行交互操作:
然后通过以后点submit。
过关以后会显示合约源码:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract Instance
string public password;
uint8 public infoNum = 42;
string public theMethodName = \'The method name is method7123949.\';
bool private cleared = false;
// constructor
constructor(string memory _password)
password = _password;
function info() public pure returns (string memory)
return \'You will find what you need in info1().\';
function info1() public pure returns (string memory)
return \'Try info2(), but with "hello" as a parameter.\';
function info2(string memory param) public pure returns (string memory)
if(keccak256(abi.encodePacked(param)) == keccak256(abi.encodePacked(\'hello\')))
return \'The property infoNum holds the number of the next info method to call.\';
return \'Wrong parameter.\';
function info42() public pure returns (string memory)
return \'theMethodName is the name of the next method.\';
function method7123949() public pure returns (string memory)
return \'If you know the password, submit it to authenticate().\';
function authenticate(string memory passkey) public
if(keccak256(abi.encodePacked(passkey)) == keccak256(abi.encodePacked(password)))
cleared = true;
function getCleared() public view returns (bool)
return cleared;
本文来自博客园,作者:Mz1,转载请注明原文链接:https://www.cnblogs.com/Mz1-rc/p/17292346.html
如果有问题可以在下方评论或者email:mzi_mzi@163.com
深入Blockchain:区块链安全应用落地实践
区块链技术生态,已被业界公认是大有可为。区块链的一些特殊特性,如不可篡改、可信任、去中心化等理念,打破了既有的思维模式,创造了全新应用的可能。但与区块链概念的火热相反,区块链技术应用过程中,存在的一系列安全问题,让人不得不保持冷静。
本文是依据 5 月 15 日在北京举行“TIC 2018——UCloud 云计算峰会:区块链安全应用落地实践专场”演讲内容整理而成。主要从安全角度,解析区块链技术具体应用的一些问题和案例。
Gartner 定期发布的新兴科技技术成熟度曲线,从全行业的角度分析了开发新技术组合时必须考虑的技术和趋势。从 2015-2017 年 Gartner 曲线上的区块链走势来看,区块链出现了一个又一个高峰阶段,某种程度上突破了曲线设定的形状。这种现象的出现,主要源于区块链技术发展的特殊历程。
关于区块链的发展,目前公认的是经历了 3 个阶段:
区块链 1.0 时代主要是以比特币为代表的数字币阶段,最主要的应用就是分布式记账;
区块链 2.0 时代则是以以太坊为代表的智能合约阶段,利用去中心化的虚拟机来处理点对点的交易;
而区块链 3.0 时代实在前两个阶段的基础上,结合了具体的应用场景,是区块链技术全面应用的时代。
有人说,区块链的未来一定是一个大公链的基础架构,会成为公共服务的基础架构。但目前来看,技术环境还不完善,公链的应用落地受到一定的制约,所以我国大部分的应用场景还是联盟链或私链的场景。
那么,区块链真的可以优化业务流程、提高效率、降低成本吗?
案例 1:牲畜养殖供应链的溯源和保险业务
这个案例来源于 IBM 和某国内大型保险公司合作的项目,它除了给畜牧业提供一些保险本身的金融服务外,也配合地方政府做一些精准扶贫的工作。其中一个切入点就是给进口肉牛等进口养殖类牲畜做保险。具体流程我们用一组图片来演示:
起初我们在设计这个项目时,最关注的就是保证整个流程不出现问题。我们针对出现的问题进行了调研,主要还是聚焦区块链本身系统的设计以及怎么与当地的业务做对接。
我们发现,在保险业务中,农场、农户在很远的农村,甚至乡镇都存在很多线下的不可控因素,而溯源的标的与线上数据如何连接,如何去打通线上线下的闭环,是需要通过技术解决的关键问题。
后来我们找到了一个方式,就是在肉牛的耳朵上打耳标,通过耳标的信息去锚定线上与线下的数据对称。这在多活体的溯源中,是一个可行的方案。保险公司和 IBM 都很认可这个项目。溯源就是区块链的杀手级应用之一。
案例 2:基于区块链的商品流通平台和粮食产业链
该案例是智链与粮食作物提供基地——北大荒合作完成。“北大荒”集团的应用场景和产业链数据,通过与区块链技术结合来确保食品安全。该项目利用区块链技术实现食品的全程数字化跟踪,从供应商生态系统到商店货架,最终到消费者。
对于食品供应商而言,数字产品信息:诸如农场原产地信息、批号、工厂和加工数据、有效期、存储温度和运输等,都将与对应的食品建立数字化关联,每一个环节的信息都将上链,来确保信息的准确无误。
正如上文中提到的案例,区块链最大的挑战之一,就是如何把实体资产数字化,这个过程中如果出现问题,会使区块链整体的可信度受到质疑。那么,如何做到 100% 可信度? 我们把关注点放在那些天生就是数字化的资产:存储和计算。
但由于区块链的特点,链上所有的存储和计算都是公开的。那么,我们如何设计私密的计算和存储?在研究中发现,我们可以将某些硬件的可信机制与区块链相结合,形成一个新的平台,它可以在一个公链上实现私有的计算、私有的智能合约。让我们来看看具体的实现过程。
首先要降低对云的安全依赖
我们从技术角度来思考,云计算在使用用户数据时是否需要数据明文?是否可以对密文直接运算?什么时候需要明文,什么时候不需要明文呢?
现有的例子中,如 Dropbox、百度盘等云存储这一类,用户将加密后的数据发送至云服务商保存是不需要明文的。而大数据分析、数据训练这一类,对数据进行运算时必须在内存中解密数据的,是需要明文的。数据在内存里一旦解密,从理论上来说就不是 100% 完美的。
如此一来,我们该如何降低对云安全的依赖?我们对云安全的依赖,大致有 5 个:
依赖 1:所有管理员均为可信
依赖 2:攻击者无法接触硬件设备
依赖 3:云端的软件设计均为安全
依赖 4:云端的硬件设备均为安全
依赖 5:云端的 CPU 是安全的
依赖 1-2 可以通过非技术手段来实现,比如加摄像头,加机房所等。而 3-4 离 100% 安全还有距离。我们希望能有一种安全可靠的 CPU,并且把可信部分降低到只有 CPU 是可信的,将明文数据存储于 CPU 的 cash 里。这样一来,外界几乎不可能通过技术手段来窃取数据。
再搭建一个可信执行环境 TEE
在此基础上,我们再搭建一个可信的执行环境 TEE,用来解决数据拥有方、算法提供方、结果使用方和计算提供方彼此间的不信任。TEE(Trusted Execution Environment)是移动设备主处理器上的一个安全区域,可以保证加载到该环境内部的代码和数据的安全性、机密性及完整性。
相对于常见的移动操作系统(如 IoS、Android 等)来说,TEE 提供的执行空间有更高级别的安全性;而相对于安全元素 SE(Secure Element,如智能卡、SIM 卡等),TEE 能提供更多的功能。我们通过 TEE 把整个计算放在一个安全可靠的环境中,就可以让明文不外泄。
之后通过 TEE+ 区块链 + 安全屋来设计激励机制
那么,拥有了这样安全可靠的计算环境,我们就希望,所有闲置的计算机资源,都可以加入到我们的计算环境中来加以利用。
但是,用什么来激励闲置资源的拥有者去参与这件事呢? 于是可信区块链 TBC 诞生了。我们将悬赏的合约放到 TBC 上,贡献闲置资源的人可以获得相应的奖励。这样一来,任何一个具有安全、可扩展机制的节点,都可以从链上下载,获得算法和数据,并进行运算,之后再把结果返回到 TBC 平台。
TBC 平台是公有链平台的私有智能合约,智能合约通过 TEE 保护执行,基于硬件保护合约代码和数据,并可以直接对接以太坊。
当然,整个过程中少不了 Intel SGX——面向所有开发者的应用级 SGX
云计算里普通面临的安全和隐私保护的问题,需要利用到底层的硬件安全机制来解决,而后才能进行相应的开发。
SGX 全称 Intel Software Guard Extensions,是对 Intel 体系(IA)的一个扩展,用于增强软件的安全性。这种方式并不是识别和隔离平台上的所有恶意软件,而是将合法软件的安全操作封装在一个 Enclave 中,保护其不受恶意软件的攻击。特权或者非特权的软件都无法访问 Enclave,也就是说,一旦软件和数据位于 Enclave 中,即便操作系统或者和 VMM(Hypervisor)也无法影响 Enclave 里面的代码和数据, 可以达到保护敏感数据的目的。
Enclave 的安全边界只包含 CPU 和它自身。SGX 创建的 Enclave 也可以理解为一个可信执行环境 TEE。不过其与 ARM TrustZone(TZ)还是有一点小区别的,TZ 中通过 CPU 划分为两个隔离环境(安全世界和正常世界),两者之间通过 SMC 指令通信;而 SGX 中一个 CPU 可以运行多个安全 Enclaves,并发执行亦可。
Intel 硬件构成了 SGX 的底层基础。SGX 程序被分为了两部分:可信部分和不可信部分。可信部分受加密内存保护。
那么,在底层 CPU 这个硬件层面上,是怎样实现保险箱的?
首先,在系统内存里开辟出一块区间作为加密内存,保险箱的本质就是加密内存。然后把数据和代码放到这个加密内存里,其它代码就无法访问了。加密内存的密钥是放在这个 CPU 的封装里,它从 CPU 一开始启动一直到最后机器关闭,都不会流出。当代码进入加密内存,其中的数据就会被加载到 CPU 中。仅在 Cash 里是明文的,在其他地方包括中间的 memory base 中都是密文。
SGX 的应用开发和执行原理:
1、应用程序被分为可信和非可信两部分
2、App 程序首先进入非可信部分,创建 enclave 即可信部分,可信部分位于加密内存
3、可信接口函数被调用;Enclave 内的数据,Enclave 内代码看到的是原文,而 Enclave 外对它的访问是禁止的
4、函数返回;Enclave 数据仍在加密内存中
它在云计算和服务器端的应用情况如何?
案例 1:基于 SGX 的 HSM 的方案
这个方案在企业中的应用非常广泛,它可以帮助企业或云计算去生成或保存密钥,但是硬件的 HSM 非常昂贵。业界有这种基于纯软件的 HSM 方案,成本相对较低,但它的安全性也很低。而 SGX 的出现,可以使成本接近纯软件方案,可靠性又接近硬件的 HSM 方案。
案例 2:基于共享数据、隐私保护的云计算应用
医院希望通过对医疗案例的大数据分析,总结出一些医疗的规律来更好的帮助患者,但这些数据既包括患者隐私,也包括医院的隐私数据,他们不希望被其它医院、医疗机构看到这些数据。该怎么办?
SGX 提供了一个非常好的解决方案,医院可以去开发这样一个大数据处理项目,将解决方案放到 UCloud 的云平台上,UCloud 提供 SGX 的硬件设备,为每家医疗机构通建立一个安全连接。这样,医院的医疗数据会被安全的传送到云端,然后云端在 SGX 里做大数据处理。
区块链最重要的应用领域就是金融业和各行业的金融属性部分。而在具体应用中,人们都会混淆一些概念,区块链存在以下事实:
1、区块链和智能合约能实现的,现在有的 IT 系统都能实现,区块链只是去掉中介;
2、区块链实现的不是性能的提升,而是业务模式的改变,相反性能大幅度下降,核心是去中介化;
3、只能实现对链内内生的信息信任,对外界引入的信息无法建立信任;
4、区块链不直接应用于实体经济。
在长期的研究中,我们总结了区块链应用的几大误区:
第一类误区:联想能力大于理解能力。例如,利用区块链实现保险的自动理赔,解决理赔中的信任问题。实际上这个问题应该是人工智能来解决,区块链的共识并不能让别人诚信,它只能实现数据的一致性,所以不能阻止骗保现象的发生。
第二类误区:造辆坦克去买菜。例如,利用区块链做合同数据存证。既然数据是不可篡改的,做存正也是可以实现的,但成本非常高。区块链的可信和不可篡改特性是牺牲了极大的资源换来的,是为整个区块链的生态系统正常运行服务的。如果只利用区块链的这一个特性,就相当于花费了昂贵的资源造坦克,只为了开着买菜。能够落地的应用,需要降本增效,存证已经有很多简单有效的方法,比如电子签名等,并非必须要用到区块链。
第三类误区:跨越式发展,即商业模式大跃进。例如,利用区块链解决纸质票据交易的伪造、一票多卖等行为。大家可能认为,票据上链就可以防止伪造了。防伪是可以,但前提是任何一个商业模式首先是原始化到互联网化、再到区块链化,区块化是对互联网的改造,而不是直接从传统模式到区块链。凡是不能互联网化的业务模式,一般都有强大的线下利益去阻碍它,而不是技术问题。就像票据的交易,必须通过国家电子票据交易中心,用区块链实现票据交易是违规的。
第四类误区:换个马甲就上天。例如,现在的一些社交平台、在线商城、旅游平台等,它不再使用人民币作为服务的支付货币,而改用区块链发行的 Token,号称是革命性的商业模式。其实,从性质上来说,人民币就是央行系统的 Token,和区块链的 Token 没有本质区别,而且其信用度高于 99% 的区块链 Token。如果用央行的 Token 解决不了的商业模式,换个 Token 一样解决不了!
第五类误区:代币化完胜腾讯的 Q 币。部分 Token 支持者认为:区块链的 token 可以和人民币兑换,信誉比 Q 币高,并且永不消失、价值永存。但实际情况是:Q 币过去也可以和人民币兑换,后来被央行禁止了,而区块链在 token 的发行中,仅仅当作了数据库使用,和腾讯的数据库没有本质区别。此外,Token 的使用价值是由发行公司担保,发行公司关闭,价值就归零,绝大部分发行公司信誉不如腾讯。
第六类误区:用了区块链技术就不存在违规的情况。实际上,金融是一种行为,区块链是一种技术,不是使用了新的技术就可以脱离监管了。比如说通过区块链代币分红,是明显违反证券法的;通过代币向公众募集资金,也是明显违法的;通过区块链代币将邮票、古董等收藏品代币化后格出售,同样也是违法的。
保险公司如何应用区块链技术?
保险公司可以基于区块链实现互助保险体系,即基于区块链,使所有人都以区块链节点去参保,包括保费、用户信息、理赔信息、个人密码等,并通过这些智能合约去互相交互,同时通过央行的数字货币再实现一个价值的传递。
除此之外还能用于其它方面的管理,比如社区的管理投票、一些业务的流程制作等,都可能在将来区块链大发展之后,落地应用。
另外,保险行业在养殖业也在探索。比如众安科技的步步鸡等,养殖业本质上还是一个生态,首先如果通过区块链网络,我们养殖户可以把保险标标记的各项信息放入到区块链上,同时保险公司把投保信息和理赔信息放到区块链上,并通过提取其它信息进行风险监控。
现在农业领域存在很多小贷公司,它们的贷款信息和还款信息可以放到区块链上进行全网的公示,风险也可以随时监控。同时,政府也可以从这个链上获取直接的产业信息、扶贫信息、食品溯源等各种信息。
人保集团做了一些尝试,做了一个人保 V 盟,利用区块链技术做一些营销方面的尝试,通过区块链技术发行了一些积分,让积分更加可信、更加方便的流通。
目前在币圈里,整个产业是分成矿场、交易所、钱包、支付等这几个环节,那么整个黑产的情况是什么样的?
首先来看交易所,这是一个被攻击的重灾区,像 Coincheck、矿场 NiceHash、还有 CoinDash 等一系列的全球知名交易所,基本上都受到过黑客攻击,目前为止损失约 8.64 亿美金。
以前大家都知道的 Botnot,就是一个由大量的被入侵的肉机,组成的一个僵尸网络。原来这个僵尸网络主要用来做 DDoS,而现在已经把大部分的肉机用来做挖矿了,因为利润高、变现快,还安全隐蔽。目前,大部分木马也是在挖矿,UCloud 平台上共捕获了 30+ 种木马,据估算已挖了 90-100W 美金的币。
我们可以看到,现在很多黑产的方式都是围绕着整个数字货币的生态圈在转。首先这个行业火起来了,被黑产盯上以后,黑客自然也就跟来了。一部分黑客是做挖矿的,另一部分就是专门黑交易所的,对这部分黑客来说,数字货币、交易所就是一个非常有价值的目标,一单可能产生几千万。
之所以出现这么多攻击,是因为存在严重的安全问题。
首先,传统的安全问题依然存在,比如:
开源区块链软件漏洞:Solidity 漏洞
钱包漏洞:Parity 多重签名钱包漏洞
交易所安全漏洞:coindash 未修补的漏洞导致被上传 webshell
其次,是病毒木马,比如:
日本 Coincheck:员工电脑存在恶意软件,损失约 5.3 亿美元
韩国 Bithumb:员工电脑被入侵,损失数十亿韩元
再有,就是社工钓鱼,比如:
矿场 NiceHash
2018 年 3 月,币安钓鱼事件
2018 年 4 月,MyEtherWallet 遭 DNS 劫持攻击,用户被劫持到假冒网站
当然,随着数字货币的产生,还出现了一些新的安全问题,比如:
51% 攻击
Sybil Attack(女巫攻击)
eclipse attack
如何解决在数字货币交易过程中的安全问题?
对个人而言,如果个人的技术能力和安全意识比较高,可以选择本地钱包,不会涉及到任何在线的问题。而仅会使用在线钱包的用户,还是选择信誉比较高的交易所进行交易。
对于交易所来说,首先要提升安全意识,设立安全团队;其次要使用成熟的安全解决方案;最后一个办法,就是上云。因为现在大的云厂商,包括 UCloud 在内,都有比较健全的云安全体系,可以针对不同行业的不同需求提供服务。
IoT 名词在 1999 年被首次使用,意在推广 RFID 技术 IoT 直到 2010 年开始流行,并在 2014 年初,概念因为 Google 收购 Nest 开始被大众消费市场关注。
IoT 究竟有什么用呢?与我们有哪些相关性?首先从软件和硬件的角度来看,就是方便了生活,减少人力的参与,让人们从劳动中解放出来。它也能使工业的生产更智能,定制化更强。
物联网面临的主要是三个问题:安全、互操作性、身份的问题
安全性方面:IoT 设备漏洞类型分别为权限绕过、拒绝服务、信息泄露、跨站、命令执行、缓冲区溢出、SQL 注入、弱口令、设计缺陷等漏洞。其中,权限绕过、拒绝服务、信息泄露漏洞数量位列前三,分别占收录漏洞总数的 23%、19%、13%。
互操作性方面:IoT 涵盖了各种各样的硬件形式因素和软件生态系统,不像我们在技术中看到的任何东西。诸如连接的摄像机,无人机,恒温器,支持语音的扬声器,智能家电等等,它们都生活在物联网内。物联网拥有单一的统一通信和软件框架似乎是一个理想的解决方案,但是物联网的多样化和快节奏的性质使得这个完美规划成为一个巨大的挑战。
身份方面:IoT 设备 / 用户,需要提供可以验证的手段来确认身份。没有唯一性身份的物联网设备,无法保证可信和其数据价值。
区块链 + 物联网有怎样的可能性?
首先,区块链可以保证数据的真实性,不可篡改。例如,设备产生的数据上链之后便不可篡改,我们可以在链上做一些数据交易。对于国内的互联网公司来说,数据是最值钱的。它们通过对数据的收集、分析来获取价值。
其次,就是保证数据交易的真实性,也就是可信传输。传输是网络层的技术,比如我们要保证端对端的加密、数据传输的标准、互操作性,是需要在协议层来解决。
再次,就是可信身份,因为数据是从 IoT 这个设备里去设计和生成的,所以这个数据应具有不可替代和篡改的特性。但如果有其他设备替代生成数据的情况发生,这些数据就没有可信性了。
案例:P2P 售电沙盒场景
虽然说区块链和物联网是一个比较早期的概念,我们也看到一些落地场景,President Street Microgrid Sandbox——P2P 售电沙盒场景,是已经落地的项目。人们可以通过智能电表把自家太阳能板上生产出来的多余的电力,销售给其他需要用电的人。
区块链 +IoT 的发展,需要哪些因素来共同推动?
1、IoT 基础设施:各种创新的感应科技开始被嵌入各种物体和设施中,从而令物质世界被极大程度的数据化
2、网络:随着网络的高度发达,人、数据和各种事物都将以不同方式联入
3、计算:先进的技术和超级计算机则可以对这些堆积如山的数据进行整理、加工和分析,将生硬的数据转化成实实在在的洞察,并帮助人们做出正确的行动决策
随着互联网与信息技术的快速发展的当今时代,区块链技术给我们带来了新的可能的同时也提出了新的安全挑战,如何挖掘和完善新技术的优势并不断破除安全局限,也许是下阶段需要思考的问题。
优势与局限,恰如剑之双刃,我们期待着区块链技术的更新和完善。我们相信,在资本涌入和行业领跑者带动的双重作用下,未来会有更多成熟 应用落地、更多专业化区块链应用的创业公司出现。
以上是关于blockchain | 区块链安全靶场 The Ethernaut的主要内容,如果未能解决你的问题,请参考以下文章
讲座报名 ︳Blockchain - The Blocked Chain
哈佛HCSSA区块链峰会 | 蓄势待发,大咖邀你”Unchain the Blockchain”
科技区块链如何改变货币和商业 | How the blockchain is changing money and biz