資源共享吧|易語言論壇|逆向破解教程|輔助開發(fā)教程|網(wǎng)絡(luò)安全教程|rigasin.com|我的開發(fā)技術(shù)隨記
標(biāo)題:
零基礎(chǔ)安卓逆向?qū)W習(xí)之旅(二)
[打印本頁]
作者:
安卓逆向培訓(xùn)
時(shí)間:
2020-2-20 13:20
標(biāo)題:
零基礎(chǔ)安卓逆向?qū)W習(xí)之旅(二)
零基礎(chǔ)安卓逆向?qū)W習(xí)之旅(二)
0x00 前言
上期小狼跟大伙兒分享了如何檢測安卓逆向環(huán)境,大伙兒是否有遇到問題呢?其實(shí),小狼在上期中沒有特別指出來哦,今天就跟大伙兒說說困擾小狼些時(shí)日的問題。
今天跟大家分享的是安卓逆向之初步檢查APP安全,準(zhǔn)備好了嗎?要開始啦~~~
0x01 正文
上期文章沒有特別指出不能更新SDK的問題哦,聰明的小伙伴們是否自己找到解決方法了呢?其實(shí)可以掛代理咧,操作步驟如下:
Tools—>options
mirrors.neusoft.edu.cn
80
(, 下載次數(shù): 102)
上傳
點(diǎn)擊文件名下載附件
(, 下載次數(shù): 113)
上傳
點(diǎn)擊文件名下載附件
解決了上次的問題,接下就開始我們今天的正文啦~
1、檢查APP證書及其簽名
APP證書是開發(fā)者用來確保用戶對他們在APP市場上發(fā)布的應(yīng)用程序的信任,證書中通常包括開發(fā)者的認(rèn)證信息及對APP的相關(guān)加密算法。每個(gè)APP在被安裝之前都必須是通過證書簽名過的,通過簽名可以確保APP的完整性及有效防止“盜版”。
① 創(chuàng)建并啟動(dòng)AVD
創(chuàng)建 [path-to-your-sdk-install]/androidcreate avd –n [your avdname] –t [system image target] -b [target/adis]
(, 下載次數(shù): 102)
上傳
點(diǎn)擊文件名下載附件
啟動(dòng) [path-to-your-sdk-install]/emulator –avd [your avdname] –no-boot-anim
(, 下載次數(shù): 101)
上傳
點(diǎn)擊文件名下載附件
② 從設(shè)備中拷貝apk到本地
shell設(shè)備,查看apk的相應(yīng)路徑
(, 下載次數(shù): 100)
上傳
點(diǎn)擊文件名下載附件
將apk拷貝到本地
(, 下載次數(shù): 99)
上傳
點(diǎn)擊文件名下載附件
③ 查看APP證書及簽名
apk文件實(shí)際上是zip格式的壓縮包,只是被更改了文件名而已,先將apk轉(zhuǎn)變?yōu)閦ip格式壓縮包,再進(jìn)行解壓 。
(, 下載次數(shù): 99)
上傳
點(diǎn)擊文件名下載附件
解壓后會(huì)新增相應(yīng)文件及目錄。
(, 下載次數(shù): 105)
上傳
點(diǎn)擊文件名下載附件
查看META-INF下文件的內(nèi)容 ,CERT.RSA是包含有公鑰證書的文件,使用keytool進(jìn)行查看:keytool –printcert –file META-INF/CERT.RSA
(, 下載次數(shù): 105)
上傳
點(diǎn)擊文件名下載附件
關(guān)聯(lián)app內(nèi)容的簽名的文件是META-INF,可以通過cat/vim查看其內(nèi)容
(, 下載次數(shù): 104)
上傳
點(diǎn)擊文件名下載附件
其中SHA1-Digest-manifest是app每個(gè)資源文件所對應(yīng)的摘要信息,所顯示的是通過base64編碼過的。
④ 解剖包含有公鑰證書和簽名的目錄META-INF
CERT.RSA:是app證書,需要通過keytool查看其信息,其中包含有公鑰持有者、發(fā)行人的基本信息,證書的有效期限,證書指紋等。
CERT.SF:這是包含有app每個(gè)資源文件摘要信息的文件,這些摘要信息是通過私鑰進(jìn)行加密簽名的,需要使用公鑰才能解密;在app安裝過程中,每個(gè)資源文件都會(huì)生成摘要信息與這里解密后的摘要進(jìn)行對比,從而確保app的完整性。
MANIFEST.MF:與CERT.SF保存著相似的資源摘要信息,但未用私鑰進(jìn)行加密簽名。
⑤ 可以使用OpenSSL查看完整的公鑰證書
openssl pcks7 –inform DER –in META-INF/CERT.RSA–noout –print_certs –text
(, 下載次數(shù): 104)
上傳
點(diǎn)擊文件名下載附件
2、Android app簽名
① 移除META-INF目錄
rm -r [path-to-unzipped-apk]/META-INF
②創(chuàng)建一個(gè)密鑰庫(keystore),從而持有私鑰用于簽名app
keytool –genkey –v -keystore [nameofkeystore]–alias
[your_keyalias] –keyalg RSA –keysize 2048 –validity
[numberofdays]
–genkey:用于告知keytool生成key
-v:信息輸出,可選擇
-keystore:密鑰庫名
-alias:別名
–keyalg:加密算法
過程需要設(shè)定密碼及確認(rèn)基本信息 。
(, 下載次數(shù): 98)
上傳
點(diǎn)擊文件名下載附件
③ app簽名
jarsigner –verbose –sigalg MD5withRSA –digestalgSHA1 –
keystore [name of your keystore] [your .apk file][your keyalias]
–sigalg:提供簽名過程的算法;
–digestalg:提供在計(jì)算apk文件中每個(gè)資源簽名的算法;
用于添加包含有證書及簽名的META-INF目錄。
④ 檢查app簽名
jarsigner –verify –verbose [path-to-your-apk]
3、檢查AndroidManifest.xml文件
AndroidManifest.xml文件包含了app中的所以許可信息及app中包含的各個(gè)組成成分。
① 安裝apktool
訪問http://ibotpeaches.github.io/Apktool/install/
(, 下載次數(shù): 109)
上傳
點(diǎn)擊文件名下載附件
② 下載apktool.jar文件及其script,將兩個(gè)文件放置在/sdk/platform-tools/目錄下嘗試執(zhí)行./apktool -help,確定是否安裝成功
(, 下載次數(shù): 93)
上傳
點(diǎn)擊文件名下載附件
③利用apktool生成AndroidManifest.xml文件
/[path-to-apktool]/apktool d -f –s [apk file] -odecode/
(, 下載次數(shù): 106)
上傳
點(diǎn)擊文件名下載附件
④ 通過cat/vim查看AndroidManifest.xml文件內(nèi)容,包含app安裝信息
(, 下載次數(shù): 97)
上傳
點(diǎn)擊文件名下載附件
Android app清單是以XML語言的格式保存在.xml文件中的,其中各個(gè)標(biāo)簽及標(biāo)簽中的屬性都代表著app的各個(gè)配置信息。
第一行則是表明該.xml文件的語言版本及編碼格式:
<manifest>:是XML文件的根標(biāo)簽,也是app清單的開始標(biāo)簽;
package:是該app包內(nèi)java主程序包的包名,它也是一個(gè)應(yīng)用進(jìn)程的默認(rèn)名稱;
<uses-permission>:為了保證Android應(yīng)用的安全性,應(yīng)用框架制定了比較嚴(yán)格的權(quán)限系統(tǒng),一個(gè)應(yīng)用必須聲明了正確的權(quán)限才可以使用相應(yīng)的功能,例如我們需要讓應(yīng)用能夠訪問網(wǎng)絡(luò)就需要配置“android.permission.INTERNET”,而如果要使用設(shè)備的相機(jī)功能,則需要設(shè)置 “android.permission.CAMERA”;
<permission>:權(quán)限聲明標(biāo)簽,定義了供給<uses-permission>使用的具體權(quán)限,當(dāng)需要給其他應(yīng)用程序提供可調(diào)用的代碼或者數(shù)據(jù),則需要使用<permission>標(biāo)簽;
android:description:權(quán)限描述;
android:icon:權(quán)限圖標(biāo);
android:name:權(quán)限名;
android:protectionLevel:代表著不同級(jí)別的權(quán)限;
dangerous:允許獲取敏感用戶數(shù)據(jù)及操作系統(tǒng)配置信息;
normal:獲取正常數(shù)據(jù)及服務(wù);
signature/signatureOrSystem:用于同一證書簽名的應(yīng)用間自動(dòng)獲取信息
通?梢酝ㄟ^查看該標(biāo)簽確定其權(quán)限是否適當(dāng),同時(shí)涉及到dangerous/normal權(quán)限在安裝時(shí)會(huì)詢問用戶是否允許,而后兩個(gè)則不會(huì)顯示相關(guān)用戶確認(rèn)的信息;
<application>:聲明一個(gè)應(yīng)用的開始;
debuggable:當(dāng)設(shè)置為true時(shí),表明該APP在手機(jī)上可以被調(diào)試,默認(rèn)為false;
enabled:是否能夠?qū)嵗搼?yīng)用程序的組件,如果為true,每個(gè)組件的enabled屬性決定那個(gè)組件是否可以被enabled。如果為false,它覆蓋組件指定的值;所有組件都是disabled;
allowClearUserData:是否能選擇自行清除數(shù)據(jù),默認(rèn)為true;
android:exported:Activity是否可以被另一個(gè)Application的組件啟動(dòng),true允許被啟動(dòng);false不允許被啟動(dòng),如果被設(shè)置為了false,那么這個(gè)Activity將只會(huì)被當(dāng)前Application或者擁有同樣user ID的Application的組件調(diào)用。在沒確定exported 的默認(rèn)值時(shí),還需要根據(jù)Activity中是否有intent filter(過濾器) 來定。沒有任何的filter意味著這個(gè)Activity只有在詳細(xì)的描述了他的class name后才能被喚醒。這意味著這個(gè)Activity只能在應(yīng)用內(nèi)部使用,因?yàn)槠渌黙pplication并不知道這個(gè)class的存在。所以在這種情況下,它的默認(rèn)值是 false。從另一方面講,如果Activity里面至少有一個(gè)filter的話,意味著這個(gè)Activity可以被其它應(yīng)用從外部喚起,這個(gè)時(shí)候它的默認(rèn)值是true;
android:name:明確包含有java代碼的class file;
android:permission:是否允許請求與該組件交互;
android:enabled:是否允許系統(tǒng)啟動(dòng)、實(shí)例化該組件;
<service>:服務(wù)組件,程序運(yùn)行在后臺(tái)中;
android:isolateProcess:在沒有許可下,服務(wù)是否可以在分離的進(jìn)程運(yùn)行;
<receiver>:廣播接受器組件;
<provider>:內(nèi)容提供者組件;
android:writePermission:對相應(yīng)組件授予可寫權(quán)限;
android:readPermission:對相應(yīng)組件授予可讀權(quán)限。
4、通過ADB與app活動(dòng)管理者交互
① 通過shell連接設(shè)備并運(yùn)行pm list packages查看設(shè)備程序包列表
(, 下載次數(shù): 102)
上傳
點(diǎn)擊文件名下載附件
ADB啟動(dòng)app活動(dòng)組件(am start <package name>/<activityname>)
啟動(dòng)小米Email歡迎界面
(, 下載次數(shù): 109)
上傳
點(diǎn)擊文件名下載附件
③ 啟動(dòng)服務(wù)組件(am startservice <package name>/<servicename>)
更多:可通過am查看其功能的使用
5、利用ADB獲取app的資源
① 前提:實(shí)體設(shè)備應(yīng)將其rooted,取得root權(quán)限
② 在/data/data目錄,保存著各個(gè)程序包的資源
(, 下載次數(shù): 102)
上傳
點(diǎn)擊文件名下載附件
③ ls –alR */databases/ 查看數(shù)據(jù)庫資源
ls –alR*/files/ 查看文件資源
(, 下載次數(shù): 103)
上傳
點(diǎn)擊文件名下載附件
④ 利用sqlist3工具查看.db數(shù)據(jù)庫文件的信息
從設(shè)備中拷貝.db文件
(, 下載次數(shù): 100)
上傳
點(diǎn)擊文件名下載附件
利用[path ofplatform-tools]目錄下的sqlite3工具查看數(shù)據(jù)庫信息
(, 下載次數(shù): 105)
上傳
點(diǎn)擊文件名下載附件
結(jié)語:今天跟大伙分享的是如何檢查APP的證書與簽名、查看Mainfest及本地?cái)?shù)據(jù)庫等文件
作者:
a114543
時(shí)間:
2020-9-19 09:07
祝資源共享吧越來越火!
歡迎光臨 資源共享吧|易語言論壇|逆向破解教程|輔助開發(fā)教程|網(wǎng)絡(luò)安全教程|rigasin.com|我的開發(fā)技術(shù)隨記 (http://rigasin.com/)
Powered by Discuz! X3.4