トレンドマイクロでは、新たな ATMマルウェアファミリ「Alice」を確認しました。「Alice」は、弊社がこれまでに確認した ATMマルウェアファミリの中でも、機能を必要最小限に絞った点が特徴的です。他の ATMマルウェアファミリと異なり、現金自動預け払い機(Automatic Teller Machine、ATM端末)のテンキーを介した操作もできず、情報窃取機能も備えておらず、ATM端末から現金を窃取することだけが目的のようです。弊社ではこの ATMマルウェアファミリを「BKDR_ALICE.A」として検出対応しています。
「Alice」は2016年11月、欧州刑事警察機構の欧州サイバー犯罪センター(EC3)と弊社との共同調査中に初めて確認されました。この調査でハッシュ値のリストを収集し、さらに各ハッシュ値に対応するファイルを不審ファイル分析サービスサイト「VirusTotal」から取得しました。これらのバイナリの 1つは当初、ATMマルウェアファミリ「Padpin」の新亜種と考えられていましたが、リバース解析の結果、新しいファミリの一部であることが判明し、「Alice」と命名しました。
ATMマルウェアは 2007年頃から存在が知られていましたが、その後の 9年間で確認されたファミリは、今回の「Alice」を含めて 8つです。今回の新ファミリ発見は、さまざまなプラットフォームへの攻撃が増加する中、マルウェア作成者の志向が明らかになった点で注目に値します。金銭を扱う ATM端末が標的となる点でも深刻であり、この傾向はこの 2~3年で大きく加速し、多数のマルウェアファミリ確認に至っています。
■詳細
ファミリ名「Alice」は、このマルウェアのプロパティに掲載されたバージョン情報から命名されました。「Description」の項目に「Project Alice」と記されています。
図1:検体ファイル「Alice」のプロパティ
PEファイルへのコンパイル時期や「VirusTotal」への提供日等から、「Alice」は 2014年10月から感染報告されていたことが分かります。そして今回の検体は、「VMProtect」という市販のパッカー・難読化ツールに含まれている状態で確認されました。「VMProject」は、通常、組み込まれたバイナリファイルがデバッガ内で実行されているかをチェックし、実行されている場合、以下のエラーメッセージを表示します。エラーメッセージには「ファイルが破損しています。このプログラムは、操作されているか、ウイルスに感染しているか、壊れている可能性があり、正しく実行されません」という文言が英語で記されています。
図2:エラーメッセージ
「Alice」は、不正ファイル実行前にまず、ATM端末内であることを確実にするため、自身が正規の「金融・流通業界向け端末規格(Extensions for Financial Services、XFS)」の環境にいるかをチェックします。この動作は、以下のレジストリキーの有無を確認することで行われます。
- HKLM\SOFTWARE\XFS
- HKLM\SOFTWARE\XFS\TRCERR
これらのレジストリキーが存在しない場合、「Alice」は、目的の環境にいないと判断して自身を削除します。また、インストールに際して以下の DLLファイルを必要とします。
- MSXFS.dll
- XFS_CONF.dll
- XFS_SUPP.dll
XFS環境にいることが確認された場合、「Alice」は、認証入力画面「Input PIN-code for access!」を表示します。XFS環境にいない場合は、エラーメッセージ「Project Alice」を表示します。
図3および4:実行後、いずれかのメッセージが表示される。
左側は、XFS環境にいることが確認された場合に表示される認証画面
右側は、XFS環境にいない場合に表示されるエラーメッセージ
「Alice」は実行されるとまず、5メガバイト強の空ファイル ”xfs_supp.sys” およびエラーログファイル ”TRCERR.LOG” をルートディレクトリに作成します。前者のファイルは、ゼロで満たされており何らかのデータが書き込まれることはありません。後者のファイル “TRCERR.LOG” は、実行中に発生したエラーを記録するログファイルとして使用されます。つまり、XFS規格のすべての APIが呼び出される際、それぞれに対応するメッセージやエラーが記録されます。このファイルはアンインストール時にも削除されません。将来的なトラブルシューティングのために保存されるのか、もしくはマルウェア作成者が削除対応を忘れただけなのかもしれません。
そして「Alice」は、周辺機器「CurrencyDispenser1」へ接続します。「CurrencyDispenser1」は XFS環境における「現金取り出し口」のシステム上の名称です。「Alice」は、これ以外に他の ATM端末ハードウェアに接続を試みることはありません。したがって犯罪者が PINパッドを介して何らかのコマンドを指示することもできません。
なお、「Alice」は「CurrencyDispenser1」への接続が失敗しても自身を削除することはありません。代わりにエラーを記録するだけです。
「Alice」へコマンドを指示するには、図3で示された認証画面に PINコードを入力します。コマンドには、以下のような 3つのコマンドが用意されています。
PINコード | コマンドの詳細 |
1010100 | 同じディレクトリ内にファイル “sd.bat” を復号・作成する。このバッチフィルは「Alice」の駆除やアンインストールに利用される。 |
0 | プログラムを終了し、” sd.bat” を実行する。また、” xfs_supp.sys” を削除する。 |
ATM端末 ID に基づく特定4桁の PIN番号 | 「Operator Panel(操作画面)」を開く。 |
PINコードを何度か間違って入力すると以下のメッセージが表示され、「Alice」は自身を削除します。メッセージには「PINコード入力限度数を超えました!プログラムは実行できません!」と英語で記されています。
図5:エラーメッセージ
正しい PINコードを入力すると、「Alice」は「Operator Panel(操作画面)」を開きます。この画面には、現金が保管された ATM端末内の各種カセットが表示されます。攻撃者は、ここからいつでも現金を窃取することができます(今回の検体はテスト環境で実行されたため、カセットは表示されていません)。
図6:操作画面
カセットID として「0」もしくは「9」を入力すると、ファイル “sd.bat” が実行され、ファイル ”xfs_supp.sys” が削除されます。
現金引き出しを担当する「出し子」が操作画面にカセット番号を入力すると、「現金引き出し」のコマンドが「WFSExecute API」を介して周辺機器「CurrencyDispenser1」に送信され、カセット内に保管された現金が引き出されます。通常、ATM端末で一度に引き出しできる紙幣数は 40枚が限度であるため、出し子は、同じ操作を何度も繰り返して、カセット内の現金がなくなるまで続けます。各カセット内に保管された現金の数量は、画面にも表示されるため、出し子は、どれだけ繰り返せば現金を完全に取り出せるかも確認できます。
「Alice」は、通常、感染したシステム内で “taskmgr.exe” のファイル名で確認されます。これは、この種のマルウェアに一貫した手法でないものの、犯罪者は「Windows Task Manager」を「Alice」に手動で置き換えようとしていると考えられます。これにより、「Windows Task Manager」へのコマンドを「Alice」へのものに置き換えることが可能になります。
■結論
「Alice」で注目すべき特徴は次のとおりとなります。まず、機能が最少限に絞られた点です。弊社で解析した他の ATMマルウェアファミリと異なり、この ATMマルウェアファミリは、ATM端末内の現金を無難に引き出せる機能のみに限定されています。また、接続先も、周辺機器「CurrencyDispenser1」だけで、ATM端末の PINパッドを用いることもありません。理由としては恐らく「Alice」を利用する犯罪者は、ATM端末へ物理的に近づき、USB や CD-ROM を介して感染させ、ATM端末のメインボードにキーボードを接続させ、そこから(PINパッドを用いずに)操作することを意図しているからと考えられます。
ただしもう 1つ、遠隔でデスクトップPC からネットワークを介してメニューを操作する目的の可能性も考えられます。この手法は、タイで発生したハッキング事例やその他の最近の事例と類似しています。しかし現時点で「Alice」がこの手法で利用された事例は確認されていません。現金引き出しの前に PINコード入力が求められる点は、「Alice」が対面操作による攻撃のみを想定しているからだと考えられます。また、インストールやアンインストールに際して複雑な手順はなく、適正環境での実行ファイル機能だけに限定されています。
「Alice」のユーザ認証は、他の ATMマルウェアファミリと似ています。攻撃を担当する出し子は、依頼元の犯罪集団から PINコードを受けとり、これによりユーザ認証を行ないます。出し子が最初に入力すべきコマンドは削除用スクリプトです。そして各ATM端末に特化した PINコードを入力し、現金引き出し用操作画面へアクセスします。
PINコードは検体ごとに異なっています。これは、出し子が PINコードを誰かと共有して依頼元の犯罪集団に無許可で利用することを回避するためか、出し子の行動を追跡するためか、もしくは両方の目的のためのようです。弊社が取得した検体の PINコードは 4桁で、簡単に変更できるようになっていました。総当り式に何度も PINコードを入力しようとすると、入力限度回数により、このマルウェアは自身を削除してしまいます。
「Alice」は、XFS環境であるかどうを確認するだけで、その他のハードウェア関連の確認作業は行ないません。これは、このマルウェアが「Microsoft の XSF環境である限り、あらゆるベンダのハードウェア設定下で実行できる」という目的で設計されているからだと考えられます。
もう1つの特徴はパッカーの利用です。「Alice」は、市販パッカー・難読化ツール「VMProtect」を利用します。ただしこれは「Alice」だけの特徴ではありません。ATMマルウェア「GreenDispenser」は「Themida」を利用し、ATMマルウェア「Ploutus」は「Phoenix Protector」などを利用します。
パッカーで圧縮されることで、解析やリバースエンジニアリングがより困難になります。この手法は、一般的なマルウェアにも長らく利用され、現在は、マルウェア用にカスタマイズされたパッカーまで出回っています。そうした中、ATMマルウェア作成者は、なぜ今さらこのような圧縮や難読化の手法を用いているのでしょうか。
最近まで ATMマルウェアは、少数の犯罪者集団が特別な目的で利用したニッチな領域でした。しかし今日、ATMマルウェアは、一般に広く知られ始め、主要なマルウェアに分類されるようになってきました。これに伴い、多くのセキュリティ企業が、さまざまな ATMマルウェアについて分析や議論を展開し始めました。こうした中、犯罪者側は、セキュリティ業界で不用意に検知されるのを避けるため、改めて隠ぺい手法の必要性を感じ始めたのでしょう。現在、ATMマルウェアは、市販のパッカーを利用していますが、今後、よりカスタマイズ化されたパッカーや難読化の手法が用いられると予想されます。
技術的詳細、ATMマルウェアファミリ比較表および侵入の痕跡(Indicators of Compromise、IOC)については、こちらを参照ください。
参考記事:
- 「Alice: A Lightweight, Compact, No-Nonsense ATM Malware」
by David Sancho (Senior Threat Researcher) and Numaan Huq (Senior Threat Researcher)
翻訳:与那城 務(Core Technology Marketing, TrendLabs)