このところ、2009年に国内で多く見られたマルウエア「Conficker」によく似た動作のマルウエア「Murofet」が広まっている。米ウェブセンスがブログ(Murofet: Domain Generation ala Conficker)で解説している。

 Confickerの特徴は、毎日大量のドメイン名を生成すること。Murofetも1日に数千個のドメイン名を作り、コードのアップデートを行おうとするという(関連記事:「W32.Downadup.C」ワームの疑似乱数を使ったドメイン名生成機能/Confickerに新たな亜種「WORM_DOWNAD.E」,PtoP通信でアップデート )。

 Murofetは、起動すると最初にアップデートのダウンロードを試みる。そのために、まず実行された日付と(時刻の)分という情報から疑似乱数でドメイン名を生成する。この過程で、分データの値によって組み合わせるトップレベルドメイン(TLD)を「.biz」「.info」「.org」「.net」「.com」から選ぶ。こうして1日当たり1020個のドメイン名を作る。

 ドメイン名の生成処理が終わると、Murofetはその中からアップデートをダウンロードできるところを探し出す。そして、新たに作ったダウンロード用プロセスでアップデートを入手し、新たなバージョンのマルウエアで仕事を始めるのだという。

 ウェブセンスはWebサイトでセキュリティ研究者向けにMurofetのドメインリストを提供している。

パスワードを守る方法をグーグルが伝授

 米グーグルが同社のブログ上で、各種オンラインサービスで使うアカウント「Google Account」の保護強化策を解説している(Protecting your data in the cloud)。米国の「National Cyber Security Awareness Month(国家サイバーセキュリティ意識向上月間)」の一環だとしている。

 Google Accountは、写真や文書、ブログ、カレンダーなど多くの個人情報と結び付けられている。そのため、Google Accountはその持ち主だけでなく、スパム送信者(スパマー)や詐欺師にとっても極めて価値の高い情報である。

 アカウントの不正取得を図る連中は、平均的なインターネットユーザーがついやってしまう行為を利用する。悪人たちの手口を知り、優れたセキュリティ習慣を取り入れれば、被害に遭うことを避けられる。悪人は、以下に示したような方法でGoogle Account用パスワードを狙う。

  • パスワードの流用:ほかのWebサイトから盗んだユーザー名とパスワードでGoogle Accountにログインを試みる
  • マルウエア:パソコンにマルウエアを感染させ、入力時にパスワードを盗んだり、Webブラウザーのキャッシュデータからパスワードを取り出したりする
  • フィッシング:悪事と無関係な組織を装ったWebサイトやメール、電話に対応させて、ユーザー名とパスワードをだまし取る
  • ブルートフォース:名前と誕生日の組み合わせなど、簡単に推測できるパスワードを総当たり攻撃で当てる

 複数サイト間でのパスワード使い回しを止めてそれぞれ異なるパスワードを設定しても、あらゆる攻撃からアカウントを守れるわけではない。そこでグーグルでは、パソコンやWebブラウザー、「Gmail」、Google Accountの保護に役立つ、簡単なチェックリストを作った。要点は以下の通りである。

  • オンラインバンキングやメール、SNS、オンライン通販などで使う大切なアカウントのパスワードは使い回さない
  • 定期的にパスワードを変える。重要なアカウントの一つが盗まれた疑いがある場合は、必ず変更する
  • Google Accountのユーザー名やパスワードを問い合わせるメッセージや電話、グーグル以外のWebサイトには返答しない。答えてしまった場合は、グーグルに報告し、該当アカウントにはアクセスせず復旧ページを利用する

     なおグーグルは、オプションでGoogle Accountで2段階の認証手順を使えるようにし、セキュリティを強化している(関連記事:Twitterで広がるJavaScriptの「onMouseOver」を使った攻撃)。

    仮想マシンを使ったマルウエアの難読化

     最後に、米マクロソフトのMicrosoft Malware Protection Centerのブログで取り上げられている、マルウエアの難読化についてのブログ(Prehistoric Virtual Machines)を紹介しておこう。

     マルウエアのコードを難読化するための仮想マシンというと、「VMProtect」や「Themida」がよく知られている。いずれも2004年ころ登場したもので、まだ6年程度の歴史しかない。それ以前は、難読化とは別の目的で仮想マシンを使ったところ、意図せず難読化できてしまった時代である。

     例えば、一つの同じコードを多種多様なプラットフォームで使えるようにするため、元のコードを擬似コード(Pコード)に変換して仮想マシンで動かすとしよう。このPコードは、人間にとって元のコードより解釈しにくい。つまり、本来の目的は移植性の確保だが、難読化の効果も得られるのだ。Pコードを解釈するインタプリターのなかには、仮想マシンで実現できない機能を提供するために、対象プラットフォームのネイティブコードを実行するものがある。このような仕組みも、一種の意図しない難読化といえる。

     「nibble」フォーマットで保存したフロッピーディスクのイメージも同様の意図しない難読化だという。Apple IIのフロッピーから作ったディスクイメージファイルををApple IIエミュレータに読み込ませると、本来必要なハードウエアなしでイメージ内のプログラムを動かしたりデータを参照したりできる。

     ブログでは例として、米エレクトリックアーツが1983年にリリースしたゲーム「The Last Gladiator」で採用したコピープロテクト機構を紹介している。これは意図的なコード難読化である。このゲームは仮想マシンを2個使っており、それぞれ実行可能な命令が限られているのでコードの解析/実行を2段階で処理するなど複雑な仕組みを備えているのだという。VMProtectとThemidaはこれと全く同じ手法で難読化している。