為什麼免費代理是“免費”的?

光光頭去打醬油發表於2015-07-05

【伯樂線上注】:原文副標題是“因為這是一種輕鬆搞到成千上萬使用者資料的途徑”,作者後來還寫了一篇文章《分析了443個免費代理,其中只有21%沒有黑幕,那麼剩下的79%呢?》。

最近偶然發現, Chema Alonso 在 Defcon 20 會議上談到他如何從頭開始建立一個JavaScript 殭屍網路,然後如何使用它來找到騙子和黑客。

一切都是通過一個 SQUID 代理並修改了些小配置完成的。

這個想法非常簡單:

1.【伺服器】在一臺 linux 伺服器上安裝 Squid

2.【Payload】修改伺服器配置,給所有傳輸的 javascript 檔案插入一些程式碼,這些程式碼的作用就是將使用者資料傳送到你的伺服器上,比如使用者在表單中輸入的所有資料。

3.【快取】將修改過的 js 檔案的快取時間儘可能延長。

可能發生的最壞事情是什麼?

當某人能強迫你載入一個受感染的 JS 檔案, 那他們可以:

  • 竊取你訪問的網站的登入資訊(從登入表單中或 cookies)
  • 竊取你的銀行賬號或信用卡資訊
  • 強迫你參與 DDOS 攻擊,讓你的瀏覽器一秒鐘內載入一個網站幾百次,通過 iframe 或 script(指令碼)來傳送請求。
  • 基本你上網做的任何事情都能看到(包括你閱讀時滑鼠的位置)

https

如果你的網站載入了一些不安全的資源(比如從一個 http 站點載入 jquery),那該手法在 https 連結上也能生效。大多數瀏覽器都會提醒你,有些甚至會阻止你訪問不安全的內容,但是沒有人注意到瀏覽器位址列中“鎖”的符號。

舉個例子

安全:a1279bf58d

不安全:9f0d9fc0ce

在介紹中,Chema 說他將修改過的伺服器 IP 地址釋出到網路上,幾天後就有 5000 多人使用這個代理。大多數使用代理的人都是為了做壞事,因為他們都知道使用了代理在網路上就變成匿名了,似乎許多人都沒有考慮過這個問題:代理同樣也可以對他們做一些壞事。

我在想是不是真的那麼簡單,所以我建了一個執行 Debian(Linux的一個發行版) 的虛擬機器,然後努力實現這些概念。

編寫自己的 js 來感染代理

假設你有一個執行 squid 的代理,同時你還需要一個網站伺服器,如使用 /var/www 為根目錄(預設設定)的 Apache 伺服器。

步驟1:建立一個 payload

我打算用一個簡單的指令碼獲取網頁上所有的連結,然後將 href(連結) 屬性改寫成我的站點。

/etc/squid/payload.js

步驟2:將指令碼注入所有請求的 js 檔案中。

/etc/squid/poison.pl

這個指令碼會用 wget 檢索到客戶端請求的原來的 javascript 檔案,然後將 /etc/squid/payload.js 檔案中的程式碼增加進去。這個修改的檔案(包含我們的有效負載)將被髮送給客戶端。你也可以建立資料夾 /var/www/tmp ,然後允許 squid 在該資料夾中寫入。這個資料夾可以存放所有被修改過的 js 指令碼。

步驟3:告訴 Squid 使用上文中的指令碼

在 /etc/squid/squid.conf 中新增

步驟4:讓快取永不過期

/var/www/tmp/.htaccess

這幾行告訴 apache 伺服器,設定一個瘋狂的過期(快取)時間,所以它會一直存在使用者的瀏覽器中,直到他們清除快取或 cookies。

重啟下 squid 就能執行了。如果你連線到代理上,然後瀏覽網頁,網頁會顯示預期的內容,但是所有的連結會被指向這個部落格。這項技術更猥瑣的是,當你斷開了與代理的連線,從代理快取的 js 檔案仍存在瀏覽的快取中。

在我的例子中 payload 不太具有破壞性,使用者很快就能理解什麼是“釣魚”,但是富有創造性的 payload 或像 Beef 類似的框架就能被用來實現各種各樣的東西。告訴你的朋友們,絕不要使用免費的代理,因為許多代理就做這些壞事情。

安全上網(但不要使用免費的代理)

相關文章