正確姿勢:如何調戲蹭網者
這篇文章本來是知乎回答的一個問題,但是由于本人五行缺勤奮,所以一直沒寫(其實是忘了=。=),下面是我的一個實驗,如何通過 squid 調戲那些蹭網的人。沒什么技術含量,請大牛不要笑話~
聲明:本實驗僅作為技術分享,一把刀用來砍什么,由你決定。
先上效果:
是不是有點意思?
這里還需要說明一件事情:
本文目的在于分享,采用的方式是國外的 Pete 大大的一種做法,效果不錯,http://www.ex-parrot.com/pete/upside-down-ternet.html 但是這里不是重復造輪子,實在是 Pete 先僧寫得過于簡略,作為事件主角的 squid 居然被一筆帶過,squid 表示相當不爽(╯‵□′)╯︵┻━┻ 。
如果可以通過上面的描述實現這個效果的,就不用往下看我的廢話連篇了~如果你和我一樣開始遇到過問題,那就跟著我走吧~先說一下大體的思路。
既然是要對網頁中的圖片進行操作,那么我們首先需要把圖片下載到本地,然后進行變換之后再輸出到客戶端機器上面,就實現了圖片的翻轉,水印,模 糊等各種捉弄人的效果。當然功能絕不僅僅是這樣就算了,更多功能,大家看完之后不妨多挖掘一下,我就不多廢話了~好的,那么下面我們正式開始!
0×01 實驗環境
我先說一下我的實驗環境:
主機:ubuntu 虛擬機:windowsXP(vbox)軟件:squid、apache
拓撲環境就不多廢話了,我這邊是 host 通過 wlan0 上網,虛擬機選擇 Host-Only 模式,連接到主機的 vboxnet0 接口(默認的,我沒修改)。
0×02 系統配置
這里,我們首先要把系統的網絡轉發功能打開,可以使用
echo 1 > /proc/sys/net/ipv4/ip_forward
暫時啟用,當然也可以修改 sysctl.conf 永久轉發。
然后,對虛擬機進行 ip 設定,我這里設置為 192.168.56.21,子網掩碼 255.255.255.0
0×03 軟件設置
下面我們進行軟件的設置。
apache 不多說了,你可以指定一個本地路徑作為網絡分享的地址,作用主要是發布修改后的圖片,我這里的路徑選擇是/mydoc/test/
接著是 squid。
關于 squid 的安裝這里不是重點,網上有很多的教程,我們著重說配置。Squid 的配置文件是在/etc/squid (3) 下面的 squid.conf。為了看起來能凸顯得我的高冷氣質(樓主自戀程度已經逆天…( _ _)ノ|壁 ),著重配置的點我都已經寫在上傳的文件里面了,文末我會給出地址,大家可以看一下。
這里之所以說 squid 是關鍵,是因為我們主要使用了 squid 的 redircetor 的功能,即我們常說的重定向器功能。重定向器可以將收到的 url 進行改寫重定向,而且支持 python、perl、C等等語言寫的重定向腳本(程序),功能還是很強大的,這里感興趣的同學不妨玩玩~這里貼上《squid 權威指南》中關于 squid 的詳細描述,有問題可以到這里查閱:http://zyan.cc/book/squid/chap11.html
然后,我們把腳本文件放在配置文件中指定的位置,我這里是放在了/etc/squid3/下面,這里需要注意的是文件的權限問題,因為 squid 默認運行權限是 squid 用戶,隸屬于 squid 組(squid3 是 proxy 用戶,proxy 組),所以如果 squid 沒有權限執行腳本文件的時候是會報錯的。這里的腳本文件我直接使用了 Pete 大大給出的 perl 腳本進行了一點點修改,可能是因為 Pete 直接從本地測試的,所以腳本有一點點的小問題,大家也可以從我給出的網址上下載。
然后我們配置虛擬機的代理。因為這里我沒有用 iptables 進行流量轉發,為了方便,直接配置了瀏覽器的代理配置,這里代理 IP 192.168.56.1:8080,當然大家也可以使用 iptables 進行轉發,這樣就可以了。
最后我們重啟 squid。
sudo service squid restart
(squid3 的服務名稱是 squid3),這里注意對于 squid 的任何操作一定要記得用 sudo 執行,否則會報錯。
0×04 檢驗效果
這個時候,我們打開虛擬機,輸入 http://www.baidu.com,就應該可以看到 baidu 的 logo 是反向的了,打開更多網頁試試吧~是不是很好玩?23333。
當然,腳本只是使用了 flip 選項,當然這里不建議使用過于復雜的命令,會使瀏覽器響應過于慢。關于 imagemagic 的更多的效果可以從網上查閱,是一個相當強大的命令行圖片控制軟件。
0×05 更多猜想
實驗已經成功,那么我們說回到我們今天的 MITM 主題上面。有的同學或許會問:你得得得得說這么多,怎么應用啊?我這里提供一個小的方式,拋磚引玉:
可以買一樹莓派,買一個 usb 上網卡,一張中國聯通或者中國電信的卡,再買一個無線網卡,用 airport 建個無線信號,買個電源,裝上 linux 配置好 squid,當然還可以打開 sniff,配好接收數據的服務器。。
剩下的就是:背好你的背包,默默走到斯達巴克斯,點一杯咖啡,用吸管慢慢品嘗這份苦茗,望向窗外花壇那朵玫瑰,心里靜靜地想著那個 TA。。。
說道這里,大家可能會想到菠蘿,其實因為菠蘿使用的是 openwrt 的精簡系統,很多東西不可以使用,而且配置比起樹莓派低了一些,大批量的圖片操作很容易讓 CPU 狂飆,自帶的 MITM 最近貌似也不能用了?不過還是推薦 Geek 們自行動手~
如果有更多的想法,我們一起交流。
0×06 注意事項
因為我在做實驗的過程中也遇到了很多問題,這里貼出一些常見的問題,大牛略過吧~:)
1、注意接收圖片文件夾的權限和隸屬于的用戶,最好是能與 squid 用戶相同的用戶組。如果不是,可以使用 chown 進行修改。例:chown proxy.proxy xxx
2、注意腳本文件的權限。腳本文件必須是可以被 squid 用戶執行的。
3、注意 log 文件的權限,關于 log 文件一共有三個,位于/var/log/squid3/下,分別是 cache.log、store.log、access.log,這三個文件必須是可寫的,同時也可以直接用 chown 改變用戶所有權限。
4、遇到更多虛擬機打不開網頁的問題,大家可以查閱/var/log/squid3/cache.log,這里會給出很詳細的說明。
這里我能想到的暫時就這么多了,再有什么其他問題我們可以一起交流,我這里有一把肥皂。。。
0×07 寫在最后
最后,也沒什么好說的了,附上鏈接:https://github.com/linvex/MITM-squid/tree/master
上幾張圖吧~