昨年 2013年を通じ日本国内において最大の脅威となったのは、「オンライン銀行詐欺ツール」でした。その傾向は現在も続いており、もたらされる脅威はさらに凶悪化し拡大しています。これまで、ネットバンキングを通じた不正送金を狙う攻撃は多くが個人を標的としたものとみられてきましたが、現在では法人に対する被害も確認されています。
多くの法人向けネットバンキングでは、認証強化のために「電子証明書」による SSL/TLSクライアント認証が導入されています。正しいクライアントからのアクセスであることを認証できなければネットバンキングの操作が行えないため、法人向けネットバンキングは非常にセキュアであると考えられていました。しかし、現在日本国内で流行しているオンライン銀行詐欺ツール「ZBOT」ファミリ、「VAWTRAK」ファミリの一部はこの電子証明書を盗む機能を持っていることが、トレンドマイクロの調査解析により確認されています。本稿では攻撃事例の調査から見えてきた脅威の手口と対策について解説します。
■SSL/TLSクライアント認証とは?
まず、電子証明書による SSL/TSLクライアント認証とはどのようなものか振り返ってみましょう。この認証方法は、PKI(公開鍵基盤)という技術を使ってサーバとクライアントの間でお互いを認証しあうものです。なじみのある一般的な SSL通信ではクライアントがサーバの認証を行うのみですが、SSL はこれに加えてサーバがクライアントを認証するための仕組みも持っています。ネットバンキングでクライアント認証を行う場合は、銀行側から ICカードやパソコンにインストールする形で「クライアント証明書」が配布されます。
この「クライアント証明書」は電子データではありますが、ICカード内や OS の秘密情報エリアに保管されており、オンライン銀行詐欺ツールやフィッシングサイトによって行われる「偽画面を表示しユーザが入力した内容を盗み取る攻撃」では入手できません。これにより、ユーザが入力した文字列で認証を行うがゆえに偽画面攻撃の被害を受けてしまう「乱数表カード」や「ワンタイムパスワード」よりも安全な認証方法となっています。
しかし、オンライン銀行詐欺ツールの中にはすでに SSL/TLSクライアント認証を破るため、感染環境から電子証明書を窃取する活動を行うものがあります。
■オンライン銀行詐欺ツールに確認された電子証明書を盗む機能
<機能(1)>
ユーザのパソコン内の電子証明書と秘密鍵をすべてエクスポートしてファイルに保存し、攻撃者サーバへ送信する
電子証明書には公開鍵が含まれており、これには対になる秘密鍵が存在します。この電子証明書と秘密鍵の配布方法は各銀行によって異なります。Windows では証明書の秘密鍵を保持するにあたり、「エクスポート可/不可」、「秘密キーの保護」という設定項目を持っており、銀行からの指定やユーザの選択によって決定されます。
この設定が「エクスポート可」で「秘密キーの保護なし」だった場合に、証明書と秘密鍵をエクスポートしてファイルに保存し、攻撃者サーバに送信する機能が確認されています(図2)。
<機能(2)>
ユーザのパソコン内の電子証明書と秘密鍵をいったん削除し、新たな電子証明書が再発行されたタイミングでコピーを保存し攻撃者サーバへ送信する
機能(1)では、秘密鍵保持の設定によってはうまく奪取が行えない場合があります。その穴を埋めるもう一つの機能が Windows API(PFXImportCertStore関数)のフッキングによる電子証明書情報窃取です。
「エクスポート不可」設定で保管されている証明書の秘密鍵は奪うことができないため、不正プログラムは証明書をいったん削除します(図3:ステップ1)。ユーザは証明書が無いとネットバンキングの操作が行えないため、おそらく異変に気づきながらも、銀行に証明書の再発行を依頼します(図3:ステップ2)。不正プログラムはユーザが再発行された証明書をインポートするタイミングでそれをコピーし、同時にインポート用のパスワードまでも奪います(図3:ステップ3)。
■ユーザと事業者、それぞれが取れる対策は?
上記 2つの機能により情報窃取が成功するには条件があります。
機能(1)の攻撃が成功するためには、「エクスポート可」設定で秘密鍵が保持されていることが条件になります。この設定項目は Windows に秘密鍵をインポートする際、ひとつの鍵ごとに個別に設定を行うものです。事業者側が「エクスポート不可」に指定することもありますし、ユーザ自身がどちらか選択することもあります。
ユーザ自身で選択できる場合は、バックアップをメディアなどに保存してオフラインで保管した上で、極力「エクスポート不可」設定を選ぶことをお勧めします。現在「エクスポート可」で保管している秘密鍵がある場合は、万が一の対策として、いったんエクスポートしたのち、バックアップを保管して、「エクスポート不可」設定でインポートし直すことをお勧めします。これに加えて、「秘密キーの保護」の設定を中または高にすると、後述する「ハッキングツール」を使った証明書盗難の被害にも遭いにくくなります。
機能(2)の攻撃が成功するためには、事業者側(ネットバンキングの場合は銀行)が電子証明書を「PKCS#12形式」で配布していることが条件になります。電子証明書の配布には大きく 2つの方法があります。1つはユーザ側で公開鍵と秘密鍵の鍵ペアを生成し、事業者側に証明書発行を求める方式。もう 1つは、事業者側で鍵ペア生成と証明書発行を行い、秘密鍵と証明書をセットにしてパスワードで保護をかけた「PKCS#12形式」でユーザに配布する方式です。これらの配布方法はどちらも広く一般的に使われています。ユーザは PKCS#12形式の証明書のインポート操作を行う際、このような不正プログラムの存在を認識したうえで、感染していないかどうか十分に確認する必要があります。
事業者側が取れる対策としては、それぞれの状況に応じて勘案する必要はあるものの、ユーザ側の設定をシステム的に「エクスポート不可」「秘密キーの保護:高」にしてしまうほか、運用面で上記の設定を推奨する、ICカードや USBトークンでの証明書配布を検討する、などが考えられます。
■盗まれるのはネットバンキング用の証明書だけではない
気を付けなければならないのは、これらの証明書を盗み取る機能の被害に遭うのはネットバンキング用の電子証明書だけではないという点です。今日、電子証明書はサイバー空間での身分証明書として、また印鑑や印鑑証明としての役割を担い、活用されています。もしも感染端末で「SSLサーバ証明書」「コードサイニング証明書」「(確定申告手続きや行政システムへの申請などに使用する)電子署名用証明書」などの証明書を取り扱っていたとしたら、これらも攻撃者の手に渡ってしまう可能性があることに十分注意しなくてはなりません。
例えば「コードサイニング証明書」は、サイバー空間では法人の実印とも言えるほどに重要なものです。もしもあなたが開発者で、自社プロダクト用の「コードサイニング証明書」が自分のパソコンに入っている(しかもそのパソコンで自由にインターネットブラウジングを行っている)……そんな状態だったならば、多少面倒でも「コードサイニング証明書」は別のオフライン端末や USBトークンに移し替え、そちらでコード署名を行うようにフローを変更することをお勧めします。
■無視できないハッキングツールの存在
電子証明書を取り巻く脅威として無視できないハッキングツールも存在します。「HKTL_JAILBREAK」と「HKTL_MIMIKATZ」(図4)です。これらのツールはもともと管理者などが使用するための正規ツールでしたが、その機能が攻撃者によって悪用されたものです。
これらのツールでは、管理者権限やユーザの操作を必要とするものの、「エクスポート不可」の設定で保管されている証明書の秘密鍵をエクスポートする機能を持っています。現在のところ、このような機能が不正プログラムに実装されている事実は確認されていませんが、バックドアタイプの不正プログラムと組み合わせて使用したり、攻撃者がこれらのツールのソースコードを自分の不正プログラムに取り込んだりするといったことは今後十分に考えられます。
「秘密キーの保護:高」の設定にしておけば、秘密鍵をエクスポートするタイミングでパスワード入力を求めるダイアログ(図5)が表示されるため、このようなハッキングツールによる意図しないエクスポートを阻止したり、異変に気づいたりすることができるでしょう。
■まとめ
このようなオンライン銀行詐欺ツールによる攻撃方法が確認されている状況の中で、安全に電子証明書を使っていくためにはどうすればよいでしょうか?以下のような取り組みが考えられます。
- 証明書を盗む不正プログラムや強制的なエクスポートを可能にするハッキングツールの存在をしっかり認識する。
- 証明書のバックアップはオフラインに保管する。
- インターネット常時接続のパソコンにはなるべく重要な証明書を保管しない。
- パソコンに証明書を保管する場合は「エクスポート不可」「秘密キーの保護:高」で使う。
- ICカードや USBトークンを使用する。
■トレンドマイクロの対策
本稿で紹介した不正プログラムやハッキングツールは、トレンドマイクロのクラウド型セキュリティ基盤「Trend Micro Smart Protection Network」の機能の 1つである「ファイルレピュテーション」技術により、検出対応を行っております。また、不正プログラムを利用者に感染させるための不正プログラムスパムメールや不正サイトは「E-Mailレピュテーション」技術や「Webレピュテーション」技術によりブロックし、脅威の侵入と連鎖から防護します。