ESET的研究人員最近發現了一個活躍的StrongPity活動,該活動會偽裝成Shagle應用程序來傳播木馬化的Android Telegram應用程序。 ESET研究人員認為其幕後組織是StrongPity APT組織。 Shagle是一種隨機視頻聊天服務,提供陌生人之間的加密通信。該活動自2021年11月起活躍,與完全基於網絡的真正Shagle網站不同,該網站不提供官方移動應用程序來訪問其服務,只提供Android應用程序供下載,這也就意味著用戶不可能進行基於網絡的流媒體傳輸。
被下載的惡意應用程序是一個功能齊全但被木馬化的合法Telegram應用程序,然而,其最終卻以Shagle應用程序的形式呈現。我們其稱為假冒Shagle應用程序、木馬化的Telegram應用程序或StrongPity後門。 ESET研究人員將其命名為Android/StrongPity.A。
StrongPity後門具有各種間諜功能:它的11個動態觸發模塊負責記錄電話、收集短信、通話記錄列表、聯繫人列表等。這些模塊均是首次被發現。如果受害者授予惡意StrongPity應用程序可訪問性服務,它的一個模塊也可以訪問傳入的通知,並能夠從Viber、Skype、Gmail、Messenger和Tinder等17個應用程序中竊取通信。
目前,此次攻擊還沒有特定的受害者。不過在研究過程中,從虛假網站下載的惡意軟件不再活躍,也不再可能成功安裝它並觸發其後門功能,因為StrongPity還沒有為其木馬Telegram應用程序獲得自己的API ID。但如果攻擊者決定更新惡意應用程序,這種情況可能會隨時改變。
技術分析這場StrongPity活動圍繞著一個Android後門展開,該後門來自一個包含“dutch”字樣的域名。該網站模仿了shagle.com上名為Shagle的合法服務。在下圖中,你可以看到兩個網站的主頁。該惡意應用程序可直接從虛假網站下載,Google Play store中還未出現該惡意程序。這是合法Telegram應用程序的木馬化版本,看起來就像Shagle官方應用程序一樣。注意,目前還沒有Shagle的官方Android應用程序。
左邊為合法網站,右邊為虛假網站
如下圖所示,虛假網站的HTML代碼包含了2021 11月1日使用自動工具HTTrack從合法的shagle.com網站複製的證據。惡意域名是在同一天註冊的,所以從那天起,虛假網站和假冒Shagle應用程序就可以下載了。
在虛假網站的HTML代碼中發現的由HTTrack工俱生成的日誌記錄
受害目標2022年7月18日,當一個惡意應用程序和一個模仿shagle.com的網站鏈接被上傳時,研究人員在VirusTotal的YARA規則被觸發。與此同時,研究人員在Twitter上收到了關於該樣本的通知,儘管它被錯誤地歸因於Bahamut,但仍然沒有識別出任何受害者。
幕後組織虛假Shagle網站發布的APK使用與趨勢科技在2021年發現的木馬化敘利亞電子政務應用程序相同的代碼簽名證書進行簽名,該應用程序的幕後組織就是StrongPity。
該證書籤名了假冒的Shagle應用和木馬化的敘利亞電子政務應用
StrongPity早在之前的活動中就使用了假冒Shagle應用程序中的惡意代碼,並實現了一個簡單但功能強大的後門。這個代碼只在StrongPity開展的活動中使用過。在下圖中,你可以看到一些添加的惡意類,其中許多經過模糊處理的名稱在兩個活動的代碼中甚至是相同的。
木馬化的敘利亞電子政務應用程序(左)和木馬化的Telegram應用程序(右)的類名比較
將此次活動的後門代碼與木馬化的敘利亞電子政務應用程序的後門代碼(SHA-1: 5A5910C2C9180382FCF7A939E9909044F0E8918B)進行比較,它具有擴展的功能,但使用相同的代碼來提供類似的功能。在下圖中,你可以比較兩個示例中負責在組件之間發送消息的代碼。這些消息會觸發後門的惡意行為,因此,研究人員堅信假冒Shagle應用程序與StrongPity組織有關。
負責在木馬化的敘利亞電子政務應用程序中觸發惡意功能的消息
負責在假冒Shagle應用程序中觸發惡意功能的消息
初始訪問如上所述,假冒的Shagle應用程序被託管在虛假Shagle網站上,受害者必須選擇從該網站下載並安裝該應用程序。由於目前還無法從Google Play下載該惡意軟件,研究人員不知道潛在的受害者是如何被誘導到虛假網站下載惡意軟件的。
工具集根據虛假網站上的描述,這款應用是免費的,旨在用於與新朋友見面和聊天。然而,下載的應用程序卻是一個被惡意修復的Telegram應用程序,早在2022年2月25日左右就可下載。
這個木馬化的Telegram使用了與合法Telegram應用相同的程序包名。包名應該是每個Android應用的唯一ID,並且在任何給定設備上都必須是唯一的。這意味著,如果潛在受害者的設備上已經安裝了官方Telegram應用程序,那麼這個後門版本就無法安裝,如下圖所示。這可能意味著兩種情況:攻擊者要么首先與潛在受害者溝通,誘導他們在安裝了Telegram的設備上卸載Telegram,要么該活動將重點放在很少使用Telegram進行通信的國家。
如果設備上已經安裝了Telegram官方應用,則無法成功安裝木馬版本
StrongPity的木馬化Telegram應用程序應該可以像官方版本一樣使用標準的API進行通信,理論上來講,這些API在Telegram網站上有很好的記錄,但由於這個應用程序已經不能工作了,所以我們無法再檢查。
在研究過程中,從虛假網站上獲得的當前版本的惡意軟件不再活躍,也不再可能成功安裝並觸發其後門功能。當研究人員嘗試使用他們的電話號碼註冊時,重新打包的Telegram應用程序無法從服務器獲取API ID,因此無法正常工作。如下圖所示,應用程序顯示API_ID_PUBLISHED_FLOOD錯誤。
使用電話號碼註冊時顯示錯誤
根據Telegram的錯誤文檔,StrongPity似乎沒有獲得自己的API ID。相反,它使用了Telegram開源代碼中包含的API ID樣本來進行初始測試。 Telegram監控API ID的使用並限制示例API ID,因此在發布的應用程序中使用它會導致如上圖所示的錯誤。由於該錯誤,用戶無法再註冊和使用該應用程序或觸發其惡意功能。這可能意味著StrongPity的運營商沒有考慮到這一點,或者可能在傳播應用程序時有足夠的時間來監視受害者使用的Telegram ID。由於該網站從未提供過該應用程序的新版本,這可能表明StrongPity成功地將惡意軟件部署到了其預期目標。
所以,在進行研究時,虛假網站上的假冒Shagle應用程序已不再活躍。然而,如果攻擊者決定更新惡意應用程序,這個情況可能會隨時改變。
StrongPity後門代碼的組件和所需的權限附加到Telegram應用程序的AndroidManifest.xml文件中。如下圖所示,這可以很容易地看出惡意軟件需要哪些權限。
AndroidManifest.xml突出顯示了StrongPity後門的組件和權限
從Android清單中,我們可以看到惡意類被添加到org.telegram.messenger包中,作為原始應用程序的一部分出現。
初始惡意功能是由設置好的操作(BOOT_COMPLETED、BATTERY_LOW或USER_PRESENT)後執行的三個廣播接收器之一觸發的。首次啟動之後,它會動態註冊其他廣播接收器來監視SCREEN_ON、SCREEN_OFF和CONNECTIVITY_CHANGE事件。然後,假冒Shagle應用程序使用IPC(進程間通信)在其組件之間進行通信,以觸發各種操作。它使用HTTPS與CC服務器聯繫,發送有關受攻擊設備的基本信息,並接收包含11個二進制模塊的AES加密文件,該文件將由父應用程序動態執行。如下圖所示,這些模塊存儲在應用程序的內部存儲/data/user/0/org.telegram.messenger/files/.li/中。
StrongPity後門接收包含可執行模塊的加密文件
從服務器接收的模塊存儲在StrongPity後門的內部存儲中
每個模塊負責不同的功能。模塊名列表存儲在sharedconfig.xml文件的本地共享首選項中,如下圖所示。
必要時,模塊由父應用程序動態觸發。每個模塊都有自己的模塊名稱,並負責不同的功能,例如:
libarm.jar(cm module)——記錄通話;
libmpeg4.jar(nt module)——收集來自17個應用程序的傳入通知消息的文本;
local.jar(fm/fp module)——收集設備上的文件列表(文件樹);
phone.jar(ms module)——通過竊取聯繫人姓名、聊天信息和日期,濫用可訪問性服務來監視消息應用程序;
resources.jar(sm module)——收集存儲在設備上的短信;
services.jar(lo module)——獲取設備位置;
systemui.jar(sy module)——收集設備和系統信息;
timer.jar(ia module)——收集已安裝應用程序的列表;
toolkit.jar(cn module)——收集聯繫人列表;
watchkit.jar(ac module)——收集設備帳戶列表;
wearkit.jar(cl module)——收集調用日誌列表;
StrongPity後門使用的模塊列表
所有獲得的數據都存儲在clear-in/data/user/0/org.telegram.messenger/databases/outdata中,然後使用AES加密並發送到CC服務器,如下圖所示。
加密的用戶數據被洩露到CC服務器
與第一個手機版StrongPity相比,這個StrongPity後門擴展了監視功能。它可以請求受害者激活可訪問性服務並獲得通知訪問權。如果受害者啟用了它們,惡意軟件將監視傳入的通知,並濫用可訪問性服務,從其他應用程序中竊取聊天記錄。
針對受害者的惡意軟件請求、通知訪問和可訪問性服務
通過通知訪問,惡意軟件可以讀取來自17個目標應用程序的通知消息。以下是他們的軟件包名稱列表:
Messenger (com.facebook.orca)
Messenger Lite (com.facebook.mlite)
Viber – Safe Chats And Calls (com.viber.voip)
Skype (com.skype.raider)
LINE: Calls Messages (jp.naver.line.android)
Kik — Messaging Chat App (kik.android)
tango-live stream video chat (com.sgiggle.production)
Hangouts (com.google.android.talk)
Telegram (org.telegram.messenger)
WeChat (com.tencent.mm)
Snapchat (com.snapchat.android)
Tinder (com.tinder)
Hike News Content (com.bsb.hike)
Instagram (com.instagram.android)
Twitter (com.twitter.android)
Gmail (com.google.android.gm)
imo-International Calls Chat (com.imo.android.imoim)
如果設備已處於根目錄,則惡意軟件會默默地嘗試授予WRITE_SETTINGS, WRITE_SECURE_SETTINGS, REBOOT, MOUNT_FORMAT_FILESYSTEMS, MODIFY_PHONE_STATE, PACKAGE_USAGE_STATS, READ_PRIVILEGED_PHONE_STATE權限,以啟用可訪問性服務,並授予通知訪問權限。之後,StrongPity後門嘗試禁用SecurityLogAgent應用程序(com.samsung.android.securitylogagent),這是一個官方系統應用程序,有助於保護三星設備的安全,並禁用來自惡意軟件本身的所有應用程序通知,這些應用程序通知可能在未來顯示給受害者,以防應用程序錯誤,崩潰或警告。 StrongPity後門本身並不嘗試對設備進行根操作。
AES算法使用CBC模式和硬編碼密鑰來解密下載的模塊:
AES key–aaaanothingimpossiblebbb
AES IV–aaaanothingimpos
總結攻擊者重新利用了官方Telegram應用程序,在其中加入了後門代碼。本次活動中的惡意代碼、功能、類名以及用於簽署APK文件的證書與之前StrongPity組織發起的活動相同,有鑑於此,本次攻擊活動背後的組織是StrongPity組織。
在我們進行研究時,由於API_ID_PUBLISHED_FLOOD錯誤,在虛假網站上可用的示例被禁用,這導致惡意代碼沒有被觸發,潛在的受害者可能會從目標設備中刪除異常應用程序。
通過分析代碼可知,後門是模塊化的,額外的二進制模塊是從CC服務器下載的。這意味著模塊的數量和類型可以在任何時候改變,以適應由StrongPity組織發起的活動。
根據我們的分析,這似乎是StrongPity組織開發的第二個針對安卓惡意軟件的程序,與第一個版本相比,它還濫用了可訪問性服務和通知訪問,將收集的數據存儲在本地數據庫中,嘗試執行su命令,並且對於大多數數據收集使用下載的模塊。
Recommended Comments