Metasploit实现Android Payload(apk钓鱼)初识
准备
Metasploit项目允许测试人员使用功能非常强大的meterpreter命令生成Android Payload。通常,有趣的事情是将合法(有趣)的应用程序与Meterpreter相结合,并将该应用程序安装到Android设备上。
Android应用程序是用Java编写的,它编译成称为DEX的可执行格式。应用程序的编译版本是DEX字节码文件的ZIP文件。
Smali / baksmali是Android DEX字节码的汇编程序/反汇编程序。一个名为“ apktool ” 的Android工具可以将压缩的DEX(APK文件)反汇编成smali文件,并将smali文件重新组合回DEX,然后重新组合为压缩的APK格式。在这种情况下,我们可以使用该工具进行反汇编,并在初始Android Activity的smali代码中添加一个额外的 静态入口点,以启动我们的Meterpreter。
步骤
总的来说,将Meterpreter嵌入现有APK文件的步骤如下:
- 1.在一些站点上查找现有的有趣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” 对这两个文件进行反汇编,如下所示:


0x04 将恶意软件代码copy到游戏中

0x05 找到Activity EntryPoint
下面我们可以看到输入活动被列为“com.CowboyShootingGames.MainActivity”。我们知道这一点,因为XML中包含一个带有“android.intent.action.MAIN”的intent-filter。

0x06 修改Activity EntryPoint Smali文件
从上面可以看出,在这种情况下,文件将被命名为“MainActivity.smali”在/CowboyShootingGames ”目录中。

在“MainActivity.smali”文件中,寻找“onCreate()”方法。

我们需要在“onCreate()”方法调用的正下方添加一行“smali”代码来调用我们的Meterpreter payload。
invoke-static {p0}, Lcom/metasploit/stage/Payload;->start(Landroid/content/Context;)V
请注意,以上是一行代码。可以使用与“com/metasploit/stage/Payload”不同的路径名来进行模糊处理,但是如果这样做,则必须修改payload中包含的所有“smali”文件中对路径的所有引用。
在没有任何混淆的情况下继续进行,修改后的最终结果将如下面的屏幕截图所示。

0x07 向修改的APK“AndroidManifest.xml”文件添加权限
下一步,使用“grep”搜索Metasploit“AndroidManfest.xml”文件中包含字符串“uses-permission”和“uses-feature”到修改后的APK的AndroidManiest.xml文件中的所有行。

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

最终可能会获得一些重复的权限。可以删除它们,无关紧要。
0x08 构建新的APK包文件
现在 再次使用“ apktool” 打包生成的APK包文件。最终结果将写入APK目录本身的“dist”目录中。

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

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


此时,“ final.apk ”文件已准备好使用安装到Android系统上。我们用adb安装到模拟器上

这是一个基于x86的模拟器,它使用VirtualBox进行非常高性能的Android模拟。

最后一步当然是尝试新感染的游戏。

点一下游戏启动,随便点一点,我们就在KALI系统上获得了一个Meterpreter session,感觉非常好用。


浙公网安备 33010602011771号