簡單方法檢測遠端用戶的反病毒軟件
我常使用的操作系統(tǒng)是 Windows7,為了確保更安全,我安裝了卡巴斯基互聯(lián)網(wǎng)安全防病毒軟件。一天我在一個 Web 頁面上看到了一段非常有趣的代碼,在我看來它不該出現(xiàn)在頁面上。
為什么 Facebook 會使用卡巴斯基網(wǎng)站的 js 代碼?我立刻意識到是我的反病毒軟件做了 MITM,在網(wǎng)頁上注入代碼來跟蹤頁面的活動。在客戶端計算機上存在任何的反病毒軟件的話,包括 KIS,為什么不創(chuàng)建一個特殊的頁面來監(jiān)視 Javascript 的代碼呢?
創(chuàng)建服務器的第一個頁面 iframe.html
- <!DOCTYPE html>
- <html lang="en">
- <head/>
- <img src=x />
- <script type="text/javascript" />
- </html>
隨后創(chuàng)建第二個頁面 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 反病毒軟件進行檢測,如果有人想繼續(xù)研究,我很高興聽到研究的結果。
Avira、Norton、DrWeb 和 Chrome 搭配進行檢測,甚至還要安裝插件來讓反病毒軟件可以注入特定數(shù)據(jù)到頁面以完成對頁面的檢測。
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 上找到。