トレンドマイクロでは、現在確認されている POS(販売時点情報管理)システムへの攻撃について、調査分析を行っています。これまでに確認された POSシステムへの攻撃においては POS端末に POSマルウェアを感染させ、メモリ中の情報を窃取する手口が中心となっています。詳細に関しては以下のリサーチペーパーをご参照ください:
ダウンロードはこちら:『POSシステムへの攻撃 小売り・サービス業界への脅威』 |
弊社では、POSシステムへの攻撃について継続した調査を行っています。ある POSマルウェアを調査していたところ、興味深い検体を確認しました。それは、改良された不正プログラムとGround Lab社のソフトウェア「Card Recon」の非正規版が含まれた圧縮ファイル(拡張子 rar)でした。Card Recon は、国際的なセキュリティ基準である「PCI」に準拠した商用の情報漏えい対策製品「Data Leakage Prevention(DLP)」です。なお、この圧縮ファイル内の不正プログラムは、それぞれ「TSPY_POCARDL.AI」および「SPYW_CCVIEW」として検出されます。
このサイバー犯罪者集団は、メモリ内の情報を収集するために不正プログラムを利用し、そのカード情報を検索するために、皮肉にも DLP製品を利用しているように見えます。問題の圧縮ファイル内で確認された Card Recon の非正規版は、2011年の情報を保存していました。このソフトウェアの詳細は、以下のとおりです。
リンク日: 9:14 AM 3/11/2011 メーカー: Ground Labs 品目: PCI DSS CHD Scanner 製品: Card Recon 製品バージョン: Release 1.14.7 ファイルバージョン: Release 1.14.7 マシーンタイプ: 32-bit |
Card Recon の非正規版を利用した他の検体を探したところ、別の 2つの圧縮ファイルを確認しました。クレジットカード情報を収集する不正プログラムのファイルと、キー入力操作情報を収集する不正プログラムのファイルです。サイバー犯罪者が商用の DLP製品を利用することにそれほどの驚きはありませんが、なぜ情報を検証したのか、その理由を考えさせられました。情報を収集するために利用した正規表現が不十分だったのでしょうか。
サイバー犯罪者は、収集した情報を確認し、その有効性を検証する必要があったと思われます。彼らは、アンダーグラウンドでクレジットカード情報を販売します。間違いのある情報を販売することは、評価を下げるだけではなく、単に信用を失うこと以上の悪い結果を招く可能性があります。
まず最初に、デビットカードやクレジットカードなどの支払カード番号についての詳細を理解する必要があるでしょう。これらの番号の形式は、「ISO/IEC 7812」で規定されています。使用される 16桁の番号の形式は、以下のとおりです。
IIII-IIAA-AAAA-AAAC
カードの最初の 6桁は、「発行者識別番号(Issuer identifier number、IIN)」となっており、1桁目は「主要産業識別子(Major industry identifier、MII)」となっています。Visa や MasterCard、Discover、American Express(AMEX)といった主要なカード会社は、どの会社が発行したカードであるかを識別する IIN をそれぞれ持っています。個人の口座番号は、最大 12桁まで桁数を変えることができ、最終桁「C」は Luhnアルゴリズムで算出されるチェックディジットとなっています。
Luhnアルゴリズムは、ISO規格で定義された単純なチェックサム方式で、15桁目までの間違いを検出するように設計されています。16桁すべては、取引に必要なその他の情報とともに、磁気ストライプカード内の各磁気トラック(トラック1 およびトラック2)に保存されています。これらは、すべて「ISO/IEC 7813」で定義されています。
トラック1 および 2の情報がどのようにカードに保存されるかは詳細に定義されているため、不正プログラムは、正規表現のパターンを利用して Random Access Memory(RAM)上のこれらの情報を探すことができます。以下は、トラック1の情報を検索するための正規表現の例です。
^%([A-Z])([0-9]{1,19})\^([^\^]{2,26})\^([0-9]{4}|\^)([0-9]{3}|\^)([^\?]+)\?$ |
必要とされる正規表現が複雑だった場合、目的とした情報以外に、RAM から不要なデータも誤って収集してしまう可能性があります。良く定義された正規表現であれば、きれいな結果を返しますが、そうでない正規表現に比べて計算的に高くつくことがあります。RAM から短時間に情報を収集することが目的であれば、特に収集した情報をオフライン上で検証する際には、質よりも効率性が重要になります。
珍しいことですが、きれいなコード書くことを信奉する純粋主義の不正プログラム作成者もいます。図1 は、Visual Basic で書かれた POSシステムを狙う不正プログラムの例ですが、実際に Luhnアルゴリズムを実装しています。
この不正プログラムは、RAM から情報を収集するために正規表現を利用し、その後情報を検証するために関数「Luhn」を使います。この関数は、入力された文字列を取り、true か false のブール値を返します。無効な情報は廃棄され、不正プログラムは有効な結果のみを収集します。
このコードの実行中は、大容量の情報収集は特に適していません。なぜなら非常に高い計算力を必要とします。そのため、不正利用された Card Recon のような DLP製品をオフラインで利用することは理想的です。2013年から米国大手小売業で大量の情報漏えいがありましたが、700万件の支払いカード情報の検証を行うのは、侵入したネットワーク外で行うのが最適です。
POSシステムの情報を収集する不正プログラムと非正規版の Card Recon に話を戻すと、弊社では、AMEX や Discover、Diners Club、 JCB、Visa、MasterCard などのカード会社と「テスト/その他」を IIN を利用して識別する DLPツールを確認しました。「テスト/その他」は、数字列は Luhn で有効となりますが、どの特定のカード会社にも当てはまらないものです。
弊社は、オンライン上の偽のクレジットカード番号生成ツールを使用して、Luhn で正しいと検出されるクレジットカード番号をそれぞれのカード会社ごとに作成し、Card Recon DLPツールを使用して、有効なクレジットカード番号をドライブ内でスキャンしました。なお、この DLPツールは支払カード番号を検証しますが、トラック1 および 2 のすべての情報は検証しません。
このツールは、いくつかの Pythonライブラリを、Luhn の検証で正しいとして、テスト用のクレジットカード番号と誤って認識しました。これは、正規表現が失敗し、不要な情報を収集すると前述した内容を支持します。トラック1 および 2 に含まれる口座番号、有効期限、CVC/CVV1コードなど、すべての情報があることがクレジットカード情報収集を画策する者には極めて重要となります。カード番号情報だけの場合に比べて、すべての情報がそろった場合、アンダーグラウンドでは高値がつきます。サイバー犯罪者はトラック1 および 2 のデータを収集するために正規表現を利用しますが、収集したカード番号を検証することは、理論的には残りのデータも同様に有効であることを意味します。
アンダーグラウンド市場で、どのクレジットカード情報も同じ価値があるのかという質問があるかもしれません。驚くべきことに答えは「いいえ」です。それは、需要と供給に関係があります。
弊社が最近ロシアのアンダーグラウンドを再訪したところ、アンダーグラウンド市場でのクレジットカード情報の価格は数年間で下落していることがわかりました。しかし、クレジット会社ごとの価格は、いまだに違いがあります。収集したクレジットカード情報を売買する Webサイトを調べると、「有効な」米国のクレジットカードの一般的な価格がわかりました(表1参照)。
次の 2点に注目して下さい。1点目は、クレジットカード情報を大量に購入すると、1枚当りの価格が下がるということです。最大 66% まで値引きされる場合もありました。2点目は、Discover や AMEXのカード情報のほうが、Visa や MasterCard より単価が高いことです。
これは、AMEX や Discoverのクレジットカード情報が、Visa や MasterCard に比べて入手しにくいためです。希少な情報であれば、価格は上がります。残念ながら、なぜ AMEX や Discover が Visa や MasterCard よりも高く売れるかのもっともな理由を見つけることができませんでした。AMEX や Discover の不正なカードは検出されにくいのでしょうか。それとも信用限度額が高いのでしょうか。それとも信頼性が高いのでしょうか。はっきりしたことはわかりません。
これまでの調査による弊社の結論を以下にまとめます。
- トラック1 および 2 の情報を収集するために不正プログラムが利用した正規表現は、計算的に軽いことが確認されています。そのため、大量のデータを処理することができ、なおかつ気づかれずに実行できます。例外があることは判明していますが、POSシステムの情報を収集する不正プログラムの主流は、一般的にコード内に Luhn検証を実装しません。
- 収集した情報の検証は、非正規版のCard Recon のような簡単に入手できるツールか、もしくは自作のツールを利用して通常オフラインで行います。クレジットカード情報を収集するサイバー犯罪者は、検証を行うほか、カード会社ごとの区別もします。
- アンダーグラウンド市場では、入手しやすさや需要によって、カード会社ごとに異なる単価が設定されています。
参考記事:
by Numaan Huq (Senior Threat Researcher)
翻訳:品川 暁子(Core Technology Marketing, TrendLabs)