最近起きた、マレーシアにおけるATM(現金自動預け払い機)の侵害では、いくつかの地元の銀行に大混乱を巻き起こした。報告されたところでは、おおよそ300万マレーシア・リンギット(約100万米ドル)が18台のATMから盗まれた。犯人がどのような方法で犯行を行ったのか詳細な情報はないが、地元のニュースで報じられたことによると、「ulssm.exe」というファイル名のマルウェアを犯人がインストールしたと警察は述べているとのことだ。このマルウェアは侵害されたATMで見つかった。ファイル名からすると、問題のマルウェアはシマンテック社が最初に発見した、「PadPin」として知られているものだと我々は考えている。このマルウェアに関する基本的な技術情報はこちらにある。マレーシアでATMのハッキングに使われたものとPadPinが同一のものであるかについて、我々には確信はない。しかしそれでも、当社にてPadPinのコードの分析を行ったところ、興味深い点が見つかった。

 当社のバックエンドである、サンプル集約システムをくまなく探し、すぐに前述のファイル名に関連するサンプルをいくつか特定した。このサンプルは典型的なWindowsコンピュータでは動作しなかったため、当社のサンプル自動分析システムは、当該サンプルが悪意のあるものと判定しなかった。このサンプルは、ATMやセルフサービス端末などWindows Embedded OSを実行するマシン上にあると思われるDLLライブラリを必要とするのだ。このDLLライブラリはXFS(Extension for Financial Services)と呼ばれる。

Malware import Extension for Financial Services library
画像:マルウェアはXFSライブラリをインポートしている

 コードの調査中、見慣れないAPIファンクション群を発見した。見たところ、上の画像で示したMSXFS.dll経由でインポートされるものだ。残念ながらマイクロソフトはこれらのAPIについて公式なドキュメントを提供しておらず、そのことがマルウェアのコードの理解を難しくしている。マルウェアコードのある部分に出くわすまで、疑問は続いた。前述のAPI群のうちの1つを用いて、ATMの暗証番号入力パッドとの通信チャネルの確立を試みる部分だ。基本的にその目的は、犯人が暗証番号入力パッドに入力したキーをリッスンし待機することだ。これは、シマンテックの記事で述べられている別のタスクを実行するためのものだ。言い換えると、マルウェアがサポートするコマンドは、暗証番号入力パッドで入力できるキーに限られる。たとえば、犯人が暗証番号入力パッドで「0」と入力すると、ATM自動機から現金の払い出しを始める。コードを分析しながら、我々は不思議に思い始めていた。暗証番号入力パッドのサービス名として何をAPIに提示すれば、プログラムが暗証番号入力パッドと通信できるようになるのか、マルウェアの作者はどうやって知ったのだろうか。これはもっともな疑問である。コード内で使われているサービス名は非常に独特なもので、マニュアル無しにサービス名を特定できることは、まったくもってありそうにない。

 そこで我々は、API名とサービス名を用いて、APIのマニュアルがないかWebで検索を行った。その結果は?百度に設置された専用の電子書籍のWebサイトにて、容易にマニュアルが見つかった。NCR社のプログラマ用のリファレンス・マニュアルのようだ。

WOSA/XFS Programer's Reference Manual

 マニュアル全体をざっと読んで、ATMとの通信を行うソフトウェアをどのようにプログラミングするかについて予備知識がない人にとっても、ATM自動機とやり取りをするプログラムを書くことは、お手軽になったと結論付けた。このドキュメントは、その上プログラマにコードのサンプルを提示するほど親切である。我々は偶然、次のことにも気付いた。マレーシアの銀行のATM自動機を標的にする件のマルウェアが、Windowsのスタートアップフォルダから「AptraDebug.lnk」というショートカットファイルを削除しようと試みている。それと同様に、感染したマシン上のローンチポイントのレジストリキー「AptraDebug」もだ。その目的はおそらく、マシン上で実行中のデフォルトのATMソフトウェアを無効化し、マシンが再起動する際にそれをマルウェアで置き換えることだ。このファイルとレジストリキーは、NCR APTRA XFSソフトウェアを参照しているように見受けられる。そのため当該マルウェアが、このセルフサービスのプラットフォーム用のソフトウェアを実行しているマシンのみを狙ったものと仮定しても間違いないだろう。

 結論として、PadPinの作者ではない何者かがこのドキュメントを漏えい、アップロードした可能性がある。そして、銀行の従業員で経験豊かなプログラマがこのマルウェアを書いたという説を排除してはならない。

 ドキュメントがインターネット上でいったん入手可能となったら、誰かがそれを閲覧したりダウンロードしたりするのを止めることは、現実的には不可能だ。しかし、こうした侵害が再び起こることを避けるために銀行が採用できる対策がある。USBやCD-ROMから直接ファイルを実行しないようにATM自動機を守ることは、もっとも単純な対応方法の1つだ。

Post by — Wayne