【技术分享】利用 Flash 远程检测客户端安装的杀软
来源:互联网 发布:u盘数据恢复免费破解版 编辑:程序博客网 时间:2024/06/06 07:19
翻译:阿诺斯基
预估稿费:100RMB
投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿
本文将提供一种检测用户已安装的杀软的可能的方法。如果我们想对用户发起攻击,那么获取该用户已安装的杀软信息是非常有用的。
本文所提供的方法主要基于以下两点:
1.现在的主流AV在检测恶意软件时会进行网络流量的分析。
通常情况下,http 和 smtp/pop3/imap 这类协议已经被分析了。然而,随着 TLS 加密传输越来越被广泛的使用,因此,杀软要分析被加密的网络传输信息,就需要针对用户的应用程序和远程服务器执行类似中间人攻击(MITM)的行为。为了绕过证书链的检测,杀软需要安装它自己的根证书到用户电脑上。之后,对加密的网络传输信息进行拦截,解密和分析。
如下图所示:
2. Flash 支持原始的TCP套接字。
事实上,内嵌在浏览器网页中的swf文件即Flash 可以接受或发送任意TCP数据包到一个远程服务器的任何一个端口。但是为了安全起见,Flash socket 也支持跨域策略。如果一个Flash想要通过 socket 连接到一台服务器时,它会连接远程服务器的 843 端口并且发送一个请求,这个请求的目的是获取 跨域策略对应的xml文件,即crossdomain.xml也就是我们所说的“主策略文件”。这个xml文件包含了安全策略的具体信息,比如:哪些域名才能连接该服务器的哪些端口等等。
Flash socket crossdomain.xml文件示例:
<?xml version=
"1.0"
?>
<!DOCTYPE cross-domain-policy SYSTEM
"/xml/dtds/cross-domain-policy.dtd"
>
<cross-domain-policy>
<site-control permitted-cross-domain-policies=
"master-only"
/>
<allow-access-from domain=
"*"
to-ports=
"443,995,465,587"
/>
</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 (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等端口时杀软则会拦截并且也能成功获取到用户安装的杀软名称。
之后我测试了卡巴斯基,但是并没有成功,卡巴斯基虽然会对浏览器的请求做拦截,但是并未拦截Flash的连接请求。
我并非“杀软”领域的专家,可能我在研究过程中,遗漏了什么细节。因此,我决定把这个好的想法分享出来 ;)。
本文由 安全客 翻译,转载请注明“转自安全客”,并附上链接。
原文链接:http://agrrrdog.blogspot.com/2016/06/remote-detection-of-users-av-via-flash.html
- 【技术分享】利用 Flash 远程检测客户端安装的杀软
- Oracle客户端的安装与远程连接配置方法分享
- js检测客户端浏览器是否安装flash插件
- js实现检测客户端有没有安装flash插件
- 友盟分享 检测是否安装微信/QQ客户端
- DLL的远程注入技术分享
- 利用Instant Client ,不安装oracle客户端使用sqlplus连接远程数据库的步骤
- 利用Instant Client ,不安装oracle客户端使用sqlplus连接远程数据库的步骤
- javascript检测客户端flash插件
- 检测当前安装的flash player版本
- CLSIDFromProgID 检测Flash是否安装的Bug
- 求检测客户端是否有播放FLASH的IE插件
- javascript客户端检测技术
- javascript客户端检测技术
- JavaScript客户端检测技术
- 客户端检测技术
- [分享]利用QuadSPI外扩串行NOR Flash的实现
- (转)FLASH技术分享
- OKHttp实现Cookie持久化
- 2017补全计划-JS引擎,UI引擎-学习笔记
- 简单聊一下Android音频通路的切换
- iOS安全系列之二:HTTPS进阶
- P1226 取余运算||快速幂
- 【技术分享】利用 Flash 远程检测客户端安装的杀软
- 华为机试在线训练-牛客网(14)删除字符串中出现次数最少的字符
- 构造回文(删除字符使得回文子串最长)
- java页面预览功能
- 368. Largest Divisible Subset -Medium
- hdu1394 分治 or 线段树
- 为什么学习java
- 基于webmagic爬取并下载百度图片
- POJ 2828 Buy Tickets 线段树单点更新