干货 | ClickOnce的攻击技巧和防御措施

干货 | ClickOnce的攻击技巧和防御措施
最新回答
百年二货

2023-05-01 07:42:04

最近Casey Smith@subTee在《Mimikatz Delivery via ClickOnce with URL Parameters》中介绍了如何在ClickOnce程序中传入URL参数,实现执行mimikatz的技巧,并分享了一个POC。对此我很感兴趣,于是做了进一步的学习和研究。本文将会记录学习心得,介绍ClickOnce的使用方法,总结基于ClickOnce的攻击技巧和防御措施。

ClickOnce是一种部署技术,使用该技术可创建自行更新的基于Windows的应用程序,这些应用程序可以通过最低程度的用户交互来安装和运行。使用ClickOnce主要解决了程序部署中的几个问题:更新应用程序的困难,对用户的计算机的影响,以及安全权限的问题。

使用ClickOnce的优点是,更新应用程序时,只有更改过的应用程序部分才会被下载并重新安装,无需重新安装整个应用程序,这样减少了用户的工作量。同时,每个应用程序都是独立的,不会干扰其他应用程序,也避免了版本冲突。此外,ClickOnce部署允许非管理用户安装应用程序,并仅授予应用程序所需要的那些代码访问安全权限,这样提高了安全性。

接下来,我将详细介绍如何开发ClickOnce程序并在网站上发布。首先,需要在Windows Server 2008 R2上安装Web服务器(IIS),并添加虚拟目录,启用目录浏览功能。然后,开发ClickOnce程序,设置发布文件夹位置,选择立即发布。将生成的文件上传至Web目录,用户访问后将触发安装过程。

基于ClickOnce的攻击技巧主要包括钓鱼攻击,利用ClickOnce自动更新功能替换payload,将url参数作为payload执行,以及结合网站的重定向功能触发不同的payload。钓鱼攻击中,利用用户在更新程序时需要管理员权限的特性,触发payload并获得管理员权限。自动更新功能可以被利用来替换payload,实现payload的自动替换。将url参数作为payload执行,可以通过设置Visual Studio的引用,添加允许向应用程序传递URL参数的选项,然后在代码中解析url参数并执行payload。结合网站的重定向功能,可以触发不同的payload。

钓鱼攻击的缺陷是,不同系统.net版本不同,因此钓鱼利用场景受限。系统在执行ClickOnce程序的过程会检查数字签名验证发布者,否则会提示安装包不可信。

对于防御措施,首先需要对ClickOnce程序提高警惕,识别真伪。禁用特殊后缀名,如.application,可以避免一些钓鱼攻击。此外,可以通过检查注册表和文件系统痕迹来检测ClickOnce程序的安装。

总的来说,通过ClickOnce进行钓鱼的欺骗性较高,利用方法灵活,但只要用户提高警惕,验证数字证书,只运行受信任的程序,就可以防范此类攻击。未知攻焉知防,希望本文可以帮助大家更好地了解这个技术,保护自己的安全。