キーロガーの暗い闇

去年末から今年に入って大きな話題になった Gumblar 関連の騒ぎ。このところやつは Gumblar の亜種と言うよりも、同じドライブ・バイ・ダウンロードを使った別物で、8080 系と呼ばれたり、とはいえ手口や被害が似てるから、Gumblar 攻撃という名前で総称されたり、と、情報が錯綜気味で、技術的になにがどうなってるのかを情報収集する方としては、とても面倒なしろものだった。

しかも最近、日本でよく使われている FFFTP で、保存してあるアカウント情報が盗まれる事が判明して、大きな話題になった。

「FFFTP」のパスワードが“Gumblar”ウイルスにより抜き取られる問題が発生 - 窓の杜

後に、IPA から同様にアカウント情報が盗まれるソフトの情報が提供された。

JPCERT、マルウェアによるアカウント情報窃取が確認されたFTPクライアントを公表 - 窓の杜

そもそも、マスターパスワード機能のような、情報を読み出す時点でユーザ入力を要求すること無しに保存されているデータは、たとえ人間が見て中身が分からないようになっていても、単純なソフトウェアの処理で内容を読み出せてしまう。その情報を保存したソフトウェアと同じ事をやれば良いだけで、マルウェアに対して何ら効果はない。IPA のリストには Firefox が入っていなかったが、それはたまたまマルウェアが対象としていなかっただけで、原理的には、マスターパスワード機能を使わないで保存したアカウント情報は、マルウェアに読み出される可能性がある*1。

逆に、マスターパスワードから鍵を生成して暗号化を施して保存した場合、マルウェアが情報を読み出すためには、何らかの形で、暗号化の鍵を見つけ出す必要がある。鍵を見つけ出す方法としては、ブルートフォースかキーロガーが考えられ、ブルートフォースで全部の鍵を試す事は現実的ではないので、大抵は、人間が付けそうなパスワードを試す辞書攻撃が使われる。

FFFTP はマスターパスワード機能を早速追加した。

ウイルス感染したPCにおける保存パスワードの窃取問題へ対策した「FFFTP」v1.97 - 窓の杜

重要なのはマスターパスワードの機能であって、AES を採用したことではない。Triple-DES でも RC5 でも構わないが、鍵を使ったまっとうな暗号方式使い、その鍵にマスターパスワードを使う*2事が重要である。

一方、FFFTP での問題が明るみに出た直後に、その代替として SourceForge.JP Magazine で取り上げられた FileZilla は、FFFTP と同様にアカウント情報が盗まれている事が判明した上に、マスターパスワード機能を付ける気が無いらしい。

セキュリティホール memo での記事
FileZilla でマスターパスワード機能が却下された BTS 上の記録

ところで、この Gumblar シリーズは当初、FTP の通信パケットからカウント情報を取得する、という話があった。故に FTP では無く、SSH を使った SFTP、SCP や、SSL/TLS で暗号化する FTPS を使った方が良い、という話だったと記憶している。ただ、FTP のパケットを傍受する場合だと、実際に FTP をつなぐまでマルウェアは待つ必要があるので、FTP ソフトのアカウント情報を盗む方が効率的、という事は言える。

それと、パケットをキャプチャするには、マルウェアが特権ユーザで動く必要がある。まぁ、WinPcap の問題はあるが*3、基本的には制限ユーザで普段利用していれば、そのリスクはかなり低い。

これで、

  • マスターパスワード機能を使っている。
  • そのパスワードが辞書攻撃で破られるような安易な物ではない。
  • 制限ユーザで利用している。

のであれば、ほぼ心配はない、と思っていたのだが、落とし穴が一つあった。キーロガーだ。

キーロガーがセットになったマルウェアなら、たとえパケットが暗号化されていようが、マスターパスワードがあろうが、SSH の公開鍵認証でパスフレーズが必要になろうが、問題にならない。

勝手な思い込みで、キーロガーを仕掛けるにも管理者権限が必要だろう、と思っていたら、そうではないらしい。確かにドライバベースで動くようなものなら、仕掛けるために管理者権限が必要だが、そこまでしなくても、マルウェアの実行、および、インストールに管理者権限を必要とせずに、実現することは出来るらしい。

調べると、キー入力にフックをして、特定のプロセスがすべてのキー入力を取得する事は可能らしい。

そういえば、私が使っているキーボードランチャがそうだ。

Hrathnir というソフトを気に入って使っている。ホットキーでメニューが表示されるが、このソフトは特にインストーラもなく、自分のプロファイル配下のフォルダにファイルを置いて実行している。しかも制限ユーザで。

Hrathnir はキーロガーではないだろう。複数のウィルス対策ソフトの結果もシロだ。が、キーロガーを実装するのと同じ原理を使っている。いや、この原理を使わないと世のホットキーでアクティブ化されるソフトは実現できなくなってしまう。

恐らく、制限ユーザの権限だけでは、プロセスの存在を隠す事は出来ないだろう。そこまで悪質なマルウェアであれば、何らかの形で管理者権限を経由する必要があるだろう。とはいえ、毎度、起動するプロセスを確認し、見慣れぬプロセスがないか確認する、というのは現実的ではない。

しかし、キーロガー自体を仕掛けることは特権を必要としない。

同様のことは、コピー&ペーストでも起こる。クリップボード経由のコピー&ペーストは、確かにキー入力の監視では無いが、世にあるクリップボード関連ソフトを見るまでもなく、どんなソフトでも内容を監視出来る。

つまり、パスワード・パスフレーズを入力するための安全な手段が無い。

こうなると、ウィルス対策ソフトの結果を信用する以外に他ない。

ただ、Gumblar もどきの時のように、次々に亜種が出回るケースの場合、検出は後手に回る。Adobe が Adobe Reader の脆弱性を突く Exploit が出ている事を知りながら、のんきに 1 ヶ月も修正しなかった事も大きかったが、ウィルス対策ソフトが万全ではないことも露見することになった。各社、プログラムの挙動から悪質なプログラムを検出する方法に力を入れているが、どの程度の効果があるのか、今ひとつはっきりしない。

果たして、キーロガーの驚異からどうすれば逃れられるのか...。

*1:ただ、そのデータを読み出しに対して、特定のソフトウェアからしか読み出せないようなアクセス件の設定ができ、かつ、そのアクセス権の変更が特権ユーザからしか出来ない、といった仕組みがあれば、非特権ユーザで動くマルウェアからは守る事ができるはず。ひょっとしたら、SELinux とかでがんばれば出来るかな?

*2:FFFTP での実装を確認していないが、「マスターパスワード = 鍵」ではなく、「マスターパスワード→鍵」というのが一般的。つまり、マスタパスワードに対して何らかの処理をした結果を鍵とする。

*3:question:1264570360