【温故知新シリーズ】 脅威のスポットライト:Flokibot PoSマルウェア

By The Cylance Threat Research Team

温故知新シリーズブログでは、新たな知見を広げるために過去に米国でリリースされたブログを翻訳しています。本ブログ記事は、2017年3月1日に米国で公開された抄訳版です。原文はこちらからご覧頂けます。

概要

ここ数年、PoS(Point-of-Sale)の情報漏洩が紙面を賑わせています。その例として、特に注目を浴びた2013年末のTargetへの攻撃、2014年の半ばから終わりにかけてのHome Depotへの攻撃、2016年の初めのWendy’sへの攻撃、そしてごく最近では、今年1月のArby’sへの攻撃などが挙げられます。一般に、PoS攻撃で使用されるマルウェアの目的は、メモリ内にある支払いカードのデータを特定し、そのデータを盗み出して、攻撃者が制御する外部のサーバーへ送信することです。

背景情報

米国の連邦準備制度が発行した2016年のレポートによると、同年には現金以外の支払いの推定総額が178兆ドルに達しており、2012年以降、現金以外の支払いの推定総額は毎年5.3%の割合で増えています。こうした統計を踏まえると、盗まれた支払いカードの情報がダークウェブ上で盛んに取り引きされていると聞いても驚くに値しません。

2015年の調査では、BitGlassが作成し、追跡した偽の金融情報は、およそ1,100回も閲覧され、22カ国に広がりました。Arbor NetworksFlashpoint が最近発表したレポートには、先頃のブラジルのエンドポイント(具体的には、ポルトガル語バージョンのWindows 7がインストールされたもの)を標的にしたFlokibotというPoSマルウェアをはじめとする、最近のキャンペーンについて記載されています。この2つのレポートでは、ファイルの内訳を明らかにし、攻撃チェーンについて詳しく分析しています。分析内容については、ここでは触れません。

RAMスクレイピングに対する保護の検証

CylancePROTECT®  は、この種のPoS脅威で使用されるRAMスクレイピング手法を積極的にブロックします。そのため、サイランスの脅威ガイダンスチームは、テスト環境での CylancePROTECTによるFlokibotへの対処方法の発見に努めています。

最初に、クレジットカードやデビットカードにエンコードされているデータの種類について簡単に説明します。金融決済カードの裏面にある磁気ストライプには、トラック1、トラック2、トラック3(ほとんど使用されません)の3つのデータ「トラック」があります。トラック1には、カード名義人の氏名、カード番号、有効期限、CVV番号などの情報が格納されています。トラック2にもカード名義人の氏名と一部の照合情報を除き、ほぼ同じ情報が格納されています。全体的なデータ量は少ないですが、偽の支払いカードの生成に必要なデータが処理されます。そのため、トラック2に格納されている情報が攻撃者の主な標的となります。トラック2に格納されている情報の形式を以下に示します。

Fig1_Floikibot

図1:トラック2のデータ(Duo Security提供の画像: https://duo.com/blog/pos-malware-a-pci-nightmare)

Flokibotの最近のサンプルを見つけて、CylancePROTECTのバージョン1400をインストールしたオンラインのテスト環境にコピーすると、Flokibotは実行前に隔離されました。

Fig2_Floikibot

図2:実行前に隔離されたマルウェア

そのあと、CylancePROTECTをオフラインにすると、ふたたび同じ結果が得られました。つまり、ファイルは実行前に隔離されたのです(下図参照)。

Fig3_Floikibot

図3:オフラインモードで実行前に隔離されたマルウェア

ここで私たちが興味を抱いたのは、CylancePROTECTに搭載された、メモリ防御以外の保護機能をすべて除去したら、結果はどうなるのかということでした。そこで、CylancePROTECTをインストールした、ポルトガル語バージョンの32ビットWindows 7 Professionalでテスト環境を構築しました。

ユーザーがLuhn Algorithmに準拠したクレジットカード番号を生成できるWebサイトがいくつかあります。Luhnアルゴリズムは、主としてクレジットカード番号やデビットカード番号の検証に使用されるチェックサム方式です。サイランスのチームは、テスト用に偽のクレジットカード番号を生成するために、こうしたWebサイトの1つを利用しました。

VISA                                    MASTERCARD

4556920012834452                5341701240865907

4929028434080223                5301666338130225

4532321332286920                5414957219825866

4916294386558609               5181854712024975

これらの番号を使用して、トラック2に格納されている情報のフォーマット構造に準拠した文字列を生成しました。以下にその例を示します。

;xxxxxxxxxxxxxxxx=yymm1200123400000000?*

ここで、「x」は16桁のカード番号を表し、「yymm」はカードの有効期限(年と月)を表します。

ファイルが実行されると、explorer.exeにインジェクションされるため、このプロセスのメモリ空間にあるクレジットカード番号は、Flokibotによるメモリスクレイピング攻撃にさらされやすくなります。つまり、前述のフォーマットに従った文字列を生成して、開いているメモ帳のドキュメントに入力すれば、このファイルを実行できるはずです。CylancePROTECTに組み込まれている、RAMスクレイピングに対する保護機能は、メモリ内のトラック2のデータを認識して警告をトリガします。

テスト環境では、メモリ防御を除くすべての保護機能を無効にしました。以下の図は、テストの実行前セットアップを示しています(繰り返しになりますが、ポルトガル語バージョンの32ビットWindows 7 Professionalを使用しています)。

 Fig4_Floikibot

図4:実行前セットアップ

この時点でファイルを実行しました。メモリ内のトラック2のデータが正しくフォーマットされており、マルウェアが実行されると、RAMスクレイピングに対する保護機能により警告がトリガされることが期待されます。そして、結果はそのとおりになるのです。以下のスクリーンショットが示すように、警告(Violation: TrackDataRead)が表示されています。

 Fig5_Floikibot

図5:実行後のTrackDataRead違反の警告

まとめ

今回のデモは、CylancePROTECTがオンラインとオフラインの両モードで脅威を隔離できるだけでなく、メモリ防御に組み込まれたRAMスクレイピングに対する保護機能も、メモリ内にあるトラック2の支払いカードのデータを認識してFlokibot PoSマルウェアの攻撃を軽減するのに役立つことを示しています。エンドユーザーにとっては、エンドポイントでメモリ防御を有効にして、PoSメモリスクレイピング攻撃を防御できるようにすることが重要になります。

サイランスのエンドポイント防御製品CylancePROTECTをご利用のお客様は、この攻撃からすでに防御されています。CylancePROTECTをご利用でない場合、AI駆動ソリューションがいかにして未知の新しい脅威を予測・阻止できるかについてぜひサイランスまでお問い合わせください

侵入の痕跡(IOC)

SHA-256ハッシュ:

23E8B7D0F9C7391825677C3F13FD2642885F6134636E475A3924BA5BDD1D4852

MD5ハッシュ:
DCBF3A8BFEC2B5A062F68DE4EEE4B717

C2:
https://extensivee(dot)bid/000L7bo11Nq36ou9cfjfb0rDZ17E7ULo_4agents/gate(dot)php

Tags: