起因


移动无处不在。我们日常生活中的许多应用程序正在迁移到云部署,从而使前端技术重新回到轻量客户端的时代。当钟摆再次摆动时,我们的轻量客户端可以是任何形式,从JavaScript浏览器框架到支持移动设备的前端,例如Apple iOS上的Objective-C,或基于Android的Java。
我们来把眼光放到恶意软件,我们在Apple的5人团队继续维持的安全范例,试图审查进入iOS应用程序商店的所有应用程序。尽管这是一项高消耗的工作,但仍然存在恶意软件通过审核的情况。与Apple不同,Android市场是一种开放的方式,允许任何人为游戏商店做出贡献,而且占据了移动市场份额的大部分。此外,还有各种第三方网站可以直接下载Android应用程序包文件(APK)。

准备

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

Android应用程序是用Java编写的,它编译成称为DEX的可执行格式。应用程序的编译版本是DEX字节码文件的ZIP文件。Android上的虚拟机最近被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文件中找到代码的入口点 :
    <action android:name="android.intent.action.MAIN"/>
    包含此intent-filter的活动名称将是您要搜索的入口点。

  • 6.修改活动“.smali”文件以包含启动Meterpreter阶段的行。

  • 7.将Meterpreter AndroidManifest.xml中的所有Meterpreter权限复制到修改后的APK的- AndroidManifest.xml中。
  • 8.重新组装成DEX压缩格式生成APK。
  • 9.使用“jarsigner”为新创建的APK文件签名,然后将其加载到目标Android设备上。
    ## 例子
    ### 0x01下载APK
    用一个具体的例子会使得上述步骤要容易理解的得多。为了说明这一点,我从apkmonk.com下载了一个名为Cowboy Shooting Game的游戏的APK文件。

0x02 生成恶意软件APK

然后,我使用“msfvenom”命令生成Metasploit APK,如下所示。

0x03反汇编APK文件

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

点击收藏 | 1 关注 | 1
登录 后跟帖