對于網際網路應用而言,安全是一個不可忽視的問題。特别是電子商務類應用,更是重中之重。由于目前國内電子商務發展越來越迅猛,很多木馬開始把注意力轉到它上面來。這些木馬往往有一個很重要的特點就是具有明顯的經濟利益性目的。
根據分析和研究表明,這類木馬通常并沒有使用很高深的技術手段,主要原因就是浏覽器自身的脆弱性。從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,如需轉載請自行聯系原作者