パロアルトネットワークスは6月23日、「キーロガーマルウェアファミリーの全貌を暴く」と題するセキュリティブログを公開した。
コラムによると、同社はこれまで「KeyBase」というマルウェアの実態を追跡してきたという。KeyBaseは、2015年2月に初めて確認されたキーロガーで、攻撃者は感染したPCで行われたキー操作の内容を盗み取ることができる。現在、作者が50ドルで販売されており、誰でも入手できるため利用が増加しているという。
同社では、KeyBaseによる攻撃を過去4カ月で295件特定。手法は主にフィッシング メールを通じて攻撃が実行されており、標的はハイテク産業、高等教育機関、小売業界となっていたという。
コラムでは、以下のように写真付きでKeyBaseの実態を紹介している。
攻撃対象となっている企業は、全世界の多くの国々に及んでいる。
このマルウェアは、主に一般的な「餌」を使用するフィッシングメールを通じて配信されており、「Purchase Order.exe」「New Order.exe」「Document 27895.scr」「Payment document.exe」「PO #7478.exe」「Overdue Invoices.exe」。
同社は、KeyBaseによる約50台の個別のコマンド アンド コントロール(C2)サーバーを特定。1台のC2サーバには最大50件のユニークなサンプルが接続していることを確認した。
KeyBase自体は、.NET Frameworkを使用してC#で記述されている。これらの事実を踏まえて、同社は基盤となるコードを逆コンパイルして、キーロガーの重要な機能と特徴を特定することができたのだという。
KeyBaseの機能には、「起動時におけるWebサイトの表示」「スクリーンショット」「ダウンロード/実行」「永続化」「キル タイマー」を搭載し、マルウェアの初期実行時には、一連のスレッドが生成される。
攻撃者が作成時に指定したオプションによっては、新しいスレッドで生成された各関数が無効になる可能性がある。ある機能を有効にしない場合、関数は以下のようになるという。
作成者は、コード内で使用されているさまざまな文字列に対して、複数の簡単な隠蔽テクニックを採用している。この例として、文字列に追加された単一文字の置換や、文字列に対する逆操作の実行が挙げられるという。
さらに、作成者はEncryptionクラスを利用されており、このクラスは、コード内で検出された複数の文字列を復号化するために使用されている。
この逆コンパイルされたコードについての言及は、hackforums.netの古い投稿で見つけることができ。ここでは、ユーザー「Ethereal」がサンプル コードを提供していた。
複数のMicrosoft Windows APIをロードする際に、DecryptText関数が使用されていることを見てわかる。
文字列を復号化するために、次のPythonコードが使用できるという。
KeyBaseで永続化を有効にする場合は、起動フォルダへのマルウェアのコピー、起動時におけるRunレジストリ キーの設定を使用して実装可能となるという。KeyBaseが自身を起動フォルダにコピーすると、その名前がImportant.exeとなり、これは作成者が静的に設定したものなので、現在のバージョンのユーザーが変更することはできない。次のRunレジストリ キーで使用されているキーはユーザーが設定したもので、これは常に32バイトの16進数値になるという。
- HKCU\Software\Microsoft\Windows\CurrentVersion\Run [32バイトのキー]:[実行可能ファイルへのパス]
KeyBaseにおけるキーロギングは、「KeyHook」という適切な名前が付けられた別のクラスによって主に実現している。このクラスは、github上で公開されているリポジトリと同じ名前で、実際にはカスタム コーディングされているという。このクラスはカスタム作成されているとはいえ、その手法は、Microsoft WindowsのSetWindowsHookExAを使って被害者のキーボードにフックするという、非常に一般的なものだという。
作成者は、期待されているとおりの方法で、適切なキーボード イベントの処理を進めているという。
リモート サーバとのすべての通信は、HTTP経由で行う。その際に、データが暗号化されたり、隠蔽されることはない。初期実行後は、以下のように、リモート サーバへの初期チェックインが、KeyBaseによって実行されるという。
いくつかのHTTPヘッダーは、この要求に含まれていないという。これは、この活動を悪意のあるものとしてフラグ付けするための簡単な手法の採用を可能にする。また、要求に含まれるハードコードされたGET変数を使って比較的簡単に活動を検出できることは、留意すべき重要なポイントとなるという。被害者のマシン名や現在の時間はその都度変化するが、残りの要求は静的なまま変わらないという。
KeyBaseでは、「キーストローク」「クリップボード」「スクリーンショット」がC2サーバに送り返されることもあるという。
C2サーバとのこの通信では、生のクリップボードとキーストロークのログ データが、KeyBaseの各種GETパラメータを使って追加される。このデータはURIエンコードされていますが、それ以外の箇所はクリアテキストになるという。
Keybaseではスクリーンショットをアップロードするために特定のURIも使用されている。「/image/upload.php」パスは、マルウェア内にハードコードされており、C2サーバに送り返されるすべてのイメージは、「/image/Images/」パス内に配置される。アップロードされたデータは、以下のように暗号化されていない状態で再送信されるという。
Webパネル自体には、革新的な特徴はなく、シンプルな赤/グレーのカラー スキームを使用している。このパネルにより、感染マシン、キーストローク、スクリーンショット、クリップボード データ、およびパスワード データをすばやく表示することができる。KeyBaseの作成者は、ページ送りを活用していないと推測されているという。ページ送りを使用すると、攻撃者が大量のデータを表示する際にパフォーマンスが低下する。
調査の過程で、「/image/Images/」パスの表示には認証が不要であることを発見した。特に、1台のC2サーバの動作は特筆すべきものでした。オペレーターが、自身のローカル マシンでKeyBaseをテストしているようだったためと説明している。
実際、このオペレーターのマシンのスクリーンショットは自身のサーバにアップロードされ、一般ユーザーが閲覧できる状態になっていた。フォルダには、ほぼ確実にKeyBaseインストールが含まれており、デスクトップ上にもHawkEye KeyloggerやKnight Loggerなどの他のキーロガーも存在することがわかる。
さらに注目すべきポイントとして、広く使用されているAegisCrypterという暗号化ソフトウェアが確認できることで、「The Hobbit」と「Fury」のコピーがデスクトップ上に表示されていることからも、このユーザーが海賊行為を行っていることがわかるという。
アップロードされたイメージの調査を進めるにつれて、このユーザーがリモート デスクトップ経由でWindows Web Server 2008 R2インスタンスにログインしていることもわかったという。この攻撃者は、Turbo-Mailer 2.7.10インスタンスを使用して、この場所からスパム活動を行っていると推測できるという。しかし、この特定の時点で、自分のユーザー名/パスワードを忘れるというミスをしていることもわかるという。
アップロードされたスクリーンショットをさらに詳しく調べた結果、ユーザーが自分のFacebookアカウントにログインしたことが明らかになったという。ユーザー「China Onyeali」で、自分の最近の活動について話していることが見て取れたという。
バックエンドのC2コードを調査する際に、その他の興味深い発見もあったという。upload.phpファイルの検証と分析が行われ、このファイルは、サーバへのファイル アップロードが処理される。リモート サーバにアップロードされるファイル タイプに対する検証は行われないという。
これは、セキュリティ上の観点から問題となり、PHPスクリプトを/image/Images/ディレクトリにアップロードするだけで、第三者による不正アクセスが可能になる。次のPHPコードを使用すると、Webパネルのユーザー名とパスワードを含んだKeyBaseのconfig.phpスクリプトを読み取ることができるという。
さらに、次のPythonコードを使用して、このファイルのアップロードとその結果の読み取りを行えるという。
同社は、KeyBaseマルウェアは、機能面で基本的なものしかないとまとめている。KeyBaseの作成者は、使いやすいユーザーフレンドリーなインタフェースを提供しているが、いくつかのオプションはマルウェア自体にハードコードされていた。例えば、KeyBaseが永続性を保持するためにコピーするファイルの名前と、コマンド アンド コントロール フェーズで使用される各URIパスが挙げられるという。