日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

微信登录界面安卓代码_安卓Activity劫持与反劫持

發布時間:2024/8/1 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 微信登录界面安卓代码_安卓Activity劫持与反劫持 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

00前言

近日,挪威一家APP安全公司Promon發現并報道了一個特性漏洞已經被多個惡意應用利用的分析報告,他們通過監測發現該漏洞使惡意軟件可以偽裝成任何合法的應用程序,從而使黑客可以訪問私人短信和照片,竊取受害者的登錄憑據,跟蹤位置或記錄電話對話,甚至可以通過手機攝像頭和麥克風進行監視。

研究人員將該漏洞命名為StrandHogg,這是北歐人的一種北歐海盜戰術,襲擊沿海地區掠奪并扣除押金。據統計目前至少已有500個利用此漏洞的惡意應用,其中包括最早在2017年觀察到的BankBot銀行木馬的變種。

研究人員對此漏洞的原理深入研究后發現這是一種對“Activity劫持”的攻擊方法。

01StrandHogg攻擊手法

該漏洞使惡意應用程序有可能在偽裝成合法應用程序的同時請求權限。攻擊者可以請求獲得任何許可,包括SMS,照片,麥克風和GPS,從而允許他們閱讀消息,查看照片,進行竊聽和跟蹤受害者的活動

簡單來說,要么攻擊者通過該漏洞,請求獲取應用權限,要么攻擊者利用類似“界面劫持”的方式,彈出釣魚界面讓你輸入賬戶密碼。

02StrandHogg攻擊原理

實際上,該漏洞在2015年就已經被賓州州立大學進行了研究和報道,研究人員從理論上描述了該漏洞實現方法。谷歌當時否認了該漏洞的嚴重性,但Promon有確鑿的證據表明黑客正在利用StrandHogg來獲取對設備和應用程序的訪問權限。

而關鍵在于利用該特性漏洞,可以根本不需要root即可釣魚獲取各種權限,甚至用戶賬戶密碼。

他利用Android的多任務系統中的一個弱點來實施強大的攻擊,使惡意應用程序可以偽裝成該設備上的任何其他應用程序。此漏洞利用基于一個稱為“taskAffinity”的Android控件設置,該控件允許任何應用程序(包括惡意應用程序)自由地采用其所需的多任務處理系統中的任何身份。

Android的多任務處理機制使得用戶可以在不同的應用程序之間方便的切換,當前進程被切換到后臺時,多任務機制會讓進程進入暫停的狀態,只會在內存中保存應用的運行狀態,因此不會占用CPU的資源。

然而,Android的多任務處理機制以及Activity的設計自身卻存在一些缺陷,“Activity劫持“大部分采用了界面覆蓋或強行關閉目標進程并彈出虛假界面的方式,通常通過監聽系統日志、枚舉當前進程等方式來實現其攻擊目標。

03 Activity劫持原因

Activity劫持是基于Activity所在任務及返回棧相關屬性進行劫持的一種手段.通過一定的屬性設計,可以實現Activity在不同任務之間的轉移及覆蓋等行為。

在進行安卓APP開發過程中,如果在啟動一個Activity時,給他加入一個標志位FLAG_ACTIVITY_NEW_TASK,就能使他置于棧頂并立馬呈現給用戶。針對這一操作,假使這個Activity是用于盜號的偽裝Activity呢?在Android系統當中,程序可以枚舉當前運行的進程而不需要聲明其他權限,這樣子我們就可以寫一個程序,啟動一個后臺的服務,這個服務不斷地掃描當前運行的進程,當發現目標進程啟動時,就啟動一個偽裝的Activity。如果這個Activity是登陸界面,那么就可以從中獲取用戶的賬號密碼。

簡單的說就是APP正常的Activity界面被惡意攻擊者替換上仿冒的惡意Activity界面進行攻擊和非法用途。界面劫持攻擊通常難被識別出來,其造成的后果不僅會給用戶帶來嚴重損失,更是移動應用開發者們的惡夢。舉個例子來說,當用戶打開安卓手機上的某一應用,進入到登陸頁面,這時,惡意軟件偵測到用戶的這一動作,立即彈出一個與該應用界面相同的Activity,覆蓋掉了合法的Activity,用戶幾乎無法察覺,該用戶接下來輸入用戶名和密碼的操作其實是在惡意軟件的Activity上進行的,最終會發生什么就可想而知了。

04Activity劫持攻擊手段

1、監聽系統Logocat日志,一旦監聽到發生Activity界面切換行為,即進行攻擊,覆蓋上假冒Activity界面實施欺騙。開發者通常都知道,系統的Logcat日志會由ActivityManagerService打印出包含了界面信息的日志文件,惡意程序就是通過Logocat獲取這些信息,從而監控客戶端的啟動、Activity界面的切換。

2、監聽系統API,一旦惡意程序監聽到相關界面的API組件調用,即可發起攻擊。

3、逆向APK,惡意攻擊者通過反編譯和逆向分析APK,了解應用的業務邏輯之后針對性的進行Activity界面劫持攻擊。

05 Activity劫持調度機制

android為了提高用戶的用戶體驗,對于不同的應用程序之間的切換,基本上是無縫。他們切換的只是一個activity,讓切換的到前臺顯示,另一個應用則被覆蓋到后臺,不可見。Activity的概念相當于一個與用戶交互的界面。而Activity的調度是交由Android系統中的AmS管理的。AmS即ActivityManagerService(Activity管理服務),各個應用想啟動或停止一個進程,都是先報告給AmS。 當AmS收到要啟動或停止Activity的消息時,它先更新內部記錄,再通知相應的進程運行或停止指定的Activity。當新的Activity啟動,前一個Activity就會停止,這些Activity都保留在系統中的一個Activity歷史棧中。每有一個Activity啟動,它就壓入歷史棧頂,并在手機上顯示。當用戶按下back鍵時,頂部Activity彈出,恢復前一個Activity,棧頂指向當前的Activity。

06Activity劫持實現

開發一個簡單的APP應用來測試界面劫持,大體邏輯是程序啟動時獲取到本機上已安裝的所有應用信息,然后人為添加想劫持的應用,程序在后臺不斷監聽Activity棧頂元素判斷應用信息是否與攻擊者添加的應用信息一致,發現如果用戶點擊了被劫持的應用,則給偽造的頁面添加一個標志位“FLAG_ACTIVITY_NEW_TASK”使其馬上進入棧頂,替換掉本應該是用戶點擊正常加載的應用界面,從而實現界面劫持。

獲取本機上已安裝應用的package信息。并打印如下:

攻擊者在下圖所示位置,添加想劫持的應用包信息。但是如何知道包信息呢,答案很簡單,因為攻擊者想要增加劫持的成功率,他會選用一些用戶體量大的應用,一些能被很多人下載的應用,而這些應用的包信息是公開的,這就解決了包信息的問題。

下圖展示的代碼,就是處理劫持攻擊的邏輯代碼。程序讀取Activity棧頂的元素,判斷他的包信息跟設定的包信息是否相符。相符的話立刻調用Camera_layout.xml(偽造頁面),并添加一個標志位“FLAG_ACTIVITY_NEW_TASK”,將他立刻置于棧頂位置取代原先的正常頁面,實現界面劫持。

劫持程序界面

劫持成功界面

07Activity反劫持防護手段

目前,還沒有什么專門針對 Activity 劫持的防護方法,因為,這種攻擊是用戶層面上的,目前還無法從代碼層面上根除。但是,我們可以適當地在 APP 中給用戶一些警示信息,提示用戶其登陸界面以被覆蓋。在網上查了很多解決方法如下:

1、針對用戶:

Android手機均有一個HOME鍵(即小房子的那個圖標),長按可以查看到近期任務。用戶在要輸入密碼進行登錄時,可以通過長按HOME鍵查看近期任務,比如說登錄微信時長按發現近期任務出現了微信,那么我現在的這個登錄界面就極有可能是一個惡意偽裝的Activity,切換到另一個程序,再查看近期任務,就可以知道這個登錄界面是來源于哪個程序了。

2、針對開發人員:

研發人員通常的做法是,在登錄窗口或者用戶隱私輸入等關鍵Activity的onPause方法中檢測最前端Activity應用是不是自身或者是系統應用,如果發現惡意風險,則給用戶一些警示信息,提示用戶其登陸界面以被覆蓋,并給出覆蓋正常Activity的類名。

在 Acitivity 的 onStop 方法中 調用封裝的 AntiHijackingUtil 類(檢測系統程序白名單)檢測程序是否被系統程序覆蓋。

在前面建立的正常Activity的登陸界面(也就是 MainActivity)中重寫 onKeyDown 方法和 onPause 方法,判斷程序進入后臺是否是用戶自身造成的(觸摸返回鍵或 HOME 鍵)這樣一來,當其被覆蓋時,就能夠彈出警示信息。

總結

以上是生活随笔為你收集整理的微信登录界面安卓代码_安卓Activity劫持与反劫持的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。