このページの本文へ

McAfee Blog

終わりのないゼロデイ報道

2012年10月03日 21時00分更新

文● McAfee

  • この記事をはてなブックマークに追加
  • 本文印刷

 先日、Internet Explorerのゼロデイ脅威が実際に悪用されたことが報告されました。簡単な分析を行ったところ、いくつかの興味深い点が判明しました。

 今回のエクスプロイトには以下の4つの要素が含まれています。

  • Exploit.html - 第一段階の脆弱性を利用したWebページ(変数を初期化し、.swfファイルをロードします)。

  • Moh2010.swf - DoSWFを使って暗号化されたSWFに、シェルコードとヒープスプレーコードが格納されています。ヒープスプレーの実行後、脆弱性を起動するProtect.htmlをロードします。

  • Protect.html - ブラウザまたはFlashのバージョンを検出し、脆弱性を起動します。

  • 111.exe - トロイの木馬。

 HTML/JavaScriptにすべてを組み込む一般的なエクスプロイトと異なり、この脅威は、シェルコード、ヒープスプレーコードといった重要な要素をすべて暗号化されたSWFファイルに隠します。実施の部分は非常にシンプルです。ターゲットにしているのはWindows XP SP3とIE8だけなので、アドレス空間配置のランダム化(ASLR)を回避する必要はありません。ROPペイロードのみを利用して、Windowsのデータ実行防止(DEP)機能を回避します。ROPガジェットはmsvcrt.dllモジュールからハードコードされます。

0:008> u 0x77c15ed5
msvcrt!_pi_by_2_to_61+0x12db:
77c15ed5 94 xchg eax,esp
77c15ed6 c3 ret

 ROPペイロードはkernel32!VirtualAllocを呼び出し、メモリーを保持するシェルコードをRWXに変更します。

0c10104c 00000000 0c18fa00 00005500 00001000 kernel32!VirtualAllocEx
0:008> !address eax
0c120000 : 0c18f000 – 00006000
Type 00020000 MEM_PRIVATE
Protect 00000040 PAGE_EXECUTE_READWRITE
State 00001000 MEM_COMMIT
Usage RegionUsageIsVAD

 実際のシェルコードは演算コード0xE2でXOR暗号化されており、フックホッピング(hook-hopping)技法を使って、urlmon!URLDownloadToCacheFileW、kernel32!CreateFileW、kernel32!WinExecなどのAPIを呼び出します。フックホッピングは、ウイルス対策やHIPSといった一般的なセキュリティ製品を回避するのによく使われます。脆弱性の利用に成功すると、シェルコードはリモートサーバーからトロイの木馬をダウンロードします。

マカフィーの対応

 McAfee Network Security Platformは、「UDS-HTTP: Microsoft Internet Explorer Use-After-Free exCommand Heap Stray Code Execution」というUDSをリリースして、この脅威に対応します。

 McAfee Host Intrusion Prevention System 8.0 P2では、以下のGeneric Buffer Overflow Protectionシグネチャーによってゼロデイエクスプロイトをブロックすることができます。

  • 6013 – Suspicious Function Invocation – CALL Not Found

  • 6048 – Suspicious Function Invocation – Different Stack

 ウイルス対策については、現在提供しているBeta 版のDATでは「Exploit-IEexecCommand」という名前でこのエクスプロイトを検出しています。

※この記事は、McAfeeの運営しているブログから、注目のエントリーを編集部でピックアップし、転載しているものです。

週刊アスキー最新号

編集部のお勧め

ASCII倶楽部

ASCII.jp Focus

MITテクノロジーレビュー

  • 角川アスキー総合研究所
  • アスキーカード
ピックアップ

デジタル用語辞典

ASCII.jp RSS2.0 配信中