400-638-8808
|
微信公眾號





穩(wěn)定可靠 永不間斷

海外收發(fā) 暢通無阻

協(xié)同辦公 資源管理

超大郵件 超級功能

智能反垃圾郵件技術(shù)
易管理 免維護

1. 概述
相信大家對流量劫持都很痛心,明明要下載游戲盒子,結(jié)果變?yōu)閄X助手或者是葫蘆娃,但是這種光明正大的流氓行為似乎是個爛攤子幾乎沒人管或者管不著,而且像蟑螂一樣消滅不盡。
偶爾的劫持造成的傷害大家可能已經(jīng)麻木,但這點傷害累積起來對受傷的正規(guī)公司而言可是會損失大量用戶,遭受萬點以上的沖擊。如果各公司都去用那些手段來獲取用戶的話,會造成整個行業(yè)持續(xù)地畸形發(fā)展,就像如果所有老板都去炒房,還有誰去認(rèn)真做實業(yè)呢?

知己知彼,我們要拒絕被劫持的話先要了解下一般有哪些手段,其實大概原理大家都有所了解,因為是明文傳輸,中間的小運營商可以在傳輸過程中插入小廣告或者強制替換下載內(nèi)容,要杜絕的話要上https加密,這些大理論大家都明白。
但如果要追問,要怎么插入小廣告或者強制替換掉用戶下載的文件呢?估計大部分IT人士就只能說“他們有專業(yè)的設(shè)備做劫持”這樣含糊的專業(yè)術(shù)語來糊弄一下了。更裝一點的可能會列一個這樣的表格給你:


我們常見的劫持一般是通過DNS污染和旁路模式注入惡意的HTTP信息給用戶。這次來個詳細(xì)的技術(shù)教程,讓普通用戶也可以過過癮,了解一下網(wǎng)絡(luò)劫持相關(guān)的技術(shù),包括多種方式的流量捕獲和竊聽劫持、彈廣告等方面,體驗下我們常說的中間人劫持,為以后的防范做準(zhǔn)備-_-。
2. 捕獲流量
中間人攻擊要對用戶進行網(wǎng)絡(luò)劫持的話,首先需要有捕獲對方流量的通道。捕獲流量大概分為兩類,一類是有交換機或者網(wǎng)關(guān)設(shè)備的權(quán)限,直接進行普通用戶無法控制的劫持,另外一類是誘導(dǎo)使用VPN或者進行ARP攻擊這種旁門左道的方式,有一定的失敗機率。
2.1 旁路鏡像
最有效的是在網(wǎng)絡(luò)設(shè)備這里進行旁路鏡像,比如交換機的端口鏡像、添加分光器等。
其中端口鏡像的方式是成本最低的,直接在交換機這里取一份完整的數(shù)據(jù)到我們的設(shè)備,而且完全不影響原來的正常網(wǎng)絡(luò)拓?fù)洌脩艉翢o感知。
如圖所示,在核心交換機這里插根網(wǎng)線和一臺Linux服務(wù)器連接起來,然后用monitor session命令配置端口鏡像即可。

有理由相信運營商的劫持基本都是添加一個旁路設(shè)備來做的。
2.2 Linux網(wǎng)關(guān)和WIFI
有些小辦公點還是用的Linux做網(wǎng)關(guān)來替代出口路由器,用IPTABLES來做NAT處理,這種情況也是最好做的,直接在在IPTABLES上面即可控制用戶流量了。如果手上沒有網(wǎng)關(guān)設(shè)備,可以自行搭建個WIFI熱點也行。
2.3 透明網(wǎng)橋
如果沒權(quán)限登錄網(wǎng)絡(luò)設(shè)備進行旁路劫持,可以考慮用網(wǎng)橋的方式來捕獲流量。準(zhǔn)備個雙網(wǎng)卡的機器,安裝好bridge-utils套件,用brctl命令進行網(wǎng)卡綁定:
brctl addbr bri0brctl addif bri0 eth0brctl addif bri0 eth1
兩個網(wǎng)卡不配置IP,配置里面加上BRIDGE="bri0",綁定好之后,兩個網(wǎng)卡一進一出,一個直通的透明網(wǎng)橋就做好了,接入到任何網(wǎng)絡(luò)拓?fù)淅锩婢涂梢詫崿F(xiàn)對流量的捕獲和IPTABLES控制了。
上面幾種情況的捕獲流量需要比較大的設(shè)備權(quán)限,比如運營商的人,或者自行偷偷搬個機器到機房做網(wǎng)橋。
普通用戶需要嘗試的話可以用虛擬機或者下面幾個方式來實現(xiàn)。
2.4 VPN代理
Vpn和代理在國內(nèi)比較流行,同時技術(shù)上也是最容易進行劫持的。
比如在Linux上系統(tǒng)搭建好vpn,然后用IPTABLES做nat轉(zhuǎn)發(fā),同時我們也可以在IPTABLES這里做些特殊處理,比如直接REDIRECT流量走向來控制,同理如果是用戶用的翻墻代理的話也是可以直接用IPTABLES來處理,統(tǒng)一導(dǎo)入到下面說的MITMF環(huán)境即可。
2.5 ARP欺騙
在局域網(wǎng)時候如果主機沒有安裝一些安全軟件綁定網(wǎng)關(guān)的mac地址時候,攻擊者只需要運行一些特殊的軟件即可進行arp欺騙。
Arp欺騙最好是在linux環(huán)境下做,因為可以當(dāng)作一個網(wǎng)關(guān),打開數(shù)據(jù)包的轉(zhuǎn)發(fā),在IPTABLES這里做一層nat即可讓用戶幾乎無察覺到有攻擊存在(有防ARP情況例外),比如用arpspoof命令進行arp欺騙:
arpspoof -i eth0 -t 192.168.2.111 192.168.2.1
這樣對方192.168.2.111在尋找網(wǎng)關(guān)地址192.168.2.1的時候就會誤以為攻擊方是他要找的網(wǎng)關(guān),然后流量就被我們捕獲了。
這種攻擊方式需要是局域網(wǎng)才可以完成,而且需要主機沒有安裝網(wǎng)絡(luò)安全軟件綁定網(wǎng)關(guān)arp才可以正常實現(xiàn),還有一點就是用戶有機率網(wǎng)絡(luò)不穩(wěn)定導(dǎo)致容易察覺到有攻擊存在。
2.6 篡改DNS
如果路由器有漏洞或者弱密碼,可以有機率篡改用戶DNS,使域名流量經(jīng)過解析之后直接轉(zhuǎn)向我們自己的服務(wù)器來達到捕獲用戶流量的目的。

3. 流量處理(開始劫持)
捕獲到流量之后,要做內(nèi)容的竊聽和劫持這里分為兩個情況,一個是網(wǎng)關(guān)模式,另外一個是交換機旁路模式。
因為旁路方式的優(yōu)點,我們生活中的劫持現(xiàn)象一般都是用旁路方式進行流量注入,我們不用專業(yè)設(shè)備來處理旁路流量,我們直接用python之類的軟件實現(xiàn)。
下面來具體介紹怎么針對捕獲的流量進行內(nèi)容劫持。
3.1 網(wǎng)關(guān)模式
網(wǎng)關(guān)模式可以理解為數(shù)據(jù)包直接經(jīng)過我們的設(shè)備,這個時候可以通過IPTABLES來控制用戶的流量走向,直接轉(zhuǎn)發(fā)到我們的惡意代理即可。
HTTP劫持
我們可以創(chuàng)建個代理,然后對其中的http協(xié)議的數(shù)據(jù)進行劫持修改,首先
需要手動把用戶的80端口http流量導(dǎo)入到我們的程序里面:
-A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 10000
然后用mitmf創(chuàng)建代理,比如把”買服務(wù)器”改為”買IPHONE”,命令:
mitmf -i eth0 --replace --search-str “買服務(wù)器” --replace-str “買IPHONE”
注意如果是新版的mitmf,語法已經(jīng)變了,需要配置/etc/mitmf/mitmf.conf里面的Replace段,比如:

新版的mitmf如果有Content-Type的報錯,需要把/usr/share/mitmf/plugins里面對應(yīng)的插件里面的

修改為

然后客戶端瀏覽器那里就對上述的字符串改為我們的目的字符串了,效果如下:

或者可以讓其加載beef平臺的js文件,然后用beef來實時控制瀏覽器行為了。
bdfproxy木馬
bdfproxy可以對經(jīng)過他的流量進行自動識別,識別到是下載動作時候就結(jié)合msfconsole進行下載的文件自動分拆,然后加入木馬進行封裝再傳給用戶,讓用戶從正常的通道也下載到含有木馬的軟件或者壓縮包。
-A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 10000
修改兩處配置:

然后直接用bdfproxy啟動即可。

注意,這里用戶端下載的時候,獲取到的http頭部除了Content-Length會變?yōu)樾碌拈L度值之外,別的頭部都不會變,比如我們的APK下載里面的md5值和etag值等,雖然頭部校驗是含有我們正確的頭部,但是內(nèi)容還是可能會變?yōu)閯e的。
案例如下圖:

DNS劫持
DNS劫持在橋接方式下直接把53端口的流量重定向到我們的程序即可。
類似IPTABLES里面配置:
-A PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 53
然后在上面啟動dnschef欺騙程序,把指定的幾個域名所有解析解析成192.0.2.1,其余的正常轉(zhuǎn)發(fā)。
效果如圖:
dnschef --nameservers=114.114.114.114 --fakeip=192.0.2.1 --fakedomains=*.taobao.org,*.taobao.com -i 0.0.0.0

用戶端界面:

或者啟動一個dnsmasq程序,把hosts指定好,同樣是一個可以做DNS劫持的好用工具,而且這種直接針對53端口的及時換了DNS因為無法避免。
3.2 旁路模式
旁路模式在網(wǎng)絡(luò)入侵檢測或者是抓包竊聽時候是最好用的,不影響原來的網(wǎng)絡(luò)架構(gòu),旁路設(shè)備出問題也不會影響到原先的流量,因為配置了旁路之后,交換機只是把原先的流量復(fù)制一份到旁路設(shè)備,然后就不管了。
旁路設(shè)備可以自行對原有的返回流量進行注入,比如優(yōu)先返回302到別的網(wǎng)站,或者返回RST中斷正常連接。
旁路配置
旁路監(jiān)聽的話很簡單,比如cisco網(wǎng)絡(luò)設(shè)備做端口鏡像:
Switch#conf t (進入全局配置模式)Switch(config)#monitor session 1 destination interface fastEthernet 0/24(指定連接抓包主機的端口)Switch(config)#monitor session 1 source interface f0/1 - 23 both(指定端口1-23,both是進出的包都抓)
這樣可以在fa0/24端口上接收到別的端口的流量,然后在利用一些抓包工具比如wireshark來進行竊聽。
Linux做網(wǎng)關(guān)時候直接在服務(wù)器上進行tcpdump抓包即可:
tcpdump –i any tcp port 80 –w 80.cap
如果是要對旁路抓到的數(shù)據(jù)包進行處理的話,比如進行劫持,原理也比較簡單,可以做dns劫持或者http劫持,就是旁路設(shè)備抓到需要處理的對象之后,在正常數(shù)據(jù)包返回之前優(yōu)先返回我們偽造的數(shù)據(jù)包給用戶,而用戶會丟棄之后正常返回的數(shù)據(jù)包,因為會話已經(jīng)重復(fù)了。
在要進行劫持時候,需要在monitor session的目標(biāo)接口的時候需要指定ingress vlan模式。
monitor session 1 source vlan 777monitor session 1 destination interface Gi1/3/23 ingress vlan 777monitor session 1 filter ip access-group 141
特別注意這個ingress參數(shù),這個參數(shù)導(dǎo)致以前測試一直為成功,如果不加的話會導(dǎo)致旁路設(shè)備只可以接收數(shù)據(jù)而無法發(fā)送成功,也就無法對用戶進行實際的內(nèi)容影響了。
中斷會話
中斷會話這個功能效果就是類似于發(fā)送請求之后,我們可以在旁路把這個連接兩端RST斷開會話。
工具是tcpkill這個命令。
比如設(shè)置好旁路之后,在eth0上面有所有有關(guān)目標(biāo)用戶的流量經(jīng)過,然后運行命令:
tcpkill -i eth0 host 115.236.76.23
然后就無法正常連接到目標(biāo)機器了。

圖例:

會顯示已經(jīng)向兩端發(fā)送了RST請求重置連接了。
dns劫持
這個注入模式稍微高端點,比如在網(wǎng)橋上面也可以做,也可以在自己的dns服務(wù)器上實現(xiàn)。當(dāng)然我們現(xiàn)在是在端口鏡像的旁路時候:
比如網(wǎng)橋上面用dnsspoof來進行解析干擾解析:
dnsspoof -i eth0 -f hostfile
hostsfile里面的內(nèi)容是類似hosts格式的解析,然后用戶端進行解析的時候,這個程序會優(yōu)先返回結(jié)果來干擾正常的解析返回,效果如下:

抓包可以看到這個偽造的結(jié)果比正常的dns返回先返回給了用戶,這樣就達到了欺騙效果:
![]()
可以看到8.8.8.8這條數(shù)據(jù)優(yōu)先1.5毫秒返回給用戶,然后用戶就丟棄了后面的正常響應(yīng)而使用經(jīng)過我們篡改的dns結(jié)果。
http劫持
下面模擬下旁路劫持用戶流量時候的302跳轉(zhuǎn)和彈廣告情況。
1. 302跳轉(zhuǎn)
在旁路服務(wù)器上直接監(jiān)聽網(wǎng)卡然后注入HTTP數(shù)據(jù),比如利用的是python的scapy模塊,像github上的hijack.py腳本,簡單修改下L2socket時候的filter匹配條件,格式和tcpdump醫(yī)院,效果如下:

這個就是訪問騰訊官網(wǎng),然后被劫持到淘寶去了的效果。
抓包的結(jié)果也是這個302包就快那么點點優(yōu)先返回給用戶了:

2. 彈廣告
原先網(wǎng)橋模式下面用mitmf插入js地址就可以實現(xiàn)右下角彈廣告的效果。
現(xiàn)在旁路模式不行這樣直接插入,需要對目標(biāo)站點的某個JS文件進行篡改然后再返回才行。
但是一般的廣告js比較長,不適合一次性以內(nèi)容方式返回給用戶,而是采用修改js的內(nèi)容,然后用js再加載js的方式,而且是先加載個帶版本號的正確js,然后再加入廣告就是,參考內(nèi)容如下:

也就是以前見到過玩家的js內(nèi)容被修改了,然后加載了廣告js的效果。
然后具體實現(xiàn)需要修改之前的hijack.py代碼來做,比如先判斷好我們需要劫持的js具體URL,然后給這個js返回我們的上面一段內(nèi)容(jscode)即可。

劫持效果如下:

js的加載情況:

如果再加些邏輯處理,然后打包起來就可以是一個專業(yè)的劫持后臺了。
4. 總結(jié)
隨意劫持用戶流量是非法而且非常惡心的事情,不過“技術(shù)無罪”,了解下其中的技術(shù)還是對我們的IT工作中會有所幫助。
產(chǎn)品與服務(wù)
香港服務(wù)器 香港高防服務(wù)器 美國服務(wù)器 韓國服務(wù)器 新加坡服務(wù)器 日本服務(wù)器 臺灣服務(wù)器云服務(wù)器
香港云主機 美國云主機 韓國云主機 新加坡云主機 臺灣云主機 日本云主機 德國云主機 全球云主機高防專線
海外高防IP 海外無限防御 SSL證書 高防CDN套餐 全球節(jié)點定制 全球?qū)>GPLC關(guān)于我們
關(guān)于天下數(shù)據(jù) 數(shù)據(jù)招商加盟 天下數(shù)據(jù)合作伙伴 天下數(shù)據(jù)團隊建設(shè) 加入天下數(shù)據(jù) 媒體報道 榮譽資質(zhì) 付款方式關(guān)注我們
微信公眾賬號
新浪微博
天下數(shù)據(jù)手機站 關(guān)于天下數(shù)據(jù) 聯(lián)系我們 誠聘英才 付款方式 幫助中心 網(wǎng)站備案 解決方案 域名注冊 網(wǎng)站地圖
天下數(shù)據(jù)18年專注海外香港服務(wù)器、美國服務(wù)器、海外云主機、海外vps主機租用托管以及服務(wù)器解決方案-做天下最好的IDC服務(wù)商
《中華人民共和國增值電信業(yè)務(wù)經(jīng)營許可證》 ISP證:粵ICP備07026347號
朗信天下發(fā)展有限公司(控股)深圳市朗玥科技有限公司(運營)聯(lián)合版權(quán)
深圳總部:中國.深圳市南山區(qū)深圳國際創(chuàng)新谷6棟B座10層 香港總部:香港上環(huán)蘇杭街49-51號建安商業(yè)大廈7樓
7×24小時服務(wù)熱線:4006388808香港服務(wù)電話:+852 67031102
本網(wǎng)站的域名注冊業(yè)務(wù)代理北京新網(wǎng)數(shù)碼信息技術(shù)有限公司的產(chǎn)品