今天小編分享的互聯網經驗:Promon發現了用于攻擊銀行的新安卓惡意軟體:FjordPhantom,歡迎閲讀。
Promon 公司發現了一種新的安卓惡意軟體,并命名為命名為 FjordPhantom,它具有很強的隐蔽性和傳播能力,本文将深入探讨 FjordPhantom 的性質及工作原理。
背景
通過合作夥伴 i-Sprint,Promon 安全研究團隊在 9 月初知道了一種新的安卓惡意軟體在東南亞(主要在印尼、泰國和越南)傳播的消息。它主要通過消息傳遞服務傳播,将基于應用程式的惡意軟體與社交工具相結合,以欺騙銀行客户。Promon 與該地區的銀行交流後得知,在撰寫本文時,一名客户被騙走了約 28 萬美元。
Promon 已收到了從終端用户設備中提取的惡意軟體樣本。這個樣本針對一家特定的銀行,但含有的代碼也可以針對其他銀行應用程式。目前未能找到更多的惡意軟體樣本,也無法找到任何關于該惡意軟體的公開信息,于是我們自行進行了技術分析。安卓銀行惡意軟體無處不在,而這個惡意軟體的獨特之處在于,使用虛拟化技術攻擊應用程式,虛拟化通常用作逆向工程中的工具,這是我們此前從未見過的。
FjordPhantom 如何傳播?
FjordPhantom 主要通過電子郵件、短信和消息傳遞應用程式傳播。用户被提示下載一個看起來像銀行正規應用程式的應用程式,實際上,下載的應用程式包含銀行真實的安卓應用程式,但它在虛拟環境中運行,額外組件可以對應用程式進行攻擊。
下載後,用户會受到社會工程攻擊。通常,這是由呼叫中心的攻擊團隊支持的。他們假裝是銀行的客户服務,指導客户完成運行應用程式的步驟。
惡意軟體使攻擊者能夠跟蹤用户的操作,從而引導用户執行交易或使用該過程竊取憑據,他們可以使用這些憑據發動另外的攻擊。
FjordPhantom 如何使用虛拟化?
惡意軟體使用可以在 GitHub 上找到的不同開源 / 免費項目組合而成。最重要的是,它嵌入了一個虛拟化解決方案和一個鈎子框架來執行攻擊。
虛拟化解決方案允許在虛拟容器中安裝和運行應用程式,近年來,它們在安卓上變得非常流行。因為其中許多應用程式都可以從 Google Play Store 下載,所以谷歌也接受了這種解決方案。此外,使用這種解決方案的一個普遍原因是能夠多次安裝相同的應用程式,以便用不同的帳户登錄。這在安卓上通常是不可能實現的。
在這種情況下," 虛拟容器 " 的确切含義因不同的虛拟化解決方案而異。
在 FjordPhantom 使用的解決方案中,虛拟化解決方案是一個可以托管不同應用程式的應用程式。托管的應用程式被安裝到虛拟檔案系統中。當托管的應用程式啓動時,解決方案創建一個新進程,将應用程式加載到其中,然後啓動該進程。
從安卓系統的角度來看,只有一個應用程式(主機)。這意味着當托管的應用程式啓動時,它們也會看到自己在托管應用程式的上下文中運行,這将導致不同類型的應用程式出現許多問題,而它們期望在定義明确的環境中運行。此外,如前所述,托管的應用程式被安裝到虛拟檔案系統中。因此,為了使托管的應用程式正常執行,虛拟化解決方案嚴重依賴鈎子、修改安卓運行時環境的不同屬性,以及代理托管的應用程式所做的許多事情。
虛拟化突破安卓沙盒
以這種方式将應用程式加載到虛拟容器中的危險之處在于它突破了安卓沙盒。
安卓上的每個應用通常在自己的沙盒中獨立運行,在這樣的虛拟化解決方案中,不同的應用程式都運行在同一個沙盒中。這使它們能夠訪問彼此的檔案和内存,并調試對方。也意味着,對于攻擊者來説,虛拟化解決方案可能是不錯的選擇。突破沙盒通常需要對設備擁有 root 訪問權。然而,當應用程式安裝到同一個沙盒中時,就不需要這樣了。這就使得攻擊變得更容易,因為不需要獲得設備的 root 權限,而且它還阻止 root 檢測(針對安全關鍵應用程式的一種流行檢查)。因此,虛拟化解決方案在攻擊者中變得非常流行。
到目前為止,我們所看到的所有涉及虛拟化解決方案的攻擊都是由試圖攻擊其安裝的應用程式的安卓設備用户進行。這适用于使用調試器(比如 gdb 或 lldb)或鈎子框架(比如 Frida)分析應用程式,或使用 GameGuardian 等工具在沒有 root 訪問權的情況下在遊戲中作弊。
除此之外,惡意軟體使用的此類虛拟化解決方案還可以用來向應用程式注入代碼,因為虛拟化解決方案首先将自己的代碼(以及應用程式中發現的所有其他内容)加載到一個新進程中,然後加載托管應用程式的代碼。傳統上,最流行的代碼注入方法一直是用附加代碼重新包裝應用程式。因此,許多安全攸關的應用程式執行重新包裝檢測,這使得攻擊更難得逞。然而,使用虛拟化注入代碼将繞過這些檢測,因為原始應用程式并沒有被修改。
FjordPhantom 如何工作?
圖 1
FjordPhantom 使用上述的虛拟化解決方案。它嵌入它所攻擊的特定銀行應用程式的 APK,當它啓動時,就在虛拟容器中安裝并啓動嵌入的應用程式。對于用户來説,看起來銀行應用程式啓動,沒有虛拟化解決方案的明顯痕迹。FjordPhantom 的獨特之處在于:與我們之前看到的虛拟化攻擊相比,不是設備用户調用了虛拟化,而是安卓惡意軟體在用户不知情的情況下調用了虛拟化。
在虛拟容器中托管目标應用程式使惡意軟體能夠執行攻擊。如上所述,它有許多攻擊可能性。
以 FjordPhantom 為例,虛拟化主要用于将額外代碼加載到托管應用程式的進程中,注入的代碼是實際惡意軟體本身的代碼和惡意軟體使用的鈎子框架。
FjordPhantom 本身以模塊化的方式編寫,以便攻擊不同的銀行應用程式。它将對這些應用程式執行各種攻擊,具體取決于嵌入到惡意軟體中的銀行應用程式。
以惡意軟體樣本為例,有一個特定的銀行應用被嵌入,并成為直接攻擊的對象。但在惡意軟體代碼中,我們發現它還可以攻擊另外 7 個銀行應用程式。惡意軟體對目标應用程式執行幾種不同的攻擊,如下所述。
FjordPhantom 如何使用鈎子框架?
FjordPhantom 使用它嵌入的挂鈎框架來挂鈎到應用程式通常使用的 API,以确定是否打開了可訪問性服務以及當前啓用了哪些服務。這是應用程式用來檢測惡意惡意螢幕閲讀器的标準方法,通過挂鈎這些 API 并返回錯誤信息,就可以繞過螢幕閲讀器檢測方法。這使得攻擊者可以使用螢幕閲讀器在應用程式不知道的情況下從應用程式的螢幕上抓取敏感信息。
類似地,安卓惡意軟體使用它嵌入的鈎子框架來挂鈎到與 GooglePlayServices 相關的 API,使其看起來不可用。GooglePlayServices 由 SafetyNet 使用,通常用于檢測 root 權限。通過假裝 GooglePlayServices 不可用,試圖檢測 root 權限的應用程式可能上當受騙,跳過 root 權限檢查的 SafetyNet 部分。
對于一些應用程式,惡意軟體還挂鈎到與對話框相關的 UI 功能,如果它們包含某些文本,它将自動關閉它們。我們調查了目标應用程式中的這些對話框,它們警告用户,在其設備上檢測到了一些可能惡意的活動。大多數對話框不能關閉,防止用户在可能惡意的場景中使用應用程式。通過阻止用户看到這些對話框,并讓用户可以正常使用應用程式,惡意軟體就能在不引起懷疑的情況下對這些應用程式進行進一步攻擊。
最後,我們還看到惡意軟體放置了許多鈎子,這些鈎子記錄目标應用程式所做的不同操作,而不修改它們的行為,這很可能是惡意軟體中留下來的調試功能,用于開發針對不同應用程式的攻擊。這表明 FjordPhantom 正在積極開發中,可能會完善或已經完善到攻擊其他應用程式的程度。