天天看點

浏覽器安全與MSAA

      對于網際網路應用而言,安全是一個不可忽視的問題。特别是電子商務類應用,更是重中之重。由于目前國内電子商務發展越來越迅猛,很多木馬開始把注意力轉到它上面來。這些木馬往往有一個很重要的特點就是具有明顯的經濟利益性目的。

        根據分析和研究表明,這類木馬通常并沒有使用很高深的技術手段,主要原因就是浏覽器自身的脆弱性。從OS角度來說,浏覽器是一個很普通的應用程式,沒有任何保護措施。木馬可以很友善的通過某些方式來篡改浏覽器資料。

        比較常見的一種就是利用MSAA技術來直接修改浏覽器頁面,這種修改隻發生在記憶體中,這就是說即使我們檢視目前頁面源碼,也不會發現任何異常。而實際上頁面已經被修改了。值得關注的是,目前大部分安全防護軟體都不會監視這塊的應用。

MSAA是基于COM的技術,一般的調用模式首先是向浏覽器視窗發送WM_HTML_GETOBJECT消息,然後通過MSAA的特有API即ObjectFromLresult()來取得對應頁面的IHTMLDocument2接口。為了友善,一般順便也一起擷取IWebBrowser接口。剩下的工作就比較簡單(但是很繁雜),查詢MSDN文檔來擷取這兩個接口所支援的操作即可。

下面示範一個DEMO,這個DEMO會将目前浏覽器視窗中的百度首頁的Logo換成Tomcat,如下圖:

完整代碼就不貼出了,關鍵性代碼如下(C代碼):

  CComBSTR domain(100); 

  CComPtr<IHTMLElement> htmBody; 

  CComPtr<IDispatch> bodyChildren; 

  CComPtr<IHTMLElementCollection> imgColl; 

  CComQIPtr<IHTMLWindow2> htmWin; 

  CComVariant v; 

  dom->get_domain(&domain); 

  if(domain == L"www.baidu.com") { 

    MessageBox(NULL, L"target detected~\n now have a look...", L"msg", 0); 

    dom->get_body(&htmBody); 

    //Execute js 

    CComBSTR jsToExecute =    

      L"document.getElementById('lg').innerHTML=\ 

        '<img src=\"http://tomcat.apache.org/images/tomcat.gif\"\ 

        width=\"270\" height=\"129\" usemap=\"#mp\"/>';"; 

    dom->get_parentWindow(&htmWin); 

    hr = htmWin->execScript(jsToExecute, L"javascript", &v); 

  }

其中,dom是一個已經擷取的  IHTMLDocument2接口。

請勿将以上代碼用于非法用途。這段代碼的execScript方法調用後可能傳回非S_OK的奇怪結果,原因是ATL相關類庫的問題。

通過這個DEMO可以看到,從某種程度上說網際網路應用的安全是一個比較嚴峻的問題。我們無法改變浏覽器脆弱的事實,能改變的是使用者的安全防護意識。如何培養起這個意識,是每個網際網路從業者都應該思考的問題。

本文轉自 kevx 51CTO部落格,原文連結:http://blog.51cto.com/spinlock/569038,如需轉載請自行聯系原作者

繼續閱讀