作者: 啟明星辰ADLab
1、概述
隨著移動互聯網的快速普及,移動支付在人們生活中扮演的角色越來越重要。從支付寶、微信、各類支付錢包以及各大銀行的支付應用都在挖空心思搶占用戶移動支付入口就可見一斑。特別是近兩年,零現金支付在很多用戶身上尤其是年輕用戶身上早已成為現實,這極大的豐富和方便了人們的生活。然而,隨著移動支付的不斷普及和涉及的金錢數額越來越大,移動支付這塊肥肉也吸引了越來越多的攻擊者。
近日,啟明星辰ADLab就發現了一款銀行類 Android APP 釣魚木馬。經過我們對該釣魚木馬的深入分析發現,與大部分采用 java 層代碼加密和方法混淆技術的 Android 惡意代碼不同的是,該 Android 銀行釣魚木馬采用了類似于加固(加殼)保護的技術,將真正的惡意實體進行加密并隱藏起來,在惡意軟件運行時通過 SO 動態解密并加載以執行真實的惡意軟件實體。這樣不僅可以繞過殺毒軟件的查殺,還增加了安全研究人員的逆向分析難度。此外,該釣魚木馬不僅通過偽造銀行圖標和登錄界面來實施釣魚攻擊,它還會在后臺實時監視感染系統中的活動界面,一旦發現用戶啟動合法的銀行 APP,便對其進行劫持并替換成自己偽造的銀行登錄頁面。該釣魚木馬的劫持目標為招商銀行、交通銀行和中國郵政儲蓄銀行,當用戶在偽造的界面上輸入銀行賬號密碼等登錄信息后便會被上傳到黑客預先配置好的 C&C 服務器上,同時銀行釣魚木馬會彈出輸入錯誤等信息來迷惑用戶。此時,擁有受害者銀行登錄賬號密碼的黑客就可以利用該銀行釣魚木馬的短信劫持功能來獲取驗證碼,登錄到受害者銀行賬戶進行惡意轉賬或者透支信用卡等等操作(示意圖如下)。本文后續將對該銀行釣魚木馬進行深入的剖析,并對黑客身份信息進行追蹤分析。

2、銀行類釣魚木馬行為簡介
該銀行類釣魚木馬的劫持目標為招商銀行、交通銀行和中國郵政儲蓄銀行,并且采用了類似于加固(加殼)的技術。(“殼”指的是一個程序外面再包裹上另外一段代碼,目的是保護里面的代碼不被非法的修改或者反編譯。被加殼程序執行的時候,首先得到執行的是殼的代碼,然后由殼代碼來實現被保護實體的解密和加載執行。)該釣魚木馬運行后,先執行殼的代碼,在殼的 SO 代碼中解密被保護的惡意實體 jar 文件,再通過自定義的 DexClassLoader 動態加載解釋執行該惡意實體。
惡意實體首先利用注冊短信廣播接收器的方式來接收短信控制指令。在完成偽裝和自我保護之后,惡意實體會實時監視感染系統中的活動界面,一旦發現用戶啟動合法的銀行 APP,便對其進行劫持并替換成自己偽造的銀行登錄頁面。用戶很難發現新的窗口被打開了,當用戶在偽造的界面上輸入銀行賬號密碼等登錄信息后便會被上傳到黑客預先配置好的 C&C 服務器上,同時銀行釣魚木馬會彈出輸入錯誤等信息來迷惑用戶。此時,擁有受害者銀行登錄賬號密碼的黑客可利用該銀行釣魚木馬的短信劫持功能來獲取驗證碼登錄到受害者銀行賬戶以進行惡意轉賬或者透支信用卡等等操作。
然后,惡意實體通過攔截系統默認的短信應用,拿到對系統短信數據庫的讀寫權限。更通過使用觀察者模式,實時監視用戶短信,以實現對用戶的持續侵害。當攻擊者發起一筆交易,銀行的驗證碼和消費回執信息就會被攔截,竊取后再行刪除。這樣等于破解了銀行的雙重驗證機制,并在用戶沒有絲毫察覺的情況下完成交易,對用戶的財產安全構成嚴重威脅。該釣魚木馬運行流程圖如下:

3、脫殼解密分析
為了使得殼程序先行執行,該銀行類釣魚木馬自定義了 MyApplication 類繼承自 Application 類(Application 是Android程序的入口,Application 和 Activity、Service 一樣是 Android 框架的一個系統組件。當 Android 程序啟動時,系統會創建一個 Application 對象且僅創建一個,用來存儲系統的一些信息。通常我們是不需要指定一個 Application 的,系統會自動幫我們創建。如果需要創建自己的
Application ,需要創建一個類繼承 Application 并在 manifest 的 application 標簽中進行注冊,給
application 標簽增加一個 name 屬性,把自己的 application 的名字指定給它即可。application 對象的生命周期是整個程序中最長的,它的生命周期就等于這個應用程序的生命周期。因為它是全局的單例的,所以在不同的 Activity、Service 中獲得的對象都是同一個對象。可以通過 Application 來進行一些數據傳遞、數據共享和數據緩存等操作。)并在 mainifest 中的


我們從上圖可以看到 MyApplication 類加載了 native 庫 libload.so,并在 attachBaseContext 方法中調用了 native 函數 run。解密真實惡意實體的處理流程即在run函數中進行。
釣魚木馬運行后,在 data/data/t8/ool/lib 目錄下有3個SO文件,其中 libload.so 負責解密和加載真實的惡意實體。

libload.so 首先利用反射機制調用 javax.crypto 包中的加解密函數對 asset 目錄下的加密文件
mycode.so 進行 AES 解密操作。解密后的文件保存在 data/data/t8/ool/app_cathe 目錄下并被命名為 mycode.jar 。再利用自定義的 DexClassLoader 加載解釋執行 mycode.jar ,最后刪除之。我們通過動態調試 libload.so ,在 libload.so 刪除 mycode.jar 之前拿到解密文件,最后修復、重新打包、安裝分析。相關細節如下。
Base64解密AES key:xo3Kiw9jekmadw/SUtJwiA==

初始化cipher:

解密邏輯(執行到斷點處,解密完成):

此時,在data/data/t8/ool/app_cathe目錄下生成了解密文件 mycode.jar,見下圖:

我們將 mycode.jar 復制到pc端,用 winrar 打開,里面的 classes.dex 即為該釣魚木馬的真實惡意實體(如下圖所示),接下來我們就對該 dex 文件進行深入的分析。

4、真實攻擊邏輯分析
該釣魚木馬申請的權限如下圖所示,其中,涉及到的敏感權限包括短信的讀寫權限、打電話權限、讀取或寫入系統設置權限、自啟動權限和獲取最近運行應用權限等。

4.1、注冊廣播接收器,接收控制指令
該釣魚木馬注冊了短信廣播接收器,用來接收控制指令。當短信內容是000#,設置配置文件inter的值為1,截斷廣播;當短信內容是0#,設置配置文件inter的值為0,截斷廣播;當短信內容是555#,收集用戶本機所有短信,企圖郵件回傳,截斷廣播。并且,如果短信內容為控制命令000#,就以 json 格式 post 用戶手機 sim 卡序列號、手機號碼、短信內容,發送者、發送時間到 C&C 服務器:http://103.55.26.147/servlet/SendMassage2 , 如下圖。

4.2、創建配置文件,完善配置信息
接下來,釣魚木馬開始初始化本地 SharedPreferences 對象,用于保存配置信息。其中包括攻擊者郵箱地址、郵箱密碼、C&C 服務器、釣魚 APP 首頁地址、攻擊者手機號碼、釣魚木馬運行時間等重要信息。

釣魚木馬運行后,我們在本地打開 mybank.xml 文件。

我們提取出比較重要的攻擊者配置信息,見下表。

4.3、啟動釣魚服務
4.3.1、提示肉雞上線
接著,釣魚木馬會收集用戶sim卡序列號、手機號碼、手機型號、系統版本、手機運營商等信息,以 json 格式 post 到 C&C 服務器:http://103.55.26.147/servlet/OnLine ,用于提示肉雞上線。

4.3.2、偽裝和自我保護
釣魚木馬還會啟動設備管理器,引導用戶激活自己為設備管理器,偽裝成系統應用避免被輕易卸載。并且后臺每隔10s檢測用戶手機是否是感染設備,如果是,就不斷提示用戶激活。
Android 設備管理器對于一個普通 APP 而言并不太常用,但在很多病毒中十分常見。一旦應用被激活成為系統管理員,則在設置->應用程序下無法直接刪除該 APP ,只有取消激活后才能卸載。所以對于不了解的應用,千萬不可亂激活。見下圖:

運行結果如下圖:當用戶點擊激活后,釣魚木馬就獲得了設備管理員權限,這樣會導致普通用戶很難卸載掉該釣魚木馬。

4.3.3、接管短信應用
釣魚木馬接著引導用戶設置自己為系統短信應用,接管短信服務,以獲得對短信數據庫的操作權限(見下圖)。Android 4.4 及其以后,只能設置一個默認的 SMS 短信 APP ,當短信到達后會首先通知設置的默認 APP ,并且只有該APP對短信數據庫有修改的權限和短信的發送權限。

運行效果如下圖,當用戶點擊“是”后,釣魚木馬即成功接管短信服務,拿到了對短信數據庫的操作權限。

4.3.4、實施釣魚
以上準備完成后,釣魚木馬會每隔1秒檢測感染設備當前活動界面是否是:中國郵政儲蓄銀行、交通銀行、招商銀行的 APP 。如果是,則打開對應的釣魚頁面.

我們下面僅列出針對招商銀行的釣魚頁面代碼。可以看到釣魚木馬利用釣魚頁面竊取用戶的 sim 卡序列號、手機號碼、登錄密碼等后,以 json 的格式 post 到 C&C 服務器http://103.55.26.147/servlet/CMBSubmit ,見下圖。

4.3.5、監控用戶短信
釣魚木馬使用內容觀察者模式,監視用戶短信。當短信內容是000#,設置配置文件inter的值為1,刪除短信;當短信內容是0#,設置配置文件inter的值為0,刪除短信;當短信內容是555#,刪除短信,并收集用戶本機所有短信,企圖郵件回傳。并且,如果短信內容為控制命令000#時,就以 json 格式 post 用戶手機 sim 卡序列號、手機號碼、短信內容,發送者、發送時間到 C&C 服務器:http://103.55.26.147/servlet/SendMassage2 。見下圖。

攻擊者控制用戶手機后,每發起一筆交易,銀行的驗證碼和消費回執信息就會被攔截竊取再行刪除(見下圖),這樣等于破解了銀行的雙重驗證機制,并在用戶沒有絲毫察覺的情況下完成交易。對用戶的財產安全構成嚴重威脅。

4.3.6、服務常駐
釣魚木馬還定義了廣播接收器,用于自啟動。當用戶手機重啟或者解鎖時,啟動釣魚服務,繼續其侵害過程。

4.3.7、檢測殺毒軟件
除了以上功能之外,該釣魚木馬還內置有檢測殺毒軟件的功能,判斷感染設備是否安裝有360殺軟相關應用(見下圖)。現在在很多惡意樣本中都能看到針對殺毒軟件的處理函數,一般是判斷某流行殺軟是否存在,如果存在,就后臺靜默卸載。不過該函數未在該版本中調用。所以初步推斷該釣魚木馬目前還處于前期的開發調試階段,后續極有可能大規模感染,我們應該給予持續的關注和跟進。

5、溯源
5.1、郵箱信息
我們嘗試使用釣魚木馬配置文件中的攻擊者郵箱和密碼來登錄攻擊者的126郵箱,但目前已無法正常登錄(見下圖),應該是攻擊者已經修改了密碼。

5.2、C&C 服務器信息
通過以上分析我們知道該釣魚木馬的C&C為103.55.26.147,目前該C&C的IP依然有效,但是通過反查的域名并沒有發現有價值的線索。

5.3、其他線索
我們嘗試在 appscan.io 中查詢攻擊者郵箱zhihe4344@126.com,結果發現除了我們分析的當前釣魚木馬,還有其他3個相關應用(見下圖)。文檔.apk樣本變化不大,我們試圖從錄像.apk入手尋找線索。經分析發現,錄像.apk部分代碼結構和代碼邏輯與本文分析的銀行類釣魚木馬高度相似,可以斷定這兩個 apk 為同一個作者。


我們在錄像.apk的 so 文件中,得到了一組郵箱密碼和一個手機號碼(見下圖)。經分析該郵箱為攻擊者控制的信息回傳郵箱。該手機號碼為攻擊者短信回傳的目的手機號碼。

我們嘗試登錄該126郵箱,登錄成功!
我們發現此郵箱確為攻擊者控制的信息回傳郵箱。并且在其網盤里發現了一個視頻.apk惡意文件。郵箱里面記錄了竊取到的用戶手機通訊錄列表、短信列表、截獲到的短信等敏感數據(見下圖)。這些信息最早日期是2015年11月30日,最晚為2016年10月11日且都處于未被打開狀態,但從信息數量來看并不大。我們可以推斷,“視頻.apk”為該時間段攻擊者的一個測試樣本,并未全面使用。
另外,從郵箱的其他收信內容來看,該郵箱注冊的重要賬戶有:Apple ID、支付寶、淘寶、微博、Facebook、Turo租車等。從關聯到的微博賬戶和Facebook賬戶內容來看,初步判斷該郵箱很有可能是被攻擊者盜用的一個受害者郵箱賬戶。
在其網盤發現的一個2015視頻.apk文件,顯示時間為2015年9月20日。

竊取到的受害人敏感信息:

截獲到的新短信:

竊取到的短信列表:

竊取到的通訊錄:

再來看看手機號碼:183****5246,我們在支付寶中未查到該手機注冊相關賬戶,但在微信中倒是查找到一個關聯用戶(見下圖)。

5.4、溯源總結
通過簡單的溯源分析,我們找到了攻擊者使用的一個控制郵箱并在登錄成功后,查看到了其回傳的受害者敏感信息。但還沒有準確定位到攻擊者本身。我們通過內置手機號碼分別在支付寶和微信上查找注冊信息,最終找到了微信上關聯的一個用戶。根據現有的線索,對攻擊者的信息溯源目前就到此為止。因為該釣魚木馬還是一個前期測試樣本,相信在后續的跟進中會挖掘出更多的攻擊者相關信息。
6、總結及建議
6.1、技術總結
與大部分采用 java 層代碼加密和方法混淆技術的 Android 惡意代碼不同的是,該 Android 銀行釣魚木馬采用了類似于加固(加殼)保護的技術,將真正的惡意實體進行加密并隱藏起來,在惡意軟件運行時通過 SO 動態解密并加載執行真實的惡意軟件實體。這樣不僅可以繞過殺毒軟件的查殺,還增加了安全研究人員的逆向分析難度。可以預見,隨著攻防的不斷升級,越來越多的惡意軟件開始使用加殼技術來自我保護,安全分析工作任重而道遠。
6.2、安全建議
目前由于該銀行類釣魚木馬的 C&C 服務器無法連接,故其還處于無法正常使用狀態。不過,從代碼邏輯和功能來看,有部分功能代碼并沒有調用,比如檢測360殺毒軟件。可以判定,該惡意軟件仍然處于開發調試階段,并不成熟,我們將持續關注和跟進。
對于 Android 用戶,建議不安裝不明來源的 APP,對申請可疑權限尤其是短信讀寫、打電話以及需要激活設備管理器的 APP 要特別留意。涉及金錢的操作要格外謹慎,遇到操作異常或扣費異常,要及時聯系銀行凍結賬戶或者撥打110報警,避免遭受更大損失。
啟明星辰積極防御實驗室(ADLab)
ADLab成立于1999年,是中國安全行業最早成立的攻防技術研究實驗室之一,微軟MAPP計劃核心成員。截止目前,ADLab通過CVE發布Windows、Linux、Unix等操作系統安全或軟件漏洞近300個,持續保持亞洲領先并確立了其在國際網絡安全領域的核心地位。實驗室研究方向涵蓋操作系統與應用系統安全研究、移動智能終端安全研究、物聯網智能設備安全研究、Web安全研究、工控系統安全研究、云安全研究。研究成果應用于產品核心技術研究、國家重點科技項目攻關、專業安全服務等。

本文由 Seebug Paper 發布,如需轉載請注明來源。本文地址:http://www.bjnorthway.com/319/
暫無評論