浅谈几种区块链网络攻击以及防御方案之拒绝服务攻击
旧博文,搬到 csdn
原文:http://rebootcat.com/2020/04/14/network_attack_of_blockchain_ddos_attack/
写在前面的话
自比特币诞生到现在,比特币(网络)经历过大大小小非常多次的攻击,尤其在比特币诞生之初的几年,并且随着比特币价格的一路飙涨,黑客针对比特币网络的攻击就一直没有停止过。据估算,目前大约有 350 ~ 400 万比特币永久丢失,价值大约 240 ~ 280 亿美元。当然其中不只有由于黑客的攻击导致的丢失,毕竟比特币最初的几年很多人都没有意识到比特币的价值,很多的私钥都遗失了。
本文就谈一下目前几种区块链网络攻击,以及其防御方案。
本文尽量用简单易懂的白话来描述,也仅代表我个人的看法,欢迎探讨。
同系列:
- 浅谈几种区块链网络攻击以及防御方案之51%攻击
- 浅谈几种区块链网络攻击以及防御方案之日蚀攻击
- 浅谈几种区块链网络攻击以及防御方案之女巫攻击
- 浅谈几种区块链网络攻击以及防御方案之拒绝服务攻击
- 浅谈几种区块链网络攻击以及防御方案之其它网络攻击
拒绝服务攻击(Denial of Service Attack)
分布式拒绝服务攻击(Distributed Denial of Service Attack)
概念
信息安全的三要素——“保密性”、“完整性”和“可用性”中,拒绝服务攻击,针对的目标正是“可用性”。该攻击方式利用目标系统网络服务功能缺陷或者直接消耗其系统资源,使得该目标系统无法提供正常的服务。
拒绝服务攻击(DoS) 问题一直得不到合理的解决,目前还是世界性难题,究其原因是因为这是由于网络协议本身的安全缺陷造成的,从而拒绝服务攻击也成为了攻击者的终极手法。攻击者进行拒绝服务攻击,实际上让服务器实现两种效果:一是迫使服务器的缓冲区满,不接收新的请求;二是使用IP欺骗,迫使服务器把合法用户的连接复位,影响合法用户的连接。
而分布式拒绝服务攻击 (DDoS) 是指攻击者采用分布式攻击手法施行 DoS 攻击,通常是控制了多台机器向目标主机或者路由器发起 DoS 攻击。
针对区块链来说,攻击者通过 DDoS 攻击试图减慢网络速度,或者迫使网络停止运作。也可用于针对矿池,使矿池脱机,或者针对特定的目标主机,使其从网络离线。
危害
DDoS 攻击造成的危害自不必说,中心化场景下,通常针对网站或者主机施行攻击,造成网站无法访问,影响业务运作,造成巨大经济损失;
在区块链场景下,攻击者目标通常是为了一定的利益才执行这样的攻击,导致网络速度变慢,或者影响矿工挖矿,从而方便攻击者对目标下手。
DDoS 并非是区块链特有的攻击,在中心化场景下的攻击其实相对会更多。
攻击形式
带宽攻击
带宽攻击很好理解,通过攻击使受害者节点的网络带宽耗尽,从而造成拒绝服务的效果。
区块链系统的底层构建于 P2P 网络,其中通信上广播占据了大部分通信,一次广播通常就是大于 N 倍的收包,随着网络规模的扩大,节点数量的增多,通信的压力也会很大。
攻击者通过疯狂向节点通信端口发包,或者攻击者利用软件逻辑触发系统自动的大规模通信(比如触发同步),耗尽节点的带宽,最终从网络中离线。
而一旦离线重启之后,往往又会伴随着其他的攻击,比如 日蚀攻击,详情可以参考之前的博文: 浅谈几种区块链网络攻击以及防御方案之日蚀攻击
CC 攻击
DDoS 攻击是针对 IP 的攻击,而 CC 攻击的是服务器资源。
CC攻击全称Challenge Collapsar,中文意思是挑战黑洞,因为以前的抵抗DDoS攻击的安全设备叫黑洞,顾名思义挑战黑洞就是说黑洞拿这种攻击没办法,新一代的抗DDoS设备已经改名为ADS(Anti-DDoS System),基本上已经可以完美的抵御CC攻击了。CC攻击的原理是通过代理服务器或者大量肉鸡模拟多个用户访问目标网站的动态页面,制造大量的后台数据库查询动作,消耗目标CPU资源,造成拒绝服务。CC不像DDoS可以用硬件防火墙来过滤攻击,CC攻击本身的请求就是正常的请求。我们都知道网站的页面有静态和动态之分,动态网页是需要与后台数据库进行交互的,比如一些论坛用户登录的时候需要去数据库查询你的等级、权限等等,当你留言的时候又需要查询权限、同步数据等等,这就消耗很多CPU资源,造成静态网页能打开,但是需要和数据库交互的动态网页打开慢或者无法打开的现象。这种攻击方式相对于前两种实现要相对复杂一些,但是防御起来要简单的多,提供服务的企业只要尽量少用动态网页并且让一些操作提供验证码就能抵御一般的CC攻击。
CC攻击的种类有三种,直接攻击,代理攻击,僵尸网络攻击,直接攻击主要针对有重要缺陷的 WEB 应用程序,一般说来是程序写的有问题的时候才会出现这种情况,比较少见。僵尸网络攻击有点类似于 DDOS 攻击了,从 WEB 应用程序层面上已经无法防御,所以代理攻击是CC 攻击者一般会操作一批代理服务器,比方说 100 个代理,然后每个代理同时发出 10 个请求,这样 WEB 服务器同时收到 1000 个并发请求的,并且在发出请求后,立刻断掉与代理的连接,避免代理返回的数据将本身的带宽堵死,而不能发动再次请求,这时 WEB 服务器会将响应这些请求的进程进行队列,数据库服务器也同样如此,这样一来,正常请求将会被排在很后被处理,就象本来你去食堂吃饭时,一般只有不到十个人在排队,今天前面却插了一千个人,那么轮到你的机会就很小很小了,这时就出现页面打开极其缓慢或者白屏。
SYN 洪泛攻击
SYN Flooding 攻击是指攻击者发送了大量的 TCP/SYN 包,并且以一个假的 IP 作为发送地址到达目标主机,由于 TCP 在建立连接的时候有 3 次握手,也就是建立连接需要发送 3 个包,当目标主机收到这个 SYN 建连包之后,会回复一个 SYN-ACK 包。
但是由于攻击者恶意伪造了来源 IP,那么攻击者是收不到这个 ACK 包的,但是会导致目标主机打开了一个半开放的连接,如果攻击者发动了频繁的 SYN 洪泛攻击,那么会造成目标主机 TCP 资源消耗枯竭,导致无法与正常客户端建立连接,以达到拒绝服务的效果。
Land 攻击
Land 攻击是 SYN 攻击的变种,攻击者此时伪造的来源 IP 就是目标主机的 IP,也就是说这个 TCP SYN 包的来源 IP 和 目的 IP 相同,都是目标主机,那么就会导致目标主机向自己发送大量的 SYN-ACK 包,从而消耗 TCP 资源,阻止正常客户端的连接建立。
攻击案例
GitHub 遭受史上最大规模 DDoS 攻击
GitHub 想必大家都不陌生,全球最大的同性交友网站。在美国东部时间 2 月 28 日下午 17:28 分,几乎一瞬间收到了 1.35 Tbps 的流量访问。这是互联网有史以来规模最大、威力最大的分布式拒绝服务攻击 (DDos)。
不到十分钟,GitHub 就不得不向 CDN 服务商 Akamai 请求协助。最终 Akamai 接管了GitHub 的所有信息流,并通过其清理中心发送数据以清除和阻止恶意数据包。8 分钟后,攻击者发现没什么效果,选择了撤退,停止了攻击。
详情可以查看 GitHub 的官方声明: February 28th DDoS Incident Report
此次的 DDoS 攻击是属于中心化世界里面的一次较为著名的攻击,而且类似于这样的攻击每天都在发生。
大家可以看一下这个网站,来自卡巴斯基实验室的数据(多观看几分钟能看到 3D 攻击画面,还是挺震撼的): 网络威胁实时地图
2016 年以太坊 DDoS 攻击
2016 年以太坊发生过一次严重的 DDoS 攻击,此次攻击也被称为 “EXTCODESIZE” 攻击。
攻击者让矿工和节点需要花费很长的时间 (20 ~ 60 秒) 来处理一些区块。造成这次攻击的原因是一个 EXTCODESIZE 的操作码,它具有相当低的 gas 价格,需要节点从磁盘读取状态信息。攻击交易调用此操作码的频率大约是 50000 次每区块。这样的后果就是,网络大大放缓了,但没有共识故障或是内存超载发生。
因为此次攻击事件,很多媒体都宣告了以太坊的末日。可见在区块链世界里,DDoS 攻击的后果是比较严重的。
以太坊 Fomo3D,黑客拿走 2200 万
Fomo3D 是以太坊上一个比较火爆的 Dapp,是一个类似于资金盘的游戏。此次攻击过程还是挺有趣的,各位可以往下看。
首先,介绍一下 Fomo3D 这个游戏的规则:
规则1: 每个人参与游戏需要购买一个 Key
规则2: 在一轮游戏中,谁是最后一个购买 Key 的人,则可以拿走奖池中的大奖
规则3: 只要有人购买一个 Key, 游戏倒计时就会增加 30 秒
规则4: 游戏启动从 24 小时倒计时
规则里面最吸引人的一条是,只要你是最后一个购买的人,你就是最终的大奖得主,是不是很有 Du博 的感觉?

所以看到规则后,你会怎么做?
正常人一般都是在倒数的最后几分钟或者几秒钟去购买 Key,这样的话自己也许是倒计时结束后最后一个购买的人。但是这个想法是大多数人的想法,我们毕竟只是普通玩家。
那么稍微高级一点的玩家呢,比如程序员,可能会写个脚本,自动化的方式来购买 Key,速度是不是比手工快多了。
那么来看看黑客玩家是怎么做的?
我们都知道,购买 Key 之后,只要后面没有人再购买,你就是大奖得主,基于本文的探讨,如果你以前没有听说个这个事件的话,那么此刻你是不是已经有了一些想法?对的,没错,就是利用 DDoS 攻击,在你购买成功后,马上施行攻击,拖慢整个网络,造成矿工无法打包或者打包很慢,那么势必会影响到其他交易的正常进行。如果你比较幸运,正好导致其他正在购买 Key 的人的交易失败了,那么你就是大奖得主。
但是说起来容易,实际做起来还是不太容易操作的。因为你要能确保你购买成功后的 DDos 攻击能让后续的交易都失败,不然弄巧成拙,帮助了某个漏网之鱼,别人恰好因为你的攻击成为了最后一个购买的人。
了解以太坊的人应该听说过 gas 机制,可以理解为一个交易的手续费,而矿工通常会优先打包 gas 费用较高的交易,那么这位黑客利用自己的智能合约创建了大量的交易,并且具有高额的 gas 费用,几乎垄断了以太坊网络的所有算力,这样就造成了以太坊拥堵了接近 3 分钟,进而使其他的玩家无法打包购买 Key 的交易,从而成为大奖得主。
该黑客此前还尝试过多次这样的攻击,直至最后一次才成功。
是不是还是很有趣的?区块链公链本身具有比较致命的缺陷就是 tps 很低,单位时间处理的交易有限。后续的交易只能在排队,尤其是在网络被攻击拖慢的情况下,交易成功的时间会大大拉长。
DDoS 防御方案
高防服务器
高防服务器就是指能独立硬防御 50Gbps 以上的服务器,本身就能抑制一定的 DDoS 攻击。这个没什么好说的,买就是了,只是比较贵。
CDN 加速
CDN 本身就就有大带宽,多节点的优势,并且隐藏了真实的网站 IP。通过把流量分配到多地多节点降低攻击负载,防止源站崩溃。
配置防火墙
防火墙能防御 DDoS 和其他的一些攻击。防火墙有软件防火墙和硬件防火墙之分。必要可以两者结合。
攻击检测和溯源
通过分析攻击的方法和手段,追踪攻击的路由,检测出恶意的 IP 和路由,做好相应的屏蔽,保护主机。
黑名单机制
通过建立黑名单机制,限制黑名单的访问。
写在最后
DDoS 攻击每天都在发生,对于区块链系统来说,由于接入的节点性能参差不齐以及无许可的特征,想要利用中心化的防御机制去做好 DDoS 防御可能还是有难度。况且由于区块链本身的弊端,性能瓶颈,更容易被攻击者利用。
附
BlockChain中DDos攻击的深入剖析
DDOS攻击疯狂危害大 谈谈如何防御攻击
Blog:
rebootcat.com
email: linuxcode2niki@gmail.com
2020-04-14 于杭州
By 史矛革
相关文章:

C++中#include的工作原理
大多数人可能对“#include”比较熟悉,因为我们写C/C程序的时候都会写的字符串之一,但是它是具体怎么工作的?或者它的原理是什么呢? 可能不太熟悉,也有可能没有去关心过。我们只关心程序能否正确运行,或者程…

浅谈几种区块链网络攻击以及防御方案之其它网络攻击
旧博文,搬到 csdn 原文:http://rebootcat.com/2020/04/16/network_attack_of_blockchain_other_attack/ 写在前面的话 自比特币诞生到现在,比特币(网络)经历过大大小小非常多次的攻击,尤其在比特币诞生之初…
基于深度学习和传统算法的人体姿态估计,技术细节都讲清楚了
作者 | 站长 pursueYfuture来源 | AI专栏(ID: pursue-Y-future)计算机视觉的一大研究热点是人体姿态估计,还有很多问题急需解决,比如遮挡,交互等等。在最近的CVPR2020里边也有很多这方面的工作。本文站长主要是想谈谈基…

怎么让百度快速重新收录
每天更新网站和做外链让百度重新收录的快速方法很多人都比较头疼让百度如何重新来收录你站点,这里为大家介绍一下我的经验;大家都知道做网络推广,特别是企业站推广,如果能在相关的关键字在搜索引擎里有个好的名次,肯定能给企业增长…

HQL语句大全
Hibernate配备了一种非常强大的查询语言,这种语言看上去很像SQL。但是不要被语法结构 上的相似所迷惑,HQL是非常有意识的被设计为完全面向对象的查询,它可以理解如继承、多态 和关联之类的概念。Hibernate配备了一种非常强大的查询语言&#…
自动创建阿里云抢占式实例
旧博文,搬到 csdn 原文:http://rebootcat.com/2020/08/24/auto_run_aliyun_spot/ aliyun_spot 自动创建阿里云抢占式实例。 支持一下作者,购买阿里云 背景 阿里云抢占式实例应该属于阿里云的一种闲置资源利用,性价比非常高&am…
What?! Python一行代码,能玩这么多童年的游戏?
来源 | 早起 Python责编 | Carol封图 | CSDN 下载自视觉中国儿童节就要来了,虽然秃头程序员没有头发,但是童心还是一直都在的,今天就分享一个私藏的GitHub项目——free-python-games,一行代码就能进入使用Python开发的小游戏快乐…

McAfee可能要收购NitroSecurity?
近日,根据国外媒体报道和业界人士的坊间传闻,有传闻指McAfee可能将在近期收购SIEM厂商NitroSecurity。最近,NitroSecurity正在准备IPO,去年年收入约4000万美元,在Gartner的MQ中位于Leader阵营。 NitroSecurity的SIEM技…

进程间通信IPC之--共享内存
每个进程各自有不同的用户地址空间,任何一个进 程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲 区,进程1把数据从用户空间拷到内核缓冲区,进程2再从内核缓冲区把数据读…

Scons构建C++项目
旧博文,搬到 csdn 原文:http://rebootcat.com/2020/08/30/scons/ 前言 我是一个 linux c 开发者,但是一直对 Makefile 的语法很是头痛,每次都记不住,所以每次写 Makefile 都很痛苦,Makefile 里需要你自己编…
2020 AI产业图谱启动,勾勒中国AI技术与行业生态
《2020年国务院政府工作报告》提出,重点支持「两新一重」建设。其中「两新一重」中的第一个「新」,就是新基建,而人工智能是新基建的重要组成部分。新基建首次被纳入政府工作报告后,各大科技厂商纷纷押注,重金投向「新…

Windows Phone 7 SDK 7.1 Beta2 发布
早上看到消息,有Marketplace账号的筒子们注意了,可以去下载芒果的ROM了,一个开发者账号只能更新一个WP7,以下是App hub上的消息:来自http://create.msdn.com/en-US/news/Mango_Beta。关于开发工具的更新,可…

javascript基础语法——表达式
前面的话 一般地,关于javascript基础语法,人们听得比较多的术语是操作符和语句。但是,其实还有一个术语经常使用,却很少被提到,这就是javascript表达式(expression)。本文将详细介绍javascript表达式,表达式…

Hexo Next 博客添加相册瀑布流
原文:https://rebootcat.com/2020/09/19/nextphotowall/ 前言 一直没有时间来整理下博客搭建的一些事情,现在补上一篇,给 Hexo Next 博客添加一个相册功能,使用瀑布流的方式。 原理说明 使用 github 作为仓库存储图片文件&…

【分享几个日常巡检 监控数据库的语句】
查看数据库表空间语句 select df.tablespace_name "表空间名",totalspace "总空间M",freespace "剩余空间M",round((1-freespace/totalspace)*100,2) "使用率%" from (select tablespace_name,round(sum(bytes)/1024/1024) totalspa…
AI换脸、声音篡改等,明确写入新版《民法典》
来源 | HyperAI超神经5 月 28 日,十三届全国人大三次会议表决通过了《中华人民共和国民法典》(以下简称《民法典》)第四编人格权中的第四章肖像权,明确提出了以信息技术手段,对于他人肖像、声音等权益的侵害认定。《民…

awk: (FILENAME=- FNR=1) 致命错误: 试图访问字段 -2
执行:awk {print $(NF-2)} aa.log出现错误:awk: (FILENAMEaa.log FNR1) 致命错误: 试图访问字段 -2可能和aa.log中数据有关系:改为:awk NF>1{print $(NF-2)} aa.log转载于:https://blog.51cto.com/henly/1786692

迁移博客到香港虚拟空间
原文: https://rebootcat.com/2020/09/20/virtual_space_blog/ 缘起 我的博客一直采用的是 github pages 来托管,中间断断续续的也没怎么管理过,偶尔写几篇博客,所以也就没怎么关心过访问速度,搜索引擎收录等问题。 …
自动化神经网络理论进展缓慢,AutoML算法的边界到底在哪?
作者 | 夕颜出品 | CSDN(ID:CSDNnews)「AI 技术生态论」 人物访谈栏目是 CSDN 发起的百万人学 AI 倡议下的重要组成部分。通过对 AI 生态顶级大咖、创业者、行业 KOL 的访谈,反映其对于行业的思考、未来趋势判断、技术实践,以及成…

让电脑通过gns3里的路由器上网
题目我感觉写的不好,反正就是这个意思,看下文 头几天有网友问cisco2811路由器怎么用ACL封掉QQ,当时就想帮他,但是手里又没有cisco路由器,只有GNS3 cisco模拟器。 现在的问题就是要用gns3模拟器的路由器充当真实工作中的…

文件上传的渐进式增强
文件上传是最古老的互联网操作之一。 20多年了,它几乎没变,还是原来的样子:操作麻烦、缺乏交互、用户体验不佳。在这个新技术日新月异的时代,显得非常落伍。 网页开发者们想了很多办法,试图提升文件上传的功能和操作体…

使用 mkdocs 搭建个人 wiki 站点
原文: https://rebootcat.com/2020/09/20/wiki/ why wiki 博客通常是用来记录一些完整的文章,每篇文章有一个主题。但是我想把平日里的一些笔记也记录到我的博客里,但笔记是零散的,随时的,不是完整的一个主题。所以打…
追忆童年,教你用Python画出儿时卡通人物
作者 | 张同学来源 | 凹凸数据大家好,我是张同学。又到一年一度的国际儿童节,作为逢节必过的程序猿,怎么可以放过这个学习技能的机会呢?于是,今天我们来学习 Python 的 Turtle 库绘制童年的卡通人物,一起做…

xx学OD -- 消息断点 RUN跟踪(上)
这一篇讲的是 消息断点和RUN跟踪的简单知识这一篇没怎么看明白 大概使用知道了 怎么用不太清楚。介绍本次软件特点输入后木有反应(纱布垃圾的。。哈哈)启动OllyDBG载入这个程序,F9让它运行。这个程序按我们前面讲的采用字串参考或函数参考的方法都很容易断下来。…

iOS-UIWebView添加头部和尾部
2019独角兽企业重金招聘Python工程师标准>>> 前言 项目中使用UIWebView显示本地或者是服务器上的页面很容易,但是仅限于显示页面,可控性并不高,如果有需要在头部和尾部加上原生的view,显示部分信息相对于全部使用UIWeb…

epoll 入门例子 tcp server/client
原文: https://rebootcat.com/2020/09/26/epoll_examples/ 复习一下 上一篇博文 epoll原理深入分析 详细分析了 epoll 底层的实现原理,如果对 epoll 原理有模糊的建议先看一下这篇文章。那么本文就开始用 epoll 实现一个简单的 tcp server/client。 本…
张红忠:智慧化时代,如何通吃5G模组、AIoT?
受访者 | 张红忠,日海智能副总裁、云AIoT创新中心总经理记者 | Aholiab,编辑 | 邓晓娟出品 | AI科技大本营(ID:rgznai100)日海智能是目前国内AIoT领域的头部企业,以AIoT为核心,形成了5G&AI物联网终端、…

JQUERY打造隐藏在左侧的弹性弹出菜单
代码简介: 隐藏在左侧的弹性弹出菜单,从淘宝扣下来的,也可作为JAvaScript缓冲动画的典型教程。本弹性菜单可扩展性强,实际上不光可以做成菜单,也可布局一些图文混排的内容或一段视频,总之被弹出的内容是在一…

Num55 boss09(activiti安装以及API)
2019独角兽企业重金招聘Python工程师标准>>> 安装流程设计器插件: 使用框架提供的方式创建23张表: 流程部署,定义,启动&查询,办理任务: 流程的部署,查询,删除 & …

模仿nginx修改进程名
个人博客原文: https://rebootcat.com/2020/10/25/setproctitle/ nginx 进程名 使用 nginx 的过程中,我们经常看到 nginx 的进程名是不同的,如下: $ ps -ef |grep nginx smaug 1183 1115 0 05:46 pts/2 00:00:00 grep …