BENTENT SETUP

在黑帽2017年,Khalil Mateusz进行了一次阿森纳谈话,他谈到了他的新项目BadIntent,这是“Burp与Android IPC /消息系统核心之间缺失的联系”。

这个描述来自黑帽官方网站:“BadIntent由两部分组成,一个是在Android上运行的Xposed模块和一个Burp插件。基于这种相互作用,可以使用Burp的通用工作流程以及所有涉及的工具和扩展,因为提供了截取和中继器功能。BadIntent深入到Android系统中,在Parcels中执行各种方法重定向,并添加额外的服务来提供所描述的功能。最值得注意的是,BadIntent在系统范围内工作,并不限于个人用户应用程序。“

Android的进程间通信机制是Binder框架。应用程序及其内部组件(如服务和活动)能够通过活页夹相互交互。每个交互都由一个Binder事务处理。每个交易都包含一个请求和一个回复,并且数据在一个包裹中传输。BadIntent钩住并持续所有的写入操作。延迟执行存储在BadIntents包裹池中。所有交易都被挂钩,包裹被送到Burp进行检查。之后更新的包裹被交给实际的交易例程。

这篇文章详细介绍了我设置这个环境的方法。在我的设置中,我使用了一个Genymotion模拟器(Nexus 5x,Android 6.0,API level 23),一个托管Burp Suite Professional v1.7.29的虚拟机(可以是Windows或Linux)(尽管Burp Suite Free Edition可以) Android SDK平台工具集,可以从Android开发者网站下载。这里引用的所有链接都可以在文章的最后找到。

Genymotion仿真器根植于默认情况下,包含一个“su”二进制文件,允许您执行根操作,但为了给予特定的应用程序root访问权限,我需要利用像“SuperSu”这样的应用程序。从应用商店安装SuperSu不起作用,因为你可能会得到设备上已经有一个su二进制文件的错误。所以,经过一些网站的挖掘,我发现了一个zip / flashable格式的SuperSu应用程序的旧版本。Genymotion使这些文件闪烁就像将zip拖到模拟器并释放一样简单。这在使用Genymotion Android工具(如下图)时有效。

现在我们可以安装Xposed Framework和Xposed Installer应用程序。我第一次尝试这个,我从Play商店安装了最新版本的Xposed Framework和Installer。这给了我关于API级别和体系结构的错误。请记住,Genymotion模拟器是x86,但支持armv7应用程序。因此,如果您位于Android设备的根shell中,则可以运行命令“getprop”,查看“ro.product.cpu.abi”的列表,并将x86作为值。以下是我在Xposed收到的错误:

BadIntent GitHub页面提到他在Android 6.0,api level 23和Xposed框架v87的Genymotion模拟器上测试了这个。经过一番搜索,我能够找到一个网站,为不同的体系结构托管Xposed框架,安装程序,卸载程序和apk的多个版本。抓住x86 v87压缩文件并继续将其闪存到与SuperSu软件包相同的虚拟设备上。这将需要在Genymotion上重启几次,关机再重新开机。现在您可以在应用程序列表中看到Xposed安装程序。一旦打开,状态应该表明Xposed框架版本87是活动的。见下图:

Xposed有自己的模块库,所以如果你点击左上角的菜单按钮,你可以去下载,并搜索BadIntent模块。一旦结果返回,您应该只有一个选项来下载/安装。

模块下载后,请确保在模块菜单中选中复选框。见下图:

接下来,从设备上的应用程序列表中打开BadIntent模块。有几个选项可以设置。从上往下,包过滤器正则表达式可以是你想拦截的包。对于这个例子,我选择了com.workday.workdroidapp。

接口过滤器的正则表达式默认设置为“。*”,这是很好的。打开捕捉日志功能,以便我们可以看到正在打印的内容。我通常将Hook系统应用程序关闭,因为如果系统应用程序在设备启动时被挂钩,则会导致引导循环等问题。目标IP是Android设备的当前IP。这通常设置为WIFI-IP。这是需要的,因为Burp需要确定交易细节在哪里。下一个选项是“使用系统代理”。我打开了这个,因为我在系统设置中设置了WIFI连接的代理。如果没有,您可以使用下面的代理主机和代理端口选项指定您的Burp IP和端口。非常简单

现在到BadIntent Burp扩展。当这个谈话被提出时,扩展被提交给了portwigger,但是到了2017年12月这篇文章中,扩展还没有被发布到BAPP商店。幸运的是,Mateusz将BadIntent Burp扩展java文件和pom.xml添加到回购,所以我们可以克隆它们并自己构建它。一旦完成了repo的git克隆,就可以使用Eclipse Oxygen(当前的Eclipse Java IDE)来加载项目。有了这个Eclipse的更新版本,Maven插件是内置的,并且需要进行编译。在BadIntentBurp文件夹中,您将看到一个pom.xml文件,这是一个与Apache Maven一起使用的构建配置文件。方便的是,我们可以将这些java文件构建并打包到一个包含依赖关系的jar文件中。

在Eclipse中,选择文件 - >从文件系统打开项目,然后单击目录,找到BadIntentBurp文件夹并选择它。选中要导入的文件夹的框,然后单击完成。看下面的图片。我的BadIntentBurp文件夹已经被导入,所以对我来说是灰色的。由于您之前没有导入过,因此您的电话号码不会被使用。

一旦项目加载完成,如果一切顺利的话,你应该能够右键点击项目的根文件夹,选择Maven然后更新项目。这应该建立项目模型。然后我们去Run - > Run As - > Maven Build。这将下载所有的依赖关系,如果它们不是已经存在的话,那么将这个项目构建成一个包含依赖关系的jar文件。将会有一个没有依赖的辅助jar文件,但是我们不会使用那个。见下图:

接下来,我们可以将这个badintent burp与依赖关系jar并加载到Burp Suite中。在扩展器选项卡下,单击扩展选项卡,然后单击添加手动添加扩展。在“扩展详细信息”中,确保选择了Java,然后选择刚刚构建的jar文件。其余的选项可以保持默认,因为我们想使用UI来查看输出和错误。一旦添加BadIntent扩展名,确保复选框被选中。见下图:

我假设你之前使用过Burp Suite,但是请继续设置你的代理。在选项选项卡中,通过将单选按钮设置为“特定地址”并选择当前IP来编辑您的监听器。见下图:

如果您还没有这样做,则需要将您的Burp证书导出到Android设备上进行安装。在相同的选项标签下,选择导入/导出CA证书 - >以DER格式导出证书。然后重命名为.cer。使用Android SDK平台工具中的adb工具,执行“adb push ”将证书推送到设备上的sdcard目录。然后,在设置下的Genymotion仿真器中,选择安全 - >从SD卡安装。选择burp.cer并完成此过程。现在,您有必要的证书来正确拦截Burp Suite中此设备的所有流量,除非应用程序使用证书锁定。我不会引导您使用adb,因为如果您正在查看Android设备上的Binder攻击,您应该知道这一点。

请参阅Mateusz黑帽阿森纳谈话的幻灯片和文档,并在这个项目上做出很大的贡献。这将有助于测试人员和开发人员知道这个攻击面以及不加密进程间通信中使用的数据的风​​险。

https://github.com/mateuszk87/BadIntent

https://download.chainfire.eu/696/SuperSU

https://www.androidsage.com/2016/04/06/how-to-install-xposed-framework- on-marshmallow-update-with-xposed-v81 /

https://www.eclipse.org/

https://github.com/mateuszk87/BadIntent/wiki/Showcases

https://www.genymotion.com/

https://developer.android.com/studio/releases/platform-tools.html


转载请注明出处:https://www.freearoot.com/index.php/bentent-setup.html

文章转载来源:http://blog.obscuritylabs.com/badintent-setup/amp/