ファイア・アイは2月1日、ネットバンキングを狙ったマルウェア「URLZone」が日本国内で増えていることを受けて注意喚起を行った。

URLZone(別名「Shiotob/Bebloh」)は、ネットバンキングのユーザーを標的としたトロイの木馬で、2009年に初めて発見された。URLZoneが端末に感染すると、金融機関の情報を含む構成ファイルをダウンロードし、Webインジェクションによって、ユーザーの銀行の認証情報を窃取する。

攻撃方法には特徴があり、攻撃者は一定の期間、特定の地域を標的としている。また、メールは対象地域の言語で書かれており、アカウント・ドメインもその地域に属したものが使われる。

最近は日本のネットバンキングユーザーを標的にしたものが多く、同社の調査では、2015年12月16日、21日に大量のスパムメールが送信されている。

URLZoneの活動量の推移

メールの内容には複数のパターンがあり、件名は英語と日本語、本文は短い日本語で記述されているものがあった。メールの多くは、日本国内の無償のWebメール・アカウントを送信元としており、ドメインはsoftbank.jpとyahoo.co.jpが大半を占めた。メールには、ZIPファイルが添付されてり、その中にはURLZoneのバイナリを格納していた。バイナリはDOCやJPGを偽装しており、二重拡張子が使用されていた。

URLZoneのスパムメールのサンプル

マルウェアは、プロセスホローイング(正規のプロセスをマルウェア自身に置き換える手法)によって、自身が実行されていることを隠蔽する。

コマンドライン・パラメータとして「_section」を追加することで、explorer.exeまたはiexplorer.exeを装うプロセスが、マルウェア本体の子プロセスとして生成される。このプロセスは、一時停止の状態で起動され、エントリポイントに悪意のあるコードが書き込まれる。必要なコードが書き込まれると、一時停止中のプロセスを再開して、悪意あるペイロードを実行する。

続いて、偽装したプロセスが64ビットの場合や、ウィンドウがある場合(iexplore.exeを偽装している場合)、このプロセス内で、悪意あるルーチンを実行する。別のパターンは、システム上で実行中の正規のexplorer.exeに自らをインジェクトし、悪意あるルーチンを実行する。

マルウェアは端末に感染した後に「コンピュータ名」「OSのメジャー/マイナー・バージョンと、インストール日」「偽装しているプロセスの名前、バージョン、タイムスタンプ」「IPアドレス」「キーボード構成」を取得する。

また、Windows Address Book(WAB)内に保存されているメールアドレスを窃取する。その際、まずレジストリ内のwab32.dllとWABファイル名の両方を検索し、次にライブラリを使用してWABファイルを解析し、ランダムに生成されるレジストリキーとレジストリ値、/SOFTWARE//内に情報を保存する。

さらに、一般的に使用されているネットワーク接続用プログラムに悪意あるコードをインジェクトさせて、WebやFTPの情報を窃取する。プログラム上で特定の悪意あるルーチンをインジェクトし、ネットワーク・トラフィックの送受信で使用される特定のライブラリをフックする。Internet ExplorerやFirefox、SmartFTPなどのアプリケーションの存在を常に確認し、プロセス名に応じて、特定のフック関数をインジェクトする。

FTP/電子メール・アプリケーション(WinSockのフックを実施)の場合、ws2_32.dllから「ws2_32_send」「ws2_32_connect」「ws2_32_close」と3つのAPIをフックする。

具体的には、ws2_32_connectに渡されるパラメータに対して、「FTP」と「MAIL」の文字を確認して、FTP/MAILトランザクションを監視する。FTP/MAILサーバのアドレスと接続ハンドルは、このフックによって窃取される。ws2_32_sendフックは、ユーザーの認証情報を窃取するため、「USER」と「PASS」の文字列を確認して、認証リクエストをキャプチャする。WinInetを使用するWebアプリケーションの場合、付録で示されたAPIをフックし、HTTP/Sセッションを監視する。

フックによって、マルウェアの構成ファイルで指定された文字列を探す。そして、これらの文字列から金融機関の情報が見つかった場合は、マルウェアは情報をC2サーバに送信する。

ドメイン生成アルゴリズム(DGA)が使用されており、最初のシードとなるC2のURLにはマルウェア本体内に暗号文字列としてハードコードされている。ハードコードされたURLと通信が確立しない場合、マルウェアはDGAを使用して適切なURLを見つける。

まずgoogle.comに接続してインターネットに接続し、次にSSLv3ハンドシェイクを通じて生成されたURLが証明書に対応しているかを確認する。これは有効なURLが見つかるまで継続して行われる。DGAは、前回使用したURLをシードとして、別のドメイン名を生成する。

持続性を保持するために、レジストリ構成を消去する方法がログオフ、再起動、シャットダウンの時に限られる。その際、「WM_QUERYENDSESSION」のウィンドウメッセージを監視するウィンドウプロシージャが用いられる。

レジストリの消去は、次のような方法で行われる。まず所定の文字列リストからランダムに生成されたファイル名を使用し、%ProgramFiles%(Windows XPの場合)、%AppData%(Windows Vistaの場合)にコピーを作成する(以下%dropfilepath%)。

次にウィンドウメッセージの監視用にウィンドウプロシージャを登録し、最後にウィンドウプロシージャがシステムに送られるウィンドウメッセージを確認し、悪意のあるルーチンを実行するため、WM_QUERYENDSESSIONのウィンドウメッセージを待機する。

システム・シャットダウンの監視

また、ランダムなファイル名の生成が行われており、ユニークなアルゴリズムを使用していることもわかった。多くのトロイの木馬は、ドロップされたファイル名に、でたらめな文字列を使うが、URLZoneの場合、ドロップされたファイルの名前の生成には、文字列の配列が使われている。ランダム文字列の生成アルゴリズムにエントロピーを付加するため、RDTSC命令と他の算術演算を組み合わせてランダムバイトを生成するサブルーチンを用意している。

URLZoneの攻撃を検知するため、setupapi.dllから事前に計算した文字列のハッシュにより、SetupDi APIを解決する、これらのAPIを使用することで、デバイスの情報を取り出す、取得したデバイス名に「vm」の文字列が含まれているかを確認するといった方法がある。

VMwareのサンドボックスの検出