Pages

2014年8月21日

[ Chrome ] 你看不到 URL 的釣魚網站

Title

今天在 PTT Google 板看到一篇文章《[詢問] 收到您帳號停用的要求????》。發文者說他的 Gmail 收到一封信,內容是 Google 收到他的帳號的關閉請求,將在極短的時間內關閉帳號並且刪除所有相關資料。如果他沒有發過這個請求,則需要到信中的網址輸入資訊取消這個請求。他點了那個網址,輸入了電話號碼,可是之後頁面沒有反應。面對這個狀況不知所措所以上來發文求救。

這件事情引起我的注意。引起我注意的原因有兩個:一,通常這種信件都是釣魚信件,但是卻躲過 Gmail 掃描機制。二,我通常會研究裡面的 URL,看看有沒有什麼新技術或是值得注意的地方。

這次還真的有!

根據發文者提供,該封信件內的 URL 用的是 Google 短網址服務(也就是 http://goo.gl/ 開頭)。如果用 Chrome(版本 v36.0.1985.143) 開啟該網址會出現很神奇的畫面(請看下圖)

00001

網址列的部分只有呈現一個字串 data: 什麼都沒了。

對許多使用者來說,這樣的把戲已經很有效果了。

現在很多使用者都會注意連結過去的網址是不是跟提供服務的網站是同一個網域。例如說看到一封署名為 Google 團隊寄過來的信件,可能就會注意網址是不是 .google.com 。可是當這個頁面的網址都看不到的時候,雖然有些人會懷疑,可是也可能有些人因此而鬆懈了警戒心。

接下來,來看看 Firefox(版本 v31) 與 IE(版本 v11) 遇到這串網址會怎樣呢?

00002

Firefox 31 也是會秀出頁面。但是可以發現網址列出現了「似乎完整」的內容。可是依然沒有 URL。

00003

IE 則是秀不出頁面。但是可以從網址列看到完整的 URL 了。(為了安全起見,我把網址馬賽克了。有興趣的人可以從原文找到縮址)。

我已經把這個情況透過 Chrome 內建的回報機制回報了。無論如何,讓使用者在網址列無法得知正確的位置在哪裡這件事情是很危險的,即使今天這是正常的情況,我也認為應該要避免。


面對不明的縮址,尋求展延網址服務確定真正的網址是什麼很重要。

這句話很重要可是我不想說三次。現在有很多展延縮址的服務,例如 LongURL。你只要把縮址貼上去,它就能幫你找到原始的網址。這有助於你判斷網址的真偽以及危險性。


來看看那個網站到底做了什麼事情

我把縮址展開後,得到一個完整的網址。是一個用 WordPress 3.9.2 架設的 blog。不知道是不是被人發現漏洞所以拿來「借用」了吧?網址指向一個 index.php。把這個檔案抓下來打開後發現裡面一開頭就直接執行一段 JavaScript。

<script type="text/javascript">

window.location="data:text/html;base64,(以下省略)
</script>

省略的部份是完整的 HTML,包含了 header,meta,body。然後將這個 HTML 碼做 base64 編碼。利用 window.location 這個屬性來載入頁面,而後面載入的內容不是指向另外一個 URL 而是自行寫好的頁面(就是那個用 base64 編碼遮掩的 HTML 碼)。

00005

在第一個畫面,一切看起來都很像 Google 的畫面。你把游標移到各個連結也都是指向 Google 去。可是去研究原始碼,會發現輸入帳號密碼後處理這帳號密碼的不是 Google,而是另外一個網站的一隻 PHP。由於原始碼是用 POST 的方式將帳號密碼傳給那隻 PHP 處理,因此我沒辦法檢查該 PHP 的內容。但是我想這邊絕對不懷好意。有可能會把輸入的帳號密碼儲存一份,同時導向真正的 Google 認證伺服器。

我在這邊隨便輸入亂七八糟的帳號與密碼按下登入照樣可以通過,下一個畫面也做的有模有樣,好像真的一樣。

00004

煞有其事的跟你說「看來你似乎從別的地方來喔!為了驗證是不是真的你,你可以選擇輸入你的電話號碼或者是你的緊急聯絡用電子郵件。」

當然,檢查原始碼之後,會發現如果你真的輸入電話號碼或電子郵件位址,按下繼續(Continue)之後,又是另外一隻 PHP(絕對不是 Google 的)在處理你輸入的資訊,這一定也不安好意!這個也是用 POST 的方式,所以我也沒辦法抓到那隻 PHP 查看。但是我認為這隻 PHP 會把輸入的資訊導向 Google 的認證伺服器,意圖通過這額外的檢查,好取得該帳號的控制權。

其實這兩個頁面有個地方有紕漏。它右下角的語言清單有奇怪的問號,如果展開往下拉還會看到如下的畫面:

00006

小心駛得萬年船。

沒有留言: