译文来源:https://mrd0x.com/phishing-with-chromium-application-mode/ 。受个人知识所限及偏见影响,部分内容可能会存在过度曲解误解现象。请各位师傅们包含并提出建议,不胜感激。
在本文中,我将向大家说明如何借助于 Chromium 的应用模式来简单地创建一个逼真的桌面钓鱼程序。
Chromium 应用模式
基于 Chromium 的浏览器(如 Google Chrome 以及 Microsoft Edge)都支持在命令行中使用 --app
参数。这一参数将会让浏览器以应用模式加载目标网站并执行以下操作:
- 使目标站点在一个单独的浏览器窗口中进行加载
- 启动的窗口看上去像是一个桌面客户端应用,而不是像普通的浏览器那样
- 在 Windows 任务栏中显示的是站点的 favicon 而不是浏览器本身的图标。
下面的命令中展示了如何以应用模式启动 Chrome 或 Microsoft Edge 浏览器并且访问 mrd0x.com
站点:
# Chrome
C:\Program Files\Google\Chrome\Application>chrome.exe --app=https://mrd0x.com
# Microsoft Edge
c:\Program Files (x86)\Microsoft\Edge\Application>msedge.exe --app=https://mrd0x.com
通过上述命令创建的窗口将会像下面这样:
我们可以发现在 Windows 任务栏中的窗口图标变成了网站的 favicon:
插入一个伪造的地址栏
由于应用模式中隐藏了地址栏,那接下来就完全看我们要如何去创建一个假的地址栏了。在这里我用到了我自己 BITB 库中的地址栏 HTML/CSS 来将我的网站地址显示在窗口顶部(为了避免现实中的滥用,这个仓库是经过签名的)。
# 这里您可以选择用一个动态的网站或者是本地的文件 (C:\path\to\file.html)
# This example uses a local HTML file "index.html"
C:\Program Files\Google\Chrome\Application>chrome.exe --app=C:\Users\testUser\index.html
在 Windows 任务栏中将会显示网站的图标,但由于我把我网站的图标修改成了微软的logo,现在的任务栏看上去就会是下面这样:
外部/内部钓鱼
尽管这项技术看上去似乎更加倾向于在内部钓鱼中进行使用,但是您仍然可以将其应用到外部钓鱼场景中。您可以将这些伪造的应用作为文件单独向受害者进行发送投递。
假设您已经在钓鱼页面的顶部设置好了伪造的地址栏,那您只需要设置 --app
参数指向您的钓鱼网站即可:
下面就是程序加载时的样子:
伪造终端软件
设想这样一个场景,其中的用户将会在机器中运行一些诸如 VPN 一类的软件。那么您就可以通过这个方法创建一个模仿该软件外观的网站。
这里就是一个伪装成 Microsoft Teams 软件的例子:
下面展示了伪装成 Microsoft 快速登录的另一个例子。普通用户几乎不太可能会对其中部分微不足道的差异产生警惕。
如果您能够掌握一些基本的 HTML/CSS 技巧的话,您还可以将软件伪造成 Windows 快速登录、VPN、备份工具,甚至是任何软件。
Mac OS & Linux
Chromium 应用模式在其他操作系统中也可以使用。下面命令展示的就是如何在 Mac OS 中使用应用模式:
"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" --app=https://mrd0x.com
执行结果当然是和预期一致。只不过在这里我实在是懒得把地址栏上的字体替换成 Mac OS中的系统字体了,但在实际操作中,我希望您能够考虑到这一点。
JavaScript – 控制窗口
通过 --app
参数指定的钓鱼网站,可以在窗口加载过程中执行某些操作。
window.close()
— 关闭窗口。当用户执行完操作后使用该方法关闭窗口。
window.resizeTo(x,y)
— 调整窗口大小。使用该方法修改窗口大小或者是参照要伪装的软件外观进行相应的模仿调整。
windows.moveTo(x,y)
— 窗口定位。使用该方法用来控制窗口在屏幕中的具体位置。
相关复现
尽管原作者在文章开头有提到基于 Chromium 内核的浏览器可以借助使用 -app
参数来通过应用模式打开目标网站应用。但在复现过程中,目前在我个人有一定几率会考虑使用的几款基于 Chromium 内核的浏览器当中,我发现除了 Chrome、Chromium 和 Edge 外,像是360极速浏览器(基于 Chromium95)、360浏览器(基于 Chromium86)、QQ浏览器(基于 Chromium94)均不支持通过应用模式访问目标 Web 应用。要是各位师傅感兴趣的话,可以试一下自己平时接触到的基于 Chromium 内核的浏览器是否支持应用模式。那么这样一来,复现中使用的浏览器也只能与原作者文章中的保持一致了。
首先是查看通过应用模式来访问对应网站的情况,这里就以 sec-in 为例:
按下 Win + R 键,打开运行窗口,在窗口中输入“ chrome.exe --app=https://www.sec-in.com
”或者“ msedge.exe --app=https://www.sec-in.com
”,按下回车键或点击“确定”按钮执行。
这样 Chrome 或 Edge 就会以应用模式,单独开启一个与原浏览器分离的一个窗口用来加载 sec-in 的网站,且在任务栏中的图标为 sec-in 网站的图标。
在应用模式下,窗口中将不会显示访问目标 Web 应用的 URL 信息(原文中描述的绘制具有迷惑性的地址栏或是借助于浏览器的应用模式伪造客户端软件也正是因为这一原因)。且诸如查看页面源代码,开发者工具等功能仍保留在正常浏览器模式的窗口下。
由于本人一时找不到近似乎微软自家应用的产品,这里我便仿照原文以我个人电脑中安装的基于 Web 应用的 Office 为例。
在用户登录以及创建用户,甚至是在使用上,如果受害者不够细心的话,几乎就不太可能意识到这是两种完全不一样的应用(这里我首先利用 SingleFile 这一浏览器插件将部分页面保存为单一页面文件,随后再从网上查找和官方应用相似的 logo 将原先的四色田字 logo 替换掉)。
下图中左侧为官方应用,右侧为利用应用模式打开的应用窗口:
下图为未对 logo 进行替换的原貌:
可以说只要有一定的前端功力,借助这一应用模式伪造出高度仿真的应用是非常简单的。原文作者在其 Github 仓库中(BITB repo)还针对系统深色浅色模式分别对 URL 地址栏等进行了伪造绘制。感兴趣的师傅们可以尝试将其进一步优化一下。
原文始发于SEC-IN(1ucas):利用 Chromium 的应用模式进行钓鱼