• 移动端
    访问手机端
    官微
    访问官微

    搜索
    取消
    温馨提示:
    敬爱的用户,您的浏览器版本过低,会导致页面浏览异常,建议您升级浏览器版本或更换其他浏览器打开。

    在Android APK中嵌入Meterpreter

    来源:嘶吼RoarTalk 2018-11-02 09:25:41 Android APK 金融安全
         来源:嘶吼RoarTalk     2018-11-02 09:25:41

    核心提示当今世界,移动电话无处不在。我们日常生活中的许多应用程序正在迁移到云部署,从而使前端技术重新回到瘦客户端的时代。我们的瘦客户端可以是任何东西,从JavaScript浏览器框架到支持移动设备的前端。

      当今世界,移动电话无处不在。我们日常生活中的许多应用程序正在迁移到云部署,从而使前端技术重新回到瘦客户端的时代。我们的瘦客户端可以是任何东西,从JavaScript浏览器框架到支持移动设备的前端,例如Apple iOS上的Objective-C,或基于Android的Java。

      Apple继续维持范例,审查所有进入iOS应用程序商店的应用程序。即便如此,仍然存在恶意软件蔓延的情况。与Apple不同,Android市场是一种开放的方式,允许任何人为游戏商店做出贡献,而且占据了移动市场份额的大部分江山。此外,还有各种第三方网站可以直接下载Android应用程序包文件(APK)。

      Metasploit项目允许测试人员使用功能非常强大的meterpreter命令生成Android有效载荷,该meterpreter可以加载到Android设备上。通常,通过Android调试器“adb”侧面加载APK。从测试者的角度来看,有趣的事情是将合法(可能有趣)的应用程序与Meterpreter相结合,并将该应用程序侧加载到Android设备上。当然,您可能会考虑将该设备作为礼物或类似的社会工程方法发送给“朋友”。

      Android应用程序是用Java编写的,它编译成Dalvik可执行格式DEX。应用程序的编译版本是DEX字节码文件的ZIP文件。 Android上的Dalvik虚拟机最近被Android RunTime(ART)取代,后者执行额外的优化并将DEX字节码编译为本机汇编代码。Dalvik VM主要执行大部分字节码的即时(JIT)解释。ART比Dalvik虚拟机具有更高的性能,Dalvik虚拟机仅优化应用程序频繁执行的字节码部分。

      Smali /baksmali是Android DEX字节码的汇编程序/反汇编程序。一个名为apktool的Android工具可以将压缩的DEX(APK文件)反汇编成smali文件,并将smali文件重新组合回DEX,然后重新组合为压缩的APK格式。我们可以使用此工具来反汇编和修改现有的APK文件。在此情形之下,我们可以使用该工具进行反汇编,并在初始Android Activity的smali代码中添加一个额外的静态入口点,以启动我们的Meterpreter。

      总的来说,将Meterpreter嵌入现有APK文件的步骤如下:

      1.在apkmonk.com或类似的镜像站点上找到有吸引力的APK应用程序。

      2.生成Metasploit APK文件。

      3.使用apktool反汇编Metasploit APK文件以及打算修改的APK文件。

      4.将所有Meterpreter smali代码复制到新的APK smali目录。

      5.通过查找下面的intent-filter,在APK应用程序的AndroidManifest.xml文件中找到代码的入口点:

    在Android APK中嵌入Meterpreter

      6.包含此intent-filter的行为名称就是要搜索的入口点。

      7.修改活动.smali文件以包含启动Meterpreter阶段。

      8.将Meterpreter AndroidManifest.xml中的所有Meterpreter权限复制到修改后的APK的AndroidManifest.xml中。

      9.重新组成DEX压缩格式。

      10.使用jarsigner为新创建的APK文件签名,然后将其加载到目标Android设备上。

      用一个具体的例子来理解上述步骤要容易得多。为了说明这一点,我从apkmonk.com下载了一个名为Cowboy Shooting Game的APK文件。

    在Android APK中嵌入Meterpreter

      生成恶意软件APK

      使用msfvenom命令生成Metasploit APK,如下所示。

    在Android APK中嵌入Meterpreter

      反汇编APK文件

      然后使用apktool对这两个文件进行反汇编(baksmaling !!!),如下所示:

    在Android APK中嵌入Meterpreter

    在Android APK中嵌入Meterpreter

      将恶意软件代码复制到牛仔工具游戏中

      一个简单的方法是将目录更改为Metasploit APK目录,然后将smali目录下的所有文件复制到“com.CowboyShootingGames_2018-09-22”目录中。我从系统管理员那里学到的使用“tar”命令备份整个目录树的一个老技巧很方便,可以将tar的输出传输到第二个命令,该命令改变目录并解压缩生成的文件。

    在Android APK中嵌入Meterpreter

      找到Activity EntryPoint

      可以看到entry activity被列为“com.CowboyShootingGames.MainActivity”。我们知道这一点,因为XML中包含一个带有“android.intent.action.MAIN”的intent-filter。

    在Android APK中嵌入Meterpreter

      修改Activity EntryPoint Smali文件

      从上面可以看出,文件将被命名为MainActivity.smali,并且将根据完全限定类路径中的句点(“.”)位于com / CowboyShootingGames目录中。

    在Android APK中嵌入Meterpreter

      在MainActivity.smali文件中,我们正在寻找onCreate()方法。

    在Android APK中嵌入Meterpreter

      我们需要在onCreate()方法调用的正下方添加一行smali代码来调用Meterpreter。

    在Android APK中嵌入Meterpreter

      请注意,以上是一行代码。可以使用与“com/metasploit/stage/Payload”不同的路径名来进行模糊处理,但是如果这样做,则必须修改“Payload”中包含的所有“smali”文件中对路径的所有引用,并更改目录名称本身。这可以手动完成,但容易出错。在没有任何混淆的情况下可以继续进行,修改后的最终结果如下面的屏幕截图所示。

    在Android APK中嵌入Meterpreter

      为修改的APK“AndroidManifest.xml”文件添加权限

      下一步,使用grep搜索Metasploit AndroidManfest.xml文件中所有包含字符串uses-permission和uses-feature的行到修改后的APK的AndroidManiest.xml文件中。

    在Android APK中嵌入Meterpreter

      需要使用编辑器在新的AndroidManifest.xml文件中的适当位置插入权限。搜索现有的“use-permission”行作为插入文本位置的指导。

    在Android APK中嵌入Meterpreter

      最终可能会获得一些重复的权限。可以选择删除它们,但确实无关紧要。

      构建新的APK包文件

      现在再次使用apktool重新组合生成APK包文件。将最终结果写入APK目录的dist目录中。

    在Android APK中嵌入Meterpreter

      重新签名生成的包文件

      对于签名来说,一种简单的方法是使用安装Android studio时构建的Android调试密钥库。调试密钥库包含在UN * X系统上主目录中的“.android”隐藏目录中。

    在Android APK中嵌入Meterpreter

      另一种方法是使用Java“keytool”生成自己的自签名密钥库,并使用jarsigner工具对其进行签名,如下面的屏幕截图所示。

    在Android APK中嵌入Meterpreter

    在Android APK中嵌入Meterpreter

      此时,final.apk文件已准备好使用adb加载到Android系统上。

    在Android APK中嵌入Meterpreter

      在此特定情况之下,运行GenyMotion的副本,这是一个基于x86的模拟器,它使用VirtualBox可以进行非常高性能的Android模拟。可能会遇到的挑战之一是x86仿真本身不支持ARM处理器。为了应对这一挑战,可以在线获得一些ARM翻译库。搜索“Genymotion-ARM-Translation_v1.1.zip”,然后将ZIP文件拖到正在运行的GenyMotion Android系统上。不幸的是,这不是100%可靠,并且可能会导致一些应用程序崩溃。

      确保ARM APK文件在设备上运行的一种方法是使用硬件设备本身。我发现Nexus 6系列设备非常适合使用,因为“rooting”套件相当可靠,并且通过USB电缆连接进行测试并不是太麻烦。

    在Android APK中嵌入Meterpreter

      最后一步当然是尝试新感染的牛仔射击游戏。我们很快发现,在启动游戏的那一刻,我们在KALI系统上获得了一个Meterpreter Shell,感觉非常好。

    在Android APK中嵌入Meterpreter

    在Android APK中嵌入Meterpreter

      我真的不认为我会花时间玩这个游戏,坦率的说这只是在apkmonk.com的随机选择。

      如此多的复杂步骤……每一步都可能出错……

      因此,在执行了上述所有必要步骤后,我立即感到沮丧。有这么多步骤,错误的可能性非常高。可能还有其他工具可供使用,但我决定使用快速的Python脚本来自动执行此过程。我称它为android_embedit.py,我现在会警告你,这绝对是一项快速而恶劣的努力,无需花费太多精力来加强逻辑,就可以完成工作。

    在Android APK中嵌入Meterpreter

      android_embedit.py的想法是,提供Metasploit生成的APK文件、要修改的原始APK和密钥库,它将以自动方式执行所有步骤并生成结果。

      以下是运行该工具的示例。所有临时文件和输出都将存储在“〜/ .ae”目录中。

    在Android APK中嵌入Meterpreter

      该工具还将删除metasploit目录名,并自动使用随机字符串目录名对其进行混淆处理。可以在下面的屏幕截图中看到此结果,其中列出了APK “smali/com”目录的内容。名为dbarpubw的目录实际上包含Metasploit stager代码。

    在Android APK中嵌入Meterpreter

      移动应用及其相关的应用程序编程接口有很多乐趣。  

    责任编辑:韩希宇

    免责声明:

    中国电子银行网发布的专栏、投稿以及征文相关文章,其文字、图片、视频均来源于作者投稿或转载自相关作品方;如涉及未经许可使用作品的问题,请您优先联系我们(联系邮箱:cebnet@cfca.com.cn,电话:400-880-9888),我们会第一时间核实,谢谢配合。

    为你推荐

    猜你喜欢

    收藏成功

    确定