一、目標(biāo)
李老板:奮飛呀,最近耍小程序的比較多,而且貌似js好耍一點(diǎn)?要不咱們也試試?
奮飛: 你是老板,你說了算嘍。
第一次搞小程序,得找個(gè)軟柿子捏,就找個(gè)以前分析過的某段子App的小程序吧。
-
反編譯
-
靜態(tài)分析
-
動(dòng)態(tài)調(diào)試
二、步驟
春天在哪里?
app下載回來就是apk包,那么小程序在哪里?
小程序是一個(gè)以 wxapkg 為后綴的文件,在android手機(jī)的 /data/data/com.tencent.mm/MicroMsg/用戶id/appbrand/pkg/ 里面找, 例如在我的測試手機(jī)里面就在
/data/data/com.tencent.mm/MicroMsg/9099d679ace11f72569bd530813a28ff/appbrand/pkg
這個(gè)目錄下面。可是下面一堆數(shù)字命令的文件,哪個(gè)才是我們要找的某段子App的小程序呢?
兩個(gè)辦法: . 把所有的小程序都刪除,就留一個(gè),那這個(gè)文件就是了。 . 把某段子App的小程序刪除,然后再重裝一下。 看文件日期,最新的就是了。
反編譯
wxapkg文件肯定沒法直接分析的了,我敢打賭它一定可以反編譯出js文件。
github.com/ezshine/wxa…
從releases里面下載他編譯好的wxapkg-convertor可執(zhí)行程序。
把wxapkg文件拖到 wxapkg-convertor 的界面里面可以反編譯出js源碼出來。
我們先試試 分析一下這個(gè) websign 的來歷
首先搜索一下 websign 字符串
./3AAE21D3932643BF5CC849D4DA8F8236.js:3:if (!e) return console.error("websign arguments error"), ""; ./3AAE21D3932643BF5CC849D4DA8F8236.js:6:return n.length < 20 ? (console.error("websign length error"), "") : "v2-".concat(o("".concat(e).concat(o(n)))); ./3AAE21D3932643BF5CC849D4DA8F8236.js:98:url: "".concat(n, "/account/nonce?websign=").concat(i(c)), ./3AAE21D3932643BF5CC849D4DA8F8236.js:124:url: "".concat(n, "/account/auth?websign=").concat(i(u)), ./3AAE21D3932643BF5CC849D4DA8F8236.js:178:var ff = "".concat(n).concat(s).concat(e, "?websign=").concat(i(d)); ./3AAE21D3932643BF5CC849D4DA8F8236.js:180:url: "".concat(n).concat(s).concat(e, "?websign=").concat(i(d)),
很幸運(yùn),看上去就在這個(gè)js里面的 i(d) 函數(shù)里。
動(dòng)態(tài)調(diào)試
既然反編譯出來了js源碼,能否動(dòng)態(tài)調(diào)試下,這樣分析起來更方便了?
答案是可以的,下載 微信開發(fā)者工具,把剛才反編譯的工程導(dǎo)入進(jìn)來。
記得在 設(shè)置->項(xiàng)目設(shè)置 中把 “不校檢合法域名...” 這一項(xiàng)勾上。
這樣代碼貌似可以跑起來, 我們?cè)?i 函數(shù)下個(gè)斷點(diǎn),發(fā)下它可以進(jìn)來了。
分析一下
我們調(diào)試的時(shí)候發(fā)現(xiàn)它并沒有生成websign,t.h_m為空,導(dǎo)致后面沒有生成,這個(gè)難不倒我們,從抓包結(jié)果里面找一個(gè) h_m的值,寫死一下,就順利跑出結(jié)果了。
var e = t.h_m; // 修改成 var e = 257167182;// t.h_m;
從js代碼里看,i函數(shù)里面最后調(diào)用了o(n), 而
o = require("E5CA98B6932643BF83ACF0B13A9F8236.js").md5
這么明顯的md5,我們來試試,在i函數(shù)里面加一個(gè)代碼
var t1Use = o("123456");
首先在Mac下我們算下結(jié)果
ffNewMac:Downloads fenfei$ md5 -s 123456 MD5 ("123456") = e10adc3949ba59abbe56e057f20f883e
然后再調(diào)試下這個(gè)工程,看看t1Use的值
確認(rèn)過眼神,就是MD5。
三、總結(jié)
搞個(gè)新玩意的時(shí)候,先找個(gè)軟柿子捏,不要一下就想放個(gè)大衛(wèi)星。
能反編譯,然后再動(dòng)態(tài)調(diào)試,那么曙光就在眼前。
這個(gè)樣本運(yùn)氣好,肉眼就可以看出是md5,復(fù)雜的js算法,可以考慮 PyExecJS、js2py or Node.js 來跑。
所有的故事都會(huì)有結(jié)局,只有生活跟你沒完。
TIP: 本文的目的只有一個(gè)就是學(xué)習(xí)更多的逆向技巧和思路,如果有人利用本文技術(shù)去進(jìn)行非法商業(yè)獲取利益帶來的法律責(zé)任都是操作者自己承擔(dān),和本文以及作者沒關(guān)系,本文涉及到的代碼項(xiàng)目可以去 奮飛的朋友們 知識(shí)星球自取,歡迎加入知識(shí)星球一起學(xué)習(xí)探討技術(shù)。有問題可以加我wx: fenfei331 討論下。
絡(luò)安全入門學(xué)習(xí)路線
其實(shí)入門網(wǎng)絡(luò)安全要學(xué)的東西不算多,也就是網(wǎng)絡(luò)基礎(chǔ)+操作系統(tǒng)+中間件+數(shù)據(jù)庫,四個(gè)流程下來就差不多了。
1.網(wǎng)絡(luò)安全法和了解電腦基礎(chǔ)
其中包括操作系統(tǒng)Windows基礎(chǔ)和Linux基礎(chǔ),標(biāo)記語言HTML基礎(chǔ)和代碼JS基礎(chǔ),以及網(wǎng)絡(luò)基礎(chǔ)、數(shù)據(jù)庫基礎(chǔ)和虛擬機(jī)使用等...
別被這些看上去很多的東西給嚇到了,其實(shí)都是很簡單的基礎(chǔ)知識(shí),同學(xué)們看完基本上都能掌握。計(jì)算機(jī)專業(yè)的同學(xué)都應(yīng)該接觸了解過,這部分可以直接略過。沒學(xué)過的同學(xué)也不要慌,可以去B站搜索相關(guān)視頻,你搜關(guān)鍵詞網(wǎng)絡(luò)安全工程師會(huì)出現(xiàn)很多相關(guān)的視頻教程,我粗略的看了一下,排名第一的視頻就講的很詳細(xì)。 當(dāng)然你也可以看下面這個(gè)視頻教程僅展示部分截圖:
學(xué)到http和https抓包后能讀懂它在說什么就行。
2.網(wǎng)絡(luò)基礎(chǔ)和編程語言
3.入手Web安全
web是對(duì)外開放的,自然成了的重點(diǎn)關(guān)照對(duì)象,有事沒事就來入侵一波,你說不管能行嗎! 想學(xué)好Web安全,咱首先得先弄清web是怎么搭建的,知道它的構(gòu)造才能精準(zhǔn)打擊。所以web前端和web后端的知識(shí)多少要了解點(diǎn),然后再學(xué)點(diǎn)python,起碼得看懂部分代碼吧。
最后網(wǎng)站開發(fā)知識(shí)多少也要了解點(diǎn),不過別緊張,只是學(xué)習(xí)基礎(chǔ)知識(shí)。
等你用幾周的時(shí)間學(xué)完這些,基本上算是具備了入門合格滲透工程師的資格,記得上述的重點(diǎn)要重點(diǎn)關(guān)注哦! 再就是,要正式進(jìn)入web安全領(lǐng)域,得學(xué)會(huì)web滲透,OWASP TOP 10等常見Web漏洞原理與利用方式需要掌握,像SQL注入/XSS跨站腳本攻擊/Webshell木馬編寫/命令執(zhí)行等。
這個(gè)過程并不枯燥,一邊打怪刷級(jí)一邊成長豈不美哉,每個(gè)攻擊手段都能讓你玩得不亦樂乎,而且總有更猥瑣的方法等著你去實(shí)踐。
學(xué)完web滲透還不算完,還得掌握相關(guān)系統(tǒng)層面漏洞,像ms17-010永恒之藍(lán)等各種微軟ms漏洞,所以要學(xué)習(xí)后滲透??赡艿竭@里大家已經(jīng)不知所云了,不過不要緊,等你學(xué)會(huì)了web滲透再來看會(huì)發(fā)現(xiàn)很簡單。
其實(shí)學(xué)會(huì)了這幾步,你就正式從新手小白晉升為入門學(xué)員了,真的不算難,你上你也行。
4.安全體系
不過我們這個(gè)水平也就算個(gè)滲透測試工程師,也就只能做個(gè)基礎(chǔ)的安全服務(wù),而這個(gè)領(lǐng)域還有很多業(yè)務(wù),像攻防演練、等保測評(píng)、風(fēng)險(xiǎn)評(píng)估等,我們的能力根本不夠看。
所以想要成為一名合格的網(wǎng)絡(luò)工程師,想要拿到安全公司的offer,還得再掌握更多的網(wǎng)絡(luò)安全知識(shí),能力再更上一層樓才行。即便以后進(jìn)入企業(yè),也需要學(xué)習(xí)很多新知識(shí),不充實(shí)自己的技能就會(huì)被淘汰。
從時(shí)代發(fā)展的角度看,網(wǎng)絡(luò)安全的知識(shí)是學(xué)不完的,而且以后要學(xué)的會(huì)更多,同學(xué)們要擺正心態(tài),既然選擇入門網(wǎng)絡(luò)安全,就不能僅僅只是入門程度而已,能力越強(qiáng)機(jī)會(huì)才越多。文章來源:http://www.zghlxwxcb.cn/news/detail-461962.html
尾言
因?yàn)槿腴T學(xué)習(xí)階段知識(shí)點(diǎn)比較雜,所以我講得比較籠統(tǒng),最后聯(lián)合CSDN整理了一套【282G】網(wǎng)絡(luò)安全從入門到精通資料包,需要的小伙伴可以點(diǎn)擊鏈接領(lǐng)取哦!文章來源地址http://www.zghlxwxcb.cn/news/detail-461962.html
到了這里,關(guān)于小程序逆向分析 (一)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!