導讀:群控系統(tǒng)一般由多個部分組成,例如在手機端運行的服務、在手機端用于模擬輸入的輸入法、在 PC 端用來對所有設備操作與監(jiān)控的中控臺、在服務器中運行的連接所有設備的服務端等。本文主要介紹對群控軟件技術的相關研究與實踐。
文|李伊洋 網(wǎng)易易盾 Android 安全工程師
群控功能:區(qū)別于模擬點擊工具,群控系統(tǒng)一般由多個部分組成,例如在手機端運行的服務、在手機端用于模擬輸入的輸入法、在 PC 端用來對所有設備操作與監(jiān)控的中控臺、在服務器中運行的連接所有設備的服務端等。
群控系統(tǒng)的組成:作為一個系統(tǒng),群控系統(tǒng)由 PC 中控模塊、手機通信模塊、功能實現(xiàn)模塊三部分組成,但是不一定每個模塊都是獨立或是獨一的,用某智控產(chǎn)品舉例,只有 PC 中控軟件與一個 APK 安裝包兩個軟件,而某助手軟件包含 PC 中控軟件、輸入法 APK、通信 APK、UIAutomator 功能 APK 四個軟件。
一、PC 中控模塊
PC 中控軟件是整個系統(tǒng)的核心。核心功能可以分為對設備的監(jiān)控與控制、對腳本的編寫與控制兩個部分。
對設備的監(jiān)控是指會有大量的設備屏幕在這里被展示,通過顏色或是一些小標志,可以看到對應設備的手機通信模塊是否正常運轉。當指令下發(fā)時,沒有正確執(zhí)行指令的設備,由于屏幕不一致就會顯現(xiàn)出來。黑灰產(chǎn)廠商能夠快速排查問題,保證設備墻正常運轉。這部分功能依賴于 adb 或是網(wǎng)絡通信,做法可以根據(jù)手機內的通信模塊而改變。
腳本的編寫主要是依賴于對手機 Activity 樹狀結構的解析,使得 View 信息能被腳本開發(fā)人員獲取,通過 View 的 id 或是 text 屬性,從而定位 View 的坐標,完成腳本開發(fā)。
同時部分中控軟件也支持腳本市場的功能,可以直接編寫腳本開發(fā)人員已經(jīng)編寫好的腳本。
腳本由 PC 中控軟件控制下發(fā),做到批量執(zhí)行、定期執(zhí)行、延期執(zhí)行、批量停止等操作。
二、手機通信模塊
主要用于對 PC 中控軟件的指令進行解析,以及將屏幕圖像傳遞給 PC 中控軟件。以某老牌群控軟件為例。
接受指令:
也用于彈出部分提示信息,例如查找指定設備,則會發(fā)出聲音,并提示關閉提示倒計時:
三、功能實現(xiàn)模塊
每個群控系統(tǒng)都有他們特有的做法用來實現(xiàn)具體的功能。在整個群控系統(tǒng)中,這個模塊是最接近被保護應用的,目前的檢測思路主要也是圍繞功能模塊進行。下文會對這里提到的各個功能進行更具體的分析。
獲取 Activity 結構:腳本開發(fā)和使用中,都需要獲取到 View 的信息。為了獲取這個信息,需要手機內的功能模塊輔助完成。
模擬點擊:模擬正常用戶的點擊,觸發(fā)應用按鈕、屏幕滑動等內容。模擬點擊一般不會是單獨的一個 apk,常見集成在輸入法內。
其他:如截屏、開關 WIFI、重啟設備等小功能就不再展開。
功能劃分
從群控實現(xiàn)了的功能出發(fā),可以將其分為以下的功能:
對系統(tǒng)的操作、WIFI 開啟或關閉、流量開啟或關閉、應用的安裝與卸載、應用 Activity 的啟動、通訊錄管理、文件的互傳、剪貼板的互轉、獲取 Activity 的樹狀結構與其他。
對系統(tǒng)的監(jiān)聽、短信及其內容的監(jiān)聽、屏幕變化的監(jiān)聽與其他。
對輸入的模擬、文本輸入的模擬、坐標點擊的模擬、多選框選擇的模擬與其他。
對自身的邏輯、錄制操作的保存、已錄制操作的重放、已編寫腳本的解析、延遲腳本的處理、各個部分間的通信、多個腳本的控制與其他。
技術細節(jié)
群控往往是跨端實現(xiàn)功能,現(xiàn)在基本可分為本地群控和云控,區(qū)別在于是否開放外網(wǎng)操縱設備。
云控的好處在于設備本身可以是分散的,例如黑灰廠商向一個正常設備租下一段時間,通過云端發(fā)送指令操作,完成黑灰操作后再結算費用給散戶。這樣從設備的聚集性上就很難看出異常,不論是 ip 還是 gps 都沒有任何的聚集性。
同時云控也有另外的做法,同樣使用傳統(tǒng)設備墻,設備墻連接一個中控服務器,服務器開放外網(wǎng),這樣就能隨時隨地操作設備墻,主要用于大型團隊的操作。而本地群控就是最傳統(tǒng)的做法,如果設備較少就可以直接通過集線器連接電腦,電腦直接通過群控系統(tǒng)跨端操作設備墻。如果設備過多,可以加入一個中轉的中控服務器,但是不連接外網(wǎng),而是通過路由器等在內網(wǎng)直接接受指令。
功能模塊原理
模擬點擊:模擬點擊的具體內容可以查看之前發(fā)過的 Android 模擬點擊研究相關文章。
控件查找:控件查找對于任何一個群控系統(tǒng)與自動點擊工具來說都是必備功能。除開通過 opencv 庫做到的找圖和 OCR 找字之外,對于控件查找更重要的能力在于對其屬性的獲取。例如一個界面中若是有兩個都是長得一模一樣的按鈕,那么不論是找圖還是 OCR 都只會返回第一個值,后一個按鈕就失效了。
于是出于腳本穩(wěn)定性考慮,群控系統(tǒng)和自動點擊工具都會想方設法去獲得控件的屬性,例如唯一標識的 ID。
以現(xiàn)有的樣本為例,群控系統(tǒng)獲得控件屬性的辦法有兩種,分別是類 Auto.js 做法與類 UIAutomator 做法。
類 Auto.js :該做法依賴于無障礙服務,所以需要注冊無障礙服務,但并非所有軟件都需要注冊該服務
*/com.stardust.autojs.core.accessibility.AccessibilityService
優(yōu)點:開發(fā)容易且穩(wěn)定。缺點:依賴無障礙服務,通過獲取無障礙服務列表可以檢測。
類 UiAutoMator:這種做法來源于測試工具,appium 也是同樣的做法。
大致思想是將 UIAutomator 調試橋植入設備,然后可以通過 adb shell uiautomator dump 命令,將當前的 activity 的樹狀結構 dump 成一個 xml 形式,然后解析該 xml,就可以得到 activity 中的所有控件屬性。
可以看到在沒有使用無障礙服務的情況下,獲得了所有的 View 信息。
優(yōu)點:脫離了對無障礙服務的依賴,使得檢測更困難。缺點:類似于早期的 monitor 工具,所有的 xml 都需要 dump 然后解析,時效性較差且效率較低。
有效的檢測方案
網(wǎng)絡通信:目前發(fā)現(xiàn)群控基本都依賴于 socket 通信,對于一些處理不是很好或是開發(fā)時間較久的群控系**統(tǒng),可以通過復占端口的方式檢測。
模擬點擊:模擬點擊方式通過 adb 權限,MotionEcent.obtain 模擬,injectInputEvnet 注入,易盾 Android 反外掛能力已經(jīng)擁有了對這種模擬行為的檢測能力。點擊免費試用網(wǎng)易易盾反外掛產(chǎn)品
文章來源:http://www.zghlxwxcb.cn/news/detail-665728.html
安裝包:在上文中提到過的相關模塊,都可以作為檢測的依據(jù)。文章來源地址http://www.zghlxwxcb.cn/news/detail-665728.html
到了這里,關于知物由學 | “群控軟件”助長黑灰產(chǎn)套利的零和游戲,硬核技術打擊隱秘的不公的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!