简单方法检测远端用户的反病毒软件
我常使用的操作系统是 Windows7,为了确保更安全,我安装了卡巴斯基互联网安全防病毒软件。一天我在一个 Web 页面上看到了一段非常有趣的代码,在我看来它不该出现在页面上。
为什么 Facebook 会使用卡巴斯基网站的 js 代码?我立刻意识到是我的反病毒软件做了 MITM,在网页上注入代码来跟踪页面的活动。
在客户端计算机上存在任何的反病毒软件的话,包括 KIS,为什么不创建一个特殊的页面来监视 Javascript 的代码呢?
创建服务器的第一个页面 iframe.html
<!DOCTYPE html><html lang="en"><head/> <img src=x /> <script type="text/javascript" /></html>
随后创建第二个页面 index.html
<!DOCTYPE html><html><head><title>Remotely AV detection</title></head><body><iframe style="width:10px; height:10px; display:block; visibility:show" id="frmin" src="/iframe.html"></iframe><button onclick="myFunction()">Check AV</button><script>function myFunction() {var frm = document.getElementById("frmin"); ka = frm.contentDocument.getElementsByTagName('html')[0].outerHTML;if (ka.indexOf("kasperskylab_antibanner") !== -1) { alert("AV name is Kaspersky"); } }</script></body></html>
当我们打开 index.html 页面时,它将会加载 iframe.html 并注入 js 代码,在这个图片中我们可以看到更改的 iframe 页代码
KIS 反病毒软件需要从 iframe.html 中读取代码并分析字符串,如果页面有 kasperskylab_antibanner
我们就可以说客户端计算机已经安装了卡巴斯基反病毒软件。
我想看看这种方法对于其他反病毒软件的检出情况,是只能检出卡巴斯基还是其他的也可以。接下来对 Avira、Norton、DrWeb 反病毒软件进行检测,如果有人想继续研究,我很高兴听到研究的结果。
Avira、Norton、DrWeb 和 Chrome 搭配进行检测,甚至还要安装插件来让反病毒软件可以注入特定数据到页面以完成对页面的检测。
Dr.Web
DrWeb Security Space 11.0
Chrome 扩展的名字:Dr.Web Anti-Virus Link Checker Extension URL
在 index.html 中注入下列代码:
使用以下简单代码就可以检测出客户端是否安装了 DrWeb
<script>if (document.getElementsByClassName('drweb_btn').length > 0) { alert("AV name is DrWeb"); }</script>
##Avira
当你安装了 Avira antivirus Pro 时,直接就给你安装了两个扩展:Avira Browser Safety 和 Avira Save Search Plus
Avira 会注入下列代码
如下简单代码就可以检测出 Avira
var AV = document.getElementById("abs-top-frame")if (AV!==null) {if ( AV.outerHTML.indexOf('/html/top.html')>=0 & AV.outerHTML.indexOf('chrome-extension://')>=0) { alert("AV name is Avira"); } }
Norton
诺顿会像 Avira 一样安装两个插件
会注入如下代码
通过下面的代码就可以检测出 Norton
var NAV = document.getElementById('coFrameDiv');if ( NAV !== null) { var nort = NAV.outerHTML; if (nort.indexOf('coToolbarFrame')>=0 & nort.indexOf('/toolbar/placeholder.html')>=0 & nort.indexOf('chrome-extension://')>=0 ) { alert("AV name is Norton"); } }
结论
1. 这种方法并不能保证百分之百检出反病毒软件,因为用户可以禁用安装的 Chrome 扩展。
2. 这篇文章的灵感主要来自于远程检测用户反病毒软件。
3. 相关代码可以在 GitHub 上找到。
*参考来源:GitHub,本文译者:Avenger,转载请注明来自FreeBuf.COM。
- Qt Style Sheet实践(三):QCheckBox和QRadioButton
- 堆排序
- 剑指OFFER之旋转数组的最小数字(九度OJ1386)
- Qt Style Sheet实践(四):行文本编辑框QLineEdit及自动补全
- 剑指OFFER之旋转数组的最小数字(九度OJ1386)
- Qt Style Sheet实践(二):组合框QComboBox的定制
- Python基础07 函数
- 剑指OFFER之旋转数组的最小数字(九度OJ1386)
- 5 云安全解决方案的注意事项
- Qt Style Sheet实践(一):按钮及关联菜单
- Python基础06 循环
- js也可以有自定义事件 注入就是这么爽
- Python基础05 缩进和选择
- Python基础04 运算
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Win系统安装部署流程与工具
- Bat脚本常用命令说明
- Phantomjs网页前端自动化测试之利器
- Ansible自动化运维学习笔记3
- Keepalived高可用服务解决方案
- pandas与SQL的查询语句对比
- 使用tensorflow搭建线性回归模型
- Flask-Admin修改成中文显示
- 什么是需求分析呢?
- 使用Pandas处理杂乱数据
- 在flask中使用flask-migrate管理数据库
- 直播视频网站源码,实现移动端的按钮拖动
- 解决k8s集群环境内存不足导致容器被kill问题
- NLP之pyhanlp安装及其使用
- nginx 代理 web socket 报错“WebSocket is already in CLO