如何在IE/Edge浏览器中巧妙地传输HTA文件?
当在为客户开展渗透测试检测时,和现实的攻击者一样我们经常会使用带有攻击性质的payload执行命令。随着杀毒软件对攻击载荷的防御能力越来越强, 并且很多客户都将重点放在了检测这一方面,所以攻击者需要找到更新颖的技术才能在其目标上执行命令。
使用java程序以及flash漏洞的时代已经过去了,现在的浏览器都正在实现点击播放,而且一些情况下,他们已经废除了这些经常被攻击者采用的技术方法。
你现在可以通过组策略禁用office软件中的宏,导致攻击者以前常用的方式失效。对象链接和绑定(OLE)是另外一种流行的攻击方法,在过去一年中变得很普遍,攻击者将可执行文件和office文档进行绑定,进而执行命令。这可能是由于大多数人都将焦点放在了禁止宏运行上,而没有在意文档本身导致的吧。
很快,微软通过限制文档嵌入程序类型来缓解这一攻击。进而大大减少了通过office进行入侵的可能性。也许你听到在IE以及Edge浏览器中仍然还支持解析HTA文件可能不是很惊喜,这是一种非常老的攻击方式,不过最近攻击者一直在使用这种方式进行攻击。
最近,Hancitor malspam研究员在研究恶意攻击链中发现了使用HTA文件进行密码盗窃。HTA文件同样也在CVE-2017-0199中被大量使用。
厂商以及个人都将检测重点放在了禁止宏和OLE嵌入上,你也许会想为什么HTA文件到目前还是一个隐患。答案是尽管他们已经存在了很长时间,但因为来自厂商和第三方的努力,将这一攻击范围进行最小化处理,并且对HTA文件进行监控。因此,攻击者只能通过监管最弱的方法执行HTA文件(很庆幸,它们还是可以执行的)。
什么是HTA文件?
HTA文件通常是由HTML和像JScript和VBScript这样的脚本构成,它就相当于一个普通的web页面。但是HTA文件不同之处在于它们以完全信任模式进行,可以访问普通页面访问不了的内容,比如通常标记为'不安全脚本'的ActiveX控件。
这就意味着如果攻击者在服务端提供了HTA文件(比如通过恶意网址),并且通过某种方法让用户点击两次警告,进而攻击者就可以在用户机器上执行任何命令。这种方式根本不用绕过任何windows采取的措施。
攻击
从攻击者角度来看,通常可能会拦截这种攻击的是用户使用的一些安全产品,比如web内容检测代理,和URL扫描”沙箱”。
这些安全产品常常会对可执行文件进行监控,比如正在监视从用户浏览器中下载的exe可执行文件,在未确认其安全性之前,将其锁住使其无法运行。以及有些产品会执行沙盒,也就是说如果安全产品判断这一软件可能是病毒,那么可执行文件会在沙盒中运行。
这两件事情为正在想办法传输恶意软件的攻击者出了一个难题。对于这些问题,我们开发了Demiguise。我们最近在执行检测时,有一用户使用了上述安全产品,然而我们需要将HTA可执行文件在不触发这两种安全产品的情况下传输到客户机器上面,同时不会在沙箱中运行。
Demiguise通过创建包含HTA有效载荷的加密版本的HTML文件来开展工作。这就意味着web内容检测代理对网页内容看成一次普通的http请求,并且不会报警。
当html文件在用户浏览器中显示时,其中的javascript代码会在调用msSaveBlob之前对HTA文件进行解压缩和解密,从而直接从浏览器中下载已经解压过的文件。
然后用户会在运行hta文件时得到两个提示,如果用户接受了这两个提示,那么HTA文件就会成功执行。当然所有的过程,使用的文件类型都是简简单单的http请求,不是可执行文件类型,所以安全防护软件不会发出警告和拦截。
环境密钥
为了改善这次攻击,避免程序在沙盒中运行,这一工具提供了'环境密钥'的概念。
这一想法的概念是不在HTML中对加密密钥直接采用硬编码,而是通过javascript代码在用户工作环境中提取密钥。它可以被认为是一个签名,表明javascript代码正在预期的环境中运行,而不在其他环境中。
通过javascript代码做到这一点的好的方法是在目标网络上找到一些只能在在该网络存在的东西。举个例子,内部网络进行托管的映像,或者客户端的外网ip地址。
至于你如何确定一个环境密钥,这对你来说就是一个很好的锻炼方式了。但是,很多工具都可以做到的,比如BeEF和WebFEET,都可以在主动攻击前进行一定的信息收集。
通过导出只有在特定网络中才存在的加密密钥,你可以保证你的攻击载荷不会在其他环境中运行,比如在沙箱中。事实上,不仅不会起作用,而且沙箱甚至不知道他是什么文件,因为没有进行解密。
在github上有对工具的介绍,如工具攻击的完整流程以及环境密钥的确定。其中还包括了一些演示视频,比如运行hta文件时两次警告,以及该工具输出的典型内容。
防御
由于攻击者可以任意调用像msSaveBlob这样的函数,导致检测攻击者签名有些困难。更全面的方法就是完全禁用hta文件。可以通过使用软件限制策略(SRP[10]),或者Device Guard对hta文件进行禁用。
另外一种方法就是修改hta文件的默认打开方式,使用记事本打开它,这样就hta文件就不会被执行了。
注意:在Windows 10中测试时,使用Applocker阻止使用mshta.exe似乎无法正常工作。Windows
Update和Search bar等应用程序似乎无法正常运行。这可能由于其作为一些内部Windows应用程序一部分,因此如果您选择使用Applocker来阻止HTA文件,则建议更多的研究。
结论
我们希望这篇文章可以证明即使供应商做了很大的努力,采取了很多措施,但是一些比较旧的攻击方式做一些调整还是同样有效的。
我们已经证明了HTA文件的风险,并展示了为什么应该考虑阻止HTA文件。希望这一工具对您的工作有帮助。
如何在IE/Edge浏览器中巧妙地传输HTA文件?相关推荐
- htm文件在C语言中如何打开,如何在Microsoft Edge浏览器中打开本地HTML文件?
自远古以来,如果您运行Web浏览器可执行文件,大多数Web浏览器都能打开本地文件,例如只需执行iexplore.exe file:/c:/temp/file或通过IShellDocView接口.我试图 ...
- 如何在win10自带的Edge浏览器中切换成IE浏览器浏览网站
如何在win10自带的Edge浏览器中切换成IE浏览器浏览网站 1.打开edge的设置界面 选择默认浏览器 1.Internet Explorer 兼容性 =>让 Internet Explor ...
- edge 浏览器中数字显示为链接
在win10 中的Edge浏览器中部分格式的数字显示链接.经过各种搜索找到一篇文章 How to remove phone number link on Iphone? ,通过这篇文章了解 edge ...
- 如何在 Google Chrome 浏览器中使用 Java?
如何在 Google Chrome 浏览器中使用 Java? 本文适用于: 浏览器: Chrome Java 版本: 7.0, 8.0 Chrome 对 NPAPI 的支持 用于 Web 浏览器的 J ...
- 如何在Chrome google浏览器中清除和管理Cookie
如何在Chrome google浏览器中清除和管理Cookie 有多少人知道访问的网站在您的设备上保存了称为Cookie的小文件?当您再次访问该网站时,这些cookie可以加快页面加载速度. 最好不要 ...
- 微软将在新版Edge浏览器中支持广告拦截器
3月31日消息,据路透社报道,微软周四表示,公司正在考虑让下一版本的Edge浏览器实现通过第三方拓展件支持广告过滤功能. 科技网站ZDNet今天早些时候根据一张拍摄自微软开发者大会的产品蓝图指出,该公 ...
- android 浏览器打开本地html文件,如何在Android浏览器中加载本地HTML文件
我试图在设备浏览器中加载本地html文件.我尝试过使用WebView,但它不适用于所有设备.如何在Android浏览器中加载本地HTML文件 //WebView method that didnt w ...
- html清除文本框储存记录值,如何清除edge浏览器中已保存的表单数据
如何清除edge浏览器中已保存的表单数据 我们使用的edge浏览器,默认保存表单数据,想要进行清除,该怎么操作呢?今天就跟大家介绍一下如何清除edge浏览器中已保存的表单数据的具体操作步骤. 1. 首 ...
- xBIM 实战01 在浏览器中加载IFC模型文件
系列目录 [已更新最新开发文章,点击查看详细] 一.创建Web项目 打开VS,新建Web项目,选择 .NET Framework 4.5 选择一个空的项目 新建完成后,项目结构如下: 二.添 ...
最新文章
- Zeroc Ice 发布订阅者之demo Icestorm之clock
- 江西计算机一级考试教程,江西省2019年下半年计算机一级考试复习教程:计算机基础及MS Office应用上机指导...
- 计算机硬件假故障,计算机硬件故障
- 第三十三期:连接池中非常关键的两个参数,到底是干啥用的?
- 74. Search a 2D Matrix
- Python 内置函数之 open (文件操作)
- 田渊栋教你读paper的正确姿势
- 【vSphere故障案例】案例七:数据中心虚拟化网络故障
- caffe :error MSB4062: 未能从程序集** 加载任务“NuGetPackageOverlay”
- windows nginx 停止和启动_nginx在window与linux中启动、停止、与关闭
- CSS flex 布局 一些基本属性应用
- C语言———求”完数“
- STM32_ADC模数转换的基本原理
- 我可以利用计算机查找资料,《信息检索》复习题库 (1)
- 社交网络分析:中国与国际媒体互引的社会网络分析
- Java 输入判断5,7倍数
- 吉林大学计算机学院学位预警,长春新区发布2021年学位预警!7所学校学位告急!...
- python中拆包解包用法详解
- openwrt安装ipk报错“incompatible with the architectures configured”
- 一个优秀的平面设计作品需要满足那些特点
热门文章
- 2!=5 or 0在python中是否正确-Python 中的 or and 运算,看这一篇就够
- python使用字典格式化字符串-Python中将(字典,列表等)变量格式化输出
- 去除警告: FutureWarning: In future, it will be treated as `np.float64 == np.dtype(float).type`.
- mysql数据库约束无符号_mysql 数据类型 约束条件
- codeforces D Good Substrings(hash)
- UVa739 Soundex Indexing
- mybatis之ResultMap
- LeetCode Design Twitter
- Oracle学习网站
- 行为模式之Strategy模式