OKXWeb3推出《安全特刊》,专门回答各种网络安全难题。以用户身边最为真实的案例为切入点,结合行业内的专业人士或机构,从多个角度,从两个方面来分析、回答,将交易的安全规律由表及里地整理、总结出来,目的是为了强化对用户的安全教育,让他们从自己做起,学会如何保护自己的私钥和自己的钱包资产的安全。
如果有一天你收到一个人发来的一个钱包地址,里面有一百万美金,你会不会马上转账?
如果你想减肥,这是一个适合你的建议。
本文是第一期OKXWeb3的《安全特刊》,特别邀请了在加密领域享有“百诈”之称的慢速迷雾公司和OKXWeb3的安全小组,以用户遇到过的最为实际的案例为基础,与大家一起分享,绝对是干货!
慢雾安保小组:谢谢OKXWeb3,欢迎来到这里。作为业内领先的区块链安全企业,“缓慢迷雾”一直以来都以提供安全审核、反洗钱溯源和建立坚实的威胁信息协作体系为核心,为广大用户提供全方位的服务。在2023年, SlowMist帮助客户、合伙人及公众因遭黑客攻击而冻结了1250多万美金的资金。希望秉持业界对食品安全的重视,我们能持续地提供有意义的产品。
OKXWeb3安全性小组:你好,很高兴能参与到这次的分享中来。OKXWeb3安全小组是OKXWeb3的安全部门,主要负责构建OKXWeb3的安全体系,为用户提供产品、用户、交易等全方位的安全保障,为用户提供全天候的安全保障,并为区块链安全体系的构建做出自己的一份贡献。
问:你能跟我们讲讲实际发生的盗窃案件吗?
慢雾安保小组:首先,大多数情况下,都是由于使用者将私有密钥或记忆体储存在网络上。例如,在 Google Docs、腾讯 Docs、百度云盘、微信 Folder、备忘录等用户常用的云存储服务中,如果将私有密钥或辅助记忆项等作为数据存储在云中,那么如果黑客在该等云存储服务的平台上获取了该等云存储服务的账户,并且对该等云存储服务的账户进行了“撞库”,则该私有密钥可能会轻易地被窃取。
第二种情况是,在该用户下载了伪造的应用程序之后,该用户触发了私有密钥的泄漏。例如,多签名欺诈就是其中一个最具代表性的例子,其中,诈骗者引诱使用者下载一个伪造的钱包并且窃取钱包记忆体单词,然后立刻改变使用者的钱包的帐户许可:将钱包帐户许可从使用者本身改变为使用者和他/她与诈骗者共享,以获得对钱包帐户的控制。这样的骗子倾向于耐心地等着,直到他们的用户帐户已经累积了某种程度的加密财产之后,才进行一次转移。
OKXWeb3安全小组:“缓慢迷雾”总结出了两大类型的私钥失窃案例,其中第二种,骗子使用伪造的 APP来窃取用户的私钥,实质上是一种木马病毒,这种病毒会获得用户的密码、照片等信息的访问权,进而窃取用户的私钥。Android用户比 IOS用户受到更多的特洛伊木马袭击。在此,我们简要地与大家共享其中的两个例子:
案例一:客户反映自己的钱包里的财产被偷了,经我们小组与客户沟通和排查,发现:这是因为他之前在谷歌上搜索时,下载了一款名为 DataPlatform的伪装软件,而这款软件就是一款木马软件。但是,当用户在谷歌上搜索这个平台的时候,它的链接就会出现在前五名的位置,这就会让人误认为它是正式版的。实际上,许多用户不会区分谷歌的连接,因此很容易受到木马的侵害,我们推荐用户通过防火墙,反病毒软件和主机设置来保护自己。
在实例2中,该用户在其对 DeFi项目的投资中报告其钱包资产已被窃取。但是,经过我们的调查和分析, DeFi项目本身是没有任何问题的,而 B号账户的资金之所以会被窃取,是因为他在推特上发表了关于 DeFi项目的评论之后,被伪装成 DeFi项目的客户服务人员盯上,在客户服务人员的诱导下, B号账户的资金被窃取,因为 B号账户的资金被窃取的原因是他点击了 DeFi项目的一个虚假的链接,并且输入了记忆单词。
从这一点来看,骗子们的技术不算太好,但这也要求使用者们提高识别能力,不管什么时候都不要随便泄露私有密钥。另外我们的钱包已经发布了一个关于这个恶意域名的安全警告。
第二:有没有一种保存私有密钥的最好方式?现在有什么办法来降低对私有密钥的依赖性呢?
慢雾安全性小组:私有密钥或记忆体实际上是一个单一失效的问题,当它被偷或遗失时,难以恢复。近来,诸如安全多方计算 MPC (Secure Multiple Computing MPC)、社会认证技术(Social Authentication Technology)、无 Seedless/Keyless (无密钥)、预执行(Pre-Execute)和零知识验证(ZeroKnowledge-Authentication)之类的新技术协助使用者降低对私有密钥的依赖性。
例如, MPC就是这样一种技术,它要求所有的参与者共同进行复杂的计算来实现一个目标,同时每个人的信息都是保密的,不会被分享。第二种是 MPC钱包,通俗的说,就是把一个私密金钥通过 MPC的方式分解为若干份,然后通过不同的人进行共享和管理;或者只是几个人一起产生了一个虚的金钥,也许后一种情况更常见,因为在这个时候谁也不会看到全部的私密金钥。MPC的基本思想是通过对系统进行分布式控制,实现对系统的风险分担,增强系统的抗灾能力,从而有效地避免了系统出现单一失效的情况。
请注意, MPC使用了一个叫做“无密钥的”的术语,这个术语的意思是“无密码的”或“无私钥的”。然而,该“无”不意味着实际上不具有键,但是意味着不要求使用者备份辅助字或私钥,并且不感知其存在。因此,关于 keyless皮夹,你需要知道以下三件事:
1.在创建无密钥钱包期间,不在任何地方、任何时间建立或者保存私有密钥。
2.当对交易进行签名时,私有密钥是不存在的,并且私有密钥永远不会重新配置。
3.无密钥钱包始终不会产生或者保持全部的私有密钥和籽句。
OKXWeb3安全性小组:目前还没有一种保存私有密钥的理想方法。但我们的安全小组建议使用硬件钱包,手工保存私有密钥,设置多个签名,将助记符分散存储,等等。例如,分散地存储帮助字意味着使用者能够将帮助字分为2个或更多个组来存储,从而减少了帮助字被盗窃的危险。在另一个示例中,设置多个签名意味着用户可选择可信的人并对其进行联合签名以确定事务的安全。
当然,为了保证用户的私钥的安全,整个 OKXWeb3钱包的全套服务都是无线的,无论是记忆符还是私钥,都是在手机上进行加密和存储的,并且相关的 SDK都是开放源码的,并且得到了业界的普遍认可,相对来说比较开放和透明。另外,OKXWeb3钱包的安全性也经过了严谨的审核,这是因为OKXWeb3钱包与一些著名的安全组织,如 SlowFlowWay的合作。
另外,为了加强对使用者的保护,OKXWeb3的安全小组还在为私密金钥管理方面设计和开发更加完善的安全性功能,目前还在不断的更新和完善当中,我们将在此与大家共享:
1.对数据进行二次加密。目前,大多数的电子钱包都是使用口令来加密记忆符,并且将口令的加密信息存储在本地,但是,如果使用者中了一种木马,这种木马就会对加密信息进行扫描,并且窃听使用者的口令,当黑客窃听到口令的时候,它就会对加密信息进行解密,并且获得使用者的记忆符。将来OKXWeb3电子钱包会使用双重加密的方法对记忆符进行加密,这样就算黑客从木马程序中得到了使用者的口令,也不可能解密出加密后的信息。
2.私有密钥的拷贝是安全的。大多数木马都是在用户拷贝私有密钥时窃取其剪贴簿中的内容,造成私有密钥的泄露。本发明的目的在于提高私钥复制处理的安全性,例如,复制私钥的一部分、及时地清除剪贴簿消息等方法或特征,以减少私钥消息被窃取的风险。
第三部分:从窃取私有密钥入手,目前有哪些常见的钓鱼手段?
慢雾安保小组:根据我们的观测,每月的捕鱼量都在逐渐增加。
第一,目前的钱包窃贼是目前网络钓鱼的最大威胁,他们不断地用不同的方式袭击一般使用者。
钱包窃贼(Wallet Drainers)是指通过在网络钓鱼站点上安装与加密货币有关的恶意程序,通过诱使使用者在一笔不正当的交易上签字,盗取使用者的钱包财产。例如,当前相对活动的皮夹窃贼(皮夹窃贼)包括:
1. Pink Drainer,该 Pink Drainer使用社交工程来获得 Discord令牌并且执行垂钓。社会工程可以被广泛地理解为通过通信来获取关于用户的个人信息。
2.也有安吉尔·德拉纳,他会用社交工程的方法来攻击域名服务供应商。Angel Drainer在获得了与域名和账户有关的权利之后,就会改变 DNS的解析指向、将使用者重新引导到伪造的站点,诸如此类。
第二,当前最为普遍的是盲签钓鱼,所谓盲签,就是指在与某项交易互动的过程中,用户并不清楚自己需要签名和认证的内容,而是在毫无头绪的情况下点击确认,从而使得自己的钱被窃取。下面将给出一些与盲标钓鱼相关的示例:
例子1:例如,eth_sign.eth_sign是一个开放的签名方式,它能对任何哈希值进行签名,这意味着它能对任何事务或者任何信息进行签名,对于一个普通的、不具备专业知识的人来说,很难理解这个数字的含义,这样就有了一些网络诈骗的危险。所幸的是,随着钱包数量的增加,这样的签名已被提供了安全警报,并且某些资金损失的风险在某种程度上被防止。
情况2:允许签署钓鱼攻击。众所周知,在ERC20货币交易过程中,用户调用 approve功能进行认证,而 permit功能则是在链中产生一个签名,再将该签名授权给特定的用户,由该用户在特定的额度内使用该枚令牌,攻击者采用 permit方式钓鱼,受害人进入钓鱼站点,攻击者在该站点上请求受害人签字,受害人签字后,攻击者获取签字后的数据,然后调用令牌合同的 permit功能,输入签字后的数据,然后将该签名传播到整个链条,获取令牌的权限,从而窃取受害人的令牌。
情况3:隐藏的Create2技术。Create2让开发人员能够在向以太坊网络上发布合同前,预先知道合同的 IP地址。在create2的基础上,攻击者能够针对每一个被攻击的签名产生一个暂时的、新的地址。在骗得用户授权签署之后,攻击者便可在该地址上建立契约,然后将该用户的财产转移出去。由于使用的是空白网址,这种网址能够绕过某些网络钓鱼外挂程序,以及安全机构的监视报警,因此具有极高的隐蔽性,使用者极易上当受骗。
总结一下,在钓鱼式站点中,使用者在与站点互动前要先确认站点的官方网址,在互动时要注意有没有恶意的签名请求,同时要注意不要将自己的记忆符或者私有密钥给交出去,也不要将它们泄露出去。
OKXWeb3安全性小组:我们分析了网络钓鱼的常用方法,在产品上给出了多方面的保护措施。下面简要地与大家分享一下当前用户碰到的一些主要类型的钓鱼方法:
第一种,就是假空投。黑客通常会根据受害人的地址产生头尾类似的地址,然后向其投放小额转移、0 U转移或伪造代币转移,这类交易显示在使用者的交易记录中,若使用者无意中拷贝和粘贴错误的地址,就可能导致财产的丢失。OKXWeb3钱包可以根据用户的历史交易记录,将其标记为“危险”,当用户将资金转移到 OKXWeb3钱包的指定位置时, OKXWeb3钱包会提醒用户注意安全问题。
第二种类型是诱发特征的类型。一般情况下,黑客在 Twitter, Discord, TG等公开场所对已有项目发表评论,并发布虚假的 DeFi项目 URL或获得“空投”的 URL,以引诱使用者进行单击,以窃取使用者的资产。除了“慢雾”所说的诸如eth_sign, permit,create2之类的带有特征的钓鱼之外,其他的则是:
方法一:通过转账,偷取主链令牌。黑客经常以诸如 Claim、 SeurityUpdate之类的诱导性名称来命名恶意契约功能,同时将真正的功能逻辑设为 null,以便仅传输用户的主链代币。目前 OKX的Web3钱包实现了在线预处理的特性,可以在交易完成上链之后,实时展示资金和权限的变化情况,并对用户提示安全和风险。
方法2:链条认证。黑客们一般都是引诱客户签订“批准/增加许可/减少许可/设置许可”交易协议,这个协议可以让黑客们指定一个地址将客户的代币资产转移出去,并且在客户签字之后,他们会实时监视客户的账户,只要有相应的资金转账,他们就立即转账。为垂钓者设计的安全保护程序是一个对抗性的程序,并且是一个不断改进的程序。
虽然大多数钱包能够探测到来自攻击者的经许可的地址的安全性危险,但攻击者的方法正在改进,例如,通过使用create2的特征,攻击者能够提前计算由于不存在于安全的黑地址数据库中而能够轻易地绕过安全性探测的新地址。攻击者会等待,直到鱼儿咬钩之后,才会前往那个地址,部署合同,然后从用户那里转移钱。例如,近来,我们还发现,许多攻击者将允许用户向uniswap.mu lti ti ti to call合同授予许可,因为合同是用于正式计划的合同,并且还能够绕过安全产品的检查。
方式三:许可改变:包含 tron许可改变, solana许可改变等等。一是,在 tron权利改变中,多重签名是 tron链条的特征之一,在许多钓鱼站点中,钓鱼人将改变账户权利的事务伪装成资金转移事务,若使用者不慎在该事务上签名,那么使用者的账户将成为多重签名账户,从而丧失对账户的控制权。二是,在 Solana许可改变过程中,钓鱼人使用 SetAuthority修改使用者的代币 ATA帐户的所有者,在使用者签字之后, ATA帐户的所有者变为钓鱼人,允许钓鱼人获得使用者的财产。
其它方法:此外,还存在一些问题,如协议自身的设计和机制,使得该方法易于受到钓鱼人的攻击。QueueWithdrawal是一种基于 EigenLayer的以太币中介协议,它可以让用户在被网络钓鱼的情况下,将另一个地址指定为 withdrawer。七天之后,该指定的地址经由 completeQueuedWithdrawal获取该使用者的抵押财产。
第三种类型是上载辅助记忆项。攻击者经常会通过提供虚假的项目空投、广告或虚假的发布新消息的手段,诱使使用者上载私有密钥或记忆符,参见上面的例子。另外,它也可以被当作一个插入式的钱包弹出窗口,以引诱使用者上载记忆材料。
Q4:如何区分“热”和“冷”钱包的攻击模式
OKXWeb3安全性小组:冷热钱包的差别就是私密金钥的储存,冷金钥是离线储存,热金钥是联网储存。因此,对于冷的和热的钱包来说,安全危险是不同的。关于“热钱夹”的安全性和风险,以上已做了充分的介绍,在此不再赘述。
“冷钱夹”的安全性风险在很大程度上包括:
第一部分,物理攻击、网络和交易流程方面的风险。至于社交工程学和实体攻击的风险,因为冷钱夹通常是离线储存的,所以有可能被攻击者利用社交工程学的方法,将自己装扮为亲属或者好友,从而获得对冷钱夹的访问。
第二是实体装置,它可能会遭到破坏和遗失。关于事务处理的风险意味着,在事务处理期间,冷钱包将类似地遭遇针对各种类型的先前描述的攻击方法,诸如在诸如引诱签署的情况下的攻击方法。
Q 5:除了开头提到的“给你一个贵重的私人密钥”之外,你还会用什么其他的方式来钓鱼呢?
慢雾安保小组:没错,“故意把贵重钱包私钥送给别人”是个很典型的例子,很多年以前就有了,但是仍然有人被骗。这种欺诈行为实际上是欺诈者有意泄漏密钥记忆体,当您将密钥记忆体引入您的钱包中时,攻击者会一直监视您的钱包,并在您将资金转移到 ETH之后立即将资金从您的钱包中移除。这种伎俩,就是抓住了使用者的贪婪之心,引进来的人愈多,收费愈贵,亏损愈大。
其次,一些人会觉得“我没什么可被侵犯的”,他们的心理防线薄弱,易于被侵犯。任何人的资料(例如电邮、口令、银行资料等等)对于黑客而言都是宝贵的。还有一些人以为,不去点那些垃圾信息就没事了,实际上,一些电子钓鱼信息,会在照片和附件中,嵌入一些病毒程序。
最后,我们必须对“安全”这一概念有一个客观的理解,即世界上并不存在完全的“安全”。更何况,钓鱼攻击有很多种形式,而且发展非常迅速,每个人都要多加了解,增强自身的安全意识,这是最靠谱的。
OKXWeb3安全小组:由于钓鱼者经常使用人类的心理漏洞和一般的安全漏洞,所以防止第三方的钓鱼是一个非常复杂的事情。很多人在平常的时候,都是非常小心的,但是在突然有“大馅饼”掉下来的时候,他们就会松懈下来,将他们的贪念放大,然后就被坑了。在这一点上,人类的脆弱远胜于科技,即使有很多保护措施,使用者也会在短时间内忽视,等到回过头来再看,已经被欺骗了很久。“天上不会掉馅饼”的道理我们必须明白,特别是在区块链的黑暗丛林中,我们必须始终保持警觉,关注自身的安全隐患。
Q 6:关于增强私有密钥安全性的用户建议
慢雾安全性小组:在回答这一问题前,让我们来了解一下常见的黑客是如何窃取用户资源的。攻击者通常可以使用以下两种方法从用户处窃取资源:
方法1:诱骗使用者签署窃取的、具有恶意的、用于窃取财产的交易资料,例如:诱骗使用者将财产许可或者转让给攻击者。
方法2:通过欺诈、引诱等手段,将钱包的辅助记忆词汇导入到恶意网站或应用程序中,例如:通过欺诈、引诱等手段,将钱包辅助记忆词汇导入到伪造的钱包页面中。
在了解了黑客是怎样窃取您的钱包中的资产的之后,我们需要采取措施来防止潜在的危险:
预防措施1:尽量看到什么就签字。钱包被称为Web3的敲门砖,它的主要功能之一就是拒绝盲签,即在签字前必须对签字的内容进行身份验证,了解所签字的事务的用途,如果不能验证,就不签字。
预防措施2:不要把所有的鸡蛋都放在一只篮子里.由于不同的资产和使用的频繁程度,使得能够分级地管理钱包,使得资产风险在控制范围内。参与诸如空降之类的事件的钱包被推荐用于存储小数量的资产,这是因为它们被频繁地使用。大额资金通常不会经常使用,建议存放在冷库中,并且在使用时应保证虚拟空间、实体空间的安全。如果可能的话,尽量利用硬件钱包,这能够增加记忆体专用密钥的盗窃阈值,因为它们通常不会直接导出记忆体专用密钥或记忆体专用密钥。
防范措施3:钓鱼方式多种多样,钓鱼事故时有发生,使用者应学习如何自己辨别各类钓鱼方式,增强安全防范意识,开展自我保护教育,避免上当受骗,并具备一定的自救手段。
防范措施4:不贪不急,多方求证。另外,对于希望获得更加完善的资产管理解决方案的用户,请参阅《加密资产安全解决方案》(由 Last Flowlight编写),对于希望获得更加深入的安全知识和自我培训的《区块链黑暗森林自救手册》(由 Last Flowlight编写),请参阅“Last Flowlight”。
OKXWeb3安全性小组:私钥是对钱包的加密财产进行存取和控制的唯一凭据,因此必须保证其安全性。
预防措施1:理解您的 DApp.当你在 DeFi上做投资时,确保你对你所用的 DApp有全面的认识,以免因为你接触到的是假的 DApp而导致你的财产受损。虽然我们的 OKXWeb3钱包在 DApp的安全防范方面做了很大的努力,但是攻击者会不断的改进他们的技术,规避我们的安全防范。用户们在进行投资时,必须睁大双眼。
预防措施2:认识你的签字。用户在签署链上交易时,应先确定自己是否理解了交易内容,对无法理解的内容应慎重,不可盲目签署。OKXWeb3 Paypal将分析和仿真链上事务和离线签署的实施,从而显示资产改变和许可改变的结果。用户可在完成交易之前,将注意力集中于此结果,看其与期望相符与否。
预防措施3:知道你正在下载什么程序。如需购买证券、期货、外汇、外汇等金融工具,请务必选择正规渠道购买,并在下载后立即用防病毒软件对其进行扫描。如果用户下载了恶意程序,那么该病毒就会利用截屏监视、剪贴板扫描、记忆体扫描、高速缓冲文件上传等等方式,获得该使用者的记忆项或者私密密钥。
防范措施4:提高保密意识,保护好私有密钥。尽量避免将记忆体、私有密匙及其他重要资料拷贝,切勿将图片截取,也不可将此类资料储存于第三方云端。
防范措施5:强大的口令和多重签名,在口令的设置上,尽量提高口令的复杂性,避免被获得私有密钥和加密文件的黑客破解。在事务处理中,若有多重签名,则应尽量使用多重签名,以确保即使某一方的密匙或密码泄露,也不会对整个事务产生不良的影响。