樂購網訊 美杜莎是百度對其“偷拍插件”自己定義的名稱。它的原理是,百度插件上傳用戶屏幕截圖等信息,由服務端判斷用戶正在使用哪款瀏覽器,從而挾持百度鳳巢客戶資源針對360瀏覽器進行不兼容提示。
百度“偷拍插件”系統結構和實現
“美杜莎”分為網頁腳本、客戶端和服務端三個部分,三者交互完成密碼加密和瀏覽器檢測“二選一”目的。
當用戶訪問開啟了“美杜莎”計劃的百度鳳巢(北京測試時需要外地代理),網站會先通過加載指定的JS腳本,彈出對話框要求用戶安裝插件。在用戶安裝完成后,用戶登錄界面上密碼框會變為輸入控件的輸入框,如圖:
該插件會通過特殊方式獲得用戶輸入的密碼,加密后計算一個加密的密碼,在用戶選擇登錄時:
首先會發送一個握手請求給服務端,包括插件的版本號等,請求獲取一個SID(Token),服務端若判斷插件有更新,則會返回需要更新,由網頁腳本彈出對話框提示:“控件已經更新,請重新下載安裝!”
接著網頁JS腳本會調用控件的接口: sendEnvironmentInfo,收集當前用戶的環境信息并發送給服務端,這是獨立于當前網站的一個收集和判定系統,由百度客戶端插件收集以下信息:
用戶的CPU信息
用戶的磁盤序列號
用戶的網絡IP地址、MAC地址和網關信息
用戶網絡DNS信息
用戶的當前瀏覽器進程名稱信息
用戶當前啟動的所有程序的進程名稱信息
用戶當前電腦屏幕的圖像截圖
除了屏幕截圖外,其它信息都使用AES加密算法進行了加密。百度將全部這些信息打包編碼到數據包后,會通過加密的HTTP傳輸協議上傳到百度的服務器:https://isafe.baidu.com/cinfo,百度服務端解密后看到的數據如下:
偷拍插件采集數據上傳后,百度服務端程序會對上傳的數據做判定,然后給控件返回一個狀態碼,網頁腳本通過控件的getLastErrorCode接口獲取到這個狀態碼。當服務端程序通過進程信息或截圖判定用戶正在使用360瀏覽器,則返回-3這個狀態碼。
網頁腳本判斷如果返回的狀態碼是-3,那么就調用控件的getSendbackMessage接口,目的是獲得百度服務端返回的一段文字,并彈出對話框提示用戶更換其他瀏覽器。
在這個過程中,上傳信息判定是由百度云端決定的,彈框的文字也是由云端發送的,關鍵邏輯都由云控。
由于上傳信息非常豐富,因此百度云端判斷相當靈活,不僅可以針對360瀏覽器不兼容,還可以針對系統中其他任何軟件做不兼容提示,提示文字也是完全云控、可隨時變化的,同時還可以隨時在服務端配置升級,要求用戶更新插件,以便應用新的信息采集和對抗策略。
百度“偷拍插件”技術原理
npBaiduSafeInput.dll控件的關鍵在于sendEnvironmentInfo這個函數,它首先收集信息,收集的信息包括cinfobmp兩個字段。
cinfo字段包括了除了截屏之外的其它系統信息,是一個簡單的key-value結構數據,使用AES加密算法進行了加密,然后編碼為ASCII-HEX后,保存在數據包的cinfo字段中。
獲取cinfo.processlist字段系統進程列表信息使用的API是ToolHelp32 系列API,通過對比當前進程Pid,在進程列表中篩選出當前瀏覽器進程名并保存為cinfo.currentprocess字段。
截屏數據則通過GetDIBits截取屏幕指定區域的圖像并保存為BMP數據,編碼為ASCII-HEX后,保存在bmp字段。
這些數據再加上之前獲取的sid數據,和計算整個數據包的md5數據,拼接成具有4個字段的數據包,通過WinHttp接口發送加密的HTTPS數據到http://isafe.baidu.com/cinfo這個百度服務器地址上。
綜上,百度用于判定用戶軟件使用情況的數據有:當前進程、進程列表和屏幕截圖。以下為幾處代碼分析:
1、百度“偷拍插件”通過GetDIBits對用戶電腦屏幕截圖:
2、把截取的BMP數據編碼后發送到百度服務器:
3、抓取用戶的Cpu、磁盤序列號、ip地址、mac信息、網關信息、DNS信息和所有進程列表上傳:
4、網頁腳本根據百度服務端返回的狀態碼彈出相應提示,怎樣提示完全由服務端控制:
推薦閱讀
速途網訊 1月28日,360安全中心發布公告稱,百度鳳巢正在大規模部署“偷拍插件”。它在未作任何提示、未經用戶允許的情況下,暗中對用戶電腦屏幕截圖,并把圖片上傳到百度服務器。此前,只有木馬和間諜軟件才會偷拍屏>>>詳細閱讀
本文標題:百度“美杜莎偷拍插件”技術分析
地址:http://www.brh9h.cn/a/11/20130128/258194.html