Joker(又名Bread)惡意軟體在幾個月時間裡,就感染了數百萬設備,而且需要手動幹預刪除,才能最終實現設備對惡意軟體的全部清除。
早在7月份的時候,谷歌安全研究人員就發現被Joker感染的問題。據調查,這款惡意軟體,早在3月份就開始活躍,截止目前,已經成功感染了將近數百萬臺的設備。通過分析,Joker是個技術簡單卻很難防禦的惡意軟體,所以導致了眾多設備的感染,其實Joker早在三年前就首次被發現。
詳細分析
研究人員最近在Google Play的樣本中檢測到了一個惡意軟體Joker的新版本,此更新版本利用Github頁面和存儲庫來逃避檢測。
自2017年被發現以來,該Joker惡意軟體一直困擾著移動用戶。2020年1月,Google從PlayStore中刪除了1700個受感染的應用程式,在過去的三年中該惡意軟體的技術也在不斷迭代中。最近,9月,安全公司Zscaler發現了17個樣本,這些樣本已上傳到Google PlayStore。Joker就是這一系列惡意活動的幕後策劃者,從對不知情的用戶籤名到高級服務,再從竊取簡訊到手機通訊錄,幾乎所有的惡意活動Joker都有涉及。
該惡意軟體已成為眾所周知的持久威脅,因為開發者不斷進行一些小的更改以尋求Google防禦方面的漏洞。他們之前嘗試過的技術包括加密以隱藏字符串不被分析引擎發現,除此之外,開發者還經常對版本進行更新,即上傳一個乾淨版本的應用程式,然後通過更新添加惡意代碼。研究人員最近在Google Play的樣本中檢測到一個新的Joker惡意軟體版本,該版本利用Github頁面和存儲庫來逃避檢測。安全研究員Tatyana Shishkova還發現並分析了該樣本。
研究人員分析過的應用承諾了高清和4K質量的壁紙,並被下載了1000多次。在被舉報為惡意軟體後,谷歌已將其從PlayStore中刪除。
推送Joker惡意軟體的牆紙應用程式,目前連結到該應用程式的URL已經失效
有效載荷分析
這個新樣本與以前的版本之間最明顯的區別是使用Github和Github頁面存儲其惡意有效載荷。這種技術在任何早期的Joker惡意軟體樣本中都沒有出現過,幸運的是,與該惡意軟體連接的Github頁面和存儲庫都已被刪除。
以下是它的新存儲策略和其他近期技術發展的細節:
1.它將惡意代碼注入到新位置,而不是應用程式類或啟動程序活動。
2.在最初的版本中,Joker通常使用注入的代碼下載其有效載荷。不過此版本首先從遠程伺服器獲得一個json配置字符串,然後解密欄位以獲得下一階段命令和控制伺服器(C&C)以及下一個有效載荷的入口點函數。
不同的Joker樣本中的配置文件不同,研究人員研究的樣本有以下json格式的加密欄位。
3. 該惡意軟體使用Github頁面來促進惡意活動,同時避免URL檢測。用於獲取配置字符串的C&C是hxxps://surasuke7.github.io/retrofit/static/vega-schema.json。Github用戶使用名為surasuke7的名稱,並將配置隱藏在庫更新中,路徑是static / vega-schema.json。
4.Github也用於裝載有效載荷,第一個有效載荷C&C是hxxps://cdn.jsdelivr.net/gh/surasuke7/vega@gh-pages/releases/v1.5.4/ppk-62.zip(與以前的版本不同,有效載荷著陸頁面不是阿里雲或亞馬遜)。為了給URL提供更多的上下文:jsdelivr是一個幫助加速訪問GitHub的快速內容傳遞網絡(CDN),並且URL有一個特定的格式(hxxps://cdn.jsdelivr.net/gh/user/repo@version/file)。
C&C URL顯示有效載荷位於surasuke7用戶的Vega存儲庫中,位於gh-pages分支中,文件路徑為 releases/v1.5.4/ssp-62.raw。git提交歷史表明,該攻擊流已在10月初被使用過了。
5.最新的有效載荷的行為類似於之前的樣本,第一個有效載荷將在下載下一個有效載荷之前檢查SIM ISO代碼。
攻擊過程
一旦第二個有效載荷被加載到內存中,感染過程將以靜默方式運行,而活動設備上沒有任何明顯的行為。以下是對過程的描述和說明:
1.惡意有效載荷將調用loadNewJob函數以從C&C獲得新的攻擊任務,而C&C將決定有效載荷的攻擊行為,下圖顯示了Joker使用共享首選項文件中的deviceID來記錄設備是否已被感染。
a. register
此函數用於將受害者的設備註冊到C&C伺服器,伺服器將向該設備發送第一個任務。
b. getJob
惡意有效載荷使用此函數來請求新任務。
它們中的任何一個都將根據其Job類返回一個Job對象。json結構應該如下:
最後,它運行該作業並向主處理程序發送一條消息以啟動另一個惡意模塊,該模塊將劫持WebView。
2. Joker通過調用setWebViewClient來設置一個定製的webViewClient對象來劫持WebView。
如上圖所示,它主要覆蓋onPageFinished,shouldInterceptRequest和ShouldOverrideUrlLoading。
攔截可以通過兩種方式完成:中繼和黑客攻擊。他們每個人都會根據C&C響應(分別對應於relays數組和thks數組)檢查URL是否可以中繼或入侵。
惡意軟體使用以下函數來完成對受害者的攻擊:
a. loadUrl
如果一個URL即將加載到WebView中,並且check_hack響應為True,則惡意軟體將向私有處理程序發送一條消息。此消息將調用requestPage函數,此函數主要嘗試為用戶訂閱未添加的高級服務。
b. intercept
如上所述,該惡意軟體試圖通過中繼和黑客攔截請求。
中繼
這將檢查最終的URL是否可以中繼,如果可以,該惡意軟體將運行中繼函數,以將用戶重定向到C&C指定的另一個URL。
黑客
這將替換響應正文中的某些項,如果URL無法中繼,則在攔截結束時,它將嘗試使用以下步驟來攻擊URL:
首先,請求必須為GET,並且當前網址應在C&C的thks數組響應中找到;
然後,它執行請求並獲得原始響應;
最後,它調用distortContent函數來攻擊URL;
c. onPageFinished
這個函數將嘗試運行C&C發送的JS代碼
3.該惡意軟體還試圖向受害用戶添加訂閱付費服務。
加載URL時,惡意軟體會檢查SIM運營商是否為AIS(泰國的移動運營商)以及URL是否為hxxp://ss1.mobilelife.co.th/wis/wap。如果兩個參數都滿足,那麼它將以靜默方式向受感染的用戶訂閱付費服務。
具體步驟如下:
a.向操作員請求確認碼;
b.閱讀通知或簡訊中的確認碼;
C.用確認碼向操作員發送確認請求;
它在用戶不知情的情況下執行所描述的所有步驟
4.該惡意軟體可以運行JS代碼。
與它覆蓋shouldInterceptRequest函數的方式類似,如果一個頁面已經完成加載,它也將覆蓋onPageFinished以觸發JS代碼。
它從C&C響應中獲取一個Action對象,並檢查這些操作是否可以在當前頁面上運行。獲取Action對象後,它將向主處理程序發送一條消息,該主處理程序隨後將運行JS代碼。
以下是runJs函數:
這將調用EvaluationJavascript來運行JS代碼。
由於它使用JavascriptInterface實現JS橋,因此可以運行JS代碼,這些命令是通過C&C發送的。一些可能的命令如下:
1.addComment:向當前網頁添加評論;
2. finish:完成網頁;
3.sleep:使線程休眠特定的時間:
4.getPin:從通知中讀取PIN碼;
5. get:發送GET請求;
6. submitForm:通過post請求向C&C提交表單數據;
7.callPhone:當前不受支持;
8.sendSms:發送簡訊;
9. post:發送一個post請求;
通過進一步的調查,研究人員發現了另外兩個與surasuke7.github.io相關的樣本,但是它們都不在Google Play上。
乍一看,由於Joker惡意軟體樣本包含在可正常運行的應用程式中,因此用戶可能不會意識到有任何不妥。該應用程式承諾提供牆紙並將其重新打包到應用程式中,這是研究人員之前從Joker惡意軟體中已經看到的,如果應用程式沒有獲取簡訊的權限,它就需要獲得一定的運行權限。它需要android.permission.BIND_NOTIFICATION_LISTENER_SERVICE才能從通知中竊取密碼,並從android.permission.READ_PHONE_STATE來獲取SIM卡的移動國家/地區代碼。
眾所周知,Joker僅在帶有SIM卡的設備上運行並且僅適用於特定的SIM國家代碼。目前發現的這個特定樣本似乎僅針對泰國的移動運營商用戶。
該樣本包含Joker惡意軟體的其他長期運行的元素:它使用JS代碼運行C&C命令,並且在用戶不知情的情況下向用戶訂閱WAP服務。但這也表明,自2017年以來,Joker仍在不斷發展和迭代中。在這種變化中,攻擊者似乎正在尋找一種新的有效方法來隱藏惡意軟體的有效載荷。由於Github是一個已知的公共存儲庫,攻擊者可能認為使用它會幫助他們繞過安全檢測。另一個值得注意的變化是,惡意軟體現在在C&C伺服器上隱藏了所有有價值的線索,例如欺詐URL。
IoC
參考及來源:https://www.trendmicro.com/en_us/research/20/k/an-old-jokers-new-tricks--using-github-to-hide-its-payload.html