私がどのようにしてキーロガーをクラックし、最終的に第三者の受信トレイに行きついたか

(訳注:2016/9/28、頂きましたフィードバックを元に記事を修正いたしました。)

ことの始まりは、あるスパムキャンペーンでした。画像1は、スパム向けに仕掛けた罠に最近引っかかった、疑わしいドキュメントファイルが添付されたメールです。文面の英語がとても稚拙なことに気付くかと思いますが、この稚拙さがメール受信者への警告サインとなります。

Spam Samples
画像1:スパムサンプル

添付のファイルは、”.doc”のファイル拡張子を使っていますが、実際はRTF(リッチテキストファイル)ファイル形式で、特別に細工されたRTFファイルによるスタックオーバーフローの脆弱性が含まれています。この脆弱性は、CVE-2010-3333で文書化されており、”pFragments”の形をしたプロパティを扱う際にMicrosoft Word RFTパーサを攻撃するものです。これに対する修正モジュールは5年以上前にパッチされています。

RtfExploit
画像2:特別に細工されたRTFファイルにある難読化されたシェルコード

画像2を見てお分かりの通り、アンチウィルスソフトに検出されないよう、脆弱性やシェルコードが難読化されています。この脆弱性を抜き出し、きれいにしてから解読すると、シェルコードはvolafile[.]ioドメインからファイルをダウンロードして実行することが分かりました。

Shellcode
画像3:シェルコードの16進ダンプ

ペイロード

Malware_icon
画像4:ダウンロードされた実行ファイル

ダウンロードされたファイルは、Microsoft .NET Win32の実行ファイルです。ファイルの16進ダンプのプレビューをざっと見たところ、面白いことに、私はHawkEyeのキーロガービルドに取り組もうとしていることが分かりました。

HawkEyeHexDump
画像5:マルウェアのボディにある、HawKEyeのキーロガーストリング

また、ちょっとした検索で、このキーロガーを開発しているWebサイトを文字列が指し示してくれました。Webサイトでは、全ての”素晴らしい機能”をリストアップしています。

HawkEyeFeaturesList
画像6:HawkEyeのキーロガーの機能

簡単に動的プログラム分析をしたところ、キーロガーは、キーロガー自身のコピーをアプリケーションデータ(%appdata%)フォルダに落とし、WindowsUpdate.exeというファイル名を使っていることが分かりました。これは、再起動した後でもWindowsシステム内で持続的になるように、自動実行のレジストリをセットするためです。

AddToStartupsrcCode1
画像7:キーロガーのインストール動作

また、感染したシステムに以下のファイルも落としていました。

  • %Temp%\Sysinfo.txt – 落とされたマルウェアの実行ファイルパス
  • %Appdata%\pid.txt – マルウェアプロセスID
  • %Appdata%\pidloc.txt – マルウェアプロセスの実行ファイルの位置

その後、キーロガーのプロセスからネットワークアクティビティを観察し、checkip.dyndns.comから感染したシステムの外部IPアドレスの入手を試みました。この正規のWebサイトは、感染したシステムのIPアドレスを確認することを目的に、マルウェアによって一般的に使用されています。

CheckIP
画像8:感染したマシンのIPアドレスのパケットキャプチャ

少ししてから、SMTPのネットワークアクティビティが、感染したシステムのシステム情報を攻撃者のメールアドレスに送信したことを確認しました。

EmailSystemInformation_
画像9:キーロガーによって、攻撃者のメールアドレス送信されたシステム情報を含むメール。

含まれるシステム情報は以下のようなものです。

  • CPU名(コンピュータ名)
  • 現地の日付と時間
  • インストールされている言語
  • インストールされているOS
  • プラットフォーム
  • OSのバージョン
  • インストールされているメモリ
  • インストールされている.Net Framework
  • システム権限
  • 既定のブラウザ
  • インストールされているファイアウォール
  • 内部IPアドレス
  • 外部IPアドレス
  • 復元されたメールの設定とパスワード
  • 復元されたブラウザとFTPパスワード

前述したとおり、キーロガーはMicrosoft .NETでコンパイルされていました。そこで私が次に行ったのは、実行ファイルのデコンパイルです。この作業には、オープンソースで公開されているILSpyと呼ばれる.NETのデコンパイラを使いました。

IlSpy
画像10:デコンパイルしたHawkEyeのキーロガーのソースコード

デコンパイルされたソースコードを詳しく調べ、”素晴らしい機能”とそれを比較してみると、その要求は100%正当なものであることが確認できました。コードには以下のような機能がありました。

キーロギング

KeyloggingSrcCode1
画像11:キーロギングのルーチン

クリップボードを盗む/ロギング

ClipboardSrcCode
画像12:クリップボードロギングのルーチン

ブラウザ、FTP、そしてメールクライアントのパスワードを盗むのです。また、パスワードマネージャの認証情報やWindowsキーも盗もうとします。

BrowserStealer
画像13

ワームに似たUSBの感染ルーチンは、キーロガーを他のWindowsマシンに拡散することができます。

USBSrceCode
画像14:USBの感染ルーチン

また、オンラインゲームのプラットフォームであるSteamを利用するユーザがターゲットになることもあります。コンフィギュレーションデータやログインデータを削除することで、ユーザに再ログインを強制します。そうすることで、ユーザが使用するSteamの認証情報をキーロガーが盗めるようにするのです。

SteamClear
画像15:Steamの削除ルーチン

デスクトップのスクリーンショットを含む盗まれた情報は、キーロガーの設定に従い、攻撃者のメールアドレスまたはFTPサーバに送られます。

SendEmail
画像16:メールの送信ルーチン

攻撃者はキーロガーを設定し、HTTPトンネルを介してPHPホストに盗んだ情報をアップロードすることもあるようですが、コードは無効化されているようです。

UploadPHPSourceCode
画像17

しかしながら、デコンパイルしたプログラムの中で私が発見した最も興味深い点は、Form1()と名付けられたC#のコンストラクタです。ここにキーロガーのコンフィギュレーションが保存されています。しかし、攻撃者のメールやFTPの認証情報がばれないように、これらのデータは、RijndaelアルゴリズムとBase64を使って暗号化されていました。

Form1SrcCode
画像18:キーロガーのコンフィギュレーション

恐らくご存じかもしれませんが、これらの暗号化されたデータは、常に保護されているとは限りません。特に暗号化ルーチンがデコンパイルされたソースコードであれば尚更です!

DecryptData1
画像19:キーロガーはDecryptメソッドを呼び出します

以下の画像は、encryptedBytessecretKeyの2つのパラメータを受け取る”Decrypt”メソッドです。秘密鍵は、ハードコードされた文字列、HawkSpySoftwaresです。

DecryptSrcCode
画像20:暗号化ルーチン

記述したとおり、キーロガーはRijndaelアルゴリズムを使用しており、秘密鍵はUnicode文字列、”099u787978786″でソルトされています。こちらもハードコードされていました。

GetAlgorithmSrcCode
画像21:Rijndaelアルゴリズムを使ったキーロガー

ちょっと気になったので、復号部のコードをコピーし、適切に修正した後、MS Visual Studioでコンパイルしてみました。もちろん、復号は成功しました(すみません、認証情報はぼかさざるを得ませんでした :))。

KeylogConfigCompiled1
画像22:復号されたメールとFTPの認証情報

どうやらメールアカウントは感染したシステム上にあるようです。この受信トレイに送信されたメールは、自動的に攻撃者のGmailアカウントにリルートされています。

ForwardedEmailAccount_O
画像23:メールは、攻撃者が保持するメールアドレスにリルートされます

まとめ

恐らく攻撃者は、HawkEyeのキーロガーを簡単にクラックできることを知っているのでしょう。そして、自分のメールの認証情報を保護するために、最初のメール受信者として、感染したメールアカウントを乗っ取り、最終的にメールを自分のメールアドレスに転送するのです。

私たちは、感染したメールアカウントの所有者に被害を報告しました。彼らにパスワードを変更してもらい、メッセージのリルート設定から攻撃者のメールアドレスを削除してもらうためです。

この記事を投稿してから、よく似たRTF形式が添付されたスパムメッセージを受け取ったのですが、これにはCVE-2012-0158の脆弱性が含まれていました。ペイロードは同じキーロガーでしたが、異なるメールの認証情報が使われていました。

これらの攻撃に使用された2つの脆弱性は古いものですが、いまだにメール攻撃にはよく使われています。例によって、サイバー犯罪者が使用するこれらの古い脆弱性から保護するためにも、最新のパッチでシステムを更新しておくことをお勧めします。
Trustwave Secure Email GatewayのAMAX(高度なMalware and Exploit Detection)は、メールのゲートウェイ内でこれらの添付されたRTFの脆弱性を検出しています。