强哥叨逼叨

V1

2022/03/16阅读:32主题:萌绿

DDoS攻击让乌克兰断网,我也用DoS攻击把自己的网站搞挂了

哈喽,大家好,我是强哥。

最近俄罗斯向乌克兰发动了大规模的军事攻击的消息可以说是引起了全世界的关注。

入侵俄军带来的轰炸与枪声在乌克兰首都基辅和其他主要城市清晰可辨,同时大规模网络攻击让乌克兰政府的主要官网无法载入。

在一系列DDoS攻击后,乌克兰国防部、外交部和内政部的网站对外界访问请求不能响应或加载缓慢。

强哥不想过多的评价这场战争,毕竟战争是残酷的,受伤害的永远是平民百姓。不过,其中的使用到的DDoS攻击相关的消息倒是引起了强哥的关注。

于是乎,强哥就简单的补习了点相关知识。

DoS攻击

拒绝服务攻击 DoS (Denial of Service)作为一种简单的攻击方式,通俗来说就是使用单台主机不断的向目标主机发起大量的请求,用数据包淹没目标系统,以打扰或严重阻止捆绑目标服务响应外来合法的请求,甚至使系统崩溃。

实现Dos攻击,常见的方式有:TCP SYN泛洪(SYN Flood),ping泛洪(ping-Flood),UDP泛洪(UDP-Flood),分片炸弹(fragmentation bombs),缓冲区溢出(buffer overflow)和ICMP路由重定向炸弹(ICMP routeing redirect bomb)。

这里我们只要记住,它是一对一的公平战斗。

DDoS攻击

相对DoS攻击的单机互殴方式,DDoS就可以说是以多欺少的群殴方式了。

DDoS(Distributed Denial Service)分布拒绝式攻击,它是在DoS基础上进行的大规模,大范围的攻击模式。DDoS是利用一批受控制的僵尸主机向一台服务器主机发起的攻击,其攻击的强度和造成的威胁要比DOS严重很多,更具破坏性。

这种手段虽然简单直接,但是却异常有用,至今还没有完全解决DDoS攻击的完美方式。

怎么发起DoS攻击?

哈哈,这个可能是一个奖励银手镯的问题。不过其实懂得原理就能很容易的进行试验。

我们从上面的描述中得知,DoS攻击是攻击者(单机)向目标主机发起大量请求使其瘫痪,那么,我们是不是也可以这么做呢?

强哥在自己的电脑虚拟机上部署了自己的博客网站,同时对带宽进行了限制,并用花生壳将服务暴露到公网。这里再欣赏一下强哥的博客网站:

之后,强哥再用Python编写一个简单的DoS脚本,主要代码如下(为了避免被奖励银手镯,以下代码直接复制无法运行):

class Http_Dos(Thread):
    def __init__(self, host):
        Thread.__init__(self)
        self.host = host

    def run(self):
        while True:
            self.sendHttpRequest(self.host)

    def sendHttpRequest(self, url):
        try:
            response = requests.get(url, headers=header)
            print(response.status_code)
        except:
            pass

if __name__ == "__main__":
    addr_url = input('host:')
    for i in range(10):
        t = Http_Dos(host=addr_url)
        t.start()

为了避免网络影响,强哥借表哥家的网络执行攻击代码。不一会儿,强哥的博客网站就GG了。 哈哈,没错,就是这么简单直接。有点黑客的意思有没有。

这样就去攻击真的行吗?

想必小伙伴们也会有这个疑问,这么简单,那不是轻轻松松人人都是黑客了?

答案当然没有我们想的这么简单,大家也看到,强哥做了预处理工作。也就是说是通过限制受攻击主机的带宽来达到DoS攻击的目的的。而如果我们用上面的代码,拿着自己的电脑去轰炸其他人的网站,其实只会把自己搞死,而对方一点事情都没有。

为什么呢?因为都是单机,我们向目标主机发起的HTTP/TCP请求,在ip没有做代理的情况下,直接攻击,相当于我们发起一个连接请求,对方的静态服务器反回给了我们整个页面的数据。这不仅消耗对方的带宽,同时把我们自己的带宽也干满了,真是杀敌一千,自损一千五的做法啊。

强哥也想起来一个有趣的问题:Jmeter作为压测工具,可以很简单的发起并发请求,那是不是也可以发起DoS攻击呢?

哈哈,答案和上面一样,如果你是请求别人的网站,除非你的带宽比目标主机高很多,否则,只会自取其辱。

当然,可能也有QA的小伙伴会问:那如果对别人的写入接口做“压测攻击”呢?

额,强哥只想说,除非这个网站写的太烂,写入不做唯一校验,同时不做权限校验,不然正常来说,是不会让你这么拼命写入的,自然也不会被搞挂。

这也是我们没听说过有人用Jmeter作为DoS攻击工具的原因。

那么Jmeter到底能不能进行攻击呢?

哈哈,强哥在这里又要打脸了。

当然能!但是不是DoS攻击,而是DDoS攻击。就像我们大学期间抢课一样,如果整个年级的同学都连上自己的电信网络,然后都开个Jmeter去测试下校园网站的性能。

em……这不是我说的,我什么都没说,你被学校开除不要找我。

辟谣一个GitHub项目

对了,强哥在找资料的时候,还注意到一个GitHub项目,而且网上还有好多相关的视频。搞得花里胡哨的,运行起来就和电影里面的黑客代码一样。

项目地址如下:https://github.com/Ha3MrX/DDos-Attack

界面如下:

页面做的很逼真,而且项目居然高达800多颗星,真是让强哥羡慕不已。可是强哥看了下它的代码…… 我的天,50多行代码,printsleep占了大半,着实感人。有用的代码就下面的那一部分:

while True:
     sock.sendto(bytes, (ip,port))
     sent = sent + 1
     port = port + 1
     print "Sent %s packet to %s throught port:%s"%(sent,ip,port)
     if port == 65534:
       port = 1

还美其名曰:“攻击目标主机的所有端口,造成目标瘫痪”。额,大哥,一个网站正常就开放80或443端口,你搞这么多端口去遍历别人干什么,不是浪费自己带宽吗?外加,你这个就是死循环发TCP请求,充其量也就是个DoS请求,人家做个爬虫还用IP代理池呢,你是完全自己往上怼,和别人硬刚啊。

所以,开源项目有时候星星多,还真不一定可信啊,有关注强哥的小伙伴也要擦亮自己的眼睛哦。

分类:

后端

标签:

后端

作者介绍

强哥叨逼叨
V1

欢迎关注公众号:强哥叨逼叨