如何偽造IP(轉)


要明白偽裝IP的原理,首先要回顧一下TCP的三次握手。
總所周知在鏈接初始化的階段,
需要一次三次握手來建立鏈接,
之后客戶端和服務端會依據初始的這個IP地址來通信。

從這個角度上來說,
想真正的偽裝一個IP地址是不可能的。

因為即使從鏈路層把IP地址改了,
后續發出去的請求也回不來,
除非你只是想用來作為DDOS攻擊,要不沒什么意義。

所以要另辟蹊徑。

代理轉發規則
用過代理吧?
不管是VPN,還是局域網代理,
都是通過代理服務器轉發客戶端的消息到服務端。

這里就引出主角,一個在 Header里的字段
X-Forwarded-For,
很多地方簡稱 XFF。

XFF不是一個標准的HTTP協議,
但是它被廣泛接受用作於標識代理轉發的規則。

通常一個 XFF字段會像下面這樣,
javascript
X-Forwarded-For: 127.0.0.1, IP2, ..., IP N

從左到右,
依次記錄的是距離服務器距離遠的代理服務器的IP。

通過這個字段,
服務端就能知道這個請求是通過哪些代理轉發過來的了。

而有些服務端的bug在於,
他們不再關心這個請求的原始地址,而只關心最后那個轉發給他的 IP N的代理。

正常來說,
應該把三次握手的 IP 作為 Remote IP記錄,
以這個為客戶端的唯一 IP,這樣才是准確的。

實現
說了那么多理論,
下面來看看如何使用這個 XFF字段。
首先我們用 postman 模擬一個 HTTP 請求,看看返回的字段里攜帶的客戶端信息是怎樣的。

這里隨意找了個服務器發了個模擬請求,
下面的 device字段不僅包含了 IP 地址,也包括了經緯度。

然后我們再人為的添加上 XFF 字段,
看看 device信息變成了什么。

看到了嗎,
現在已經變成了一個假的位置。

偽造IP的技術實現方案
假設說你想偽造的是自己的app,
那么就簡單的多了,只要在每個 http 請求的header里加上 XFF字段就可以。

如果是第三方app,
或者是你不想用侵入式的方法去修改 header的話,
可以考慮用 Xposed 框架來做這件事情。
---------------------
原文:https://blog.csdn.net/weixin_42063726/article/details/80402207


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM