Android APK中植入msf的meterpreter后门实践

原文:https://www.blackhillsinfosec.com/embedding-meterpreter-in-android-apk/
看完简单翻译一下,利人利己吧。

起因


移动无处不在。我们日常生活中的许多应用程序正在迁移到云部署,从而使前端技术重新回到轻量客户端的时代。当钟摆再次摆动时,我们的轻量客户端可以是任何形式,从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文件。

image.png

0x02 生成恶意软件APK

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

image.png

0x03反汇编APK文件

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

image.png
image.png

0x04 将恶意软件代码复制到APK游戏中

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

image.png

0x05 找到Activity EntryPoint

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

image.png

0x06 修改Activity EntryPoint Smali文件

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

image.png

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

image.png

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

invoke-static {p0}, Lcom/metasploit/stage/Payload;->start(Landroid/content/Context;)V

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

image.png

0x07 向修改的APK“AndroidManifest.xml”文件添加权限

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

image.png

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

image.png

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

0x08 构建新的APK包文件

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

image.png

0x09 重新签名生成的包文件

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

image.png

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

image.png
image.png

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

image.png

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

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

image.png

最后一步当然是尝试我们新感染的游戏。我们很快发现,在我们推出游戏的那一刻,我们在KALI系统上获得了一个Meterpreter session,感觉非常好用。

image.png
image.png

我真的不认为我会花时间学习这个游戏,坦率地说只是从“apkmonk.com”的随便下了一个游戏。

如此多的复杂步骤,这么多都可能出错......

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

image.png

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

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

image.png

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

image.png

对于移动应用程序及其相关的应用程序编程接口来说,有很多持续的乐趣。作为一个安全测试人员熟悉这些平台是一个好主意,因为不久之后你肯定会遇到在移动领域进行测试的需要。

Keep calm, and hack all the mobile things. ~Joff

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,377评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,390评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,967评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,344评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,441评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,492评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,497评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,274评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,732评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,008评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,184评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,837评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,520评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,156评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,407评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,056评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,074评论 2 352

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,963评论 25 707
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 12,709评论 2 59
  • layout: wikititle: Android逆向分析笔记categories: Reverse_Engin...
    超哥__阅读 10,694评论 1 17
  • apk是安卓工程打包的最终形式,将apk安装到手机或者模拟器上就可以使用APP。反编译apk则是将该安卓工程的源码...
    隋胖胖LoveFat阅读 66,611评论 6 56
  • 《父亲》 文/白传英 父亲像华佗 总想着游走于天下 在母亲的牵挂下 还是去了天涯 后来父亲想学文化 可惜孔...
    白清风阅读 131评论 0 0