暑いのが過ぎたら、一気に涼しくなったな……そんなことを思いつつ、椅子に寄りかかりながらホゲーと仕事をしていると、私のメールボックスに異常が。なんだかよくわからないけど、CNNから最新ニュースの配信がきたらしい。あ、ついでにIE7のアップデートだって。また新手の迷惑メールか…と思っていたところ、これはどうやらマルウェアに感染させる活動のようだ。数日後には、今度はMSNBCからのニュース速報だそうで。今回は、この迷惑メールを通じたマルウェア感染について紹介したい。

vivtek.comの"Spam from the botnet, for the botnet"というページには、この迷惑メールの発信状況が時系列にまとめられている。これによると、最初の発信は6月の下旬であり、その後4つほどの発信があった後に、7月の下旬には"Beijing Olympics cancelled"といった件名の迷惑メールが発信されており、その後CNN、MSNBCを騙る迷惑メールへと変化していったのだという。

トレンドマイクロのブログには、このMSNBCのニュース速報を偽る迷惑メールの件名の一覧が記載されている。いくつかピックアップして紹介しよう。

  • McCain gives up fighting for presidency(マケイン大統領候補が辞退)
  • Americans loves to sue people(アメリカ人は賠償訴訟好きである)
  • Microsoft announces takeover bid for Intel, details inside(MicrosoftがIntelに対し株式公開買いつけを発表。詳細は本文にて)

たしかに、クリックしたくなるような件名である。ちなみに、筆者のお気に入りはコレである。

  • Mike Tyson To Fight Michael Jackson(マイク・タイソンがマイケルジャクソンと対決へ)

図 MSNBCのニュース速報を偽る迷惑メールの例

さて、件名ばかりに注目して論評したところで仕方がないので、話をすすめることにしよう。この迷惑メール本文に記載されているリンク先は、もちろんホンモノのMSNBCのサイトへ誘われるわけではなく、別のマルウェアがダウンロードされるサイトへ誘導するものである。図2は、この誘導先でダウンロードできるマルウェアが今回の分析対象である。

図2 誘導先サイトの例(出典: TrendLabs Malware Blog)

検体には、数ある中から"Internet Explorer 7"というIE7へのアップデートを偽った迷惑メールの本文中リンクを経由してダウンロードしたものを使用した。理由は、これが一番「よくできていた」ためである。なぜよくできているのかについては、次から説明していく。

ランタイムパッカーによる難読化

FoundstoneのBinTextを使用し、検体をロードさせたものを図3に示す。BinTextは、ロードしたファイルの中からASCII文字列やUnicode文字列を自動的に抽出してくれるツールであり、コンピュータフォレンジック分野においてもさかんに使用されている。さて、出力結果をご覧の通り、有用な文字列は一切存在しない。すなわち、この検体にはランタイムパッカー(以下、「パッカー」と略す)が適用されており、コード圧縮と同時に難読化が施されているのだ。パッカーについては稿を改めて、別の機会に詳しく紹介したいので、ここでは「マルウェアの分析を困難にするソフトウェア」といった認識でいていただきたい。

図3 BinTextを使用し、検体をロード

一方、ここで説明しておきたいのは「なぜ実行可能ファイルから文字列を抽出することが重要なのか?」という点である。その理由は、Windowsにおける実行可能ファイル(Win32 Portable Executable(PE))が、実行時にローダに提供する情報を豊富に格納していることにある。そのひとつに、Windws APIを使用するためのインポートセクションと呼ばれるデータ領域に含まれる情報がある。ここのデータを読むことができれば、その実行可能ファイルがどのような動作をするものなのか("Reverse Engineer"や"Malware Analyst"であれば)、ローダに提供する情報をヒントにしてたちどころに判明するのである。言い換えれば「検体を入手した瞬間にその解析は終わっている」のである。しかし、昨今はこうしたランタイムパッカーによるマルウェアの難読化が多用されている現状があり、動作の詳細を分析する大きな障害となっているのだ。

ちなみに、興味ある読者諸兄は「An In-Depth Look into the Win32 Portable Executable File Format」を読むことで、インポートセクションの詳細を得られるだろう。