MASTG-TECH-0022: 信息收集 - 网络通信

您可能遇到的大多数应用程序都会连接到远程端点。 甚至在您执行任何动态分析(例如,流量捕获和分析)之前,您都可以通过枚举应用程序应与之通信的域名来获得一些初始输入或入口点。

通常,这些域名将作为字符串存在于应用程序的二进制文件中。 一种方法是使用自动化工具,例如 Apkleaks MobSF

或者,您可以使用正则表达式grep搜索域名。 为此,您可以直接定位应用程序二进制文件,也可以对其进行逆向工程并定位反汇编或反编译的代码。 后一种选择具有明显的优势:它可以为您提供上下文,因为您将能够看到每个域在哪个上下文中使用(例如,类和方法)。

从这里开始,您可以使用此信息来获得更多见解,这些见解可能在您以后的分析中有用,例如,您可以将域与固定的证书或网络安全配置文件匹配,或对域名执行进一步的侦察,以了解有关目标环境的更多信息。 在评估应用程序时,检查网络安全配置文件非常重要,因为通常(不太安全)调试配置可能会错误地推送到最终版本中。

安全连接的实施和验证可能是一个复杂的过程,并且有许多方面需要考虑。 例如,许多应用程序使用除HTTP以外的其他协议,例如XMPP或纯TCP数据包,或者执行证书固定以试图阻止MITM攻击,但不幸的是,其实现中存在严重的逻辑错误或固有的错误的安全网络配置。

请记住,在大多数情况下,仅使用静态分析是不够的,甚至与动态替代方法相比,效率可能会非常低,动态替代方法将获得更可靠的结果(例如,使用拦截代理)。 在本节中,我们仅稍微涉及了表面,请参考 基本网络监控/嗅探,并检查“Android网络通信”一章中的测试用例。