大家好,我是零日情報局。
本文首發於公眾號 零日情報局,微信ID:lingriqingbaoju。
當銀行卡餘額神秘消失,懵不。
這次跟大家說說新型Android應用漏洞,不僅能讓銀行卡餘額消失,還會偷拍監聽的那種。
昨天下午,挪威一家安全公司披露了一個Android應用漏洞,並用描述維京海盜突襲戰術的單詞StrandHogg對其命名。值得慶幸的是,谷歌已採取措施解決該漏洞,並暫停了受影響的應用程式。
至於銀行卡餘額神秘消失事件,就發生在捷克共和國的多家銀行。不法攻擊者利用StrandHogg漏洞,使用BankBot銀行木馬等惡意軟體,悄無聲息地盜走多家銀行使用者的卡內餘額,引發東歐金融機構安全服務商的多方求助。
StrandHogg:維京海盜式Android應用漏洞
StrandHogg是一個存在於Android多工系統中的應用漏洞。該漏洞利用則是基於一個名為“taskAffinity”的Android控制元件設定,允許包括惡意應用在內的任意程式,隨意採用多工處理系統中的任何身份。
從零日核實的情況來看,StrandHogg漏洞確實存在於Android的多工系統中,一旦已安裝惡意程式利用,就能讓惡意程式順利偽裝合法應用,獲得更高的許可權,竊取資訊或進行任意惡意操作。
簡單來說,就是中招後,當我們點開一個正常應用程式的圖示時,利用Strandhogg漏洞的惡意應用可以攔截劫持這個任務,並向使用者顯示一個虛假的應用介面。
這時,不明真相的你,會毫無防範的在一個虛假的介面,安心地輸入賬號、密碼,以及進行任意操作。殊不知,那些涉及你隱私的敏感資訊,輸入後都會第一時間傳送給攻擊者,攻擊者利用這些敏感資訊,能做的是事情就多了。
也許登入銀行賬戶,竊取錢財反倒是傷害相對較小的攻擊。
利用StrandHogg能做哪些事?
訪問攝像頭和麥克風,獲取裝置的位置,讀取SMS,捕獲登入憑據(包括透過SMS的2FA程式碼),訪問私人照片和影片,訪問聯絡人……這些看似基本但關係手機安全閉環的功能,只要成功利用Strandhogg漏洞,惡意應用都可以請求上述許可權。
簡言之,Strandhogg漏洞讓我們的手機不再對惡意應用設防,且這種不設防,我們無從得知何時開啟。零日驗證該漏洞時,就成功將惡意程式偽裝成一合法應用,獲得了測試目標的定位,當然,僅用於測試,大家不要隨意嘗試。
略讓人恐慌的是,包括最新Android10在內的所有Android版本,都存Strandhogg漏洞。隨後,零日逐一驗證後發現,GooglePlay商店內可用的前500個Android應用程式,確如挪威安全公司說的那樣,都可透過StrandHogg攻擊劫持所有應用程式的程式以執行惡意操作。
維京海盜StrandHogg的獨特之處
1、無需root上演複雜攻擊:StrandHogg漏洞之所以獨特,主要是因為它最大限度地利用了Android多工系統弱點,無需root既可允許惡意程式偽裝成裝置上的任意程式,幫助駭客實施複雜且高危的攻擊。
2、無法檢測Stranghodd漏洞利用:有攻就有防,但很不幸的是,截至目前,針對Stranghodd漏洞利用的阻止方式,甚至是相對可靠的檢測方法,都還沒有出現。普通使用者只能透過一些不鮮明的異常發現問題,比如已登入的應用要求登入、單擊使用者介面按鈕連結時不起作用,或者後退按鈕無法正常工作。
3、擴大UI欺騙風險:UI欺騙,很多人聽說過。甚至早在2015年,賓夕法尼亞州立大學就曾以白皮書的形式,詳細介紹了可用於UI欺騙的理論攻擊。而StrandHogg漏洞的出現,多個程式同時遭劫持等情況,若不加以有效控制,一旦大範圍擴散,都將進一步擴大UI欺騙風險。
並不是所有被發現的漏洞,都會被利用,但攻擊者絕不會放過那些有價值的漏洞。
挪威安全公司就明確指出,目前已發現36個野外利用StrandHogg漏洞的應用程式,雖然這些應用都不能直接透過googlePlay商店下載安裝,但並不能保證使用者下載的應用程式是否曾經感染過,因為這36個應用程式作為第二階段的有效負載,已經安裝在了一些使用者的裝置上。
StrandHogg漏洞利用樣本再現
不同於提權等相對熟悉的漏洞,Strandhogg漏洞的威脅層級其實並不能清晰的界定,因為它的存在更像給惡意程式開了一道門,至於被利用後帶來的是小威脅,還是大震盪,關鍵要看惡意程式本身是威脅層級。
挪威安全公司披露StrandHogg漏洞資訊時,就以第一次監測到利用StrandHogg漏洞的惡意軟體為樣本,復現了惡意軟體利用StrandHogg漏洞的主要策略。
1、惡意程式利用GooglePlay分發
通常情況下,正常程式多數都會入駐Google Play,而利用StrandHogg漏洞的惡意程式,則透過多個惡意下載器安裝,但會選擇在Google Play上進行分發擴散。
從程式碼部分可以看到,當惡意應用在一個或多個活動上設定taskAffinity,以匹配任何第三方應用的packageName時,漏洞利用就會發揮作用。然後,透過與清單中的allowTaskReparenting=“true”組合,或透過使用Intent.FLAG_ACTIVITY_NEW_TASK的intent標誌啟動活動,將惡意活動置於目標任務的內部和頂部。
這時,惡意應用就成功劫持了目標,而當使用者再一次點開目標應用時,惡意程式就會偽裝成正常程式,顯示使用介面迷惑使用者。
2、偽裝多個正常程式
同時開N個應用,是現代人的日常,而在StrandHogg漏洞利用威脅下,Android的多工處理系統也給惡意程式開啟方便之門。在同一時間推出兩個(或更多)活動android.app.Activity#startActivities(android.content.Intent []),惡意程式就可以利用StrandHogg漏洞。在後臺同時偽裝成兩款正常應用作惡。
同樣,被攻擊使用者除了可能看到裝置輕微閃爍外,根本無從發現惡意程式的攻擊行為。只有我們檢視時,輸入adb shell dumpsys activity activities,才可以看到攻擊活動已經存在,且一直潛伏到下次啟動該應用程式為止。
3、AllowTask Reparenting(任務重編)
當偽裝的正常程式再次啟動後,利用StrandHogg漏洞的惡意程式曝出了一個名為allowTaskReparenting的新屬性。它會讓Android作業系統重新評估所有任務和活動,並在啟動相關任務前,先查詢標記有此屬性的活動並將其移動。
這樣,惡意程式就會根據新一次啟動程式的情況,及時更新螢幕上顯示的內容。
從樣本來看,StrandHogg漏洞確實給惡意程式廣開大門。
零日反思
Android漏洞是個老生常談的話題,但並不能因此就忽視它的威脅。
在Android作業系統這片開源的大海上,其實不僅有StrandHogg漏洞這樣的維京海盜式戰術,還有各種各樣已知未知的漏洞威脅,雖然經過十多年的發展,在各路技術人員的努力下,讓Android作業系統漏洞威脅趨於穩定,但我們並不能掉以輕心,因為不法分子的攻擊,時刻在發生。
零日情報局作品
微信公眾號:lingriqingbaoju
如需轉載,請後臺留言
歡迎分享朋友圈
參考資料:
Promon《StrandHogg漏洞》