日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android安全检测 - Janus签名漏洞

發布時間:2023/12/8 Android 58 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android安全检测 - Janus签名漏洞 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

這一章來說說Janus簽名漏洞,網上關于這個漏洞的介紹很詳細,其中的原理均為其它地方進行摘錄,那么我主要做的就是POC測試,在文章末尾也會給出相應的樣本,當然樣本就是自己做的,用真實的上線項目來做這個也不合適,想找真實的項目來練練手的話推薦找2017年12月之前的項目(學習可以,但不要在網上發布不當的東西)

一、漏洞原理

基本概述

Google在2017年12月份披露了一個名為“Janus”的安全漏洞(漏洞編號:CVE-2017-13156),該漏洞可以讓攻擊者繞過安卓的簽名校驗機制(signature scheme V1簽名機制),進而可以對應用進行篡改(apk代碼篡改)。安卓的部分安全機制是建立在簽名和校驗的基礎上的,故這個漏洞會給搭載安卓系統的設備造成很大的危害

這個漏洞可以在篡改apk內容的情況下,保持apk的簽名不發生變化,那么這就會使得用戶在下載到安裝這個過程中,設備中的安全軟件發現不了它是一個被篡改的惡意盜版應用。

影響范圍

安卓5.0到8.0系統以及基于V1簽名機制的app均Janus漏洞影響;基于V2簽名的App則不受影響。從安卓7.0開始系統就已經支持了V2簽名,那么7.0的安卓系統安裝了含有V2簽名的app不會受到此漏洞的影響

原理

文章來源:https://zhuanlan.zhihu.com/p/31972541

攻擊原理解讀:

安卓應用程序代碼邏輯主要是以DEX文件格式存放。DEX格式標準文檔鏈接:鏈接

此DEX格式文件以文件名classes.dex,classes2.dex等與其他應用程序所需文件一起壓縮存放于APK格式的文件里。APK格式文檔鏈接:鏈接

APK格式文件就是大眾熟知的安卓應用程序安裝包,有它就可以安裝一款應用軟件到手機。問題也就出在安卓操作系統安裝應用程序的流程上。

螞蟻金服安全部門的巴斯光年實驗室成員吳濰浠(@wish_wu)表示,Android操作系統在安裝一個應用軟件時,會將DEX文件轉化成OAT文件,負責轉化任務的程序叫dex2oat 。安卓操作系統會將APK文件直接給dex2oat程序。

而dex2oat有這樣一套邏輯:

如果給它的是APK文件,它會把classes.dex文件從APK文件里取出再轉化成OAT文件。如果給它的是DEX文件,它直接把DEX文件轉化成OAT文件。

如果一個既是APK格式文件又是DEX格式文件的文件,給dex2oat程序會怎樣呢?

以下是程序判斷邏輯:

dex2oat通過IsZipMagic函數和IsDexMagic函數來決定這是什么格式的文件。

再來看看IsZipMagic函數和IsDexMagic函數的實現:
所以dex2oat程序是依據前文件的前4個字節決定這是什么格式文件。然而根據APK格式,前兩個字節可以不是‘P’和‘K’,也就是說這里對APK格式的判斷并不嚴謹。事實上一個既滿足APK格式要求又滿足DEX格式要求的文件是可以構造出來的。

借用漏洞個發現者發布的圖片所示:
這里我們暫且把這個DEX格式文件與APK格式文件合體之后產生的文件叫做DEXAPK文件。

當DEXAPK文件在被安卓操作系統安裝時,包管理器的代碼會把它當作APK格式文件,而dex2oat會把它當作DEX格式文件。安卓應用程序的簽名驗證是包管理器做的,程序運行加載的OAT文件是由dex2oat根據輸入的DEX格式文件生成的。

攻擊者可以利用Janus漏洞,將一個惡意DEX與源APK進行拼接,構造一個DEXAPK文件,從而既可以通過安裝程序時系統對APK文件的簽名認證,又包含攻擊者想要運行的程序邏輯。Android系統運行時會將當前的APK文件看作是之前應用的合法升級版并允許安裝,最終通過
“升級”植入用戶設備執行惡意DEX代碼。

二、POC

這里主要做"Janus"漏洞的POC測試,在實際的操作過程種遇到的一些問題

測試環境\工具

(1)AndroidStudio自帶模擬器Android 6.0
(2)dex和apk合并工具

兩種情況的不同處理

(1)在原dex的基礎之上進行修改

(2)生成一個新dex替換原dex

具體測試
1. 在原dex的基礎之上進行修改

1.1. 使用Android Studio生成含有單dex文件的apk(只使用V1簽名機制進行簽名),并查看apk的簽名信息


1.2. 模擬真實環境(不知道apk源碼的情況下),使用AndroidKiller對apk文件代碼(dex)進行修改,將文本修改成"盜版軟件",并且進行重打包

1.3. 將重打包生成的apk文件提取出classes.dex文件,將提取出的dex文件和原apk文件(樣本)進行合并(使用工具進行合并)



1.4. 將合并完成的apk文件安裝至模擬器,可以發現apk的內容已經修改,成功復現在原dex的基礎之上進行修改情況下的Janus漏洞

2、生成一個新dex替換原dex

2.1. 使用Android Studio生成一個含有Application、Activity、ContentProvider的apk文件

2.2. 模擬真實環境(不知道apk源碼的情況下),將apk進行反編譯查看清單文件中的所有組件

2.3.創建一個新的Android項目,根據清單文件創建出所有已存在的組件(主Activity、ContentProvider),若是有Application也要進行創建

2.4. 把新Android項目生成的apk文件提取出classes.dex文件,將提取出的dex文件和原apk文件(樣本)進行合并(使用工具進行合并)



2.5.將合并完成的apk文件安裝至模擬器,可以發現apk的內容已經修改,成功復現Janus漏洞

遇到的問題

1、在第二種情況(生成一個新dex替換原dex)中,若未實現Application,則會發生崩潰情況

2、在第二種情況(生成一個新dex替換原dex)中,若未實現ContentProvider,則會發生崩潰情況

3、合并apk之后無法進行安裝的問題。出現這種問題可能是當前手機系統已經修復了此漏洞,換模擬器或者其它手機即可(系統版本在5.0-8.0)

4、單dex和多dex的情況不同,單dex的情況下可以在原apk的基礎上直接進行修改,而不對功能的使用造成影響,而多dex的情況下處理比較麻煩,分dex表示dex的方法數超過了65535,若想保留原軟件的功能,而使用一個dex來替換多dex文件,這是不太現實的,那么對于多dex并想保留原功能可以考慮使用動態加載和Classloader替換的方式來實現

三、修復建議

(1)建議開發者使用V2簽名機制對應用進行簽名

四、樣本

點擊下載(0積分)


asjhan for Android reverse

總結

以上是生活随笔為你收集整理的Android安全检测 - Janus签名漏洞的全部內容,希望文章能夠幫你解決所遇到的問題。

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