某生鮮電商sign簽名算法分析

磨刀霍霍

環(huán)境預(yù)備

測(cè)試手機(jī)

nexus x5 android 6.0

(android7.0以上版本抓包工具默認(rèn)抓不到https請(qǐng)求,因?yàn)?.0以上只信任系統(tǒng)級(jí)別證書,而charles證書是安裝到用戶級(jí)目錄的。

解決方式:可將charles證書升級(jí)為系統(tǒng)證書,即安裝證書到系統(tǒng)證書目錄下。

具體操作可參考連接:https://www.pianshen.com/article/97291182754/ )

PC

macbookpro

13-inch 4-core 16G-RAM macOS 10.15.5

所需工具

charles -網(wǎng)絡(luò)抓包

image-20210706151936444

下載地址:https://www.charlesproxy.com/

(前提:手機(jī)和電腦均安裝好charles證書)

證書安裝及支持抓包https設(shè)置指引請(qǐng)參考: https://blog.csdn.net/victory0943/article/details/106332095/

postman -接口調(diào)試工具

image-20210712171621034

下載地址:https://www.postman.com/

支持導(dǎo)入cURL,便捷高效,導(dǎo)入操作如下圖

image-20210712171745333

RE文件管理器 -android文件導(dǎo)出工具(需要root權(quán)限)

image-20210716114436844

下載地址:https://m-k73-com.sm-tc.cn/c/m.k73.com/mipw/574951.html

Apk Messenger -查殼工具

加殼(加固)后的 apk 直接反編譯是看不到真實(shí)源代碼的,需要脫殼后再反編譯。

使用APK Messenger可以很方便地判斷是否加了殼

AndroidCrackTool For Mac -反編譯apk

https://github.com/Jermic/Android-Crack-Tool

mac下Android逆向神器,實(shí)用工具集

AndroidCrackTool集成了Android開發(fā)中常見的一些編譯/反編譯工具,方便用戶對(duì)Apk進(jìn)行逆向分析,提供Apk信息查看功能.目前主要功能包括(詳細(xì)使用方法見使用說(shuō)明):

  • 反編譯APK
  • 重建APK
  • 簽名APK
  • 優(yōu)化APK
  • DEX2JAR(APK2JAR)
  • JDGUI
  • 提取DEX
  • 提取XML
  • Class to smail
  • Apk信息查看
  • Unicode轉(zhuǎn)換

初窺門徑

抓包分析

獲取門店接口分析

首先手機(jī)配置好代理,打開APP,用Charles抓一下包。

image-20210716111032462

一葉障目

多次請(qǐng)求獲取門店的接口后,復(fù)制cURL進(jìn)行對(duì)比分析:

這里介紹一個(gè)文本比對(duì)的在線工具,方便觀察異同 https://qqe2.com/word/diff

image-20210716105559071

對(duì)比分析得出:

變化值:

longitude和latitude: 經(jīng)緯度傳參,多次定位后肯定取值有所不同
timestamp:時(shí)間戳毋庸置疑
signature:顧名思義加密簽名

相同值:

token:多次調(diào)用發(fā)現(xiàn)token取值是固定的

火眼金睛

加密參數(shù)確定

postman中導(dǎo)入該請(qǐng)求,signature參數(shù)勾選去掉后進(jìn)行請(qǐng)求,發(fā)現(xiàn)返回認(rèn)證過(guò)期無(wú)法正常獲取數(shù)據(jù),說(shuō)明signature為加密參數(shù)

image-20210716110042478

同時(shí)發(fā)現(xiàn)header中有個(gè)timestamp時(shí)間戳字段,根據(jù)逆向經(jīng)驗(yàn),請(qǐng)求中同時(shí)出現(xiàn)加密和時(shí)間戳,一般時(shí)間戳都會(huì)參與加密運(yùn)算的,這樣后端才會(huì)用時(shí)間戳結(jié)合加密邏輯進(jìn)行加密認(rèn)證。

因此我們?cè)僮鰝€(gè)試驗(yàn),只傳 signature 不傳 timestamp進(jìn)行請(qǐng)求,發(fā)現(xiàn)依然無(wú)法正確響應(yīng),證明我們的猜想的正確的。

image-20210716110509088

破解目標(biāo)確定

signature的加密邏輯

且signature是有32位的數(shù)字加小寫字母組成的,猜測(cè)應(yīng)該是MD5加密

螳臂當(dāng)車

apk查殼

查殼工具很多,這里我使用的是 APK Messenger,打開后,直接將 apk 包拖入界面,幸運(yùn)地發(fā)現(xiàn)該apk沒(méi)有加殼

長(zhǎng)槍直入

apk反編譯

本次使用了Android Crack Tool這個(gè)工具,其實(shí)用jadx、jd-gui等都可以,平時(shí)多換著用用,就知道各個(gè)工具的優(yōu)缺點(diǎn)了~

  1. 利用Android Crack Tool 提取classes.dex文件
image-20210716112122185
  1. 將得到classes.dex文件轉(zhuǎn)為jar
image-20210716112253352
  1. 通過(guò)jd-gui打開生成的jar文件,得到了反編譯的源碼
image-20210716112441431
image-20210716112404509

真假猴王

加密邏輯靜態(tài)分析

由于加密參數(shù)為signature,在jd-gui中全局搜索“signature”

image-20210716112753262

經(jīng)過(guò)簡(jiǎn)單的瀏覽排除后,發(fā)現(xiàn)GlobalHttpHandlerImpl這個(gè)類中的相關(guān)代碼最為相似,定位到關(guān)鍵代碼處:

image-20210716113023292

其實(shí)這段邏輯很容易看懂:

最后一行代碼localObject2轉(zhuǎn)為String后賦值給了signature,說(shuō)明localObject2是md5的加密結(jié)果,即倒數(shù)第二行y.a()方法是MD5加密方法,傳入localObject2經(jīng)過(guò)加密后又賦值給了localObject2;

localObject2往上追溯,它是一個(gè)字符串的拼接,先拼接了一串固定鹽值"CE0BFD14562B68D6964536097A3D3E0C",

其次拼接了str和localObject1,那么這兩個(gè)是什么呢?其實(shí)不用向前追溯,我們換個(gè)思路往下看,你會(huì)發(fā)現(xiàn)

str賦值給了timestamp,localObject1賦值給了token,一切都有了答案~

一段偽代碼進(jìn)行加密邏輯總結(jié):

signature = MD5("CE0BFD14562B68D6964536097A3D3E0C" + timestamp + token)

取接口中的token和時(shí)間戳進(jìn)行加密驗(yàn)證下,結(jié)果是一致的,手工~

image-20210716114159074

浮沙之上

心得:

  1. 逆向需要耐心也需要大膽的猜想去不斷嘗試,同時(shí)需要尋求巧妙的驗(yàn)證方式。本例的分析向上和向下的追溯均有,靈活應(yīng)對(duì)
  2. 逆向工作會(huì)用到的很多好用的工具,平時(shí)注意多收集一些好用的工具或博文以事半功倍,本文所用到的工具和相關(guān)擴(kuò)展知識(shí)點(diǎn)均貼出了鏈接,方便讀者收藏~
  3. 本文旨在分享一些逆向技巧和思路,本文所舉case相關(guān)敏感已打碼略去,讀者不可利用本文所述內(nèi)容進(jìn)行非法商業(yè)獲取利益,若執(zhí)意帶來(lái)的法律責(zé)任由讀者自行承擔(dān)。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 初入道途 抓包分析 工具 抓包工具-charles https://www.charlesproxy.com/[h...
    靈風(fēng)_spirit閱讀 636評(píng)論 0 1
  • 一、概述 這個(gè)玩意簡(jiǎn)單說(shuō)起來(lái)很簡(jiǎn)單,詳細(xì)描述起來(lái)很復(fù)雜,復(fù)雜在什么地方呢,首先有一塊陌生的知識(shí)點(diǎn),包括但不限于證書...
    Time_x閱讀 2,637評(píng)論 1 1
  • 在我們開發(fā)的過(guò)程中,幾乎每天都需要打包生成apk安裝包,那我們是否有仔細(xì)的了解過(guò)一個(gè)apk從生成,到最后用...
    Android開發(fā)_Hua閱讀 1,853評(píng)論 0 1
  • 用兩張圖告訴你,為什么你的 App 會(huì)卡頓? - Android - 掘金 Cover 有什么料? 從這篇文章中你...
    hw1212閱讀 14,140評(píng)論 2 59
  • 前言對(duì)于一款成熟的App,在某個(gè)時(shí)間點(diǎn)一定會(huì)開始涉及或者說(shuō)要開始考慮安全問(wèn)題。本著一貫的風(fēng)格,把自己最近一段時(shí)間以...
    肖丹晨閱讀 13,479評(píng)論 1 26

友情鏈接更多精彩內(nèi)容