アメリカに忍び寄るATMジャックポッティング攻撃。

f:id:nanashi0x:20180206121337p:plain



「大当たり」が出続けてお金を吐き出し続けるカジノのスロットマシンを「ジャックポット」と呼ぶ。

実はサイバーセキュリティの分野にもジャックポットは存在する。

ATMだ。

ATMをエクスプロイトして行うジャックポッティング攻撃は、これまで世界各地で行われてきた攻撃手法である。

しかし、2017年夏に行われたセキュリティカンファレンス「Black Hat」行われたデモンストレーションによって更に注目を集めた。

 

f:id:nanashi0x:20180204171814j:plain

(BlackHatで行われたデモンストレーション。WIREDより引用。)

 

実は、何故かアメリカではジャックポッティング攻撃の被害件数は少なかった。

だが最近になってアメリカのATMメーカーによって注意喚起が出されるなど、アメリカでも警戒感が高まっている。

そこで今回の記事では、アメリカで問題視され始めたATMジャックポッティングに関して、以下の項目にまとめながら詳しく説明していく。

 

  • ジャックポッティング攻撃とは何か
  • ジャックポッティング攻撃に使われるマルウェアについて
  • ジャックポッティング攻撃の対策方法

 

それでは始めましょう! 

ジャックポッティング攻撃とは

ジャックポッティング攻撃を起こすためには、「物理的なATMへのアクセス」し、その後に「マルウェアのインストール」を実施する必要がある。

ATM攻撃用マルウェアは、ATM機器内のPCにインストールされると、ATMのPINコード入力用パッドか、攻撃者が持参した外付けキーボードからの入力を受け付ける。

攻撃者は端末の出金用モジュールに対してコマンドを実行し、ATM内にある現金を引き出すのだ。

このセクションでは攻撃手法の大まか流れについての説明に留める。マルウェアの技術的な説明は後半のセクションで詳細にする。

 

数年かけてアメリカに接近した「ATMジャックポッティング攻撃」

ATMジャックポッティング攻撃が最初に確認されたのはロシアと言われている。

そこからヨーロッパとアジアに広がり、南アメリカ、メキシコへと広がっていったようだ。

メキシコで発生したジャックポッティング攻撃の手順とは

2013年にメキシコで発生したジャックポッティング攻撃被害に使われた手法を簡単な手順で説明すると以下のようになる。

  1. 攻撃者はATM上部にある蓋をこじ開けてATM内部のPCに接続する
  2. PCのHDDを攻撃者が用意したHDDに入れ替える
  3. 医療用の内視鏡を使ってATM機械の奥深くにあるリセットボタンを押す

攻撃者が用意したHDDには、ATM内のPC内にインストールされたOSに加えてマルウェアが仕込まれているとされている。

 

ATMジャックポッティング攻撃で使用されるマルウェアについて

ATMジャックポッティング攻撃で使用されるマルウェアは多岐に渡る。

以下は過去に確認されたマルウェアのリストである。(リンクはBleepingComputerの関連ニュース記事)

これらのリストの内、アメリカの金融機関によって注意喚起が行われているマルウェアはPloutusである。

Ploutusについては、後半のセクションで詳しく説明する。

 

アメリカでジャックポッティング攻撃の注意喚起が行われ始める

2018年1月26日、アメリカに拠点を持つATM製造を専門とする大企業のNCRは、顧客に対してATMジャックポッティング攻撃に関する注意喚起を行なった。

ジャックポッティング攻撃はNCR製のATMに限定されておらず、どのメーカーが製造したATMに対しても発生しうる攻撃ではある。

しかしNCRはセキュリティ研究者のKrebs氏の行なったインタビューに対して、以下のように回答した。

(ジャックポッティング攻撃は)業界全体の問題と受け止めている。これを機に適切なステップを踏んで顧客のATMを攻撃から守れるように対策を打つべきだ。

NCRの注意喚起では、同社のATMをエクスプロイトするATMマルウェアがどういった種類なのかは明確になっていない。

しかしアメリカのシークレットサービス(明確な情報源は不明)によると、「ある犯罪組織はスタンドアローン型ATM機器を狙った攻撃にはPloutusを使用している」とKrebs氏に回答している。

また、Krebs氏がDiebold Nixdorfから入手したセキュリティレポートによれば、2013年にメキシコで発生したジャックポッティング攻撃と同じ手法を使って攻撃が行われているようだ。

ちなみにDiebold Nixdorfとは、NCR同様にATM等の金融業界向けのソリューション・サービスを提供する企業だ。

ジャックポッティング攻撃の対象となるATMモデル

ATMジャックポッティング攻撃の対象になるとされるモデルは以下。

  • Opteva 500
  • Opteva 700
参考記事(外部リンク)

これらのATMはスタンドアローン型で、主に薬局、ショッピングセンター、ドライブスルー型ATM等に設置されるような端末だ。

既に被害に遭ったケースもあるようだ。

その際は、ATM修理業者として変装した実行犯が、ATMの蓋を開け、ATMで使われているOSのミラーOSをインストールしたノートパソコンと携帯電話を接続した。

興味深いことに、実行犯は携帯電話に以下のように内視鏡を接続してATMの筐体内で接続口を見つけて操作を行なったとされている。

 

f:id:nanashi0x:20180204171933p:plain

(スマホに接続された内視鏡。KrebsOnSecurityより引用。)

実行犯が接続を終えると、ATMの画面には”Out of Service”という画面が表示される。

そして遠隔地にいる主犯に連絡をし、遠隔から悪意のある命令文を含むコードを実行してATM筐体から出金する。

Krebsがシークレットサービスのスタッフから聞いた話では、「過去に発生したPloutusを使用したジャックポッティング攻撃では、毎23秒に40枚の貨幣を出金していた」とされる。

アメリカで既に逮捕者も確認

2018年2月6日にロイター通信社が報じたニュースによれば、既に2人の青年がATMジャックポッティング攻撃の犯行に及んで逮捕された。

彼らが逮捕されたのは1月27日で、逮捕時点で二人は総額$9,000を全て20ドル札で保有していたという。(※注釈:アメリカのATMでは20ドル札が最高単位です。)

また、警察は逮捕時の取り調べで、その二人からATMジャックポッティング攻撃に使ったとされる道具を押収した。

ATMジャックポッティングを引き起こすPloutusとは

Ploutusは2013年にメキシコで最初に確認された。

Ploutusに感染したATMを操作するためには2種類の方法があるようだ。

  • 外付けキーボードを接続
  • SMSメッセージ

外付けキーボードを接続してコマンドを実行する方法は他のATMマルウェアでも確認されていた操作方法だが、SMSを送信する手法はPloutusが初めてのようだ。

ちなみにPloutusには、メインのPloutousの他に、派生したPloutus.Dが存在する。

Ploutusを使うATMジャックポッティング攻撃には2つの手法がある。

  • SMSメッセージを使う手法
  • 外付けキーボードを接続する手法

それぞれについて説明していきたい。

外付けキーボードを接続してATMをエクスプロイトする手法

ATMから出金する為には、以下の様にPS/2又はUSBポートに外付けキーボードを接続する。

f:id:nanashi0x:20180204172058p:plain

(ATM上部の蓋を外して内部のPCに外付けキーボードを接続している。FireEyeより引用。)

マルウェアのランチャーがATMにインストールされると、まずキーボードを認識する。

ランチャーの解析画像を見ると、攻撃者は「Fnキーのコンビネーション」で任意の操作を実行できるようだ。

f:id:nanashi0x:20180204172142p:plain

(攻撃者のFnキーの入力コンビネーションによって任意のクラスを呼び出している。FireEyeより引用。)

 

尚、オリジナルのPloutusではFnキーのコンビネーションのみの入力を受け付けるが、Ploutus.DはATM筐体に付属するキーパッドから数字の入力も受け付ける。

ランチャーで実行できる主なタスク、及びそれに関わる.exeファイルは以下。

  • ランチャーのリソースセクションから読み込んでプログラムをスタートする
    • C:\Program Files\Diebold\Agilis Startup\AgilisShellStart.exe
    • Main.exe
    • XFSConsole.exe
  • プロセスをKillする
    • NHOSTSVC.exe
    • AgilisConfigurationUtility.exe
    • XFSConsole.exe
  • ファイルを削除する
    • NetOp.LOG – Secure Remote Management solution
  • 端末をリブートする
    • “wmic os where Primary='TRUE' reboot

ランチャーの中身はReactorを使用して難読化されている。リバースエンジニアリング対策である。

f:id:nanashi0x:20180204172238p:plain

(難読されたコード。FireEyeのブログ記事より引用。)

任意のFnキーのコンビネーションを使って起動すると、GUIが立ち上がる。

そこで予めプログラムされた8桁の数字を入力するとATM筐体内のお金を出金操作を開始する。

攻撃者はATMから出金する金額と、出金操作を何回リピートするか入力出来る。

リピート回数を入力するのは、出金できる回数に制限がある事が原因だろう。

f:id:nanashi0x:20180204172357p:plain

(攻撃者からの入力を受け付けるコード。FireEyeより引用。)

 

SMSメッセージを使うATMジャックポッティング攻撃

SMSメッセージを使ったATMへのコマンド入力の簡単な流れはこうだ。

  • USBケーブルを使ってスマホをATMに接続する
  • 別のスマホから、ATMに接続したスマホへ定められたフォーマットでSMSメッセージを送信する
  • ATMに接続されたスマホは受信したSMSメッセージを読み取り、ネットワークパケットに変換してUSBケーブル経由でATM端末に送信する

もう少し具体的に見ていこう。

 

ATMにインストールされたマルウェアのモジュールにNetwork Packet Monitor(以下、NPM)が含まれる。

NPMの役割はATM内で発生する全てのネットワークトラフィックを監視することだ。

NPMの監視下にあるATMが、TCP/UDPパケットを攻撃者のスマホから受信するとNPMが受信したパケットをパース(解析→変換)する。

NPMがパケットをパースする時に探すのは”5449610000583686”という数列で、この数列を検知すると、それ以降にある16桁の数字を読み取る。

そして検知した数列と、以降の16桁の数字を組み合わせて以下のようなコマンドをPloutusに対して実行する。

cmd.exe /c PLOUTOS.EXE 5449610000583686=2836957412536985

※数字はあくまで例で、実際のものとは異なる。

 

f:id:nanashi0x:20180204172501p:plain

(SMSを使ってATMから出金する手順。Symantecより引用。)

何故SMSメッセージでエクスプロイトするのか?

SMSメッセージによるエクスプロイト機能が実装されている理由を理解する為に、ATMジャックポッティング攻撃の犯人について考える必要がある。

ATMジャックポッティング攻撃を成功させる為には、組織として犯行を計画する。

多くの場合主犯と実行犯に分かれ、実行犯はネットで募集された「雇われ人」の傾向にある。

過去のバージョンのPloutusでは、実行犯がATMの前で全ての操作を行なってATM無いからお金を奪い取る必要があった。

その為実行犯が主犯を裏切り、ATMから引き出したお金を自分の懐にいれるケースが後を絶たなかった。

そのようなリスクを減らすために実装されたのがSMSによるエクスプロイトコードの実行だ。

実行犯と主犯は電話でやり取りを行い、リアルタイムで遠隔からSMSメッセージを送信するだけでATMジャックポッティング攻撃を行えるのだ。

おまけ:ATMをまるごと盗む手法もある

f:id:nanashi0x:20180204172544j:plain

メキシコではATM端末をまるごと盗んでいくような被害も発生した事がある。

日本だとこのような大胆な手口を行う犯罪は見ないが、海外ではこのような大胆な手口で犯罪を行う人もいる。

 

考えられる日本への影響

日本には以下の「三大大手ATMメーカー」が存在する。

この三社が日本のATM市場の90%以上のシェアを誇っている。

本記事で紹介したPloutusは、Diebold社製のATMを対象に設計されたマルウェアである。

つまり国内のDiebold社製ATMの割合が低いことから、現段階では日本全体を騒ぎにするような問題へと発展する可能性は低い。

しかしPloutus自体も日々バージョンアップを重ねており、Diebold社以外のメーカーに対して適用するようになる可能性もある。

日本のATMメーカー三社には、是非Ploutusがバージョンアップを重ねる前に対策を講じてもらいたいところだ。

推奨できるジャックポッティング攻撃の対抗策

1. ATMへの物理的なアクセスに関して

  • ATM内にあるPC端末を隠すカバーに適切かつ頑丈なロックを施す。
  • ATMが設置されているエリアに適切な人員配置を行う
  • ATMの金庫管理業者、及び修理業者に対して適切なアクセスコントロールを施す。

2. 現金モジュールを防護する為に

  • 最新のファームウェアにアップデートする事
  • 以下の安全な物理認証技術を搭載する
    • Agilis® XFS for Opteva®, Advanced Function Dispenser (AFD) Version 4.1.41 incl.AFD
      • Application Firmware Version - 6.0.1.0 (or later)
      • Agilis® XFS for Opteva®, Core Version 4.1.59 (or later)
      • Optional – OSD+/DSST 3.3.30 (or later)

3. その他に考えられる対策

  • ATMをコントロールする端末を格納する部位(上部)の開閉のチェック
  • リアルタイムでハードウェア/ソフトウェアの挙動を監視
  • 通常の操作パターンとは異なった不正操作が行われていないか調査の実施
  • ATM端末にインストールされたOSの最新の状態にアップデートする