Android用戶注意,新銀行木馬Octo,能控制你手機

Octo是最近出現具有遠端存取能力的新銀行木馬。這隻Android安卓手機病毒能夠竊取你的銀行資料、劫持你的裝置,並且可以透過遠端存取在手機上進行詐騙。

Octo會將手機螢幕亮度設為零並開啟“請勿打擾”模式,完全靜音通知並讓受害者認為自己的手機已經關閉。這使得受害者並不知道網路犯罪分子此時正在手機上進行搜尋、下載私人資料、瀏覽網頁、使用應用程式等動作。

繼續閱讀

Cinobi 銀行木馬利用日本色情動畫遊戲等惡意廣告,攻擊加密貨幣交易所用戶

趨勢科技發現了一起新的社交工程(social engineering )惡意廣告攻擊,此攻擊瞄準了日本,並會散布惡意程式。這起攻擊行動,使用者一開始會先收到惡意廣告,這些廣告會偽裝成日本色情動畫遊戲、點數回饋應用程式或影音串流軟體,引誘使用者下載,利用側載 (sideloading) 技巧來載入並執行 Cinobi 銀行木馬程式,竊取登入憑證。

我們在 先前一篇部落格中介紹了一起稱為「Operation Overtrap」的攻擊行動,專門在日本地區散播一個名為「Cinobi」的最新銀行木馬程式。這起攻擊是由一個稱為「Water Kappa」的駭客集團所發動,他們會利用垃圾郵件來散布 Cinobi 木馬程式。除此之外,也會利用 Bottle 漏洞攻擊套件來散播木馬程式,該套件收錄了 Internet Explorer 的 CVE-2020-1380CVE-2021-26411 兩個較新的漏洞,駭客利用此套件來從事惡意廣告攻擊,專門瞄準 Microsoft Internet Explorer 的使用者。根據趨勢科技在 2020 一整年以及 2021 上半年的觀察,Bottle 漏洞攻擊套件似乎不太活躍,且其攻擊流量在六月中持續減少,這很可能意味著該集團已經改用其他新的攻擊方式和技巧。

不過,趨勢科技在這段期間發現了一起專門瞄準日本的最新社交工程惡意廣告攻擊,此攻擊會散布一個偽裝成免費色情遊戲、點數回饋應用程式或影音串流軟體的惡意程式。此惡意程式會利用側載 (sideloading) 技巧來載入並執行 Cinobi 銀行木馬程式。我們認為這是 Water Kappa 集團所發動的最新攻擊,瞄準對象是 Internet Explorer 以外的瀏覽器用戶。

仔細研究這起攻擊的 Cinobi 樣本之後,我們發現它在功能上大致維持不變,但在組態設定中的攻擊目標名單上,卻增加了多個日本虛擬加密貨幣交易所網站,意味著該集團已開始使用 Cinobi 來竊取受害者的虛擬加密貨幣帳戶。 

繼續閱讀

解析超過 80 萬人受害的 Geost 銀行木馬程式

Android銀行木馬Geost最先是從 Stratosphere Laboratory 的 Sebastian García、Maria Jose Erquiaga和 Anna Shirokova的研究披露出來。他們在監視 HtBot惡意代理網路時偵測到這隻木馬程式。此僵屍網路以俄羅斯銀行為目標,在該研究去年發表在 Virus Bulletin時,受害者數量已經超過了 80 萬。

該研究披露了 Geost(趨勢科技偵測為AndroidOS_Fobus.AXM)從受害者竊取的資訊類型及僵屍網路背後團隊的活動,包括操作策略和管理者間的通訊以及僵屍網路編碼器。

因為這有意思的發現,我們決定逆向工程惡意軟體樣本來深入挖掘 Geost 的行為。這隻木馬程式加了好幾層的混淆、加密、反射技術以及注入非功能性的程式碼,使得逆向工程變得更加困難。為了研究程式碼並分析其演算法,我們開發了Python腳本來解密字串。

初始分析

Geost躲在惡意應用程式內,會隨機產生伺服器主機名稱來製作非官方網頁進行散播。受害者會因為尋找在Google Play上沒有的應用程式或當自己無法連上官方應用商店而去找到這些惡意版本。他們會在某些網頁伺服器上找到該應用程式的連結並下載到手機上啟動。應用程式接著就會要求權限,一旦受害者允許就會導致惡意軟體感染。

我們分析的Geost樣本出現在名為 “установка”(俄文)的惡意應用程式中,它的意思是設定。該應用程式會顯示Google Play標誌作為自己的圖示,啟動後就不會出現在手機螢幕上。

圖1. 惡意應用程式установка的圖示

啟動應用程式時會要求裝置管理員權限。這很不正常,一般應用程式不太會這樣做,因為這基本上可以讓應用程式擁有對行動裝置的完全權限。

使用者可能在不知不覺下授予的重要權限還有存取簡訊,這包括來自銀行應用程式的確認訊息。這些訊息讓惡意軟體取得受害者的姓名、餘額和其他銀行帳戶詳細資料。只需點幾下,攻擊者就可以從受害者的銀行帳戶將錢轉走。

圖2. 要求裝置管理員權限的畫面

圖3. 要求的應用程式權限

確認所需的權限後,應用程式的可見部分會關閉,應用程式圖示會消失,讓受害者以為應用程式已被刪除。測試裝置一開始沒有出現有問題的惡意活動跡象,但惡意軟體在背景活動,攻擊者已經取得該裝置的存取權限,使得他們可以監視收發的訊息,包括銀行應用程式的確認訊息。

為了在重開機後依舊繼續活動,它會註冊BOOT_COMPLETED和QUICKBOOT_POWERON廣播。

圖4. 將服務註冊到開機廣播(某些程式碼經過混淆化)

階段一

就跟許多惡意軟體一樣,Geost分成多個階段運行。第一個階段很簡單,會下載和解密執行更加複雜的下一階段。

Geost樣本的APK檔將編譯過的Java程式碼儲存在classes.dex檔內。它還包含了AndroidManifest.xml和資源檔,這些是APK檔的常見內容。它還有一個大小為125k的”.cache”檔案。

為了反編譯解開的classes.dex檔需要使用數個Java反編譯器(包括dex2jar、jadx、jd-core/jd-gui和Ghidra),因為沒有單一的反編譯器能夠反編譯所有的Smali程式碼。

圖5. 反編譯的Java原始碼

乍一看,反編譯程式碼似乎部分編碼在一串字串內;不過字元頻率分析顯示使用了隨機字元。

進一步地分析顯示惡意軟體中包含一些無用的程式碼,除了會拖慢執行速度外對應用程式行為本身沒有影響。這讓逆向工程變得更加困難,因為惡意軟體將有用的程式碼切成多個部分並不斷更改執行路徑。採用哪個分支通常取決帶有未知值的變數。”switch”、”if”和”try/catch”命令區塊也是如此。無意義的程式碼函式讓想全面性了解惡意軟體運作變得更加困難。

圖6. 帶有case switch條件判斷的程式碼

逐步移除無用的程式碼後可以找出被使用的第一個解密演算法。階段一的所有字串都經過 RC4加密,使用了一種演算法來切成多個函式來避免被認出使用了RC4。所以下一步就是找出RC4解密金鑰。

圖 7. 反解譯的Java原始碼,這是RC4演算法的一部分

圖 8. 清理出來的部分RC4程式碼

圖 9. RC4金鑰

RC4 是一種流加密演算法,內部狀態會隨著每個解密的symbol而改變。要解密多個加密字串時,通常解密動作必須按加密時的順序進行。幸運的是,此樣本並非如此。程式碼作者簡化了RC4而沒有在解密動作間保持內部狀態,因為RC4加密程式碼始終複製狀態陣列S[]。

圖 10. RC4加密始終複製狀態陣列S[]

之後開始搜尋常用程式庫。找到了Android.support.v4程式庫和ReflectASM Java Reflection程式庫。

圖 11. 帶有加密字串的程式碼

圖 12. 帶有解密後字串和去混淆化symbol的程式碼

此時階段一的程式碼變得可以理解:它利用反射程式碼來隱藏特定class和method不被注意。基本上,階段一使用相同的RC4演算法和金鑰解密階段二的檔案。

圖13. 反射method調用的例子

前面提到的”.cache”檔被重新命名為.localsinfotimestamp1494987116,在解密後儲存為ydxwlab.jar,可以載入和啟動.dex檔。

圖14. 解密和儲存階段二

程式碼作者插入了一個假旗標HttpURLConnection及其網址,看似會連到命令和控制(C&C)伺服器。但是此 http連線永遠不會執行。

圖 15. 假旗標

階段一載入階段二的class,研究人員將其命名為”MaliciousClass”。

圖16. 啟動階段二

階段二

查看了classes.dex,很明顯地階段二再度使用了模糊化和加密。但這次symbol名稱被 1到2個字元的字串進行部分替換,而不是跟之前一樣的6到12個字元的字串。此外,字串加密演算法也被改成不同於前一階段所用的演算法。使用了不同的工具。此外,解密演算法的參數會根據各class加以修改。

所有的Java反編譯器因為if區塊出現goto命令而在反編譯解密演算法時遇到問題。只有Jeb desers可以處理好此結構。

圖17. 解密演算法的Smali

圖18. 解密演算法的Java程式碼

每個class的解密方法包含不同的參數順序和不同的常數;讓撰寫Python解密腳本變得更加困難。這代表解密腳本必須偵測Smali碼內的演算法設置並自我調整,或是在解密每個class前先在腳本內手動設置參數。

圖 19. 加密字串的例子

字串解密後可以偵測到使用的程式庫。包括:

  • AES加密引擎
  • Base64編碼
  • 模擬器偵測器
  • 檔案下載服務
  • IExtendedNetworkService
  • USSD api程式庫
  • Zip4jUtil

初始化階段

從階段一調用的MaliciousClass成為研究人員稱為”CoNtext”實例化類別(instantiated class)的信封(envelope)。

圖 20. Context Class

Context class 會先啟動模擬器偵測器服務。接著啟動另外兩個服務:AdminService和LPService,然後才做主要要做的事情。

圖 21. 主要的初始化動作

模擬器偵測器

模擬器偵測器會檢查是否在模擬環境內執行的跡象。此樣本會偵測Nox、Andy、Geny、Bluestack和Qemu Android模擬器。

圖 22. 模擬環境追蹤

AdminService

此服務負責對應用程式授予管理員權限。這是個關鍵部分,因為這讓它能夠存取敏感性資料並且可以啟動特權操作。

圖 23. AdminService的關鍵部分

LPService

此服務負責保持應用程式執行並連接C&C伺服器。它使用了WakeLock和WifiLock acquie()呼叫來做到這點。副作用是會讓電量消耗變高,但大多數受害者通常都會忽略掉。

圖 24. 鎖定CPU和WiFi資源

接著LPService會建立LPServiceRunnable執行緒,每五秒喚醒一次並負責監視和重新啟動以下服務:

  • MainService
  • AdminService
  • SmsKitkatService

此服務還會收集執行中程序和工作的資訊。還會定期啟動WebViewActivity(用來開啟瀏覽器視窗到任意網址或啟動惡意程式碼)。此樣本未實作WebViewActivity程式碼。

MainService

MainService首先連接AlarmManager來排程工作,接著註冊兩個廣播接收器:MainServiceReceiver1和MainServiceReceiver2。在初始化階段結束時,它會啟動MainServiceRunnable執行緒。當樣本執行重載的onDestroy() method時,它會再次重新啟動MainService。

圖 25. 重載onDestroy以重新啟動MainService

MainService的一個重要method是processApiResponse(),它處理從C&C伺服器接收來的JSON字串格式命令。

圖 26. 處理C&C伺服器命令

ClearService

此服務調用ClearServiceRunnable執行緒,該執行緒負責鎖定/解鎖命令(封鎖/取消封鎖使用者活動),好讓僵屍網路操作者可以在沒有使用者干預的情況下執行遠端任務。如果有人試圖終止ClearService,它也會重啟自己。

圖 27. CleanService class

圖 28. ClearServiceRunnable

SmsKitkatService

此服務可以讓攻擊者用自己的簡訊應用程式來替換標準簡訊應用程式。在此樣本中,它使用預設版本。

圖 29. 更換預設簡訊應用程式的程式碼

命令

在下表和螢幕截圖可以看到此惡意軟體可識別的命令列表(按程式碼內定義的順序排列):

命令 描述
#conversations 從content://sms/conversations/、content://sms/inbox和content://sms/sent所有的簡訊收集地址、內文、日期和類型欄並送到C&C伺服器
#contacts 從content://com.android.contacts/data/phones收集連絡人列表並送到C&C伺服器
#calls 從content://call_log/calls收集所有通話紀錄並送到C&C伺服器
#apps 收集已安裝套件名稱和標籤列表並送到C&C伺服器
#bhist 此樣本忽略此命令
#interval {set:number} 設定從C&C伺服器取得命令的時間間隔
#intercept 設定要攔截簡訊的號碼(”全部”或號碼列表)
#send id:, to:, body: 傳送簡訊
#ussd {to:address, tel:number} 透過USSD框架撥打號碼
#send_contacts 向電話簿內的所有連絡人傳送簡訊
#server 設定要執行的排程時間
#check_apps {path:url_to_server} 將執行中應用程式列表送到C&C伺服器,從參數內定義的路徑下載archive.zip檔案然後儲存成error.zip並解壓縮。Zip壓縮檔使用密碼”encryptedz1p”。預設伺服器名稱為hxxp://fwg23tt23qwef.ru/
#send_mass {messages: {to:address, body:text}, delay:ms} 向不同地址發送多個簡訊,每次發送間會有延遲
#lock 從ClearServiceRunnable啟動RLA服務來攔截自按鍵AKEYCODE_HOME、AKEYCODE_CAMERA和AKEYCODE_FOCUS的事件。它還會攔截 BackBackPressed() Activity method,靜音鈴聲,清除所有簡訊通知,停止自身和使手機無回應
#unlock 停用#lock命令下的操作,並透過停止ClearServiceRunnable解鎖手機
#makecall {number:tel_number} 使用標準android.intent.action.CALL API撥打號碼
#openurl {filesDir=j:url} 開啟網頁網址
#hooksms {number:tel_number} 設定號碼 – 將所有傳入的簡訊轉發到參數中的號碼
#selfdelete 將工作時間設成無法解析的字串值來停止自身排程的工作

圖 30. C&C伺服器命令列表

ApiRequest、ApiResponse、ApiInterfaceimpl

ApiRequest、ApiResponse 和 ApiInterfaceImpl class支援與C&C伺服器間的通訊。在連接參數初始化裡,replaceOfRandomStr變數值設為true,並且不會在程式碼中更改。

圖 31. 建立C&C伺服器連接字串

圖 32. 連接參數初始化

使用一個演算法來產生C&C伺服器網址用的隨機字串。接著初始化API連線並設定C&C伺服器的主機名稱。

圖 33. 為C&C伺服器網址建立隨機字串

圖 34. API連線初始化

圖 35. 設置C&C伺服器主機名稱

一個C&C伺服器API使用例子是C&C伺服器命令”#contacts”的實作。最終,命令參數會以 JSON格式加入並轉換為字串。

圖 36. C&C伺服器API呼叫的例子

最佳實作和趨勢科技解決方案

趨勢科技在2020年資安預測裡預測了行動惡意軟體家族將持續地增加,就像針對網路銀行和支付系統的Geost。行動用戶在這充滿危險的環境進行探索時,應該要遵循行動裝置防護最佳實作來保護自己。其中一個作法就是避免從官方應用程式商店以外下載。

不過遺憾的是惡意份子總會設法去透過合法應用程式商店散播惡意應用程式。除了靠這些網路商店持續移除有問題的應用程式,使用者也可以在下載前先仔細檢查應用程式評論及其他資訊來避免遇到有問題的應用程式。

應用程式使用者在授權給應用程式前應該要先仔細檢查所要求的權限。之後使用者也要注意其對裝置是否造成不好的影響,如效能下降或電池使用時間變短,這可能代表了遭到惡意軟體感染。此時使用者應該要立即移除新安裝的應用程式。使用者還應該定期檢查來移除未使用的應用程式。

為了進一步抵禦行動威脅,使用者可以安裝提供多層次防護的行動安全解決方案,如趨勢科技行動安全防護,能夠保護行動裝置抵禦惡意應用程式及其他行動威脅的攻擊。

入侵指標

SHA 256 偵測名稱
92394e82d9cf5de5cb9c7c7ac072e77496bd1c7e294683837d30b18880c1810 AndroidOS_Fobus.AXM

@原文出處:Dissecting Geost: Exposing the Anatomy of the Android Trojan Targeting Russian Banks 作者:Vit Sembera(威脅分析師)

入侵超過2.5億個帳號的銀行木馬Trickbot,變身攻擊Windows 10

近日有幾波獨立的攻擊活動顯示出Trickbot是如何地更新其執行和防禦躲避技術。首先是Malware Traffic偵測到這隻銀行木馬程式現在會用DLL檔案形式散播。Morphisec也報告說它加入了針對Windows 10的功能。趨勢科技研究人員也有發現這些新變種的樣本。


Trickbot透過DLL散播


Trickbot通常是由帶有DLL模組的EXE檔載入。而新的變種現在會用DLL檔載入。這隻木馬程式是透過微軟Word文件檔案進入,應該是經由垃圾郵件的惡意附件檔散播。一開始感染時,Trickbot會顯示為MS-DOS應用程式檔案。接著木馬程式會在受感染電腦上建立持續性能力。能夠看到將Trickbot植入為DLL檔的排程工作。

繼續閱讀

銀行木馬Emotet 再進化, 新增 Wi-Fi 散播能力

一種新的 Emotet 病毒變種被發現透過無線網路連線來散播,這點與過往不同,這個惡名昭彰的銀行木馬一般是利用垃圾郵件活動作為散播的管道。研究員表示,這種新的載入器類型能利用 wlanAPI 介面,將病毒從遭感染的裝置散播到未加密的 Wi-Fi 網路。

2014 年,趨勢科技偵測到 Emotet,病毒碼為 TrojanSpy.Win32.EMOTET.THIBEAI。它最初是一種金融服務惡意軟體,透過感染電腦來竊取敏感資訊,過去一直是以垃圾郵件活動為管道,並利用當時的新聞 (例如武漢肺炎-新型冠狀病毒) 和特殊事件 (例如感恩節) 作為誘餌。感染的情況若嚴重,可能導致整個 IT 網路停擺。近來,Emotet 也會利用新聞報導內文讓惡意軟體迴避偵測。

[請參閱:深入了解 Emotet:多層運作機制]

Emotet 如何透過 Wi-Fi 散播?

繼續閱讀