如何在Android APK中植入Meterpreter
随着移动设备的快速发展,我们日常生活中的许多应用程序正在迁移到云部署,从JavaScript浏览器框架到支持移动设备的前端,例如Apple iOS上的Objective-C,或基于Android的Java。这也促进了手机应用的发展,与Apple不同,Android市场是一种开放的方式,允许任何人为商店做出贡献,而且占据了移动市场份额的大部分。
此外,还有各种第三方网站可以直接下载Android应用程序包文件(APK)。Metasploit允许测试人员使用meterpreter生成Android payload,并且可以安装到Android设备上。Android应用程序是用Java编写的,它编译成称为DEX的Dalvik可执行格式。应用程序的编译版本是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文件中找到代码的入口点 :包含此intent-filter的活动名称将是您要搜索的入口点。
6.修改“.smali”文件以包含启动Meterpreter阶段的代码。
7.将Meterpreter AndroidManifest.xml中的所有Meterpreter权限复制到修改后的APK的AndroidManifest.xml中。
8.重新组装成DEX压缩格式。
9.使用“jarsigner”为新创建的APK文件签名,然后将其加载到目标Android设备上。接下来我会用一个具体的例子来解释下上述步骤,我从apkmonk.com下载了一个名为Cowboy Shooting Game的游戏的APK文件。
生成恶意软件APK
然后,我使用“msfvenom”命令生成Metasploit APK,如下所示。
反汇编APK文件
然后使用“apktool” 对这两个文件进行反汇编,如下所示:
将恶意软件代码复制到游戏中
一个简单的方法是将目录更改为Metasploit APK目录,然后将“smali”目录下的所有文件复制到“com.CowboyShootingGames_2018-09-22”目录中。我从系统管理员那里学到的使用“tar”命令,你可以将tar的输出传输到第二个命令,该命令改变目录并“解压缩”生成的文件。
找到Activity EntryPoint
下面我们可以看到输入活动被列为“com.CowboyShootingGames.MainActivity”。我们知道这一点,因为XML中包含一个带有“android.intent.action.MAIN”的intent-filter。
修改Activity EntryPoint Smali文件
从上面可以看出,在这种情况下,文件将被命名为“MainActivity.smali”,并且完全限定类路径中的“com/CowboyShootingGames” directory as per the periods (“.”)目录中。
在“MainActivity.smali”文件中,我们正在寻找“onCreate()”方法。
我们需要在“onCreate()”方法调用的正下方添加一行“smali”代码来调用我们的Meterpreter。invoke-static {p0}, Lcom/metasploit/stage/Payload;->start(Landroid/content/Context;)V请注意,上面是一行代码。使用与“payload”目录中包含的所有“smali”文件中的所有路径引用都必须修改,并更改目录名称本身。这可以手工完成,但容易出错。继续没有任何混淆片刻,修改后的最终结果将像下面的截图一样。
随着移动设备的快速发展,我们日常生活中的许多应用程序正在迁移到云部署,从JavaScript浏览器框架到支持移动设备的前端,例如Apple iOS上的Objective-C,或基于Android的Java。这也促进了手机应用的发展,与Apple不同,Android市场是一种开放的方式,允许任何人为商店做出贡献,而且占据了移动市场份额的大部分。
此外,还有各种第三方网站可以直接下载Android应用程序包文件(APK)。Metasploit允许测试人员使用meterpreter生成Android payload,并且可以安装到Android设备上。Android应用程序是用Java编写的,它编译成称为DEX的Dalvik可执行格式。应用程序的编译版本是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文件。 www.wnhack.com
接下来的文章中,我们可以使用该工具进行反汇编,并在初始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文件中找到代码的入口点 :包含此intent-filter的活动名称将是您要搜索的入口点。
6.修改“.smali”文件以包含启动Meterpreter阶段的代码。
7.将Meterpreter AndroidManifest.xml中的所有Meterpreter权限复制到修改后的APK的AndroidManifest.xml中。
8.重新组装成DEX压缩格式。
9.使用“jarsigner”为新创建的APK文件签名,然后将其加载到目标Android设备上。接下来我会用一个具体的例子来解释下上述步骤,我从apkmonk.com下载了一个名为Cowboy Shooting Game的游戏的APK文件。
本文来自无奈人生安全网
生成恶意软件APK
然后,我使用“msfvenom”命令生成Metasploit APK,如下所示。
反汇编APK文件
然后使用“apktool” 对这两个文件进行反汇编,如下所示:
将恶意软件代码复制到游戏中
一个简单的方法是将目录更改为Metasploit APK目录,然后将“smali”目录下的所有文件复制到“com.CowboyShootingGames_2018-09-22”目录中。我从系统管理员那里学到的使用“tar”命令,你可以将tar的输出传输到第二个命令,该命令改变目录并“解压缩”生成的文件。 www.wnhack.com
找到Activity EntryPoint
下面我们可以看到输入活动被列为“com.CowboyShootingGames.MainActivity”。我们知道这一点,因为XML中包含一个带有“android.intent.action.MAIN”的intent-filter。
修改Activity EntryPoint Smali文件
从上面可以看出,在这种情况下,文件将被命名为“MainActivity.smali”,并且完全限定类路径中的“com/CowboyShootingGames” directory as per the periods (“.”)目录中。
copyright 无奈人生
在“MainActivity.smali”文件中,我们正在寻找“onCreate()”方法。
我们需要在“onCreate()”方法调用的正下方添加一行“smali”代码来调用我们的Meterpreter。invoke-static {p0}, Lcom/metasploit/stage/Payload;->start(Landroid/content/Context;)V请注意,上面是一行代码。使用与“payload”目录中包含的所有“smali”文件中的所有路径引用都必须修改,并更改目录名称本身。这可以手工完成,但容易出错。继续没有任何混淆片刻,修改后的最终结果将像下面的截图一样。
www.wnhack.com