-
作者帖子
-
-
作者:余弦@慢雾安全团队
联系我:Twitter( @evilcos )、即刻(@余弦.jpg)替代这个
日期 添加日志
2023/05/24 V1.1小心签名!章节已完成点更新。
2023/01/07 我在我的个人 GitHub 上做了扩展阅读更新:https://github.com/evilcos/darkhandbook
2022/06/14 V1日文版出现,感谢翻译者们。
2022/05/17 V1英文版出现,一点小修改,谢谢翻译者们。
2022/04/15 V1出现,简单修改了点错别字,一些不错的建议,我将在之后的小版本里加入,谢谢:)
2022/04/12 V1 Beta出现,中文,用碎片时间断断续续写了三周:D
注:选择 GitHub 方便愉快及查看历史更新记录。你可以观看、Fork 及 Star,当然我更希望你能参与贡献:)⚡牌
引子
一张图
创建钱包
下载
助记词
无钥匙
备份钱包
助记词/私钥类型
加密
使用钱包
反洗钱
冷钱包
热钱包
DeFi安全到底是什么
NFT安全
小心签名!
小心反常识签名!
一些高级攻击方式
传统隐私保护
操作系统
手机
网络
浏览器
密码管理器
双因素认证
科学上网
邮箱
卡
GPG
隔离环境
人性安全
电报
不和谐
来自“官方”的钓鱼
Web3 隐私问题
区块链作恶方式
被盗了怎么办
止损第一
保护好现场
分析原因
追踪溯源
结案
误区
代码即法律
不是你的钥匙,不是你的硬币
我们信任区块链
密码学安全就是安全
被黑很丢人
立即更新
总结
附
安全原则及原则
贡献者
那些官网
引子
首先,需要先恭喜你的是:你看到了这本手册。我恭喜你是谁,但如果你持有加密货币或者对这个世界有兴趣,未来可能会持有加密货币,那么这本手册值得你反复阅读并严格实践。其次,需要有心理准备的是:本手册的阅读需要一定的知识背景,我尽量照顾初学者,但很难。我希望不一定会害怕这些知识壁垒,因为其中大量是可以“玩”出来的。如果你遇到不懂的知识点,需要扩展了解的话,你用好谷歌。并强烈建议你掌握一个安全原则:网络上的知识,凡事都参考至少两个来源的信息,无处不佐证,始终保持怀疑。
是的,始终保持怀疑!包括本手册中提到的任何知识点:)
区块链是一个伟大的发明,它带来了一些关系生产的变革,让“信任”这种宝贵的东西得到了部分解决。这已经很难得了,不需要中心化、不需要第三方角色,有些基于区块链的“信任”就可以得到很好的解决,不可篡改、按约定执行、防止抵赖。但是,现实是残酷的,人们对区块链的理解会存在许多误区。这些误区导致了坏人容易钻探了空子,黑暗将黑手伸进了人们的钱包,大量的资金损失。这造成了黑暗森林。
在区块链黑暗森林世界里,首先牢记下面这两条大安全法则:
零信任。简单来说就是保持怀疑,而且是始终保持怀疑。
持续验证。你要相信,你就必须有能力去验证你怀疑的点,并把这种能力养成。
注:本手册中,安全原则就这两项大的,其他都可以认为是这两项大推论出来的安全原则。好,引子部分就到这。下面我们从一张图开始,进入这个黑暗森林,看看我们都会遇到哪些风险及我们应该如何应对。
一张图
在仔细看后面的文之前,你可以先粗略过下这张图。这张图是你在这个世界(无论你如何称呼这个世界,区块链、加密货币还是Web3都行)里关键活动相关的内容,从流程上包括三大部分:创建钱包、备份钱包及使用钱包。
我们顺着这三大流程,将涉及到的每一个关键点展开分析。
创建钱包
钱包最最最核心的就是那个私钥(或助记词)。私钥长这样:
0xa164d4767469de4faf09793ceea07d5a2f5d3cef7f6a9658916c581829ff5584
助记词长这样:
残酷的周末尖峰点无辜头晕外星人使用唤起棚调整错误
注:以以太坊为例,关于私钥/助记词的基础知识请自行扩展。
私钥即身份,如果私钥丢了或者被盗了,那么这个身份就不是你的了。钱包应用其实很多,知名的也很明显,我不打算也不可能一介绍。不过该手册确实会提到一些具体的钱包,请注意,能被提到的必然是我有基本信任的,但我不保证你在使用过程中可能出现的安全问题或目标钱包可能出现并不在我预期的范围内安全风险(以后我不会再不断地去废话这些,引子里提到的偶像安全法则希望你牢记心中)。
钱包从应用分类主要包括几种:PC钱包、浏览器扩展钱包、移动端钱包、硬件钱包及网页钱包等。从触网与否来说主要可以分为冷钱包和热钱包。当我们要进入这个世界,首先要思考将拥有的钱包的用途,用途决定了你将使用哪个钱包,同时用途也决定了你会如何处理这个钱包。
无论你选择什么钱包,但至少有一点可以肯定的:在这个世界玩久了之后,你不可能只有一个钱包。
那么这里我们又记住一个安全原则:需要做好隔离,鸡蛋不要放在一个篮子里。一般来说使用越频繁的钱包,自然也加大了出问题的风险。时刻牢记:一个面对新事物的时候,先准备好各自的钱包,用各自的小资金去玩一段时间。除非你已经像我这样,经历了无数,对许多事物都了然于心。但是,常在河边走,哪有不湿鞋呢?
下载
单简单的一点,其实也不简单,原因:许多人(确实许多人)找不到正确的官网,正确的应用市场,因此安装了假钱包。
许多人对下载了的应用不知道如何确认是否被篡改。
那么,出师未捷身先死。还没来得及进入这个世界,就已经钱包空了。针对上面的第1点,找到正确的官网是有技巧的,比如:
谷歌
行业知名人士收录,如 CoinMarketCap
多询问一些比较信任的人
好,以上几点得到的信息可以全部结合起来参考,大家佐证,最终真相只有一个:)恭喜你,找到了正确的官网。接下来,你要下载安装应用了,如果是PC钱包,根据官网提供的下载链接,下载后需要自己去安装。但在安装之前,建议做下是否篡改的校验工作,虽然这种做法并无法防止源头就被完全篡改的情况(比如官方自己内部作恶、内部被黑、官网被替换了相关信息等等),但可以防止如:源头被部分篡改、被中间人劫持篡改等这些情况。
是否篡改的校验,实际上就是文件一致性校验。常见的方式有统一:
一种是哈希校验,比如MD5、SHA256等,MD5总体情况下够用,但存在被哈希碰撞的极小风险,所以一般选择SHA256,够用且够安全。
另一种是GPG签名校验,这个其实也很流行,强烈建议掌握GPG工具、命令、方法,虽然对于新手来说有那么一些费力,但是上手后,相信我,你会很快乐的。
话虽然至此,其实实现这样做的项目方并不多,所以一旦遇到,真是难能可贵,弥足珍贵,比如前一款比特币钱包麻雀钱包,下载页面的“验证发布”简直良心了,提到的两种方式都有清晰指南,可以直接参考学习:https://sparrowwallet.com/download/
本页提到的GPG工具有两个:
GPG Suite,macOS下运行的。
Gpg4win,Windows下运行的。
如果你细心观察,你会发现这两个GPG工具的下载相关页面实际上给出了两种方法的一致性验证说明,但不好意思的是,并没有手分教你如何验证。估计吧,都认为你会是聪明人,该补上的知识你已经补上了:)如果是浏览器扩展钱包,比如这个世界家喻户晓的MetaMask,你唯一有机会注意的就是目标扩展下载页面里的用户数量很少、评分情况如何,比如MetaMask在Chrome网上应用商店里,用户数量却超过一千万的,同时有两千多用户评分的,虽然最终评分并不高。有人要说这不能刷出来吗? 这位朋友,是这样的,刷,我相信,不过刷的量如此之太巨大了,当大家都是傻子呢。
如果是移动端钱包,判断方式类似扩展钱包,不过需要注意的是,iPhone的App Store是分区的,加密货币在中国大陆被驱动赶得不行,所以如果你用App Store中国区账号下载到了钱包,建议只有一个:别用,换成如美区的App Store账号下载吧。另外,通过正确的官网也能引导到正确的下载位置(比如全球知名的imToken、Trust Wallet等,官网安全一定要做好,官网都被黑了,那这个安全责任就真大了)。
如果是硬件钱包,简单来说,可以从官网源头的引导下购买,不要直接去在线商城,到手后也需要注意是否存在被动手脚的情况,当然有些异动针对硬件包装的异动是很明显的,不建议此时:无论如何,使用时,先连续至少三次从头开始的创建,记录下生成的助记词、相关钱包地址,不会重复就行。
如果是网页钱包,非常不建议使用这种在线的钱包,除非你不得已,那么识别好是官方的后,战速决吧,千万别有任何感情依赖。
助记词
总的来说,我们创建了钱包后,直接打交道的关键信息是助记词(而不是私钥),毕竟助记词是方便人类记忆的。助记词是有标准规定的(如BIP39),这就对助记词提了要求,比如一般12个英文单词,也可以是其他数量(3的倍数),不过不会超过24个单词,要不然太复杂也不会助记了,数量少于12 ,安全性也不靠谱,12、15、18、21、24 都好说。不过从默认习惯来说,一般流行的是 12 位,安全性足够,有的安全性的话严谨到变态的如 Ledger 这类硬件钱包,24位标配走起。除了英文单词,也可以是其他的,比如中文、日文、韩文等等。但也不是什么单词都可以,有一个固定的2048个单词列表,具体参考:https://github.com/bitcoin/bips/blob/master/bip-0039/bip-0039-wordlists.md
创建钱包时,助记词的出现是非常敏感的,请注意你身边没有人、摄像头等一切都可能导致偷偷发生的情况。同时注意下助记词是不是不够随机出现,正常来说这些钱包生成的助记词随机数是绝对足够的,这不是万一吗?你真的很难知道,拿到手的钱包到底有没有万一的猫腻。你也不要嫌麻烦,这些安全小习惯形成后,相信我,你真的会很快乐。最后,有的场景下,你甚至可以考虑断网来创建钱包,尤其是你准备好把该钱包当成冷钱包使用时,断网简直就是暴力美学。
无钥匙
Keyless,顾名思义是无私钥的意思。在这里我们把 Keyless 分成几个场景(注意,这里的区分不代表公认的区分方式,只能说是为了方便我讲解):托管,即托管方式。比如中心化、钱包,用户只需注册账号,并不拥有私钥,安全完全依托于这些中心交易所化平台。
非托管,即非托管方式。用户独家掌握类似私钥的权力,并非直接的加密货币私钥(或助记词)。比如依托知名云平台做托管、认证授权,此时知名云平台成为木桶的那块短板。另外利用了安全多方计算(MPC)来确保不存在单点风险,同时也结合知名云,将用户体验做到最好。
对我来说,Keyless的几种方式我都有使用。现状及口碑良好的中心化平台体验好,只是不是因为自身原因导致的被盗币(比如账号相关权限被盗),这些平台也有兜底赔付。至于MPC主导的无钥匙方案是我觉得很有前景而且应该加速普及的,我用过的不错的如(ZenGo、Fireblocks、Safeheron)。优势很明显,我简单提几点:MPC算法工程实践在这些厂商的区块链上,越来越成熟,只需针对私钥开展即可。
这套思路可以解决不同区块链的多标签方案差异巨大的问题,在用户自定义上通用,这就是我们常说的:通用多标签。
可以确保真实的私钥不出现,通过多方计算解决单点风险。
结合知名云(或有人提的Web2)让MPC不仅安全且体验更顺滑。
优点很明显,但缺点也有的,我也简单提几点:满足惯例公认的标准且的,这方面的开源成熟度还远远不够,各位仍需努力。
有明显的人说基本只玩以太坊系列(或者说基于EVM的区块链),那么Gnosis Safe这种智能合约方式的多签方案就足够了。
无论哪种方式,只要是你觉得安全可控的、用起来舒服的,那么都是好方式,仁者见仁智者见智。好,创建钱包的相关安全注意点就先介绍这些,有一些通用性的安全问题会统一在以后介绍,先不着急:)
备份钱包
很多厉害的人都在这个踩坑了,其中包括我,常在河边走,湿鞋我也认,好在这不是一个大资产钱包,而最终我在慢雾的兄弟我帮着解决了这也是厉害的地方,我没备份好,我踩坑了,但我却有强大的资源能帮我解决这个坑。不过我也冒冷汗,人之常情。冒冷汗的感觉你肯定也不会喜欢,那就集中资源学习下如何安全地备份吧。助记词/私钥类型
我们所说的备份钱包,其实归根结底是备份助记词(或私钥,为了方便介绍,后面一般情况下只提助记词)。我们得到的助记词其实可以主要分为几种类型:明文
带密码
多签
沙米尔的秘密分享,简称SSS
这几种类型,我简单展开说说。明文,很好理解,那12个英文单词你拿到了,里面的资产就是你的了。其实这个时候可以考虑做一些特别的“乱序规律”,甚至把某些单词替换为其他的单词。这样对于坏人来说头疼了,但如果这个“规律”你自己忘记了,就轮到你头疼了。千万不要觉得你头疼是不可能的,相信我,一年、两年、五年后,记忆这东西真的会错乱。几年前,我玩Ledger硬件钱包时,就踩坑了,助记词24个单词,我抄写备份时打乱了几年的顺序,后来我忘记了排序规律,且不记得自己是不是替换了其中的单词。如前面所说的,我的问题后来解决了,专门的破解程序碰撞产生了正确的助记词顺序且修正了其中的个单词。
带密码,根据标准,助记词是可以带密码的,助记词还是那样的助记词,只要带上密码后会得到不一样的种子,这个种子就是之后拿来派生出一系列私钥、此时,你不仅要备份好助记词,这个密码也千万不要忘记了。顺便说下,带密码的形式,除了配对助记词,私钥也有相关标准(如BIP38) ),还有如以太坊系列常见的Keystore文件。
多签,可以理解为目标资金需要多个人签名授权才可以使用,多签很灵活,可以设置迷宫策略,比如3个人都有钥匙(助记词或私钥),需要满足至少2人的签名霓虹,目标资金才可以使用。每个区块链都会有自己的多签方案,比特币系列的很好理解,知名的比特币钱包都原生支持多签。不过坊坊以太系列的,主要通过智能合约来实现多方计算,如Gnosis Safe。另外,除了这些比较普遍的多方方案,还有一类正在流行的:MPC(Secure Multi-Party Computation),即安全多方计算,和传统多方计算体验接近,但原理然而很不一样,通过MPC,可以实现通用多标签,而不需要不同链不同的多标签方式。
SSS,Shamir 秘密共享方案,作用就是将种子分割为多个分片(常见的每个分片有 20 个单词),恢复钱包时,需要使用指定数量的分片才能恢复。具体参考最佳实践:
https://support.keyst.one/v/traditional-chinese/gao-ji-gong-neng/zhu-ji-ci/chuang-jian-dao-ru-fen-pian-zhu-ji-ci
https:// /wiki.trezor.io/Shamir_backup用了多标签、SSS这类方案,其实会放心很多,避免了单点风险,但管理上也相对复杂了,而且这很多时候会涉及到很多人。便捷与安全是永恒的矛盾,具体看自己。但在原则、原则上千万别偷懒。
加密
加密是个非常非常大的概念,无论便宜、非便宜还是其他什么高级的,只要加密了以后,多年以后,你或者你的灾备人可以很好解开,而其他人解不开的加密就是好加密。根据“零信任”这个安全法则,当我们在备份钱包时,每个环节都要假设可能会被入侵,其中物理环境,如保险箱。别忘了,这个世界除了你自己,并没有其他人是完全的可信的,其实有的时候自己也不可信,比如记忆可能会淡忘、错乱等。但我不会把这个世界假设的那么可怕,否则还是会把事情搞砸了。
备份时一定要特别考虑灾备。灾备主要就是要避免单点风险,万一你没了,万一你备份目标所在的环境没了,该怎么办?这么重要的东西,一定要听灾备人;重要的东西,一定要处备份。
现在,灾备人的选择我不会废话了,看你信任谁吧。我重点提多处备份。先看看备份位置的几个基本形态:
云
纸
设备
脑
云,很多人谈云备份色变,好像黑客真的就上天入地,来无影去无踪的。其实攻防对抗永远都是成本对抗,看谁投入的大,无论是人才还是钱。对我来说来说,我比较信任Google、Apple、微软等提供的相关云端服务,因为我知道他们的安全团队是如何实力,安全投入是如何之大。但除了对抗外部黑客入侵,我还很在意内部安全风控的能力及隐私数据保护有关的约束力。我比较信任的几个,都把这些我在意的安全风险规避得不错。但凡事绝无绝对。如果我选择这些云来备份我非常重要的数据(如钱包),我一定还会给钱包再做至少一次加密的。我强烈推荐掌握GPG,除了前面提到的“签名验证”用途之外,加解密方面的安全性也足够强了。关于GPG这块的入门可以参考:
https://www.ruanyifeng.com/blog/2013/07/gpg.html
好,你掌握了GPG:)现在你已经在离线安全环境下用GPG加密了你的钱包(助记词或私钥)相关内容,你可以把加密后的文件直接扔到这些云服务里,保存好,无力的。但这里我需要提醒下,你GPG的私钥别丢了、私钥密码别忘记了...
到这里,安全带来的麻烦似乎还没适应,GPG 好容易入门了,你还得备份好 GPG 的私钥及私钥密码。其实真到了这步了,你也熟悉了,再备份一下这些东西其实也麻烦了。这一点我不展开,进行实践出真知的你。
如果你想偷懒,还有一个方案是可以考虑的,只是安全性上会打点折扣,我不好具体减多少,但有时候有的情况下我也会偷懒,所以我会考虑用知名的工具全部辅助。这个工具就是1Password。1Password新版本已经支持直接保存钱包相关内容,如助记词、密码、钱包地址等,这方便用户。其实其他同类型工具(如Bitwarden)也可以,用起来就可以了不是这样方便。
纸,许多硬件钱包都附带几张质量上乘的纸配合,你可以将助记词(明文、SSS等形式的)抄写在上面。除了纸质的,还有钢板的(抗火抗水抗腐蚀,当然我没验证)。助记词抄写完成后,会做一次验证,没问题后,计算你觉得安全的位置,比如保险箱。其实我个人挺喜欢纸的,纸的环境不错的话,消耗远大于电子设备。
设备,各种吧,电子设备都是常用的一种,电脑、iPad、iPhone、移动硬盘、U盘等都可以拿一部分备份,看个人喜好。然后设备间的安全传输,让我比较有安全感叹的是:隔空投送(AirDrop)、USB等这类点对点又挺难出现中间人劫持的情况。只是我天然对电子设备不放心的一点是很多年后可能就坏了,所以每年至少会保存一次的检查习惯。有一些重复的做法(例如加密)参考云小点里的说法就行。
大脑,脑记很爽很刺激,其实每个人都有自己的“记忆宫殿”的,这个玩意不玄乎,可以训练,熟能生巧,加深记忆。有明显的东西确实还是脑记好,至于到底不是只唯一用脑记看你自己。同样注意两个风险:一是时间会使记忆淡忘或错乱;二是自己可能出意外。这块不多说了,请自行扩展。
现在你都备份好了。加密不能彻底分了,不然多年以后就等于“同归于尽”,因为到时候你可能自己都解不开。根据安全法则“持续验证”,不管过分的加密及备份方法,一定要做到定期不定期地验证,验证频率得看你的记忆,有时候转头可能就忘记了。验证不代表一定要完整解开看看,只要整个过程都不会错,采用部分验证也是如此可以的。最后,还需要注意验证过程的机密性及安全性。
好了,长舒一口气,其实是最难的,以上你都准备好了之后,我们就开始真正入门进入这个黑暗森林吧:)
使用钱包
当你创建并备份好钱包后,真正的巨大挑战才来了。除非你非常的佛系,不怎么折腾持有的价值资产,平时也不会去玩坊以太坊系列的 DeFi、NFT、GameFi 等智能签约相关的项目,或者说现在喜欢提的Web3。那么实际上你的资金是非常安全的。反洗钱
嗯,也只是“挺安全”,因为这里还是有风险的,所谓“人在家中坐、祸从天上来”。为什么这么说呢?你想呀,你最开始的加密货币是从哪里来的?那么在加密货币活动中,您获得的加密货币可能都可能遇到 AML(反洗钱)即反洗钱风控。 那么您现在持有的加密货币可能是不干净的,甚至如果不够倒霉,还可能存在被直接在链上冻结的情况,比如公开报告中 Tether 曾经在执法单位的要求下冻结了一些 USDT 资金。被冻结列表可以看这个:https://dune.xyz/phabc/usdt—禁止地址
验证是否被Tether冻结,可以在USDT合约地址进行:
https://etherscan.io/token/0xdac17f958d2ee523a2206206994597c13d831ec7#readContract
在isBlackListed输入目标钱包地址即可判断。USDT所在的其他链大体同理(别较真)。
但你的比特币、以太坊是不会出现链上冻结情况的,也许未来会出现这种情况,那本来非常坚定的去中心化信仰可能也消失了。我们现在经常听到的加密货币冻结实际上并不是发生在链上的,而是发生在中心化平台里,如中心化交易所(Binance、Coinbase等)。你的加密货币在这些中心化平台里,意味着你并并不是真正意义上持有这些加密货币,中心化平台冻结的其实是你的账号,尤其是你的交易、提币权限。冻结这个概念其实很容易对圈外人造成误解,从而出现一些很糟糕的自媒体胡乱解读及散播比特币的各种阴谋论。
虽然你的比特币、以太坊等不会在链上被冻结,但如果你的这些加密货币本身就涉及到相关执法单位在处理的案件,一旦你的加密货币转移进中心化平台,这些中心化平台的存在可能是因为 AML 等要求将你的加密货币冻结。
为了比较好地避免选择AML问题,需要口碑好的平台、等作为你的交易对手。个人别瞎搞基本问题不大。如果要深度地解决这些问题实际上也是有明显办法的,比如以太坊系列上,几乎所有坏人及特别是在意隐私的人都会选择龙卷风现金进行混币。更多的方法就不提了,因为这些方法实际上也被用来作恶。
冷钱包
冷钱包有很好的几种使用方法,对于钱包本身来说是不联网的,那么就可以认为是一个冷钱包。那么不联网如何使用? 首先,如果接收加密货币,问题不大,配合个观察钱包体验就已经挺不错了,比如imToken、Trust Wallet等都可以直接添加钱包地址,成为目标钱包地址对应冷钱包的观察钱包。如果冷钱包要发送加密货币,常见的方式有几种:
二维码
USB
蓝牙
这几种都需要专门的应用(这里称之:Light App)配置冷钱包使用,这个Light App是以太网的,包括前面提到的观察钱包。我们只要明白其中的本质原理就能明白这些方式了。本质上是:最终只需要把签名后的内容广播上链。我大概解析下一个过程:待签名的内容由Light App通过这些方式传输给冷钱包。
签名由拥有私钥的冷钱包搞定后再通过这些方式传输回Light App。
Light App将签名后的内容广播上链。
所以这里无论是二维码(QRCode)、USB、还是蓝牙(蓝牙)等方式,用途就是如上所说。当然不同的方式会有不同的细节,比如二维码信息容量是有限的,遇到签名数据很大的时候就需要拆分。这样使用似乎麻烦了一点,不过习惯了就好,甚至充满安全感。但是,千万别把安全感加满,因为这里还是有风险的,已经很多案例是因为这些风险而导致损失惨重。风险点如:
转币的目标地址没有严格检查,导致转币给了其他人。人都是有惯性或制动的,比如很多时候检查一个钱包地址主要就看开头、结尾几位是不正确的,而几乎没有完整于是坏人就激动了,专门用程序来跑出头尾几位同样的地址,然后通过一些手段把你的转币目标地址给替换为他控制的地址。
授权相关币种给了未知的地址,通常来说是授权以太系列智能合约代币的机制,就是那个批准函数,一个参数是授权给目标地址,另一个参数是数量。很多人不了解这个机制,那么就可以把无限数量的代币授权给目标地址,此时目标地址就有权限把这些代币转走。这就是所谓的授权盗币,手段还有其他变种,这里就先不扩展了。
看去一些不重要的签名,实际上藏着巨大的陷阱,这也先不展开,之后会有解析。
冷钱包可能并没有给你足够的必要信息展示,导致你大意了、误判了。
这一切都可以归结为两点:所见即所签此类用户出入境安全机制。
用户的相关背景知识。
热钱包
相比冷钱包风险,冷钱包有的热基本都会有,除此之外,热钱包多了个:助记词(或私钥)被盗。此时的热钱包要考虑的安全就多了,比如运行环境的安全,如果运行环境有相关病毒🦠,那么就存在被盗风险。还有热钱包如果存在某些漏洞,通过漏洞也可以直接盗走助记词。热钱包除了常规的转币功能之外,如果要与那些DApp(DeFi、NFT、GameFi等)交互,或者直接使用自带的浏览器访问,或者通过WalletConnect协议与PC浏览器打开的DApp交互。
注:本手册提到的DApp默认是指运行在以太坊系列区块链上的智能合约项目。
一般情况下,这样的交互是不会导致助记词被盗的,除非钱包安全设计本身就存在问题。从我们的安全审计及安全研究历史数据来看,存在钱包助记词被目标恶意页面JavaScript直接盗取的风险。但这种情况比较罕见,因为这实际上属于低级错误,钱包都不太可能会犯这种错误。
这里我最担心的问题实际上都不是以上这些,这些对我来说都是可控的(你也可以的),我最担心/担心的问题是:内部钱包的每次版本迭代是如何确保不会被入口物品代码或后门?这个问题言下之意很清楚:当前的钱包版本我验证了没有安全问题,我敢放心用,但我不知道下一个版本安全性如何,毕竟,我或者我的安全团队不可能需要那么多时间和精力来进行验证。
这里所说的恶意代码或后门造成的盗币事件已经好一阵子平静了,比如曾经的CoPay、近期的AToken等,具体事件可以自行搜索了解。
针对这种情况,作恶主要有几种方式:
钱包运行时,恶意代码将相关助记词直接备份到黑客控制的服务端里。
钱包运行时,当用户发起转账时,在钱包后台偷替换目标地址及金额等信息,此时用户很难感知。
破坏助记词生成有关的随机数熵值,让这些助记词比较容易被破解。
安全这东西,无知者无畏、知者敬畏,许多点是细思恐极的。所以对于存有重要资产的钱包,我的安全原则也简单:不做轻易更新,够用就好。DeFi安全到底是什么
当我们提到 DApp 时,可能是 DeFi、NFT 或 GameFi 等,这几个的安全性大多是相同的,但都有自身的特殊点。我们这里以 DeFi 为例先讲解下,当我们提到 DeFi 安全时,指到底是什么?实际上几乎都只看智能合约部分,似乎智能合约安全性已经不好了。其实并非如此。DeFi 安全至少包括以下几个部分:
智能合约安全
区块链基础安全
前端安全
通信安全
人性安全
安全金融
合规安全
智能合约安全智能合约安全确实是安全审计最重要的切入点,慢雾针对智能合约安全审计点可以参考:
https://www.slowmist.com/service-smart-contract-security-audit.html
对于高级玩家来说,如果智能合约部分本身安全性可控(无论是自己能安全审计还是读懂专业机构的安全审计报告),那么就无所谓其他部分的安全了。可控性是个可能存在差异的理解,有的得看玩家实力。也就是说智能合约权限过大的风险,玩家是有要求的,除非项目方本身实力足够及口碑良好,完全中心化也无所谓。但对于那些不太知名的、有争议的或者新出现的项目,如果你说这个项目的智能合约有权限过大的风险,尤其是这种权限还可能影响你的本金或者收益,你肯定就不愿意了。
权限过大这种风险是很微妙的,很多时候权限这个东西是方便项目方做相关治理及风险应对的。但对我们来说,这就是人性考量了,万一项目方作恶呢?于是开始有了折中的做法:增加时间锁(Timelock)来解决一些权限过大的风险,比如:
复合,这个老牌知名的 DeFi 项目,它核心的智能合约模块 Comptroller 及 Governance 的管理权限都加了 Timelock 机制: Comptroller
(0x3d9819210a31b4961b30ef54be2aed79b9c9cd3b)
Governance(0xc0da02939e1441f497fd74f78ce7decb17b665 29)
的管理地址是:
Timelock(0x6d903f6003cca6255d85cca4d3b5e5146dc33925)链上可以直接看到Timelock的时间锁(delay 参数)是48小时(172800秒):
也就是说,如果Compound的admin(项目方)需要变更目标智能合约的一些关键值时,则交易上链后会有记录,但必须等到48小时后才可以最终完成执行。这意味着,只要你愿意,你是可以审计管理员的每一次操作,你至少有48小时来反应。比如如果你不放心,你可以在48小时内把资金撤走。
还有一个项目方权限过大风险的做法是:将 admin 多签了,比如用 Gnosis Safe 进行多签管理,这样至少不会出现一言堂。这里需要注意的是,多签可以是“皇帝的新”衣”,比如一个人掌握了多把按键。所以目标项目的多签策略需要公示说明清楚,按键都由谁保管,按键的角色也一定是有口碑的。
这里需要特别注意,任何安全策略,都可能出现“皇帝的新衣”问题,表面上做得不错,实际上却不是,提出了一种关切安全感。再举个例子,时间锁这个玩意,看去好像项目完成,实际上出现过有的方部署的Timelock是有后门的情况。用户一般也不会直接去看Timelock源码,而且也不一定看得懂,于是就放了个后门那个,一时半还真不一定有人注意到。
除了权限过大风险,智能合约安全的其他内容也很关键,但理解地方政府还是挺高的,这里还没展开了,我的建议是这样的:至少可以先进学会阅读安全审计报告,熟能生巧。
区块链基础安全
区块链基础安全是指区块链本身的安全性,如:共识本账安全、虚拟机安全等。如果区块链本身安全性堪忧,其上运行的智能合约项目也可以直接喝西北风了选择一条拥有足够安全及购物中心的区块链,甚至大概率可以源远流长的区块链是多么重要。
前端安全
前端安全真是魔鬼,与用户走得太近了,特别容易让用户魔怔后上当受骗。可能大家主要的注意力都在自己的钱包上和目标项目的智能合约安全上,前端安全非常容易被骗值得注意。这里我再次强调,引入安全是魔鬼需要!我重点说说。
前端安全里我最关心的一点是:我怎么知道我在这个前端页面里的交互对象就是我想象的智能合约?
造成这种不安全感主要是因为以下这两种风险:
内部作恶
第三方作恶
内部作恶很好理解,比如开发人员偷偷将扩展页面里的目标智能合约地址替换为一个有后门的合约地址,或者直接接入授权钓鱼脚本。当你访问该扩展页面时,你钱包后续的一个系列涉及加密货币的操作都可能是在陷阱里完成的。神不知鬼不觉,币没了。第三方作恶,主要是指两种:
一种是供应链作恶,比如前端依赖的第三方模块被接入了后门,随着资源发布一起被直接带入目标前端页面了。如 SushiSwap(简单子举例,并不代表截图里的项目发生过)这个问题):
一种是前端页面引入的第三方远程JavaScript文件,如果这个JavaScript文件作恶或被黑,那么目标前端页面可能就会受到影响,如OpenSea(简单举例子,不代表截图里的项目就发生这个问题) ):
这里说可能会被影响是因为,如果项目方在前端页面引用以下面这样的方式来第三方远程JavaScript文件的话,就可能不会被影响:
<script src=” https://example.com/example-framework.js “integrity=”sha384-Li9vy3DqF8tnTXuiaAJuML3ky+er10rcgNR/VqsVpcw+ThHmYcwiB1pbOxEbzJr7″ crossorigin=”anonymous”></script>
这里的关键点是 HTML5 的一个不错的安全机制:标签里的完整性属性(SRI 机制),完整性支持 sha256, sha384, sha512,如果第三方 JavaScript 资源不满足完整性的哈希完整性校验,就不会加载,这个可以很好的防止非预期的代码执行。但是使用这个机制需要目标资源支持CORS响应。具体参考:https://developer.mozilla.org/zh-CN/docs/Web/Security/Subresource_Integrity
,等等为什么我前面又提了“可能”,是因为存在被绕行的情况。至于绕行方式我就不提了,因为大多数情况下,你只需关注目标前端页面在引入第三方远程JavaScript 文件时是否具有完整性。遗憾的是,OpenSea 没有,让我们祝福它。
通信安全
通信安全这部分,重点看HTTPS安全就好。第一个目标网站一定要HTTPS,界面允许存在HTTP明文传输的情况。HTTP明文传输其实太容易被中间人劫持攻击了,现在HTTPS这种安全传输协议已经非常普遍。如果 HTTPS 出现中间人劫持攻击,比如入口了恶意 JavaScript 代码到目标前端页面,此时浏览器必然会出现 HTTPS 证书错误的高显目提醒。举个例子,曾经是 MyEtherWallet 的坑。
MyEtherWallet曾经是个很流行的网页钱包,现在也挺知名,不过已经不仅仅是网页钱包了。我前面说过,网页钱包我非常不建议使用,除了前置安全的各种猫腻之外,还有可能出现HTTPS劫持的风险。
2018年4月24日,MyEtherWallet就出现了通过HTTPS劫持的重大安全事件,回顾可见:
Official statement regarding DNS spoofing of MyEtherWallet domain
byu/kvhnuke inMyEtherWallet[WARNING] MyEtherWallet.com highjacked on Google Public DNS
byu/MickySocaci inethereum当时黑客是通过BGP这个上古协议劫持了MyEtherWallet大量用户所用的DNS服务(Google Public DNS),这导致很多用户访问MyEtherWallet时,浏览器出现HTTPS错误证书的提醒。其实吧,遇到错误证书了原则,上就别继续访问了,但是因为这表示目标页面已经被劫持了。确实有很多用户不明白这个安全风险,顶多悬念下就忽略错误证书的继续强制访问了。
由于目标页面已经被劫持,黑客注入了恶意JavaScript代码,直接就盗走了目标用户在目标页面上的明文私钥,之后批量转走这些用户相关的加密货币(主要是ETH)。
这绝对是个经典案例,黑客为了盗币,动用了BGP劫持,真是杀鸡用了牛刀。之后也出现过几起类似的案例,这里就不提了。对于用户来说实际上只需要注意这里一点,当你确实使用网页钱包或玩相关DApp时,一定要注意:当目标页面出现HTTPS错误提醒证书时,就立即停止继续访问、关闭页面,那么你什么都不会了。
安全上有一个残酷的现实,是这样的:当已经出现风险时,就别给用户选择,一旦给了,俱乐部有用户要么以此原因会掉坑里。其实这里的项目方是需要肩负起的相关责任的,比如这个HTTPS劫持,其实已经有很好的安全解决方案了,项目方的开发人员只需配置好HSTS即可。HSTS全称HTTP Strict Transport Security,是浏览器支持的一个Web安全策略,如果打开这个配置,浏览器发现HTTPS证书错误后就会强制不让用户继续访问。明白什么意思了吧?
人性安全
人性安全这块很好理解,比如项目方内部作恶,这一点在前面已经提了一些内容,暂时不会过多展开。因为之后,这块还会专门展开讲讲。
安全金融
金融安全是一个非常需要令人敬畏的概念,放在 DeFi 上,涉及到金融的点,用户最关心的是币价、年化收益,一定要好,至少要稳定。简单来说就是,我作为用户,我玩这个 DeFi,我要赚钱。如果亏了,得让我心服口服。嗯,这也是人性。
这部分可能出现诟病的有:
不公平启动,比如预挖、老鼠仓。
巨鲸攻击,所谓的钞票能力。
黑庄,看谁跑得快。
市场黑天鹅,比如突然的大瀑布,还有比如目标 DeFi 与其他 DeFi/Token 套娃或互操作,这个时候木桶短板可能就决定于其他 DeFi/Token 了。
还有比较技术性的或者说科学家的手法,比如抢跑、三明治攻击、闪电贷攻击等一些。
合规安全合规安全是个非常大的话题,前面提到的 AML(反洗钱)只是其中一点,还有诸如 KYC(了解你的客户)、制裁地区限制、证券风险相关的内容等等。其实对于用户来说,这些不是我们可以对抗的,只能说当玩一个项目的时候,目标项目可能会受到某些国家的安全监管,因此可能会出现我们意向的隐私信息采集的问题。你可能不意如此隐私,但却有在意的人。
比如说,2022年初出现的一件小事:钱包支持地址所有权证明协议(AOPP)协议。
当我看下AOPP的协议设计时,原来支持了AOPP的钱包可能泄露用户隐私:监管机构有能力知道一个被监管的交易所和一个不知道的外部钱包之间的关联。参考:
https://gitlab.com/aopp/address-ownership-proof-protocol
怪不得许多隐私钱包重视这个反馈,纷纷删除了这个协议的支持。回复说:这个协议设计还真有趣。我注意到也有的钱包暂无计划删除对 AOPP 的支持,比如 EdgeWallet,他们的观点认为 AOPP 并没有暴露更多的用户隐私,并且可以让加密货币的流转提供更大的帮助,因为,如果用户无法证明一个外部钱包地址属于自己,那么一些被监管的交易所是允许用户提币到这个外部的钱包地址的。
刚开始的硬件钱包 Trezor 也没有删除 AOPP 的支持,后来在 Twitter 上向社区及用户压力做出了删除妥协。
你看,就这么小一点,实际上对于有的人来说是隐私大事。这里不是说要对抗监管,不管合规安全。其实在我的观点里,适当的合规安全退让是必要的这个话题继续不展开说了,按你舒适的方式去理解就行。
到这里,DeFi安全的主要部分的相关内容就介绍完了。
除了以上这些,还有未来的新增或更改而引入的安全问题,我们经常说“安全是动态的、不是静态的”,指的就是很多。比如现在项目方都有安全审计及漂亮的安全审计报告,但如果认真阅读质量不错的报告就会发现,这些报告会说明清楚,什么时间范围安全审计什么内容,内容的唯一标记是什么(比如链上开源验证后的地址或 GitHub 仓库的地址)提交地址,再或者目标代码文件的哈希值)。所以报告是静态的,如果你发现目标项目有不符合报告里的描述内容,就可以指出。
NFT安全
前面提的 DeFi 安全几乎内容都可以应用到 NFT 安全上,但 NFT 还有自己独特的安全点,比如:元数据安全
签名安全
元数据指的主要就是图片、动图等内容,关于元数据的具体标准建议可以参考OpenSea出的:https://docs.opensea.io/docs/metadata-standards
这里可能带来的安全问题主要有两点:
一个是图片(或动图)所在的URI是不可信的,比如随便的中心化服务,一方面突然,另外项目方随便改图片都行,那么NFT的数字藏品能力也消失了。一般都会使用IPFS、Arweave这些去中心化存储,以及使用知名的URI网关服务。
另一个问题是可能造成隐私泄露,简单的URI是可以收集用户的基本隐私的(如IP、User-Agent等)。
签名安全问题很严重,下面展开。小心签名!
签名安全是我特别需要提的,因为签名协议坑很多,已经发生了数起安全事件,尤其是围绕 NFT 的。但我注意到其实太多人还是无法很好解决这部分安全问题,究其原因在于很少有人把这部分安全问题讲清楚。签名安全里做饭的最大安全原则是:所见即所签。即你看到的内容就是你预期签名的内容,当你签名去发布后,结果就应该是你预期的,结果是事后拍断支撑的。
签名安全有关的一些内容在“冷钱包”部分有提到,印象不深的建议回顾下,这里重点讲讲不一样的内容。
OpenSea 在 2022 年前后出现过数起用户持有的知名 NFT 被盗事件,尤其是 2022 年 2 月 20 日集中爆发,根本原因在于:
用户在OpenSea授权了NFT(挂单)。
黑客钓鱼获取了用户的相关签名。
比较正确的可以读见这(不知为何下面这个链接已失效,Twitter账号也没有了):https://twitter.com/Nesotual/status/1495223117450551300
这个相关签名要获取其实并不难,黑客需要构造正确的待签名内容,哈希后,诱骗目标用户签名完成(这里是盲签,此时用户实际上不知道自己到底签名的内容是什么) ,黑客获取了签名后的内容,构造利用数据,完成利用。
我在这里拿其中一个NFT市场进行具体说明(不一定是OpenSea)。当目标用户在NFT市场里授权了相关的NFT挂单后,攻击者构造了正确的待签名内容,通过Keccak256后,在钓鱼页面上弹出待签名的内容给用户,此时用户看到的内容如下:
看,MetaMask 弹出的这个窗口,能看出什么?账户及余额、签名请求的来源网站、正在签名的消息,没了…就这一内容,用户一旦点击了“签名”怎么会想到自己之后,灾难就来了,自己的相关NFT就可以被盗走了。
这其实就是一个盲签,用户不需要在NFT市场里签名,就可以在任何网站(钓鱼网站)上签名被诱骗,而用户根本不知道这些签名的实际意义,可惜的是黑客知道。对于用户来说,只需牢记:拒绝盲签。OpenSea之前存在盲签情况,2022年2月20日后改进了,采用EIP-712进行了升级改进。即使不是盲签,但还是有用户会粗心大意。
会出现这种情况,最本质的原因还是要求签名不存在浏览器同源策略的约束,你可以简单理解为:同源策略为什么可以确保一个行为只在明确的域名下发生,不会跨域域发生,除非项目方谋求跨域的发生。如果有签名同源策略,则非目标域名产生的请求签名,用户即使签名完成了,黑客也无法将此签名用于目标域名下的攻击。这里不会继续展开说,协议级别的安全改进,我注意到新的修改,我希望这种情况能尽快得到改善。
目前前面提到的签名安全主题讲了主要方式,但变种其实挺多,无论如何,万变不离其宗。最好的吃透方式是自己从头到尾完整将攻击重复现,甚至首创一些独特的攻击方式。比如这里提到的签名,其实里面有很多细节,比如如何构造待签名内容、签名后的内容具体都是什么?除了批准这种授权方式,还有其他的吗(有,比如增加Allowance)。好吧,这里展开的事情就非常技术了。很好,你清楚签名的重要性了。
对于用户来说,取消授权(批准)可能是在源头对抗这类攻击的,你可以使用以下这些知名的工具来操作:
代币批准
https://etherscan.io/tokenapprovalchecker
是以太官方浏览器提供的授权检查及取消的工具,以太坊系列区块链基本都类似,因为他们的区块链浏览器都是基本Etherscan代为开发的,如:
https://bscscan.com/tokenapprovalchecker
https://hecoinfo.com/tokenapprovalchecker
https://polygonscan.com/tokenapprovalchecker
https://snowtrace.io/tokenapprovalchecker
https://cronoscan.com/tokenapprovalchecker撤销现金
https://revoke.cash/
老牌经典,支持多链,越来越强。Rabby 扩展钱包
https://rabby.io/
我们安全合作的比较多的钱包,他们的“授权检查及取消”功能支持的以太坊系列是我见过最多的…⚠️注意:如果你想对签名安全有更全面深入的了解,可以看我在下面这个仓库里的扩展补充:
https://github.com/evilcos/darkhandbook
我不得不承认,签名安全的知识点对于初学者来说是非常不友好的。这个仓库里汇总了很多相关内容,你可以自行翻阅,如果都看的话懂了,我相信这方面的安全知识不会再成为你的负担:)小心反常识签名!
尚未结束,我还想特别提一个风险:反常识风险。什么是反常识,比如你已经特别熟悉以太坊了,各种 DeFi、NFT 玩得小白们直呼你大佬。此时你去玩 Solana,同样也遇到了各种钓鱼网站,你可不畏惧,轻蔑一笑:“这些在以太坊系列生态里都麻了,我怎么可能上当?”
不好意思,黑客笑了,你确实就当了。因为出现了个反常识流程,人都是有惯性或不起作用,这导致你大意了,没有闪。
好,让我们来看看这个反常识的真实案例。
2022年3月5日,一个安全预警:Solana上的授权钓鱼描述多了,攻击者批量给用户空投NFT(图1),用户通过空投NFT内容里的链接(www_officialsolanares_net)进入目标网站,连接钱包(图2) ),点击页面上的“Mint”,出现批准提示框(图3)。注意,此时的批准提示框并没有什么特别提示,当批准后,该钱包里的所有SOL都会被转走。
当点击“批准”时,用户会与攻击者实施恶意合约行为: 3VtjHnDuDD1QreJiYNziDsdkeALMT6b2F9j3AXdL4q8v
恶意合约的功能最终就是发起“SOL转移”,将用户的SOL几乎全部转走。从链上信息来看,该钓鱼行为已经持续了几天,中招者在不断增加。
这里面有两个坑,需要注意的:
恶意合约在用户批准(Approve)后,可以转走用户的婚姻资产(这里是SOL),表明在以太坊上是不可能的以太,坊的授权钓鱼钓鱼不走走坊的婚姻资产(ETH) ,但可以钓走其上的Token。那么这里就存在“常识破坏”现象,导致用户容易掉心。
Solana最知名的钱包Phantom在“所见即所签”安全机制上存在缺陷(其他钱包未测试),没有给用户确定的风险提醒。这非常容易造成安全盲区,导致用户丢币。
一些高级攻击方式
高级攻击方式其实真的很多,主要在视角大众下无非就是:我被钓鱼了。但是钓鱼可真高级了,比如:Found out the likely root cause for the exploit, it's a targeted social engineering attack. Received a spear-phishing email that really seems to be sent by one of our portco with content that seems like general industry-relevant content.
They are likely targeting all crypto peep pic.twitter.com/SegYBcoLX2
— Arthur (@Arthur_0x) March 22, 2022
黑客通过邮件发送钓鱼,邮件里附带的文档是:
稳定币的巨大风险(受保护).docx
这确实是一份很有价值的文档…但这份文档打开后电脑就可能被侵入木马(一般通过 Office 宏脚本方式或 0day/1day),此类木马一般都会包括以下常规功能:
各种资源采集,如浏览器的,SSH相关的等,这样黑客就用户可以把触手伸向目标的其他服务。所以中毒后,一般都会建议用户不仅目标设备清理干净,相关账号权限该改的都需要及时更改。
键盘记录,尤其收集那些临时出现的敏感内容,如密码等。
相关截屏、敏感文件采集等。
如果是勒索病毒,进一步的就是将目标设备上的文件都高强度加密了,等待受害者来支付赎金,一般是支付比特币。但这里不是勒索病毒,毕竟勒索病毒的动作很简单了,意思直接粗暴。
另外,针对加密货币行业的木马还将进行特别的利用定制,如采集钱包、交易所的敏感信息,以实施盗币。上面提到的木马,根据专业的分析可以发现存在针对 MetaMask 的特别攻击:木马撕下用户的MetaMask替换为一个有后门的MetaMask,一个有后门的MetaMask就意味着你在其中使用的加密货币就不是你的了。即使你配硬件钱包,这个有后门的MetaMask也可能通过篡改目标地址、金额的方式来实施盗币。
这种攻击方式是专门针对财富外露的人士。我注意到的现象是,有些知名人士过于慢傲,被黑则迟早的事了。一般被黑后,许多人会从中痛定思痛、全面复述、全面改进,并与信得过的专业安全或机构保持长期的合作及友谊。但是,这个世界永远存在例外,有的人或项目方被黑一次,还会有第二、第三次。说是天将降大任于斯人也,每次被黑都真的是遇到了对手,那么这个人或项目方,我会非常尊敬,并称为先驱,而且大概率之后也能发展起来。遗憾的是,许多人被黑是因为低级问题,而且可以举一反三的,这真的是不可理解的。这种人或项目方显然会远离。
那种广撒网的钓鱼攻击,其实手法就一般了,无非就是准备了一组域名相近的钓鱼网站,Twitter等社交平台买号散播,热点及技巧拿捏得好,中招也是引人注目的。种钓鱼没什么特别的,一般就是粗暴的让用户的钱包授权相关代币(包括NFT),被盗然后走。
还有一些高级攻击,如结合 XSS、CSRF、反向代理等技巧来让整个攻击更加丝滑不止。没法都展开,这里可以专门说其中一个非常细节的利用点(Cloudflare 中间人攻击),属于反向代理(反向代理)涉及的场景,这个利用点已经发生过真实的盗币攻击,且非常的星巴克。
这里的问题不是Cloudflare本身作恶或被入侵的问题,而且项目方用了Cloudflare,项目方的账号权限被盗后的问题。大体过程是这样的,如果你的网站用了Cloudflare服务,在管理后台可以注意到Workers这个功能模块,这个Workers官方说法是:
构建无服务器应用程序并在全球范围内即时部署,从而获得卓越的性能、可靠性和规模性。具体参考:https: //developers.cloudflare.com/workers/
我很早就做了一个测试页面:
你访问后会有一个弹窗,内容是:
xssor.io,被 Cloudflare 劫持。
实际上这个弹窗,甚至整个 x.html 内容都不是这个文件本身的,全部都是 Cloudflare 提供的,原理见下图:
截图里的代码很简单:如果我是黑客,我控制了你的 Cloudflare 账号,我就可以利用 Workers 特性,向任何页面注入任何恶意脚本。但此时用户很难意识到目标页面被这样偷盗劫持篡改了,目标页面不会有任何错误提示(比如HTTPS证书错误),甚至项目方也一时半会意识不到这个地方会出问题,可能花大量的时间排查服务器、人员等安全。等认识到这一点,损失就太大了。
Cloudflare 其实很好,很多网站或 Web 服务都会使用 Cloudflare 来做 Web 防火墙、对抗 DDoS 攻击、全球 CDN 加速、反向代理等场景,由于有免费版本,所以用户众多,类似 Cloudflare 的,还有 Akamai 等服务。
用户一定要注意自己的这类账号的安全性,账号安全问题从互联网流行开始,全球随时随处都在谈,好像也要炸。但没办法,确实太多人还会因为安全而被黑比如说针对重要服务的密码不是唯一使用的强密码(1Password之类密码安全管理软件普及率其实还是很堪忧的),再比如双主角(2FA)懒得开启、甚至不知道有这个玩意、不知道该该如何使用。更别提针对一些服务,每年至少要重置下密码吧。
好,一点高级的攻击手法就先介绍这些。对于你来说,很简单就明白这确实是一个黑暗森林,但凡是有可能就多了解了解各种五花八门的攻击手法。见多后,甚至自己踩过几个坑,你至少也可以成为一名非职业网络安全人员了(这样的一种身份多好,技多不压身)。
传统隐私保护
顺利,你学习到这里了。传统隐私保护老生常谈了,2014年我就写过一篇:隐私大爆炸,你得学几招保护自己
https://evilcos.me/yinsi.html看完这篇文章,建议大多数都没有过时,我建议你消化下,很快,毕竟今年这篇属于特殊入门类型的。 下面我将开始新的介绍。 隐私保护实际上和安全息息相关,在这你也可以认为是你的安全保护、保护的是什么?当然是你的隐私,私钥什么属于隐私的一种。另外,别认为这是传统不重视的,传统的这些才是基石,基石都没有安全了,基石的隐私都没有了,上层建筑清晰的空中楼阁,危如卵,脆弱不堪了。
这里有一个资源是我非常推荐的:
一个是:
确保在线通信更安全的监控自卫
技巧、工具和操作方法
https://ssd.eff.org/SSD(SURVEILLANCE SELF-DEFENSE)即监视自卫,由非常知名的电子前沿基金会(EFF)发起,专门发行相关指南来告诉你,在监视/监控外围的互联网世界里,如何察觉老大哥(大哥)兄弟)看着你。其中包括一些有用的工具(比如 Tor、WhatsApp、Signal、PGP 等)。
另一个是:
隐私指南:使用加密和隐私工具对抗监视
https://www.privacytools.io/这个网站是专门罗列相关工具的,已经很全面了。看到了没?还推荐了加密货币交易所、钱包等。注意,网站里罗列的工具其实很明显我都不怎么用,主要是我有树立自己的方式,你也应该逐步形成你自己的方式,不断对比、不断完善。
这里我重点提一下我觉得无论如何你都必须掌握或使用工具。
操作系统
Windows 10(及以上版本)和macOS的安全性都挺让人满意了,你选择哪个都行。你能驾驭好,用Linux也是你的自由,比如Ubuntu,或如Tails、Whonix这些隐私及安全变态的操作系统也行。操作系统方面最容易上手的安全原则是:重视系统安全更新,有安全更新就立即行动。才是一些驾驭技能的掌握,很多人说Windows、Mac电脑还需要学习什么驾驭技能?点来点去对于安全小白来说,安装个杀毒软件是绝对的标配,比如卡巴斯基、BitDefender 这样口碑很好的,Mac 上也有。
带着记住下载的安全原则,前面有提。不乱下程序其实已经杜绝了总体风险了。
然后可以思考下,如果你这台电脑丢了、被偷了怎么办?电脑上一个开机密码是不够的,如果磁盘没加密保护,坏人把磁盘拆下来,将里面的资料拿走就行了。当我建议重要的电脑设置良好的磁盘加密保护时。参考:
https://docs.microsoft.com/zh-cn/windows/security/encryption-data-protection
https://support.apple.com/zh-cn/HT204837还有 VeraCrypt 这个磁盘加密神器,曾经是 TrueCrypt,非常传奇,非常强大。如果你感兴趣可以了解并适应下:
更进一步的是启用BIOS或固定密码,这一点看你自己,原来我是这样了。不过一定要牢记相关密码,不然可能神仙也救不了你了。这个坑我很荣幸踩过,现在思来插座,浪费了一台笔记本电脑的尖端、加密货币、一周的时间,但积累了宝贵的踩坑经验。
手机
主要手机呢iPhone、安卓系列,没了,比如曾经我最爱的黑莓,被时代淘汰了。安卓以前的安全性很堪忧,一方面是发展早期,另一方面是版本太多碎片,不同手机品牌有自己的分叉版本。现在安全性逐渐好起来。手机方面同样要重视系统的安全更新及下载的安全原则,并且注意下面这几点:
不要越狱、Root破解,除非你玩安全研究,否则没必要。如果是为了盗版软件如此,香不香得看你的驾驭能力。
不要从非官方市场下载的App,还是那句话,除非你能驾驭它。而且即使从官方市场下载的App也存在虚假的,注意辨别。
官方的云同步使用的前提是:账号安全方面你相信没问题,否则云端被控,手机太麻烦了。
手机方面,我个人会更依赖iPhone。同时准备至少两个iCloud账号,一个中国区、一个海外区,安装不同区域限制的App使用(挺奇怪,但这就是现实)。网络
网络方面的安全问题曾经是烂透了,这几年逐步好起来了,尤其是HTTPS无处不在策略普及了之后。如果真的发生了网络劫持(中间人攻击),那么系统会有相应的错误反馈。凡事都有例外,所以选择网络方面,能有安全的当然选择安全的。比如不乱连陌生的Wi-Fi,尤其是4G/5G这种安全性高的网络如此普及的情况下,除非信号不好,着急使用。如果你有安全倾向,你非常重要敏感的设备是可以考虑独立网络的。选择口碑好的路由器、运营商,贪图小便宜,并祈祷路由器、运营商方面不会有高级作恶行为出现。
浏览器
浏览器方面流行的主要就是Chrome、Firefox了,加密货币行业还有人会用Brave,也行。金字塔高的,团队强大的,安全更新也及时比较。浏览器安全话题话题太广泛了,对你来说,你只要注意这几点就好:有更新就及时更新,千万别吝惜。
扩展如无需安装,安装也要看清楚口碑、用户规模、背后是哪家知名公司维护的,并显然扩展申请的权限,还有扩展必须来自浏览器自己的应用商城。
浏览器可以多个共存,强烈建议:重要的操作在其中一个浏览器中进行,而其他常规、不重要的操作都可以在另一个浏览器中进行。
一些隐私保护的知名扩展(如uBlock Origin、HTTPS Everywhere、ClearURLs等),看你个人喜好。
Firefox 上我还会用 NoScript 这个上古扩展神器,NoScript 可以很好对抗 JavaScript 作恶情况,当年威震四方。现在的浏览器越来越多了,同源安全策略、CSP 安全策略、Cookie 安全策略、HTTP安全响应头策略、安全扩展策略等等,浏览器现在的安全高度确实是不可同日而语。NoScript这种安全扩展被使用的空间也越来越小了,感兴趣的可以自行了解。密码管理器
如果你还没有用密码管理器,或者就是你不知道用上之后的安全快感,或者就是有自己强大的记忆宫殿。记脑风险前面也说过,一是时间会让记忆淡忘或错乱;二是自己可能出意外。无论如何,我还是推荐你使用密码管理器来搭配你的大脑记,知名的如:1Password、Bitwarden 等。我不需要太多的教程讲解这部分的内容,相关的内容太泛滥了,甚至都不需要教程也很容易上手。我需要提醒:
千万别忘记你的主密码,且主密码相关账号信息别被盗了,否则一窝端。
千万千万确保你的邮箱安全,如果你的邮箱被盗,虽然这不会让你的密码管理器里的敏感内容泄露,但坏人有能力了解这些。
我曾验证过我提到的工具(如1Password)的安全性,并一直关注其出现的安全事件、口碑、动态等,我并无法确保这些工具拥有绝对高度的安全性,尤其无法确保未来他们不会出现什么黑天鹅事件。
有一点我是很欣赏的,比如1Password的安全页面有关介绍和说明:https://1password.com/zh-cn/security/
其中包括安全设计理念、隐私及安全的相关权威认证、安全设计白皮书、安全审计报告等内容。这些内容的透明公开也是方便必要进行的验证。这一点是非常值得项目方学习的。
Bitwarden 做了更彻底的事情,是全开源的,包括服务端,任何人都可以去验证、审计、贡献。
你发现没?1Password、Bitwarden 这样做的意思很明显:
我很安全很在意隐私,不只是我自己说的,第三方权威也说了,你们也可以来验证,甚至为了方便你们验证,我耗费了巨大的精力把能透明化的内容都透明了。如果我说没做到的,你很容易来挑战我。
这叫什么?这叫安全自信:)
双因素认证
在互联网上的身份安全,第一层靠的是密码,第二层靠双成分,第三层靠的是目标项目本身的风控能力。我不能说双成分都是标配,比如你在用的去中心化钱包里,有分层密码就够了(现在基本都配人脸、指纹这类生物识别来提高体验),双重要就行了。但在中心化平台里,没有双重要可不行。因为中心化平台任何人都可以访问或有能力访问,你的密码被盗了,意味着你的账号权限失守,资金也消失了。而你的去中心化钱包,密码只是发生在本地的认证,黑客即使拿到了这个密码,也需要有能力接触到你这个钱包所在的设备。好,知名的双身份认证(2FA)工具有:Google Authenticator、Microsoft Authenticator 等,当然如果你用密码管理器(如1Password)也自带了2FA功能的,非常方便。无论如何都记得完好备份,因为丢失2FA是一件很麻烦的事。
另外,双成分认证也可以是个广义概念,比如账号、密码登录目标平台时,我们的账号一般是邮箱或手机号。此时邮箱或手机号通过收到验证码的方式来进行第二步认证,这也可以认为这是一种双身份认证方式。只是方式安全性没那么好,比如邮箱被黑了或者手机的SIM卡被劫持了,再或者现在发送邮箱、短信的第三方服务被黑了,那么平台发送的验证码被一览无余。
科学上网
这块出于政策原因,简单说一下,自己的几个对比。有知名企业肯定有能力自建,这样安全可控,毕竟我们的出发点还真是科学上网、安全上网。如果不是自建,难保出现不会中间人攻击。前面说过,现在网络环境确实没以前那么糟糕,尤其是HTTPS无处不在策略普及了以后。但有些平静可能只是水面,水面之下无数暗流涌动不易被认识。所以这块我并没有特别好的安全建议,自建有基础设施,但值得,根本没有,一定是多方确认,选择一种存在已久、口碑良好的品牌。
邮箱
邮箱是真正重要的网络基础身份,我们会用邮箱注册一大堆服务,我们用的邮箱几乎都是免费的,似乎如空气一般,你觉得它应该不会消失。如果哪天,它消失了?现在依赖这个邮箱的这一大堆服务就尴尬了。极端情况真不是不会发生,比如因为战争、天灾等。当然如果是这些极端情况发生,对你来说除了生存其他也没有那么重要了。邮箱方面,必然是选择聚会的,如Gmail、Outlook、QQ邮箱等。正好我曾经的安全研究方向有这部分,对你来说,这些邮箱安全性足矣。但无论何时你都要小心邮箱里的钓鱼攻击。不是每封邮件都需要搭理,尤其是邮件里给的链接、附件文件,病毒木马可能就藏匿在其中。
如果你遇到针对邮箱的高级攻击,那只能自求多福。
除了这些工会的邮箱服务之外,如果你很在意隐私,其他口碑不错的隐私邮箱,你可以了解了解:ProtonMail 与 Tutanota。我的建议是隐私邮箱就拿来隔离做需要特别在意隐私的服务注册,并且注意下活跃频率,长时间不活跃,免费邮箱可能也会恢复了。
卡
SIM卡,手机号很多时候同邮箱一样也是很重要的基础。这些年我们国家的几大身份运营商对手机号的安全保护做的还是很不错的,比如注销、重办SIM卡是有严格的安全认证流程,这些都发生在营业厅里。SIM卡攻击这块,我举了个案例:2019.5,有人的Coinbase账号遭遇了SIM端口攻击(SIM卡转移攻击),损失了超过10万种的加密货币,很惨痛。攻击过程大概是:
攻击者通过社会工程学等手段获取了目标用户的隐私,并到运营商窃取了一张新的SIM卡,然后通过同样的手机号轻松搞定目标用户在Coinbase上的权限。SIM都被转移了,这很麻烦了,基本上说我们很多在线服务都是通过手机号进行二次验证或直接身份验证,这是一个非常集中化的认证方式,手机号攻击成为了缺陷。
详细分析可以参考:
这块的防御建议其实也简单,启用的2FA工具。
SIM卡还有个风险,就是如果手机丢了或者被盗了,SIM卡被掏出来使用就尴尬了。我的做法可以供大家参考:我的SIM卡设置了密码(PIN码),每次开机或者重新使用SIM卡都需要输入正确的密码才可以。具体攻略请自行查询。只是提醒:别忘记了这个密码,不然麻烦,耽误事。
GPG
这部分的许多知识点在前面的文中都提到过,不过这里再普及一下小概念,以方便日后理解:偶尔会遇到 PGP、OpenPGP 及 GPG 这偶尔会看到类似的叫法,简单这样去区分下:
PGP 是 Pretty Good Privacy 的缩写,是加密软件,发布了 30 多年了,现在在赛门铁克麾下。
OpenPGP是一种加密标准,源自PGP。
GPG,全称GnuPG,基于OpenPGP标准的开源加密软件。
这几个底层都类似,用GPG就可以兼容其他的。这里我再次强烈建议:别整那么多有的没的,安全加密这块,用好GPG绝对可以大力提升安全感!隔离环境
专门强调隔离环境这个安全原则,本质上就是要具备零信任安全法则思维。你一定要相信:我们这些人即使再强大,被黑也是迟早的事,无论是被外部人、内部人还是自己。当被黑很多的时候,止损是第一步。止损能力被很多人忽视了,因此可能因为一次被黑而逐渐被黑。究其本质就是因为安全设计不存在的,尤其是隔离这种肌肤粗暴的安全原则。一个良好的隔离习惯,当被黑时,损失的只是被黑目标的那些隐私,而不会危及到其他隐私。比如:
如果你的密码安全习惯可以,当你其中一个账号被黑时,同样的密码就不会危及到其他账号。
如果你的加密货币不仅仅在下面一个助记词,万一踩坑,你也不会归零重启。
你的电脑中毒了,好在这是一台专门拿来浪的电脑,里面并没有多少隐私,那你也不会慌,重装可以解决大部分的问题。如果你善于使用虚拟机,那就更好了,直接恢复快照就行不错。的虚拟机工具有:VMware、Parallels。
前面提到的许多,你都可以至少有两个账号、两个工具、简化设备等等,你以后熟悉完全建立一个独立的虚拟身份也不一定。
我假设有一个比较极端的观点:隐私不是受保护的,隐私是受控制的。提出这个观点的原因是:在现行的互联网环境下,隐私实际上已经泄露得不可能。好在这些年隐私有关的法案越来越普及,大家也越来越重视,因为一切确实都会往好的方向发展但在此之前,无论如何,当你掌握了我罗列的这些知识点,你就有能力将你的隐私游刃有余地控制着。在互联网上你如果习惯了,你几乎独立的虚拟身份可能会有好几个。
人性安全
至此,人才是最大且永恒的风险。《三体》里有句话:“弱小和无知不是生存的障碍,傲慢才是。”傲慢:如果你觉得自己已经很肥胖,你自己得瑟就好,不必关注一切,尤其是傲慢可以挑战全球黑客们的境地。学无止境、坑无止境。
贪心:贪确实是很多时候的前进动力,但要琢磨下,别凭什么好机会毁了你?是你很帅,还是说话好听?:)
另一个说法:爆炸是魔鬼,处处遇陷阱,没有把握的冲就是赌。
还有一堆人性有关的点,说也说不完,而且关键是我自己也有明显的问题。只能说战战兢兢、如履薄冰了。下面重点讲几个需要特别注意的点,都是与人性这些缺陷有关的,坏人利用一些平台的便利性来将人性玩弄得死掉的。电报
之前我说过 Telegram 是最大的暗网了。不得不先说 Telegram 太强,安全、稳定、足够的开放性设计得到了太多人的喜欢。但 Telegram 的文化土壤也让坏人很喜欢:Telegram太好用了,用户基数足够大,功能开放性足够好,非常方便定制各类Bot服务,结合加密货币可以让许多交易体验超越Tor网络里的那些暗网市场。而且上面的鱼儿太多了。社交账号的唯一字段基本都是类似什么用户名或者XX号之类的,其他都可以被坏人完全复用。有的社交平台有账号认证机制,比如加蓝V什么的。开放的社交还可以通过指标来看不是真账号,比如关注情况、发布的内容情况、内容互动的一些情况等。封闭了一些社交认知上麻烦一些,但类似Telegram这种在哪些群组引入了共同的功能是相当不错的。
人性是这样的,但凡有空子可以被钻,收益可观,一定有一批坏人来钻。
所以社交平台上充斥着钓鱼陷阱,比如你在一个群里聊着聊着,突然冒出个看去就像官方的客服私聊你(嗯,任何私聊都是 Telegram 的机制,并不需要加好友),然后拿出杀猪盘经典话术,有人就跟进上钩了……
进一步的话,直接拉你进入另一个群,里面的人除了你,其他都是仿冒的。但你一看就觉得特别真实。黑产里的群克隆技术指的就是这种。
这些都是初级的人性利用,高级点的就能利用漏洞来利用,更是难防。
不和谐
Discord 是这两年流行起来的新型社交平台,聊天、组队这些基本功能都有,最核心的功能是一个独立的社区服务器(不是传统理解的那种服务器),如官方说法:Discord 致力于打造一个您与您的朋友、家人及社区交谈和闲逛的地方。在 Discord 上有数百万不同的社区,从老朋友组成的小群体到成千上万的人通过共同的兴趣连接一起的大型服务器。
看起来去美好,但实际上安全设计挑战也很大的,官方也很努力,有专门的安全规则及政策说明:
遗憾的是,很多人不会仔细阅读的。另外,官方也不一定能把一些核心安全问题说清楚,因为有的安全问题必须站在攻击者的角度才能点透。
下面点出其中一点。
Discord 上发生了这么多起 NFT 被盗案,请问其中的攻击技术要点是什么?如果这些都安全搞清楚,一堆 Discord 建议用处都不是大。
引人注目的项目方的 Discord 服务器被搞的技术要点是所谓的 Discord Token,实际上这个玩意是 HTTP 类似请求头里的授权字段内容。这个玩意在 Discord 中非常早就存在了,对于黑客来说,只要想就可以了拿到了这个Discord Token,就可以几乎控制目标的Discord权限了,既然,如果目标完全是管理员、有管理权限的人或机器人(Bot),那么黑客就可以利用这些特权来作恶了。
比如说,发布NFT钓鱼网站,大家看看:官方发的公告,于是就一股脑儿冲进钓鱼网站了……
有人可能要问,我习惯的 Discord 账号增加双账号(2FA)认证 OK 吗?绝对好!但应对这个攻击是不行的!Discord Token 无视你是否开启了 2FA。如果你中招过,你应该立即更改Discord 密码,这样 Discord Token 就会刷新变化了。
至于黑客是如何拿到这个Discord Token的,我们已经摸清楚至少三大手法了,后面找机会写清楚。对于普通用户来说,防御建议其实挺多的,核心要点是:不急不贪、多方验证。
来自“官方”的钓鱼
坏人真的善于借势搞事,尤其是借官方的势。能仿冒就仿冒很像,如上面提过的客服。还有如2022.4假出头,Trezor携带知名的硬件钱包的许多用户就来自 trezor.us 的收到钓鱼邮件,实际上 trezor.us 并不是 Trezor 官方域名。Trezor 官方域名只是 trezor.io。域名后缀不一样。另外的钓鱼邮件里传播了如下域名:这个域名是有“亮点”的,仔细看那个ẹ不是英文字母e。非常的迷惑性,实际上就是Punycode,标准说明是这样的:
A Bootstring encoding of Unicode for Internationalized Domain Names in applications (IDNA) 匡国际化域名编码,可以表示 Unicode 码和 ASCII 码的有限字符集。
如果把trẹzor解开后的样子是这样的:xn--trzor-o51b,这才是真身!
Punycode这种钓鱼方式,几年前就已经真实使用了,比如2018年时,安币的一些用户就中招过。
这种域名看很像的钓鱼就可以让很多人上当,更别提更高级的攻击方式,比如一些官方邮箱被去控制,还有一种用户邮箱SPF配置问题导致的邮件格式攻击。在用户眼里看到的邮件来源是一模一样的官方特征。
如果是内部人作恶,那用户就自求多福了。项目方内部的安全风控一定要特别重视人员安全,这永远是最值得花成本、花精力去建设的。人是最大的那只特洛伊木马,最容易被人忽视。有的人安全意识差得太远,在安全上又不思进取。这种人,谁招谁倒霉。
Web3 隐私问题
随着Web3的流行,越来越多有趣或无聊的项目出现,如各种Web3基础设施、社交平台等。设施基础已经做了海量的数据分析,一不小心就发现感兴趣的目标的各种行为画像,不仅是各个区块链上的,还有Web2那些知名平台上的。画像一出,目标基本就属于透明人。而Web3社交平台的出现也可能加剧此类隐私问题。想一想,当你把这些Web3相关的各种玩法都玩一遍,比如签名绑定、链上交互各种等,你的隐私有没有泄露更多?很多人以为不会,但其实有很多碎片拼在一起实际上可以产出更全面的画像:你喜欢收藏了哪些 NFT、你加入了哪些社群、你在哪些白名单里、你和谁建立了关联、你绑定了哪些 Web2 账号、你活跃在什么时间段等等等。看吧,区块链有时会让隐私变得更严重。如果你关心隐私,那么需要认真对待一切新事物,并保持隔离身份的好习惯。
此时,如果不小心私钥被盗,损失已经不是资金那么简单的了,是所有提到的维系的Web3权益。我们常说的私钥即身份,现在看来真的是身份了。
人性安全部分就先到这,不继续展开了,你举了一反三。
永远不要去考验人性。
区块链作恶方式
区块链技术的出现催生了我们现在的区块链行业,无论你如何称呼这个行业,链圈、币圈、区块链、加密货币、虚拟货币、数字货币、加密货币、Web3等等,一切的核心几乎都还是围绕区块链。最热闹的都与金融活动有关,比如币这个玩意,包括非同质化代币(NFT,也叫数字藏品)。这个行业有超凡的活力与吸引力,但存在太多的作恶方式。由于区块链的一些独特性,也出现了一些比较独特的作恶方式。这些作恶方式的主体包括:盗币、恶意挖矿、勒索病毒、暗网交易、木马的C2中转、洗钱、资金盘、博彩等等。2019.1,我做了一个思维导图可做参考:
https://github.com/slowmist/Knowledge-Base/blob/master/mindmaps/evil_blockchain.png
同时,我们不断在更新维护的慢雾黑客区块链被黑档案库,大量的案例索引,记笔历史印记:
本手册提了许多安全点,如果你能消化成自己的,那么真是恭喜你。至于这些五花八门的作恶方式,我还没准备好展开了,如果你感兴趣,你应该自己学会扩展。多了解绝对是好事,更何况新型作恶手段总是层出不穷,变种不断。你的一些能力越来越大,我也希望你能参与进来让这个行业更好。
被盗了怎么办
上面说被黑是迟早的。那么当被黑时,甚至加密货币被盗时该怎么办?我就简单地直切主题。以下步骤不一定完全这个顺序,有的时候是来回穿梭的,但大体是这样的。止损第一
止损就是让损失不要放大了。这分为两个阶段:眼前的绝对是当务之急的,比如你都看到黑客正在转移你的资产,你还想抢吗?赶紧跑抢着把剩下的资产安全转移呀。有交易抢跑经验的,就抢看资产类型,如果是那种可以链上冻结的,就需要联系冻结。有能力做链上追踪分析的发现资金转移进中心化平台,就可以联系做必要的风控。
基质控制后阶段。 基质稳定住后,重点要琢磨的是如何不会出现二次、三次伤害。
保护好现场
发觉出事了,千万紧张,深呼吸三次后,一定要保护好相关现场。有几个经验提供参考:针对电脑、服务器这类以太网设备,一旦这些是污染主机,立即断网,但不关机(电源供电持续)。有人说如果是破坏性病毒,不关机的话,本地系统的文件就都被病毒破坏了。你说的很对,如果你的反应能快过病毒的话…
除非你自己有能力,否则等待专业安全人员介入取证分析。
这一点很关键,我们遇到的严重情况是:当我们介入做分析时,现场已经乱七八糟了,甚至关键证据(如日志、病毒文件)都出现被清理干净的情况。没有保存良好的案例发现场,对后续的分析与追踪源产生极大的干扰。分析原因
分析原因的目的是了解对手,输出黑客画像。这个时候事故报告就非常重要,也叫验尸报告(验尸报告),当然国内把验尸报告翻译为验尸报告怪怪的,我们喊事故报告就行。我们遇到很多人被盗币后,来咨询我们怎么办,很纠结的是,人们无法表达申诉,更无法说出申诉的事故报告。但我觉得表达是可以练习或依葫芦画瓢出来的的。比如至少把以下几点说明下:
概要1:什么人、什么时间、发生了什么事、总共损失了多少?
概要2:损失涉及钱包地址、黑客钱包地址、币种类型、数量,一个表格就比较清晰了。
过程描述:这才是最难的,这里需要把这个事故过程的方方面面细节点描述出来,这甚至会分析出黑客有关的各种痕迹,输出最终黑客画像(其中包括作恶动机)
我们具体在对接时,模板会复杂的多,循序渐进的。有时候人的记忆也会出现问题,甚至出现刻意忽略关键信息导致浪费时间或者耽误了绝佳时机。所以在实际对接中,消耗真的很大,我们需要用我们的经验去做好引导工作。最终和丢币的人或项目方一起出具事故报告,并不断更新事故报告。追踪溯源
根据罗卡法则:凡有入侵、必留痕迹。我们只要用心查,总会有发现。这个查的过程实际上就是取证分析、追踪溯源了。我们会根据取证分析出来的黑客画像进行追踪溯源,并不断出现这个黑客肖像,这是一个动态、反复的过程。追踪溯源包含两大部分:
链上情报:针对钱包地址分析资金走向,比如进了中心化交易所、混币平台等,监测预警新的转向。
链下情报:这部分的情报包括:黑客的IP、设备信息、邮箱及这几点关联碰撞出来的更丰富的信息,其中包括行为信息。
根据这些情报开展的追踪溯源工作就非常多了,甚至需要执法单位的介入。结案
当然我们都希望有一个好的结局,历史上披露的公共事件中我们重点参与的并且有好的结局的,举几个例子:Lendf.Me,价值2500万说法
SIL Finance,价值1215万比喻
保利网络,价值 6.1 亿概念
我们亲历的许多还有未公布的好结局、还行的结局。但大部分都是不好的结局,颇为遗憾。我们在这些过程中积累了宝贵的经验,希望未来能将好结局的成绩提高一个台阶。这部分就简单提到了这一点,我不打算详细展开,这块的知识量是巨大的,我也没有掌握。根据不同的场景,我们需要掌握的能力有:
智能合约安全分析及取证
链上资金转移分析及取证
网站安全分析及取证
Linux服务器安全分析及取证
Windows安全分析及取证
macOS安全分析及取证
手机安全分析及取证
恶意代码分析及取证
网络设备或平台的安全分析及取证
人员安全分析及取证
…
几乎方方面面,本手册介绍的安全点也是方方面面,但几乎都只是入门而已。误区
本手册一开始就告诉你需要始终保持!怀疑包括本手册提到的任何知识点。这是一个朝气蓬勃的、潜力巨大的行业,充满大量的陷阱与乱象。这里我们来看看其中的一些误区,这些误区如果预设真理,不加思考的话,就很容易掉入陷阱中,成为乱象的一部分。代码即法律
代码即法律。但往往有一个项目(特别是指智能合约有关)被黑了或跑路了,受害者几乎没人希望代码即法律,最终还是会依赖真正的法律。不是你的钥匙,不是你的硬币
不是你的私钥,就不是你的币。其实很多用户获得了私钥,但没有能力驾驭好自己的私钥,反而因为各种安全问题,币丢了。有时候会发现,币放够了而且信誉很好的平台里,反而安全了很多。我们信任区块链
因为区块链,我们相信能力。其实区块链本身确实有解决一些根本性的信任问题,比如不可篡改、抗审查等,我的资产及有关活动在区块链上,我就可以默认相信没有人无法授权拿走我的资产,篡改我的活动。但现实往往是残酷的,首先不是所有区块链都有能力实现这些根本点,其次人性永远是最大的突破点。许多黑客手段是超越大多数人的想象的,虽然说攻防是成本对抗,比如当你的资产不够大,没有黑客会费力可以地去黑掉你,但是,多个这样的你存在,那么那么非常有利图了。我的安全建议说简单也简单:保持对一切的默认不信任(显然默认怀疑一切),并做好持续验证的工作。验证(Verify)是很关键的安全活动,持续验证是要告诉你,安全不是静态的,此时没问题,不代表未来不会出问题。验证能力是对自己最大的考验,但很响,你会因此而掌握足够多的知识。当你足够强的时候,没有人可以轻易欺负你。
密码学安全就是安全
密码学确实很强大很重要。没有这么多密码学家的努力,高精度的密码学算法及工程实现,非常别谈我们现在的通信技术、互联网技术、区块链技术了。可惜有些人然而把密码学安全当成一切的安全,于是就会出现一些很奇怪的疑问:区块链不是号称很安全吗?私下不是说破解需要多少亿亿年吗?为什么FBI破解了暗网比特币?为什么周杰伦的NFT还会被盗?
这些疑问我都可以忍…不能忍是有所谓的安全人士拿密码学安全去忽悠大众,什么军级加密、殿堂级加密、宇宙级加密,系统特别特别安全,黑客没习惯。
黑客懒得理你…
被黑很丢人
被黑确实会让心情很复杂,也确实会有丢人的感觉。但你需要明白被黑是100%普适现象,绝无例外。没必要五十步笑百步,也不一定觉得丢人就逃避遮掩。被黑后,如果你只是需要对自己负责,那随意;如果你需要对一些人、引人注目的人负责的话,一个透明公开的被黑处理态度及决策行动就非常之关键了。虽然可能会引来嘲笑、质疑、甚至动乎说你在自导自演这起黑客事件。
一个透明开放且不断更新的被黑处理细节,加上上痛定思痛的引以为戒,你俱乐部引来好运。你也可以这样想:你的项目如果连剧情都没了,谁去黑你了?丢人的不是被黑,丢人的是:傲慢。
虽然说被黑是100%普适现象,因为大量是小坑,踩踩小坑,加速上涨,大坑还是得尽量避之。
立即更新
本手册好几次我建议要重视更新,有安全更新就立即更新。那你仔细想想,我的这种说法是否具有普适性?其实是这样的:大多数时候,针对安全方面的“立即更新”是对的。但有些时候,更新解决了一个问题,可能会引入另一个问题。历史上这类案例多可以,自行搜索了解。我举例其中一个,关于 iPhone 与 Google Authenticator 的:
iPhone新版iOS 15系统升级后有一个风险,身份验证器Google Authenticator里面的信息可能会清空,也可能会双重,如果发现双重了千万不要去删除重复的边境,这会导致重新打开Google Authenticator里面的信息的信息全部丢失。建议未升级 iOS 15 系统且使用 Google Authenticator 的最好先备份一下再升级。
后来,这个问题,Google更新了Authenticator来全面解决了。
除了这之外,钱包的更新我是不建议清洗的,尤其是重资产的钱包。除非是大的安全更新需要你不得不更新钱包,或者有很重要的功能让你不得不更新。这个就需要自己进行风险评估及抉择了。
总结
本手册开局这张图:)你注意到了吗?我特意把上面的人标红了,是想反复提醒:人是万物基础(宇宙学领域称之“人择原理”)。 无论是人性安全,还是安全驾驭能力,终极都依赖你。是的,当你足够强大的时候,没有人可以轻易欺负你。
我顺着图开始展开,从创建钱包到备份钱包再到使用钱包这三大过程讲解了许多安全要点。接着介绍了传统的隐私保护,我说传统的这些是基石,是我们安全地玩区块链的地方生态的基石。人性安全部分再多提都不过。那些五花八门的作恶方式,多了解很好,甚至自己踩了几个坑,许多纸上谈兵的安全意识何等真积累了你的安全经验。没有绝对的安全,于是我简单讲解了被盗了怎么办,我不希望你被盗,但万一发生,我希望这份被盗后的安全指南可以给你带来帮助。最后就是谈一些误区,很本意就是希望你有自己的批判思维,因为这个世界很美好,但也有很多糟糕。
我已经很久没写这么多文字了,上一次还是10年前,我的那本《Web前端黑客技术揭秘》,挺酸爽的。Web安全攻防玩了很多年,网络空间安全也玩了很多年,带队做了个网络空间搜索引擎钟馗之眼(ZoomEye)。我福利猎杀了安全攻防多领域的人了,但能说攻占的也只能把个放在上面。
现在玩区块链安全,我也好,还是整个慢雾也好,都丽跑在比较前面的。这些年遇到的案例太多了,几乎可以想象每周都会经历那种恍惚的感觉。心得体会不记录下来确实可惜,终于在数位朋友的催促下,这本手册诞生了。
当你读完本手册后,一定需要实践起来、熟练起来、举一反三。如果之后你有自己的发现或经验,我希望你也能贡献出来。如果你觉得敏感,可以适当脱敏,匿名也行。
最后,我需要致谢安全与隐私有关的立法与执法在全球范围内的成熟;各代当之无愧的密码学家、工程师、正义黑客及一切参与创造让这个世界更美好的人们的努力,其中一位是中本聪。
附
安全原则及原则
本手册提到了有关的安全法则及原则,特别整理如下。有明显是巴基斯坦大段文字里的,我不做特别提炼了。劳动安全法则:
零信任。简单来说就是保持怀疑,而且是始终保持怀疑。
持续验证。你要相信,你就必须有能力去验证你怀疑的点,并把这种能力养成。
安全原则:网络上的知识,凡事都参考至少两个来源的信息,无处不在,始终怀疑保留。
做好隔离,鸡蛋不要放在篮子里。
对于存有重要资产的钱包,不做轻易更新,够用就好。
所见即所签。即你看到的内容就是你预期要签名的内容,当你发出签名去后,结果就应该是你预期的,场景是事后拍断的。
重视系统安全更新,有安全更新就立即行动。
不乱下节目其实已经杜绝了全民风险了。
贡献者
感谢贡献者们,这个列表会持续更新,希望你有什么想法也联系我:余弦,Twitter( @evilcos )、即刻(@余弦.jpg)
贡献者们:
我夫人
慢雾,Twitter(@SlowMist_Team),如:Pds、Johan、Kong、Kirk、Thinking、Blue、Lisa、Keywolf…
即刻
一些匿名的朋友
更多:https://darkhandbook.io/contributors.html
只要有被采纳收录至本手册的帮助,比如:提供了具体的防御建议、案例;翻译工作;大错误纠错等。那些官网
SlowMist https://www.slowmist.com
CoinMarketCap https://coinmarketcap.com/
Sparrow Wallet https://sparrowwallet.com/
MetaMask https://metamask.io/
imToken https://token.im/
Trust Wallet https://trustwallet.com/
Gnosis Safe https://gnosis-safe.io/
ZenGo https://zengo.com/
Fireblocks https://www.fireblocks.com/
Safeheron https://www.safeheron.com/
Keystone https://keyst.one/
Trezor https://trezor.io/
Rabby https://rabby.io/
EdgeWallet https://edge.app/
MyEtherWallet https://www.myetherwallet.com/
Phantom https://phantom.app/
Tornado Cash https://tornado.cash/
Binance https://www.binance.com/
Coinbase https://coinbase.com
Compound https://compound.finance/
SushiSwap https://www.sushi.com/
OpenSea https://opensea.io/
Revoke.cash https://revoke.cash/
APPROVED.zone https://approved.zone/即刻 https://okjike.com/
Kaspersky https://www.kaspersky.com.cn/
Bitdefender https://www.bitdefender.com/
Cloudflare https://www.cloudflare.com/
Akamai https://www.akamai.com/
SURVEILLANCE SELF-DEFENSE https://ssd.eff.org/
Privacy Guide https://www.privacytools.io/
OpenPGP https://www.openpgp.org/
GPG https://gnupg.org/
GPG Suite https://gpgtools.org/
Gpg4win https://www.gpg4win.org/
1Password https://1password.com/
Bitwarden https://bitwarden.com/
Google Authenticator https://support.google.com/accounts/answer/1066447
Microsoft Authenticator https://www.microsoft.com/en-us/security/mobile-authenticator-app
ProtonMail https://protonmail.com/
Tutanota https://tutanota.com/
VMware Workstation https://www.vmware.com/products/workstation-pro.html
Parallels https://www.parallels.com/
-
-
作者帖子