2012-02-26 6 views
0

私は、広告詐欺の可能性がある大きな事件を調査しており、パン粉をたどることで、「Google_Analytics.js」という名前のjavascriptを呼び出すページが表示されます。 。このjavascriptの機能を判断する方法

私はここで、ファイルへの生のコードを入れている:私はか、行うように設計されたかを知る前に、このような何かを見ているためにJavaScriptを使用して十分に熟練していないですhttp://pastebin.com/5YqzCVbB

誰も手伝ってくれる人がいますか?

ありがとうございました!

D

+1

あなたはそれが何をしているのかわからない場合、どうすればGoogleアナリティクスではないことがわかりますか? –

+0

明らかに難読化されています。誰かがそのコードを解くことができるかどうかはわかりません。コードを調べるよりも、javascriptコンソールを使い、出力をテストする方が良いでしょう。 –

+1

私はそれもフラッシュで何かをするように見えます。神様、私は今できるほど速く走っています。 – hugomg

答えて

1

まあ、それはGoogleアナリティクスではないのですが、意図的なものは、それがあるべきよりも多くのか何かをクリックされたの考え方にGAを偽装しようとしているように見えます。

この内容は?さて、Flashオブジェクトの作成に関連する一連のコードがあります。おそらくページの大きなホワイトリストが影響を受けるはずです。そして、これがあります:

if (follow.length > 0) { 
    rand = randomFromTo(100, 700); 
    rand2 = randomFromTo(1, 6); 
    if (rand == 666) { 
     $('<iframe />', { 
      name: 'follow_analytics', 
      id: 'follow_analytics', 
      style: 'width:2px;height:2px;display:none;', 
      width: '2', 
      height: '2', 
      src: follow[0] 
     }).appendTo('body'); 
     if (trk_value[$.inArray(1 * (follow[0].match(/cid=([\d]*)/)[1]), tracking)]) { 
      if (rand2 == 1) { 
       $('<iframe />', { 
        name: 'trk_analytics', 
        id: 'trk_analytics', 
        style: 'width:2px;height:2px;display:none;', 
        width: '2', 
        height: '2', 
        src: 'tracking.html?' + trk_value[$.inArray(1 * (follow[0].match(/cid=([\d]*)/)[1]), tracking)] 
       }).appendTo('body'); 
      } 
     } 
    }; 
} 

これは、人為的に少し数字を膨らませるためのものだのようになります。これらの6で600と1分の1が追跡か何​​かしなければなりません。しかし、私はGoogle Analyticsについて多くのことを知らないので、それを超えてお手伝いすることはできません。

+0

誰もが "大きなホワイトリスト"にコメントできますか? GoogleアナリティクスアカウントやAdSenseアカウントなどですか? –

+0

Google AnalyticsアカウントまたはGoogle AdSenseアカウントIDはありますか? –

+0

Google AdSense IDは次のようになります:pub-4212135704282469そのページをクリックすると、クリック詐欺になります。 Googleアナリティクスのタグは、UA-2522429のようになります。そのページを読み込むと、人為的にウェブサイトのビジター数が膨らんでしまいます。私は "appendTo"を参照してください。 UAやPUBが隠されてアカウントや番号のリストに追加される可能性はありますか? –

1

短い答えは、さまざまなソース(グローバルJavaScript変数、Flash params、およびiframe src)のいずれかからページ上のURLを検索しようとしています。そのURLを見つけて正しい乱数を選択した場合(666、ランダムに100から700まで選択した場合)、そのURLのiframeがページに作成されます。

次に、静的な2つの数値リストの最初に見つかったURLの「CID」を探します。そのリストにCIDが見つかった場合は、他のリストから対応する数値を取得します。次に、第2の正しい乱数が選択されると(1、ランダムに1と6の間で選択される)、それは第2のiframeを付加する。そのiframeのURLはtracking.html?xとなります。ここで、xはCIDの翻訳で見つかった数値です。

どちらのiframeも表示されません。

これは簡単な回答ですが、詳細が必要な場合は下記をご覧ください。実際に何を達成しようとしているのかを理解するために広告や広告の動作について十分な知識がないため、この点でいくつかの価値を得ることができれば幸いです。


まず、それは関数を作成しようとしますが、それがないすべてのコードのように見えることになっていた文字列を作成しているとして、それは、おとりのように見えます。また、呼び出されることもありません。 var b=単一引用符で始まり、行は単一引用符で終わること

var analytics_obj=function(){ 
    var b='undefined",Q="object",n="Shockwave Flash",p="ShockwaveFlash.ShockwaveFlash",P="application/x-shockwave-flash",m="SWFObjectExprInst",j=window,K=document,T=navigator,o=[],N=[],i=[],d=[],J,Z=null,M=null,l=null,e=false,A=false;var h=function(){var v=typeof K.getElementById!=b&&typeof K.getElementsByTagName!=b&&typeof K.createElement!=b,AC=[0,0,0],x=null;if(typeof T.plugins!=b&&typeof T.plugins[n]==Q){x=T.plugins[n].description;if(x&&!(typeof T.mimeTypes!=b&&T.mimeTypes[P]&&!T.mimeTypes[P].enabledPlugin)){x=x.replace(/^.*\s+(\S+\s+\S+$)/,"$1");AC[0]=parseInt(x.replace(/^(.*)\..*$/,"$1"),10);AC[1]=parseInt(x.replace(/^.*\.(.*)\s.*$/,"$1"),10);AC[2]=/r/.test(x)?parseInt(x.replace(/^.*r(.*)$/,"$1"),10)}}else{if(typeof j.ActiveXObject!=b){var y=null,AB=false;try{y=new ActiveXObject(p+".7")}catch(t){try{y=new ActiveXObject(p+".6");AC=[6,0,21];y.AllowScriptAccess="always"}catch(t){if(AC[0]==6){AB=true}}if(!AB){try{y=new ActiveXObject(p)}catch(t){}}}if(!AB&&y){try{x=y.GetVariable("$version");if(x){x=x.split(" ")[1].split(",");AC=[parseInt(x[0],10),parseInt(x[1],10),parseInt(x[2],10)]}}catch(t){}}}}var AD=T.userAgent.toLowerCase(),r=T.platform.toLowerCase(),AA=/webkit/.test(AD)?parseFloat(AD.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1"))false,q=false,z=r?/win/.test(r),w=r?/mac/.test(r)/mac/.test(AD);}' 
}; 

は注意してください。真ん中には他に一重引用符がありませんので、コードのように見える長い文字列です。それがeval()(と私はeval()このスクリプトのどこにも表示されません)を介して実行するつもりでない限り、それはちょうどおとりです。

次に、乱数を取得するための簡単な省略形の関数を作成します。

3番目は肉の部分です。 URLを取得しようとします。まず、ここで宣言されていないclick_url2という変数を試します。そのため、別のスクリプトからその変数を取り除く必要があります。

それはそのFlashVarsのかURLでclickTag=またはclick=を持っているページ上のフラッシュムービーを見つけ、そして=後の値をキャプチャしようとすると、それに失敗。それに失敗

は、それはそれで次のテキストを持つSRCを持っているのiframeを探します:click=または[email protected]=http://media.fastclick.net/w/click.hereforced_click=が続き、そのテキストhttpから始まり、そしてforced_click=で終わるのすべてをキャプチャします。これにURL:http://cc.openxads.org/clothedcanines.com/popped_content.htmlを追加します。

この動作は以下の通りです:その後

try { 
    follow.push(click_url2); 
} catch(e){ 
    try { 
     follow.push(unescape($('object param[name="flashvars"]').attr('value').match(/clickTag=([^&]*)/)[1])); 
    } catch(e){ 
     try { 
      follow.push(unescape($('object param[name="movie"]').attr('value').match(/clickTag=([^&]*)/)[1])); 
     } catch(e){ 
      try { 
       follow.push(unescape($('object param[name="FlashVars"]').attr('value').match(/clickTag=([^&]*)/)[1])); 
      } catch(e){ 
       try { 
        follow.push(unescape($('embed').attr('flashvars').match(/clickTag=([^&]*)/)[1])); 
       } catch(e){ 
        try { 
         follow.push(unescape($('embed').attr('flashvars').match(/click=([^&]*)/)[1])); 
        } catch(e){ 
         try { 
          follow.push(unescape($('iframe').attr('src').match(/click=(http:\/\/media\.fastclick\.net\/w\/click\.here.*forced_click=)/)[1])+"http%3A%2F%2Fcc.openxads.org%2Fclothedcanines.com%2Fpopped_content.html"); 
         } catch(e) { 
          try { 
           follow.push(unescape($('iframe').attr('src').match(/[email protected]=(http:\/\/media\.fastclick\.net\/w\/click\.here.*forced_click=)/)[1])+"http%3A%2F%2Fcc.openxads.org%2Fclothedcanines.com%2Fpopped_content.html"); 
          } catch(e) {}; 
         }; 
        }; 
       }; 
      }; 
     }; 
    }; 
}; 

、それは数字の2つの非常に長い配列を宣言します。私は彼らが何であるかについての手がかりは持っていませんが、後の行動に基づいて、彼らは並行しているようです。

上記の条件(変数、フラッシュ、またはiframe)が見つかった場合は、それが続きます。そうでなければ失敗する。

なお、この時点で選択された最初の番号が666である場合は、ページ上のiframeを作成し、1および6

間に2つの乱数、100と700との間の第一、及び第二のを選択します、非常に小さく隠されていて、見ることを意図していません。 iframeのsrcは、上にキャプチャしたURLと同じになります。

(最初の番号が666の場合でも)、トリッキーな部分があります。それは先にキャプチャしたURLにcid=を見つけようとし、それの(予想数値)値を取得します。この数値は、以前に宣言された配列の1つに対してチェックされます。見つかった場合は、見つかった値と同じインデックスの値を別の配列から取得します。本質的には、これは単なる変換テーブルであり、いわゆるCIDを異なるが対応する数値に変更する。

もし一致すれば、2番目の乱数(1と6の間)が1なら2番目のiframeを添付します。 2番目のiframeのsrcはtracking.html?になり、2番目の配列から取得した数値が追加されます。その値は最初の配列からの値と一致して取得されます。

if(trk_value[$.inArray(1*(follow[0].match(/cid=([\d]*)/)[1]),tracking)]){ 
    if(rand2==1){ 
     $('<iframe />', { 
      name:'trk_analytics',id:'trk_analytics',style:'width:2px;height:2px;display:none;',width:'2',height:'2', 
      src:'tracking.html?'+trk_value[$.inArray(1*(follow[0].match(/cid=([\d]*)/)[1]), tracking)] 
     }).appendTo('body'); 
    } 
} 
+0

難読化されたコードにGAやUA-Google AnalyticsやGoogle AdSense IDがありますか? –

+0

これらのIDは2文字で始まります。もしそうなら、彼らはどこにも見えません。完全なURLと何らかの完全な数値のIDだけを扱う。 GoogleアナリティクスとAdSenseのIDが完全に数字である場合は、何を探すべきかわかりません。 – Rick

+0

バックグラウンドとして:このユーザーは、そのページのロードまたはクリック通話に基づいてお金を支払う広告ネットワークに結びついたメタリフレッシュタグを含む1:14の比率を生成するポップアンダー広告を購入した可能性があります。これはオンライン広告の一般的な不正行為ですが、.jsは新しいものであり、UA番号または番号として認識されない機能やGoogle AdSense IDまたはAnalytics IDには何か助けていただきありがとうございます難読化されたコード? –