国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

有什么方法可以檢測APK應用程序是否簽名異常呢

工程師鄧生 ? 來源:橙留香Park ? 作者:橙留香Park ? 2022-08-31 10:37 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

0x01 APK應用程序是否簽名異常的檢測方法

要在Android上安裝APK必須要進行數字簽名,數字簽名用于驗證應用程序更新的所有者身份,驗證的目的是為了防止APK應用程序被篡改或修改APK來包含惡意代碼

對 APK 進行簽名時,會附加一個公鑰證書,這個證書是將 APK 應用程序與開發者和開發者的私鑰進行關聯

:在調試模式下構建應用時,Android SDK 會使用專門為調試目的創建的調試密鑰對我們要打包的APK應用程序進行簽名,需要注意使用調試密鑰簽名的應用并不會在大多數APK應用商店中被接受和允許上架

應用程序的最終發布版本(上線生產版本)必須使用有效的發布版本的密鑰進行簽名。在 Android Studio 中,APK可手動或通過創建分配給發布構建類型的簽名配置來對應用進行APK的簽名

Android 9(API 級別 28)之前的 Android 上,所有的應用程序更新都需要使用相同的證書進行簽名,所以開發者可以考慮使用 25 年或更長的有效期

:需要注意,如果在 Google Play 上發布的應用必須使用有效期在 2033 年 10 月 22 日之后結束的密鑰進行簽名

三種 APK 簽名方案:

v1 方案:JAR 簽名

v2 方案:APK 簽名方案 v2

v3 方案:APK 簽名方案 v3

與 v1 方案相比,Android 7.0(API 級別 24)及更高版本支持的 v2 簽名,且提供了更高的安全性和性能。Android 9(API 級別 28)及以上版本支持的 V3 簽名,使應用程序能夠更改其簽名密鑰,作為APK 更新的一部分,此功能通過允許同時使用新/舊密鑰,保證了兼容性和應用程序的持續可用性。需要注意對于每個簽名方案,發布APK版本也應該始終通過之前內部評估好的方案進行簽名

在做靜態分析(當然動態分析時跟這個一樣,將APK導出來用jarsigner或apksigner工具來驗證APK的簽名是否異常)APK時,我們要確認幾個重要的信息,比如APK的發布版本是 Android 7.0(API 級別 24)及更高版本的 v1 和 v2 方案以及 Android 9(API 級別 28)及更高版本的所有三個方案進行簽名,且 APK 應用程序中的簽名證書是屬于開發者的

我們可以使用 Android SDK 構建工具的修訂版 24.0.3 及更高版本中提供的 apksigner 工具為 APK 簽名,并確保 APK 的簽名能夠在 APK 支持的所有版本的 Android 平臺上成功通過驗證,此處我們是主要是利用apksigner 工具來驗證APK的簽名是否是屬于正確的開發者的,apksigner 工具它的位置在[SDK-Path] /build-tools/[版本]。

2cdd8db6-2872-11ed-ba43-dac502259ad0.png

我們可以使用apksigner工具來驗證 APK的 簽名,apksigner 默認安裝位置位于:C:UsersxxxAppDataLocalAndroidSdkuild-tools33.0.0lib下,隨后執行如下命令:

$ java -jar C:UsersxxxAppDataLocalAndroidSdkuild-tools33.0.0libapksigner.jar verify --verbose vuls.apk
Verifies
Verified using v1 scheme (JAR signing): true
Verified using v2 scheme (APK Signature Scheme v2): true
Verified using v3 scheme (APK Signature Scheme v3): false
Verified using v3.1 scheme (APK Signature Scheme v3.1): false
Verified using v4 scheme (APK Signature Scheme v4): false
Verified for SourceStamp: false
Number of signers: 1

2d071ed8-2872-11ed-ba43-dac502259ad0.png

當然,我們也可以使用 jarsigner 工具來檢查APK的簽名證書的內容,但需要注意在調試證書時,Common Name (CN)屬性要設置為 "Android Debug"

使用調試證書簽名的 APK 的輸出,這里我們使用JAVA自帶的jarsigner工具來做簽名,如何簽名的命令如下:

$ jarsigner -verify -verbose -certs vuls.apk

sm      14112 Fri Nov 30 00:00:00 CST 1979 AndroidManifest.xml      >>> 簽名者
      X.509, C=US, O=Android, CN=Android Debug      [證書的有效期為18-6-6 下午12:41至48-5-29 下午12:41]
      [無效的證書鏈: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target]sm          6 Fri Nov 30 00:00:00 CST 1979 META-INF/android.arch.core_runtime.version      >>> 簽名者
      X.509, C=US, O=Android, CN=Android Debug      [證書的有效期為18-6-6 下午12:41至48-5-29 下午12:41]
      [無效的證書鏈: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target]sm          6 Fri Nov 30 00:00:00 CST 1979 META-INF/android.arch.lifecycle_livedata-core.version

(... ...此處省略一堆內容)     >>> 簽名者
      X.509, C=US, O=Android, CN=Android Debug      [證書的有效期為18-6-6 下午12:41至48-5-29 下午12:41]
      [無效的證書鏈: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target]


  s = 已驗證簽名 
  m = 在清單中列出條目
  k = 在密鑰庫中至少找到了一個證書
  i = 在身份作用域內至少找到了一個證書- 由 "C=US, O=Android, CN=Android Debug" 簽名
    摘要算法: SHA1 (弱)
    簽名算法: SHA1withRSA (弱), 1024 位密鑰 (弱)jar 已驗證。

警告: 此 jar 包含其證書鏈無效的條目。原因: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
此 jar 包含其簽名者證書為自簽名證書的條目。
SHA1 摘要算法被視為存在安全風險。此算法將在未來的更新中被禁用。
SHA1withRSA 簽名算法被視為存在安全風險。此算法將在未來的更新中被禁用。
RSA 簽名密鑰的密鑰大小 1024 被視為存在安全風險。此密鑰大小將在未來的更新中被禁用。
此 jar 包含的簽名沒有時間戳。如果沒有時間戳, 則在其中任一簽名者證書到期 (最早為 2048-05-29) 之后, 用戶可能無法驗證此 jar。

簽名者證書將于 2048-05-29 到期。

上面可以看到出現了許多"CertPath not validated"錯誤,這個錯誤在 Java SDK 7 及以上版本才有,如果想忽略這個錯誤,我們可以使用 Android SDK 構建工具的修訂版 24.0.3 及更高版本中提供的 apksigner 工具為 APK 簽名來代替JAVA JDK自帶的 jarsigner 工具來驗證APK的證書鏈,如下:

檢查 APK 的簽名是否可在 APK 支持的所有 Android 平臺上被確認為有效:

$ apksigner verify vuls.apk

檢查 APK 的簽名是否可在 Android 4.0.3(API 級別 15)及更高版本上被確認為有效:

$ apksigner verify --min-sdk-version 15 vuls.apk

2d2bbfa4-2872-11ed-ba43-dac502259ad0.png

另外簽名配置可以通過Android Studio或build.gradle中的 signingConfig 塊進行管理。要同時激活 v1和 v2 以及 v3 方案,必須設置以下值:

v1SigningEnabled true
v2SigningEnabled true
v3SigningEnabled true

在官方的 Android 開發者文檔中,提供了幾種配置應用發布的最佳實踐

Android Studio Signature Version V1/ V2:

V1 (jar Signature)

V1: Jar Signature 來自 JDK,可對簽名后的文件,作適當修改,并重新壓縮

V1 簽名不保護 APK 的某些部分,例如 ZIP 元數據。APK 驗證程序需要處理大量不可信(尚未經過驗證)的數據結構,然后會舍棄不受簽名保護的數據。這會導致相當大的受攻擊面。此外,APK 驗證程序必須解壓所有已壓縮的條目,而這需要花費更多時間和內存。為了解決這些問題,Android 7.0 中引入了 APK 簽名方案 v2

V2 (Full APK Signature)

V2: Android 7.0 (Nougat) 引入的一項新的簽名方案,不能對簽名后的 APK作任何修改,包括重新解壓。因為它是針對字節進行的簽名,所以任何改動都會影響最終結果

V3

V3:在 Android 9 中,v2 方案已更新為 v3 方案(也稱為v2+),以便在簽名分塊中包含其他信息,但在其他方面保持相同的工作方式,該方案會對 APK 的內容進行哈希處理和簽名,然后將生成的“APK 簽名分塊”插入到 APK 中

APK 簽名方案詳情,請移步Android 官網的介紹

2d4d2ff4-2872-11ed-ba43-dac502259ad0.png

只勾選v1簽名所有機型都能用,如果只勾選V2簽名7.0以下機型會在直接安裝完后顯示未安裝,7.0及以上機型使用V2的方式驗證成功安裝,同時勾選V1和V2對所有機型成功安裝,或者在Gradle 文件中修改,如下:

signingConfigs {  
    debug {  
        v1SigningEnabled true  
        v2SigningEnabled true
        v3SigningEnabled true    }  
    release {  
        v1SigningEnabled true  
        v2SigningEnabled true  
        v3SigningEnabled true    }  } 

來說說為什么我們要推薦使用v1和v2共同使用呢?因為在2020年的時候Google公布的“Janus”漏洞,可使攻擊者將Dex附加到原有的apk之上,繞過簽名認證,在執行時優先執行附加的dex文件,這個漏洞直接影響Android 5.0~8.0上所有基于signature scheme V1簽名的APK。這里說哈,對應APK應用程序來說簽名確是唯一的,是用來證明是誰開發的是否是盜版或惡意APK,那么假如正版應用被惡意修改,其簽名也會隨之被破壞,需要重新簽名才能安裝到Android上,而且市面上各種APK應用商店和手機應用助手類的工具,往往通過包名和簽名來判斷一個APK應用程序是否是盜版或惡意APK應用程序

:在官方的 Android 開發者文檔中,官方提供了幾種配置應用發布的方式,

2d78e284-2872-11ed-ba43-dac502259ad0.png

審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Android系統
    +關注

    關注

    0

    文章

    57

    瀏覽量

    14174
  • API接口
    +關注

    關注

    1

    文章

    114

    瀏覽量

    11246
  • apk
    apk
    +關注

    關注

    0

    文章

    24

    瀏覽量

    5447

原文標題:APK應用程序是否簽名異常的檢測方法

文章出處:【微信號:哆啦安全,微信公眾號:哆啦安全】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    C++程序異常的處理機制

    1、什么是異常處理? 經驗的朋友應該知道,在正常的C和C++編程過程中難免會碰到程序不按照原本設計運行的情況。 最常見的除法分母為零,數組越界,內存分配失效、打開相應文件失敗等等
    發表于 12-02 07:12

    如何檢測電能質量在線監測裝置采樣電阻是否損壞?

    檢測電能質量在線監測裝置采樣電阻是否損壞,需遵循 “ 先非侵入式數據判斷(初步定位)→ 再侵入式硬件檢測(精準驗證) ” 的流程,結合 “數據異常現象” 和 “硬件實測阻值” 雙重維度
    的頭像 發表于 10-22 15:07 ?830次閱讀

    哪些工具可以用于電能質量在線監測裝置時鐘模塊自動同步異常檢測

    檢測電能質量在線監測裝置時鐘模塊自動同步異常,需根據同步方式(PTP/IEEE 1588、GPS / 北斗、NTP)選擇針對性工具,以下是覆蓋硬件、軟件、協議分析的全維度工具方案: 一、通用
    的頭像 發表于 10-22 14:26 ?401次閱讀

    哪些常見的AI算法可以用于裝置數據的異常檢測

    在裝置數據(如工業設備傳感器數據、電子裝置運行參數、化工裝置工況數據等)的異常檢測中,AI 算法的選擇需結合數據特點(如 時序性、維度、標注情況 )、檢測目標(如實時性、精度、可解釋性)及部署環境
    的頭像 發表于 09-18 09:27 ?769次閱讀
    <b class='flag-5'>有</b>哪些常見的AI算法<b class='flag-5'>可以</b>用于裝置數據的<b class='flag-5'>異常</b><b class='flag-5'>檢測</b>?

    IGBT 樣品異常檢測案例解析

    通過利用Thermal EMMI(熱紅外顯微鏡)去檢測IGBT 樣品異常
    的頭像 發表于 08-15 09:17 ?1878次閱讀
    IGBT 樣品<b class='flag-5'>異常</b><b class='flag-5'>檢測</b>案例解析

    CX3 是否可以檢測 MIPI CSI-2 RX 錯誤的寄存器?

    CX3 是否可以檢測 MIPI CSI-2 RX 錯誤的寄存器? 如果有可以檢測上述錯誤的寄存
    發表于 07-15 07:39

    機器學習異常檢測實戰:用Isolation Forest快速構建無標簽異常檢測系統

    本文轉自:DeepHubIMBA無監督異常檢測作為機器學習領域的重要分支,專門用于在缺乏標記數據的環境中識別異常事件。本文深入探討異常檢測
    的頭像 發表于 06-24 11:40 ?1408次閱讀
    機器學習<b class='flag-5'>異常</b><b class='flag-5'>檢測</b>實戰:用Isolation Forest快速構建無標簽<b class='flag-5'>異常</b><b class='flag-5'>檢測</b>系統

    提高IT運維效率,深度解讀京東云AIOps落地實踐(異常檢測篇)

    基于深度學習對運維時序指標進行異常檢測,快速發現線上業務問題 時間序列的異常檢測是實際應用中的一個關鍵問題,尤其是在 IT 行業。我們沒有采用傳統的基于閾值的
    的頭像 發表于 05-22 16:38 ?1021次閱讀
    提高IT運維效率,深度解讀京東云AIOps落地實踐(<b class='flag-5'>異常</b><b class='flag-5'>檢測</b>篇)

    如何檢測電機的好壞?

    檢測電機的好壞可以通過多種方法綜合判斷,以下是一些常用的檢測方法: ? 一、外觀檢查 首先,通過觀察電機的外觀,
    的頭像 發表于 04-23 17:23 ?6719次閱讀

    進行MAX17506縮小體積設計后, 整個電源功耗異常, 可以調整漏失功耗的方法嗎?

    進行MAX17506縮小體積設計后, 整個電源功耗異常, 可以調整漏失功耗的方法嗎?
    發表于 04-18 07:43

    傳統檢測方法VS電子芯片氣密性檢測儀,差距一目了然

    水中,觀察是否汽泡來判定芯片是否泄漏。這類方法簡易直觀,但存在很多問題。一方面,它只能檢測到較大的泄漏,很難發現微小的泄漏,但這些微小的泄
    的頭像 發表于 04-14 14:07 ?594次閱讀
    傳統<b class='flag-5'>檢測</b><b class='flag-5'>方法</b>VS電子芯片氣密性<b class='flag-5'>檢測</b>儀,差距一目了然

    STM32U5如何設置才能保證LPBAM和RUN模式下的應用程序正常使用

    = 0x08000000,LENGTH = 2048K}請問,必須如上圖這樣設置才可以正常使用LPBAM嗎,如果我的應用程序占用RAM過大,需要使用大量的RAM空間,如何設置才能保證LPBAM和RUN模式下的應用程序正常使用
    發表于 03-10 08:21

    變頻器是否故障的方法判斷

    變頻器是否故障用這幾種方法可以輕松判斷,維修使用建議熟記?
    發表于 03-06 17:19 ?2次下載

    請問是否任何OpenVINO?樣本可以推斷批次大小大于1的檢測模型?

    是否任何OpenVINO?樣本可以推斷批次大小大于 1 的檢測模型?
    發表于 03-06 07:19

    是否可以使用OpenVINO?部署管理器在部署機器上運行Python應用程序

    使用 OpenVINO?部署管理器創建運行時軟件包。 將運行時包轉移到部署機器中。 無法確定是否可以在部署機器上運行 Python 應用程序,而無需安裝OpenVINO? Toolkit 和 Python。
    發表于 03-05 08:16