未封装的扩展程序是什么意思_Android漏洞挖掘第三期:客户端完整性未校验
引言:每一期都有相同的內容部分,主要為了讓大家單獨看一期依舊能看懂!!!
0x01 APK文件
依然從APK文件開始說起,相信大家看我之前的帖子,已經知道APK文件怎么看里面的文件內容了。這里還是啰嗦一下吧!
APK文件(全稱:Android Application Package),是安卓系統使用的一種應用程序包文件格式,也就是說可以將apk文件雙擊對其進行安裝。既然說是包文件格式,說明apk文件應該是一個將其他文件進行整合壓縮后的一個壓縮包。既然是壓縮包,就可以利用winrar軟件對其進行解壓并得到里面的軟件。
0x02 利用工具
?本次的利用工具:apktool,SignAPK,ApkBurster
apktool:這個工具就不多解釋了,就是一個解包工具。或者修改尾部擴展名,一樣的哈
SignAPK:這是個新名詞,我也是有幸第一次接觸到,這是一個對未簽名的APK問價進行簽名的工具。
神器之ApkBurster:這也是個新名詞,作用是加載APK時會自動進行解包,使用“解包目錄”功能打開文件夾進行修改后,使用重“打包安裝”即可自動完成打包,簽名,覆蓋安裝操作。
0x03 開始切入正題了-----測試步驟
?第一步當然是利用apktool進行解包咯。當然也是可以修改尾部擴展名,將.apk修改為.zip的哦
先附上apktool的解包公式。然后我們找一款android進行解包。(當然,涉及敏感信息的地方我會打馬賽克的)
?0x04 找到res文件,并修改里面的圖片
?為啥是修改里面的圖片?而不是修改里面的數據呢?其實修改logo圖片首先是最簡單。其次是最容易看到效果的。
首先,先找到res文件夾。這個文件夾里面存放著大量的圖片。很容易就可以找到logo的圖片
其次,從網站上下載好一個圖片(隨便大小,別超過手機屏幕就行),然后與本身里面的logo進行替換。(注意哦,替換的名字也必須是一樣的,因為程序會以名字調用的)
0x05 封裝
我們把APK解壓出來,是否要對整個信息進行封裝了呢?其實封裝就是要對apk文件進行簽名。如果無法簽名的話,apk文件是不會正常運行的。那我把他們再壓縮成zip壓縮包,然后再改成apk可以嗎?我這里告訴你,我試過了,不行的。
但是還有一個方法可以做掉。你當初把apk擴展名改為zip的那個包,是可以利用的,直接整個替換里面的或部分替換后,再改為.apk就行了。(親測可用)
封裝命令我還是照常給出,便于大家去測試方便一些
從這里面看來,我們的逆向的,基本都是要用到java程序耶!所以大家一定要裝好java程序。另外,建議大家裝一下java1.8,因為java版本高會不支持很多的軟件和工具的。
同時,這個命令,又多出了2個文件,一個叫testkey.x509.pem,另外一個叫testkey.pk8。這2個文件是用來給apk文件簽名用的,不知道大家是否用burpsuite抓過https的包。我們是先要去burp上下載一個CA證書,然后將CA證書安裝到瀏覽器并添加信任。抓取https的包的時候,就是利用burp官網下載的CA證書,去騙取瀏覽器的信任,讓瀏覽器誤認為這是一個真證書。而apk里的這個簽名也是同樣的道理
0x06 安裝前和安裝后進行對比
對比是肯定要的,可以看一下安裝前和安裝后的差異,那。。。。我們以我們這個軟件進行測試一下!
這個截圖是安裝前的畫面。基本沒有什么變化,是一個正常的軟件
這個截圖是安裝后的畫面。我們把里面的logo的圖片改了,打開后,安裝卸載的圖標都發生了變化。是不是很好玩啊!
0x07 解決方法
有的人說,看了文章,也會了。但是遇到些解決方法反而就不會了。遠離說不清楚。這里也給大家寫出來了。
解決方法:客戶端再沒次開機啟動時,實際上都會對客戶端自身的應用完整性進行校驗的。再驗證邏輯中,不使用MANIFEST.MF中的數據作為驗證憑證。并且需驗證是否有不屬于該客戶端版本的新文件添加,驗證過程于服務器完成即可
通俗說法:客戶端沒有對自己的程序進行校驗,導致攻擊者可以任意修改里面的內容。本次雖然是改了圖片。那如果真正的攻擊者是改了數據呢?
總結
以上是生活随笔為你收集整理的未封装的扩展程序是什么意思_Android漏洞挖掘第三期:客户端完整性未校验的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: swagger 怎么去掉get dele
- 下一篇: read-only file syste