Mess.be\’s MSN Games: Hacking

先來說說 mess.be 的 MSN Games 好了.
mess.be 是一個 MSN Messenger 的資源網站, 上面有很多好東西.
它其中有一個 service 就是你裝了一個 patch 之後, 他可以提供一些額外的 MSN Games 讓你玩.
當你裝了這個 MSN Messenger Custom Games patch v.1.0.11 之後,
你就會發現 MSN 的 「遊戲」選單裡多了十幾個新的遊戲.

sniffit

但是應該要兩方都有用這個 patch 才能一起玩這些多出來的 Games,
這些其中有一些 Games 是還不錯, 但是也有一些連 startup 都會有問題 XD

故事就從這邊開始了, 之前裝了這個 game patch 之後發現一個好玩的遊戲: Yahtzee!
這也算是一個很經典的骰子遊戲, 關於他的玩法我就不多介紹了, 網路上找應該有…

sniffit

只是後來我在玩的時後有時候會覺得他骰出來的點數有點怪,
有時候真的很難相信自己真的有這麼好運, 有時候卻又覺得擲的點數真是鳥到爆炸.
我就在懷疑他骰子出來的點數到底是真的亂數還是經過設計的,
所以就開始去解剖他了 XD

有玩過 MSN Game 的人可能會發現其實 MSN Game 的視窗是一個 Web 網頁,
由 Web 上下載一些 Flash & JavaScript 放在裡面構成整個遊戲的架構,
所以既然知道他會下載一些東西, 所以我就來看看它到底抓了啥…
最快的方法就是 sniffit 自己! 我就用 Ethereal 去分析自己的 in/out packets, 後來就發現:

sniffit

根據 sniffit 的資料, 得到完整的網址是:
http://www.juegosparamessenger.com/apps/yahtzee/yahtzee.htm (請用另存新檔來看)
抓來下來之後看一看, 這東西裡面是 Yahtzee! 的主要程式碼, 而且是個 JavaScript …
看來 Yahtzee! 這個 Game 完全是用 JavaScript 做的, 沒有用上 Flash 之類的東西,
所以 trace 起來也輕鬆簡單, 馬上就找到下面個片段:

for(var i = 0; i < m_dices.length; i++){
 var d = m_dices[i];
 if (d.reroll){
  d = new dice(Math.floor(Math.random() * 6 + 1), false);

  // set the image
  eval("dice" + i + ".src = \'images/dice" + d.nr + ".gif\';");

   m_dices[i] = d;
  rollCount++;
 }
}

damn! 沒想到他是用真的亂數去做咧, 原來人有時候也會很賽的骰出六個一樣的點數...
不過在看看這個 code, 會發現我要骰出來的點數是我自己產生, 再送給對方,
也就說這個架構下對方沒辦法驗證我送過去的點數是不是真的是亂數產生的!
然後邪惡的想法就開始了, 作弊作弊作弊作弊作弊作弊作弊作弊作弊作弊!!

首先如果要讓 source code 變成自己可以輸入想要的點數, 然後這個又是個 JavaScript,
所以要讓它變成可以自己輸入點數的話非常簡單, 只要把上面的 code 改成:

 d = new dice(parseInt(prompt(\'Give me a number\', Math.floor(Math.random() * 6 + 1))), false);

GOOD! 這樣程式要擲骰子的時候就會跳出視窗問你你想要骰什麼東西出來啦!
但是這邊的問題是… 要怎麼讓 Yahtzee! 在啟動的時候去吃你改過的 JavaScript?

這就要回到一開始提到的, 其實 MSN Game 都是透過 Web 去下載所需要的元件,
而且觀察一下就會發現, 他會「偷用」IE 的 Proxy settings (因為都是用 IE Kernel 嘛).
所以我這邊用了一招, 就是我放個一個假造的 HTTP Proxy Server,
這個假造的 HTTP Proxy Server 會去看 client 的 request,
如果他是跟你要這個 Yahtzee! 的 javascipt 的網址的時候, 就回傳假的, 也就是我們改過的 code 給他.
而如果不是特定的網址的話就依照正常 HTTP Proxy 的行為, 去他要求的網站幫他抓回來傳給他.
這個部份可以寫個很簡單的 Proxy Server, 或是去改一些現成 OpenSource 的 Simple Proxy Server.
我的作法是去抓 3Proxy 來改, 這個 proxy server 一些基本的功能都有,
而且沒有像 squid 這麼肥大, 改起來很簡單… (其實他的 codes 還蠻醜的).

然後把你假的 proxy server 跑起來, 到 IE 裡面把 proxy settings 設成你假造的 porxy server,
再去找一個倒楣鬼跟你玩 Yahtzee!, 哈! 果然成功了, 想擲幾點就擲幾點!

sniffit
你想要擲幾點呢?

sniffit
哇哈! 五個六點, Yahtzee!!

這種假造 HTTP Proxy Server 的攻擊方式其實可以應用在很多地方,
我後來有研究過把他套用在 MSN 的踩地雷上面, 看能不能偷到整個棋盤的狀態.
不過踩地雷他用了一堆東西元件來建構整個系統: JavaScript + VBScript + Flash + ActiveX …
其中 Flash 只是使用介面, 根據傳進來的棋盤來顯示, 然後傳出使用者按下的位置及是否用大炸彈,
(這個裡指的棋盤就是我們看到的棋盤, 未翻開的格子不會有下面是什麼的資訊)
然後 ActiveX 才是整個踩地雷的核心所在, 負責接收使用者按下的位置然後傳出要顯示的棋盤.
而 JavaScript & VBScript 是這些元件和 MSN 中間溝通的中介.

其中我們可以改的是 JavaScript, VBScript, 和 Flash …
(Flash 也是可以 decompile 來改它的 Action Script 的喔!)
但是對於 ActiveX 這種已經編譯成 .dll 的程式庫卻完全沒輒.
(可惜他不是用 .Net 寫的, 要不然 .Net 的程式可以 decompile)
然後採地雷的主要核心都是在 minesweeper.dll 裡面, 而且未翻開的地圖資訊並不會傳出來…
所以最後是殘念, 只能打開踩地雷的 Debug mode, 看看下面一堆 debug message 而已 XD

sniffit
打開 MSN 踩地雷內建的 debug mode, 可是一點意義也沒有…

7 則留言 »

  1. jimmy Said,

    六月 12, 2005 @ 3:19 am

    spam是否也用這樣的方式在攻擊?
    我在自己站上用了captcha,換了資料庫欄位的名稱,似乎還是有spam來~有解嗎?

  2. kamaze Said,

    六月 14, 2005 @ 6:34 pm

    spam 攻擊的手法根我這個方式應該比較沒有關係吧..
    裝了 captcha 還會被發 spam 是很正常的, 你可以參考:
    http://sam.zoy.org/pwntcha/

    你確定你的 captcha 夠 powerful 嗎? :P

  3. huhu Said,

    六月 16, 2005 @ 9:00 pm

    厲害
    我找到 http://207.46.203.42/ZH-TW/MINE/MINE.swf
    就不知道怎麼繼續 hack 下去了 Orz…..

    是怎麼找到那個 debug mode 的啊?
    給點提示吧 :P

  4. Rex MIS Blog » Blog Archive » MSN 踩地雷 Said,

    十月 12, 2005 @ 8:38 am

    […] Ref:http://lcr.old-castle.org/?p=70 […]

  5. Rex MIS Blog » Blog Archive » 3proxy Said,

    十月 12, 2005 @ 8:49 am

    […] ref: http://lcr.old-castle.org/?p=70 […]

  6. Rex MIS Blog » Blog Archive » 軟體使用IE Proxy setting Said,

    十月 12, 2005 @ 8:59 am

    […] http://lcr.old-castle.org/?p=70 […]

  7. RACHELMiranda Said,

    三月 11, 2010 @ 8:51 am

    I received 1 st credit loans when I was 25 and it supported my relatives a lot. Nevertheless, I need the consolidation loans once more time.

  8. the bar method Said,

    十月 31, 2013 @ 6:58 pm

    Your blog seems interesting.Regards

RSS feed for comments on this post · TrackBack 引用通告網址URI

Leave a Comment