400-638-8808
|
微信公眾號(hào)








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

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

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

超大郵件 超級(jí)功能

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

微信掃一掃 關(guān)注"天下數(shù)據(jù)"商品一律九折
![]()
搜索"朗玥科技"關(guān)注,了解最新優(yōu)惠

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

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


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

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

3. 流量處理(開始劫持)
捕獲到流量之后,要做內(nèi)容的竊聽和劫持這里分為兩個(gè)情況,一個(gè)是網(wǎng)關(guān)模式,另外一個(gè)是交換機(jī)旁路模式。
因?yàn)榕月贩绞降膬?yōu)點(diǎn),我們生活中的劫持現(xiàn)象一般都是用旁路方式進(jìn)行流量注入,我們不用專業(yè)設(shè)備來(lái)處理旁路流量,我們直接用python之類的軟件實(shí)現(xiàn)。
下面來(lái)具體介紹怎么針對(duì)捕獲的流量進(jìn)行內(nèi)容劫持。
3.1 網(wǎng)關(guān)模式
網(wǎng)關(guān)模式可以理解為數(shù)據(jù)包直接經(jīng)過(guò)我們的設(shè)備,這個(gè)時(shí)候可以通過(guò)IPTABLES來(lái)控制用戶的流量走向,直接轉(zhuǎn)發(fā)到我們的惡意代理即可。
HTTP劫持
我們可以創(chuàng)建個(gè)代理,然后對(duì)其中的http協(xié)議的數(shù)據(jù)進(jìn)行劫持修改,首先
需要手動(dòng)把用戶的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,語(yǔ)法已經(jīng)變了,需要配置/etc/mitmf/mitmf.conf里面的Replace段,比如:

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

修改為

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

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

然后直接用bdfproxy啟動(dòng)即可。

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

DNS劫持
DNS劫持在橋接方式下直接把53端口的流量重定向到我們的程序即可。
類似IPTABLES里面配置:
-A PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 53
然后在上面啟動(dòng)dnschef欺騙程序,把指定的幾個(gè)域名所有解析解析成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

用戶端界面:

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

圖例:

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

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

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

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

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

劫持效果如下:

js的加載情況:

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