趨勢科技發現了好幾個會在用戶不知情下,訂閱加值服務的Joker相關新應用程式。該惡意軟體已經從 Google Play商店移除1,700多個有問題的應用程式
Joker拿出了更多把戲:就跟過去的攻擊一樣,新的Android惡意應用程式會在未經使用者同意就訂閱加值服務。
Joker(又被稱為Bread)是長期針對Android裝置的惡意軟體。該惡意軟體從2017年開始出現,到2020年初Google已經從Play商店移除1,700多個有問題的應用程式。但隨後惡意軟體製造者又上傳了更多樣本,如Zscaler所發現的那些。
趨勢科技之前的研究發現其會利用GitHub來隱藏惡意檔案的變種,藉此躲避偵測,讓新變種潛入Google Play。
因為它們與早期樣本的相似,我們懷疑這些應用程式並非是個別的單一攻擊,而是整體威脅活動的一部分。
Joker新應用程式:鍵盤桌布、手電筒、圖片編輯器….
以下是與Joker有關的新應用程式ID。我們已經通知Google,目前這些應用程式也已下架:
- com.daynight.keyboard.wallpaper (鍵盤桌布)
- com.pip.editor.camera2021 (PIP Photo Maker 2021)
- com.light.super.flashlight (手電筒)
- com.super.color.hairdryer (Sound Prank Hair Clipper, Fart, Crack Screen Prank)
- com.super.star.ringtones (Pop Ringtones)
- org.my.favorites.up.keypaper
- com.hit.camera.pip
- com.ce1ab3.app.photo.editor
- cool.girly.wallpaper (SubscribeSDK;在VirusTotal發現)
在隨後的調查中,我們發現更多相關的惡意應用:
- com.photo.modify.editor (圖片編輯器)
- com.better.camera.pip (PIP camera – Photo Editor)
- com.face.editor.photo (照片編輯器)
- com.background.wallpaper.keyboard (鍵盤桌布)
我們遇到一個符合Joker偵測規則卻似乎帶有不同有效負載(payload)的樣本時,便開始進行調查。
其中一個應用程式(org.my.favorites.up.keypaper)的早期版本是非惡意的。但隨著版本更新,開發者逐漸加入了惡意程式碼。
新加入的程式碼被用於Dropper(用於安裝其他惡意軟體)。程式碼的組件(包括子套件名稱、Class名稱、Method名稱和垃圾程式碼)都經過嚴重混淆化。每個字串都用AES + Base64加密過。
在沙箱檢查應用程式是否正在運行後,該應用程式從APK內的asset/settings.bin解密初始有效負載。這個有效負載只是收集後設資料(metadata)並從C&C伺服器取得密鑰來從asset/cache.bin解密第二個有效負載。後設資料包含了Install Referrer資訊。因此我們懷疑Google Play並非是唯一的感染途徑。
雖然無法從C&C伺服器取得密鑰,但我們透過程式碼相似度發現類似的應用程式。透過比較,我們發現其有效負載Dropper行為並非獨一無二;在受感染Google Play商店應用程式裡,我們看到有些應用程式只使用一個階段(而非兩個階段)下載來取得最終有效負載。
樣本如何運作
主要有效負載使用com.unite.loader.LoaderExternalClass作為進入點。Method顯示如下:
底下該Method的主要功能:
Method名稱 | 功能 |
Init | 進行初始工作(收集後設資料,從C&C伺服器取得設定檔,根據條件觸發惡意行為)並解密最終有效負載 |
loadUrl | 透過客製化WebView載入網址 |
doOffer | 建立WebView,載入網址並執行從C&C來的JavaScript |
onNotificationPosted | 接收簡訊時,從中讀取OTP代碼 |
onMessageReceived | 收到Firebase訊息時觸發doOffer method |
onActivityCreated/ onActivityResumed/ onActivityDestroyed | 取得WebView活動的生命週期。 |
Joker首先會收集裝置資訊和電話號碼。接著從C&C取得網址和JavaScript,並在Activity建立WebView。然後在WebView載入訂閱網頁的網址,之後執行JavaScript。
該JavaScript程式碼用來自動地訂閱加值服務。
除此之外,Joker還會試著載入本地端檔案autopilot.js來進行除錯。
有意思的是,我們在VirusTotal找到名為SubscribeSDK(cool.girly.wallpaper)的應用程式。它包含了autopilot.js檔案,並且與前述應用程式高度相似。從功能面來看,這似乎是用於除錯的測試版本。
autopilot.js內包含數百個用於加值服務的目標網址。根據裡面出現過的語言(如英文、德文、葡萄牙文、西班牙文、阿拉伯文、泰文等),可以判斷這些網站來自不同區域。
此JavaScript在解析網頁和搜索特定元素方面下了很多功夫,好做到內容填充和自動點擊。
在某些情況下需要通過CAPTCHA步驟才能完成訂閱。Joker仍然可以繞過。
Joker接著會繼續訂閱流程,通常如下:
- 選擇手機電信業者
- 輸入MSISDN(行動用戶國際識別碼)
- 點擊OTP(一次性密碼)按鈕
- 輸入OTP代碼
- 點擊訂閱按鈕
首先,Joker選擇一個手機電信業者。然後根據電話號碼輸入MSISDN,並透過點擊OTP按鈕來取得OTP代碼。OTP代碼通常透過SMS接收。Joker利用NotificationListenerService組件監控簡訊內容來讀取代碼。接著惡意軟體將代碼輸入頁面上的輸入框。最後,它會點擊訂閱按鈕來啟用訂閱。
此新樣本內的惡意程式碼不斷演變而成為了SDK。它還不斷加入躲避技術來防止被偵測。最早的相關樣本出現於去年三月。
我們在autopilot.js裡看到一些中文的程式碼註釋。中文還出現在C&C主控介面及2019年所發現樣本內殭屍網路程式碼的註釋。這帶來了背後運營者的線索。
結論
我們可以從這些新樣本和其他早期樣本的相似性看出這些Joker應用程式並非個別的單一攻擊,而是整體威脅活動的一部分。話雖如此,所有的新樣本也可能並非來自同一個開發者,因為他們通常沒必要在這麼短的時間內重新建構程式碼。
Joker攻擊活動的持續進行讓我們不得不思考運營者的出發點。為什麼這些駭客要幫助這些加值服務公司?訂閱網站並沒有推出推薦方案,因此運營者似乎無法從中受益。有些運營者會在Google偵測到他們的應用程式時就停止。從Joker運營者即便被多次捉到也要努力確保惡意軟體持續在Google Play來看,很可能有能夠從中獲利的方法。
這些惡意應用也引發對服務商網站安全性的擔憂。有些使用者抱怨涉及的服務商也有過失,因為他們沒有與使用者確認訂閱。儘管這些網站具備驗證措施,但太過簡單而可以被破解。
Joker運營者的招數似乎層出不窮,因此安全研究人員、企業和使用者都應保持警惕,偵測並阻止惡意軟體。
建議
當安全研究人員揭露了數百個Joker應用程式時,該惡意軟體迅速以新面貌出現。因此:
建議使用者避免下載不必要的應用程式。此外也建議定期檢查未使用的應用程式並加以移除。另一個好的安全習慣是經常修補和更新裝置。此外,隨時注意行動安全的最新研究也有所幫助。
議用下列趨勢科技解決方案來保護行動裝置:
- 趨勢科技行動安全防護企業版提供裝置、應用程式管理和資料保護。它能夠保護裝置抵禦漏洞攻擊,未經授權的應用程式存取以及惡意軟體和詐騙網站。
- 趨勢科技的行動應用程式信譽評比服務(MARS)透過沙箱和機器學習技術保護Android和iOS裝置。加強對惡意軟體和應用程式漏洞攻擊的防禦能力。
入侵指標
App ID | 下載數(應用程式下架前) | SHA256 | 趨勢科技偵測名稱 |
com.daynight.keyboard.wallpaper | 100,000+ | 0e2accfa47b782b062cc324704c1f999796f5045d9753423cf7238fe4cabbfa8 | AndroidOS_JokerA.A |
com.pip.editor.camera2021 | 10,000+ | 22ef4b0deefc5ccad73f838ec6cc4f99b412e43439435cb9cdbb760bc5e5dcdd | AndroidOS_JokerA.A |
com.light.super.flashlight | 10+ | f5224a4e7333713528aa99ddc1a15855061c268c73611f533bb2d2b61664ba7a | AndroidOS_JokerA.A |
com.super.color.hairdryer | 10,000+ | d1c8dc86601d6d36674b906c6179ef6983975bec5f731ff236e9720903c10cca | AndroidOS_JokerA.A |
com.super.star.ringtones | 5,000+ | 847f124576b9ef0b20c8135b85be31f084d117910b6ee84bedd4bd8cf1130586 | AndroidOS_JokerA.A |
org.my.favorites.up.keypaper | N/A | 459f6836cdfefdb2e1d32f3a2d739c27048797000b269d47ca9a6d9de2f664f2 | AndroidOS_JokerA.A |
com.hit.camera.pip | N/A | 018b705e8577f065ac6f0ede5a8a1622820b6aeac77d0284852ceaecf8d8460c | AndroidOS_JokerA.A |
com.ce1ab3.app.photo.editor | N/A | 061bb1811f87f99eb480a34d074833e3d4564017304c12e60b20a4c5eb32d354 | AndroidOS_JokerA.A |
cool.girly.wallpaper | N/A; VirusTotal發現的測試應用程式 | 3c560b87d30a5e57457d3838e759a8ed019a829f29843d9cc21a5e4ab356c9a0 | AndroidOS_JokerA.A |
com.photo.modify.editor | 圖片編輯器 | 75b31d048b4939f66b20324a5c3527cdaa90d647cda460b7a6030c6fed903ccf | AndroidOS_JokerA.A |
com.better.camera.pip | PIP Camera – Photo Editor | 1466011aebaa4cfdc9ca7db311cecb693e8122602a34d16cc1c2bc7ac21c7e68 | AndroidOS_JokerA.A |
com.face.editor.photo | 照片編輯器 | 07052c30ec1f2c91ea969beada78c4c871eb5f9b77f767892c72683a48afd567 | AndroidOS_JokerA.A |
com.background.wallpaper.keyboard | 鍵盤桌布 | 8bd8885e5b71e5c442afbf3fd5598f39b2ff274812896487417ee3eabc15bd90 | AndroidOS_JokerA.A |
@原文出處:No Laughing Matter: Joker’s Latest Ploy 作者:Echo Duan, Zhengyu Dong, Jesse Chang, Neo Ma