java模拟ddos(附各类截图演示)

相信进来的大部分是出于兴趣或者一些个人需求吧,当然我自己也是,因为前些日子下载破解版的软件被病毒撸了,还好用的是sandbox打开的,没有实质性威胁到自己,所以当时也就有了那啥的想法。我本人其实都是没有接触过类似东西的,所以这里我会站在一个初学者的角度讲一下这次的经历与感受。(相关代码操作链接在本文末)

说明

其实这种攻击方式应该叫dos,而不是ddos,因为这里并没有做到分布式攻击。代码的话采用的是Java,即其他csdn博客上最常见的那份开源代码。网站的话是宝塔面板一键部署的网站,服务器也就一核,大概两点多GHZ的主频。所以下面的测试数据都是基于这些测得的。

先展示下大致效果(帧数有点低)

虽然我租的服务器是个小服务器,但是由于测试的test.html页面大小只有108 b的大小而已,服务器处理很轻松,所以这份Java代码对于小网站来说的还是不能太忽略的。

 

服务器数据如下,这里测试了10s,接近两万次请求

java模拟ddos(附各类截图演示)_第1张图片

 

同时期服务器cpu飙升

java模拟ddos(附各类截图演示)_第2张图片

 

本地cpu也是飙升,伴随的也有内存和磁盘的升高java模拟ddos(附各类截图演示)_第3张图片

 

所以这种攻击方式更像是两台终端设备cpu的对拼

 

关于随意攻击网站自己的IP暴露问题。这里显示的很清楚,一般情况就只能精确到市级了,即网站只能知道你是哪个市的,如果你用手机开个热点攻击,那么你的IP是你手机服务提供商的。实在不放心,挂个全局ss,他显示我的IP在乌克兰。不过有意思的是,最近发现腾讯的ip定位很神奇,相比于百度等其他定位,它总是能找到你接入公网的源地址,而且能精确定位到市里什么区下的什么街道的多少多少号。比如我挂的全局ss,百度等其他网站定位我在乌克兰,包括自己尝试用nodejs截取过请求有关路由转发的源ip信息,都是显示在国外,但是腾讯定位却能准确找到ss国内节点在哪个市的哪个区的哪个街道多少多少号。所以这里就稍微注意下,以后自己搭节点fan墙的位置不要选离自己太近的,租个离自己远一点的服务器。

java模拟ddos(附各类截图演示)_第4张图片

 

 

关于攻击效果

不难看到,其他博客清一色的都是那份Java代码,所以我想对比下各种代码的威力,最开始用了低轨道跑LOIC,发现连苍蝇都打不死,最后只能采用代码的方式。github上有很多这样的代码,比如python写的,这里要注意,python虽然源码跨平台,但是编译后不见得就能跨平台(因为我在win上编译py报错了),所以最好在linux上编译py代码,这里我用的是WSL(Windows Subsystem for Linux),即windows下的linux子系统,用起来十分方便,有兴趣的可以去搜一下,不难。安装好子系统后进入cmd输入bash.exe即可进入linux

如图  --- 可以来回切换操作两种系统,很方便

java模拟ddos(附各类截图演示)_第5张图片

我自己测试了github上python写的,NodeJs的,以及自己这里的Java,测试后给我的感觉就是都差不多的,对于自己服务器上的test.html都是在一定的概率下才能打死(可能跟操作系统调度,网络因素等有关),没有哪一个能拉开其他的拉出一个很直观的差距,毕竟只是dos,不是分布式的ddos,攻击效果主要受限于自身的cpu。

有人问,既然比cpu不行,用Slowloris慢攻击也可以呀。其实Slowloris我也试过,可能是我没耐心吧,等了挺久的,我的服务器一点事都没有,于是我也就没继续了。

 

改善

前面的测试都是针对test.html,文件特别小,其实,如果去攻击稍微大一点的文件,比如来一个dos一个100kb的,那效果是很明显的,几乎就是一两秒间网页就被打崩了。同样,针对网站业务逻辑比较复杂的url进行dos,杀伤力同样不可小觑。还有一个提一下,关于Java代码,网上清一色用的是这个线程池:ExecutorService es = Executors.newFixedThreadPool(1000);     但是后面我把他换了一下:ExecutorService es = Executors.newCachedThreadPool();  换成了带存缓的线程池,能有效利用线程开支,理论上应该会比原先好一点

 

最后

当然还是要强调,这些都是基于我当前的设备测得的,如果换成那些商业大佬的设备,或者商业大佬的代码,这些可能就都不适合了。而且这次测试我服务器都没做什么限制,所以一切攻击都很顺利。说道最后,这些代码的攻击方式都很单一,而且没有做到分布式,可能就适合撸一些小网站,大网站应该想都别想。后期的话我会买一些树莓派过来,打造成自己的肉鸡,有时间的话顺便更新下博客。最后的最后,本博客仅提供初学者的学习参考,切勿自己乱撸,撸错了只会伤身

代码和操作在此https://gitee.com/Gitee666/javados

 

 

 

 

 

 

 

你可能感兴趣的:(ddos/dos(带图))