利用 Flash 远程检测客户端安装的杀软

简介:

本文将提供一种检测用户已安装的杀软的可能的方法。如果我们想对用户发起攻击,那么获取该用户已安装的杀软信息是非常有用的。

本文所提供的方法主要基于以下两点:

1.现在的主流AV在检测恶意软件时会进行网络流量的分析。

通常情况下,http 和 smtp/pop3/imap 这类协议已经被分析了。然而,随着 TLS 加密传输越来越被广泛的使用,因此,杀软要分析被加密的网络传输信息,就需要针对用户的应用程序和远程服务器执行类似中间人攻击(MITM)的行为。为了绕过证书链的检测,杀软需要安装它自己的根证书到用户电脑上。之后,对加密的网络传输信息进行拦截,解密和分析。

如下图所示:

http://p2.qhimg.com/t0157ba8b465ca06838.png

2. Flash 支持原始的TCP套接字。

事实上,内嵌在浏览器网页中的swf文件即Flash 可以接受或发送任意TCP数据包到一个远程服务器的任何一个端口。但是为了安全起见,Flash socket 也支持跨域策略。如果一个Flash想要通过 socket 连接到一台服务器时,它会连接远程服务器的 843 端口并且发送一个请求,这个请求的目的是获取 跨域策略对应的xml文件,即crossdomain.xml也就是我们所说的“主策略文件”。这个xml文件包含了安全策略的具体信息,比如:哪些域名才能连接该服务器的哪些端口等等。

Flash socket crossdomain.xml文件示例:


 
 
  1. <?xml version="1.0"?> 
  2. <!DOCTYPE cross-domain-policy SYSTEM "/xml/dtds/cross-domain-policy.dtd"> 
  3. <cross-domain-policy> 
  4.    <site-control permitted-cross-domain-policies="master-only"/> 
  5.    <allow-access-from domain="*" to-ports="443,995,465,587" /> 
  6. </cross-domain-policy> 

利用以上两点,就可以产生奇妙的结果。当我们利用一个Flash文件发起TLS连接,连接请求到远程服务器的指定端口(如:443,587等等),之后杀软将会拦截该请求。因此,Flash就会接受到一个由杀软生成的TLS证书,那么,通过根证书的名称就可以判断出用户安装了何种杀软。

整个攻击流程如下:

0) 用户访问我们的网站,用户的浏览器加载了网站中的恶意swf文件。

1)Flash通过socket连接我们的服务器的843端口请求crossdomain.xml文件的内容并获取请求权限。

2)Flash连接到我们的服务器的一个端口(如443,465等等)并且发送了一个“Client Hello”的TLS数据包。

3)服务器发送“Server Hello”的TLS响应数据包,该数据包携带有服务器的证书信息。

4)杀软拦截了此次传输,生成了新的证书并且利用杀软自己的根证书进行了签名。

5)Flash接收到了上一步中(已经被杀软处理过)的TLS数据包,之后再发送给我们的服务器。

6)通过解析TLS数据包获取根证书的名称,名称中包含了杀软的名称。

POC

我创建了一个POC (https://github.com/GrrrDog/FlashAV)可能离实际的攻击效果相差很远,POC包含了一个特定的Flash和一个Python编写的 Socket Server。swf 发送原始的TLS请求(SSLv3),并且发送被杀软处理过的响应数据包到Python Socket Server。Python Socket Server 被用于解析数据包的证书名称以及构建crossdomain.xml文件内容。

我最初利用 Avast 杀软进行了测试,IE 和 Chrome 可以测试成功,但是Firefox却不行,在火狐浏览器中 Avast 并未对Flash连接443端口的请求做拦截。但是,在火狐浏览器中的Flash连接远程服务器的465或者587,993等端口时杀软则会拦截并且也能成功获取到用户安装的杀软名称。

http://p2.qhimg.com/t013086b6299c31f77c.png

之后我测试了卡巴斯基,但是并没有成功,卡巴斯基虽然会对浏览器的请求做拦截,但是并未拦截Flash的连接请求。

作者:阿诺斯基
来源:51CTO

相关文章
|
Java 索引
Java实现扑克牌游戏 | 随机发牌 ( 过程拆分详解+完整代码 )
Java实现扑克牌游戏 | 随机发牌 ( 过程拆分详解+完整代码 )
392 3
|
12月前
|
敏捷开发 供应链 数据可视化
如何利用精益生产管理工具提升项目执行力?推荐7款必备工具
本文介绍了七款精益生产管理工具,包括板栗看板、LeanKit、Targetprocess、Miro、Smartsheet、Airtable 和 LiquidPlanner,详细阐述了各工具的功能亮点及其在不同行业的应用,旨在帮助企业提高效率、减少浪费、优化流程,实现项目管理的持续改进。
如何利用精益生产管理工具提升项目执行力?推荐7款必备工具
|
数据采集 自然语言处理 数据挖掘
【NLP-新闻文本分类】1 数据分析和探索
文章提供了新闻文本分类数据集的分析,包括数据预览、类型检查、缺失值分析、分布情况,指出了类别不均衡和句子长度差异等问题,并提出了预处理建议。
290 1
|
存储 缓存 NoSQL
Redis中的rdb和aof
本文深入探讨了Redis的持久化机制,包括RDB和AOF两种方式。详细解释了RDB的工作原理、优势和劣势,以及AOF的实现原理、配置选项、文件重写机制和三种数据同步方式,还介绍了AOF文件修复工具redis-check-aof的使用,并通过实例展示了如何开启和配置AOF持久化方式。
Redis中的rdb和aof
|
机器学习/深度学习 存储 并行计算
CPU 和 GPU到底有啥区别?
【5月更文挑战第10天】
2001 2
CPU 和 GPU到底有啥区别?
|
存储 人工智能 搜索推荐
【2023年第十一届泰迪杯数据挖掘挑战赛】C题:泰迪内推平台招聘与求职双向推荐系统构建 27页论文及实现代码
本文介绍了2023年第十一届泰迪杯数据挖掘挑战赛C题的解决方案,详细阐述了如何构建泰迪内推平台的招聘与求职双向推荐系统,包括数据收集、分析、画像构建、岗位匹配度和求职者满意度模型的建立,以及履约率最优化的推荐模型,提供了27页的论文和实现代码。
303 0
【2023年第十一届泰迪杯数据挖掘挑战赛】C题:泰迪内推平台招聘与求职双向推荐系统构建 27页论文及实现代码
|
移动开发 负载均衡 小程序
代驾app开发丨代驾系统开发玩法详情丨代驾系统开发网页版/H5/小程序及源码部署
**司机/代驾员端**:司机可以通过APP接收订单,查看订单详情、路线和导航,提供现场服务并进行确认。
|
弹性计算 TensorFlow 算法框架/工具
在ECS上使用eRDMA加速Tensorflow
eRDMA是8代ECS自带的RDMA加速功能,可以充分发挥RDMA的优势,提升应用的性能。本文将介绍如何使用eRDMA来加速Tensorflow,并实测benchmark下的性能。
657 0
|
Java 应用服务中间件
Tomcat 报错:The origin server did not find a current representation for the target resource
Tomcat 报错:The origin server did not find a current representation for the target resource
452 1