年に1回開催されるKaspersky Security Analyst Summit(SAS)では、サイバー脅威に関する調査研究の数々が発表されます。今年のSAS 2017では、Kaspersky Labのエキスパートであるセルゲイ・ゴロバーノフ(Sergey Golovanov)とイゴール・スメンコフ(Igor Soumenkov)が、ATMからの現金強奪に関する3つの興味深い事件について講演しました。
1. ATMitch — 遠隔操作マルウェア
被害に遭ったATMは空っぽでした。銀行のフォレンジックチームは、悪意あるファイルも、怪しい指紋も、ATMを物理的に操作した痕跡も、余分な回路基板も、ATMの乗っ取りに使われる可能性のある装置も、何一つ発見できませんでした。
見つけることができたのは、kl.txtおよびlogfile.txtというログファイルだけ。この「kl」がKL(Kaspersky Labを略すとそうなります)と何か関係があるのではと考えたフォレンジックチームが当社に連絡してきたところから、本件の調査がスタートしました。
わずかに残された手掛かりである例のファイルを調査した結果、このログファイルの内容からYARAルールを作成することに成功しました。YARAというのは、マルウェアの検知および解析に使用するツールです。当社のリサーチャーは、マルウェアの公開リポジトリを検索するクエリを作成して、元々のマルウェアを探し出そうとしたのでした。果たして翌日、tv.dllというDLLが見つかりました。tv.dllは、実環境でこれまでに2回発見されていました。ロシアで1回、カザフスタンで1回です。もつれた糸をほどきはじめるには、これで十分でした。
Kaspersky LabのリサーチャーがこのDLLを徹底的に調査した結果、攻撃をリバースエンジニアリングすることに成功し、実際の攻撃方法を解明することができました。それだけでなく、当社のテストラボにあるテスト用ATMで、作り物のお金を使って攻撃を再現することに成功しました。調査で明らかになったのは、以下のようなことでした。
ATMitchの仕組み
攻撃の足掛かりとして利用されたのは、よく知られているにもかかわらず、まだパッチの当てられていない脆弱性でした。攻撃者はこの脆弱性を悪用して、標的とする銀行のサーバーに侵入しました(ソフトウェアにアップデートを適用することが重要性なのは、まさにこれが理由です)。
攻撃者はオープンソースコードと一般的なツールを使って銀行のコンピューターを感染させましたが、犯罪者が作成したマルウェアはコンピューターのハードディスクではなくメモリの中に隠れていました。ファイルが存在しないことから、基本的にセキュリティ製品からマルウェアが見えず、検知は極めて困難な状態でした。さらに悪いことに、システムが再起動されたときにマルウェアの痕跡はほとんどすべて消え去っていました。
その後、攻撃者は指令サーバーへの接続を確立し、リモートでATMにソフトウェアをインストールしました。
問題のマルウェア「ATMitch」は、リモートコントロールツールを使って銀行から直接ATMにインストールされ、実行されていました。このマルウェアは正規のアップデートに見えたので、銀行のセキュリティソリューションは警告を発しませんでした。その後、ATMitchはcommand.txtというファイルを探し始めます。このファイルには、ATMを制御する1文字のコマンドが記述されていました。たとえば、「O」は「open cash dispenser(キャッシュディスペンサーを開け)」というコマンドです。
さて、ここからが本番です。ATMitchはまず、ATMに入っている現金の総額を問い合わせるコマンドを送り、続いて「n枚の紙幣を吐き出せ」というコマンドを送ります。その頃までにマネーミュール(現金の運び屋)が現場に到着していて、出てきたお金を持って立ち去るという手順でした。
犯罪者は痕跡を一切残さないようにしたため、ATMのハードディスクに実行ファイルはありませんでした。お金が引き出された後、ATMitchはこの作戦に関する情報をすべてログファイルに書き込み、command.txtファイルを消し去ります。
ATMitchは、現在使用されているATMの多くにインストール可能です。ATMでXFSライブラリがサポートされていることが唯一の条件ですが、ほとんどのATMがこの要件を満たしています。
ATMitchマルウェアの詳細については、Securelist(英語記事)をご覧ください。
2. Bl@ckb0x_m@g1k — シンプルでスマートな手口
この事例も銀行からの依頼で始まったものですが、ATMitchほど長い話ではありません。この事例でも、ATMのログは消去されていました。ハードディスクは無傷でしたが、攻撃者がCCTV監視カメラをガムテープでふさいでしまったので何が起こったのか映っていませんでした。
当社は銀行に依頼して、このATMをKaspersky Labのオフィスへ運んでもらいました。これを分解してみたところ、驚いたことに、ATMのUSBハブにBluetoothアダプターが接続されていました。さらに、ハードディスクドライブにはBluetoothキーボードのドライバーが入っていました。
手口を再現するのは単純な作業でした。何者かがATMにBluetoothアダプターを設置。そして、その記録が消去されるまで3か月間待ちます。その後、犯罪者はBluetoothキーボードを持って戻ってきて、防犯カメラにテープを貼り、このキーボードを使ってATMをサービスモードで再起動し、最後にATMを空にする操作を実行したのです。
ATMからの金銭強奪に重機を使う時代から、ハッキングで大金を引き出す時代へと変わりつつあります… #TheSAS2016 https://t.co/JAoVDXnJnx pic.twitter.com/tbzfQWtbGP
— カスペルスキー 公式 (@kaspersky_japan) March 2, 2016
3. ドリル — 物理的に穴を開ける
遠隔操作マルウェアやBluetoothキーボードを使う手口は洗練されていると言ってもよいかもしれませんが、この事例は違います。
この話の発端も、他の2つと同じです。ある銀行がATM強盗の調査の件で、当社に連絡をしてきました。この件では、フォレンジックチームがはっきりとした物理的介入の証拠を発見していました。テンキーの近くに、直径約4cmの穴が、ドリルできれいに丸く開けられていたのです。手がかりはそれだけです。ATMは頑丈そうに見えますが、プラスチック製の部品もあります。こういう部品にドリルで穴を開けるのは難しくありません。
短期間のうちに、ロシアとヨーロッパで同じような事件が数件起こりました。ラップトップとケーブル数本を持った容疑者が警察に捕まったとき、漠然としていた状況が焦点を結び始めました。
当社のラボに持ち込んだATMを分解して、攻撃者がドリルの穴から何にアクセスしようとしていたのか調査したところ、見つかったのは10ピンヘッダーです。このヘッダーは、ATMの全コンポーネント(内蔵のコンピューターからキャッシュディスペンサーに至るまで)を相互接続するバスに接続されていました。
また、一瞬で解読できるような極めて弱い暗号化方式が使われていることも判明しました。
(状況をまとめましょう。ATMのどれか1つのパーツから、他のすべてのパーツを制御することが可能です。パーツとパーツの間で認証は行われないため、どのパーツも他のパーツに気づかれずに交換できます。また、これらのパーツの制御コマンドを理解するのは比較的簡単です。)
当社のリサーチャーは、シリアルバスに接続してATMを制御するシンプルな回路基板を作成しました(なお、作成にかかったコストは、15ドル程度の費用とわずかな時間だけです)。これを使って、テスト用ATMに(作り物の)現金を吐き出させることに成功しました。犯罪者たちも、現金が入った本物のATMで同じ技を使ったと考えられます。しかし、そのためにはラップトップが必要でしたが。
ATMから直接金銭を盗むタイプの犯罪が、海外を中心に度々見られています。どういった手口が具体的にあり得るのか、そしてどういう条件下でそれら手口が機能するのかを知ることが、防御の一助となります。 https://t.co/eLdk5C1ocM pic.twitter.com/40mEyjbgby
— カスペルスキー 公式 (@kaspersky_japan) October 7, 2016
調査結果を銀行に知らせましたが、これで万事解決とはいきませんでした。スメンコフが指摘するとおり、ATMは遠隔操作でアップデートできません。パッチを適用するには、ハードウェアをアップデートする必要があります。つまり、技術者をATMのところに派遣しなければなりません。その数たるや。