マルウェア

Kazuar、APIを使うマルチプラットフォーム対応のスパイ活動型バックドア

Clock Icon 5 min read

This post is also available in: English (英語)

概要

KazuarツールはTurla攻撃者グループ(UroburosおよびSnakeとしても知られている)と関連している可能性があると弊社では見ています。Turla攻撃者グループは世界中の大使館、防衛請負業者、教育機関およびリサーチ組織に対して侵害を働いたことが報じられています。Turlaの攻撃活動の特徴は自前のツールの反復利用であり、Kazuarにおけるコードの系統は少なくとも2005年まで遡ることができます。この仮定が正しく、Turla攻撃者グループがKazuarを利用しているのであれば、Carbonおよびその派生形の代わりになるものとして、このグループがKazuarを利用している可能性があると弊社では見ています。Turlaによる利用が観測された無数のツールのうち、Carbonおよびその亜種は第2ステージのバックドアとして、標的にされた環境内に導入されるのが一般的なので、今ではKazuarがTurla攻撃活動に関して似たような役割を担っている可能性があると弊社は確信しています。

Kazuarマルウェア

Kazuarは.NET Frameworkを使って書かれたフル機能のバックドアであり、ConfuserExというオープンソースのパッカーを使って難読化されています。弊社は、綿密な分析を目的としてコードの難読化を解除するため、NoFuserEx、ConfuserEx Fixer、ConfuserEx Switch Killerおよびde4d0tなどのツールを組み合わせて利用しました。そうしておいてから、dnSpyを使ってコードをMicrosoft Visual Studioのプロジェクトにエクスポートしました。これにより、ランダムなメソッド名をリネームして、コードの流れを理解しやすくすることができました。Kazuarがどのように動作し、脅威の攻撃者にどのような機能を提供するのか、以下に説明します。

初期化

このマルウェアはシステム情報およびマルウェア ファイル名情報を収集することで初期化を行います。さらに、ミューテックスを作成して、このトロイの木馬のインスタンスがシステム上で必ず一度に1個しか実行されないようにします。Kazuarが自身のミューテックスを生成する際、文字列「[username]=>singleton-instance-mutex」のMD5ハッシュの取得を最初に行うプロセスを使います。次に、XORアルゴリズムおよびストレージ ボリュームのシリアル番号を使って、このMD5ハッシュを暗号化します。結果として得られた暗号化テキストを使ってGUIDを生成し、このGUIDを文字列「Global\\」の末尾に追加してミューテックスを作成します。

このミューテックス作成過程で弊社が発見した興味深い痕跡は、コードがシステムのストレージのシリアル番号を取得できない場合、MD5ハッシュを暗号化するためのキーとして、Kazuarが静的な整数16456730を使うことです。16456730の16進数表記は0xFB1C1Aであり、これは、米国の組織FBIおよびCIAを指していると思わせるものを、マルウェアの作成者が含めておいたように見受けられます。

引き続き、トロイの木馬はシステム上にフォルダを一式作成し、実行中に作成されるさまざまなファイルをそこに保存します。Kazuarはグループ名を使ってフォルダを作成し、これによりファイルを系統的に整理してフォルダ内に置きます。表1はフォルダのレイアウトを示しています。

フォルダ グループ ファイルの説明
base 下記のフォルダ グループを含む親フォルダ
sys Kazuarが設定に使用するファイル(例えば「serv」項目はC2サーバの位置を保存する)
log デバッグ メッセージを含むファイル
plg ファイルはKazuarの機能を拡張するために使われるプラグイン
tsk Kazuarによってコマンドおよびその引数として処理されるファイル
res 首尾よく処理できたタスクの結果を含むファイル

表1 Kazuarのフォルダ グループ名および内部に保存されるファイル

このトロイの木馬は、自身のミューテックスを生成するのに使ったプロセスに類似するものを使って、フォルダ名とファイル名を作成します。その際、名前のMD5ハッシュを生成し、キーとしてボリューム シリアル番号を使って各バイトにXOR演算を行い、この暗号化テキストに基づいてGUIDを生成します。結果として得られたGUIDがファイル名およびフォルダ名として使われます。これらの名前が%LOCALAPPDATA%フォルダに対するローカル システムのパスと連結されてKazuarのフォルダが作成されます。

コード全体にわたって、Kazuarはデバッグ メッセージを「log」フォルダ内に保存されているログ ファイルに書き込むことで、自身の活動の詳細な記録を残します。Kazuarはこれらのログ ファイルに保存されているデバッグ メッセージを、Rijndael cipherを使って暗号化します。弊社は、このトロイの木馬の実行中にログ ファイルに追加された初期エントリを復号しました。このエントリには、以下の情報が含まれます。

上記ログ メッセージから、マルウェアの作成者がこのトロイの木馬を「Kazuar」と呼んでいることがわかります。興味深いことに「Kazuar」という言葉は、ポーランド語、ハンガリー語、スロベニア語などのいくつかの言語に見られますが、これはロシア語の単語「казуар」をASCII形式で表したものです。「Kazuar」およびказуарはCassowary (ヒクイドリ)と訳されます。ヒクイドリ(火食鳥)はニューギニア産の大形の飛べない鳥で、図1にあるような姿をしています。

図1 ヒクイドリ(情報源はWikicommons)
図1 ヒクイドリ(情報源はWikicommons)

初期セットアップの後、マルウェアのメイン エントリ ポイントにあるメソッドは、図2で示すように、4つの主要実行パスのうちどれかをたどることになるでしょう。メイン エントリ ポイントには比較的単純なif文のセットが含まれており、このif文のセットによりマルウェアの実行パスが決定されます。興味深いことに、パスの1つはMacまたはUnixのホスト上で実行するためのように見受けられます。

図2メイン エントリ ポイントには実行フローを制御するif文がある
図2 メイン エントリ ポイントには実行フローを制御するif文がある

Kazuarのメイン エントリ ポイントによって選択される可能性のある実行パスは4つで、それらは以下のとおりです。

  1. マルウェアがコマンド ライン引数に「install」を指定されて実行された場合、.NET FramworkのInstallHelperメソッドを使ってマルウェアをサービスとしてインストールする。
  2. マルウェアがユーザーとの非対話環境(非ユーザー インターフェイス)において開始した場合、マルウェアは自身をサービスとしてインストールする。
  3. 引数が与えられていないでマルウェアがWindows環境で実行中であると判断した場合、マルウェアはexplorer.exeプロセスに埋め込むDLLをシステムに保存する。埋め込まれたDLL実行可能ファイルは、マルウェアの実行可能ファイルをロードし、ロードしたものをexplorer.exeプロセスのメモリ内でを実行する。
  4. マルウェアがコマンド ライン引数に「single」を指定されて実行された場合、またはマルウェアがMacまたはUnix環境で実行中であると判断した場合、マルウェアは、Kazuarの関数コードを含むメソッドを実行し、MacまたはUnix環境が検知された場合には特定のWindows専用機能を制限する。

実行フローは動作環境によって慎重に導かれます。これは.NET FrameworkのEnvironment.OSVersion.Platform.PlatformIDの列挙を使って決定されますが、その様子は図3の関数に示すとおりです。この関数はシステム固有情報の収集を担当しています。興味深いことに、Unixに関するPlatformID値用の特定のブーリアン変数が目に留まります。これを見ると、このAPIに対してTrue(真)を返す標的のMacまたはUnixに対して、Kazuarが使われていた可能性がうかがえます。

図3getsysinfo()関数がKazuar用にさまざまな環境列挙機能を提供する
図3 getsysinfo()関数がKazuar用にさまざまな環境列挙機能を提供する

動作環境の列挙を終えると、Kazuarはシステムに対して持続的なアクセスを確立しようとします。図4に示すAutorunクラス内のメソッドを使ってWindowsシステムに持続性をセットアップします。これには下記の複数の選択肢があります。

  1. ショートカット(lnkファイル)をWindowsのスタートアップ フォルダに追加する
  2. カレント ユーザー(HKCU)ハイブ内に、下記パスへのサブ キーを追加する
    • SOFTWARE\Microsoft\Windows\CurrentVersion\Run
    • SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce
    • SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run
    • SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell
    • SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\load
図4KazuarのAutorunクラスは持続性を目的とする複数の選択肢を含んだWindows専用メソッドで、スタートアップ フォルダおよびレジストリを使用する
図4KazuarのAutorunクラスは持続性を目的とする複数の選択肢を含んだWindows専用メソッドで、スタートアップ フォルダおよびレジストリを使用する

コマンドアンドコントロール(C2)

Kazuarトロイの木馬は、初めにコマンドアンドコントロール チャネルを使って、攻撃者が侵害されたシステムと対話してデータを密かに盗み出すことができるようにします。KazuarはHTTP、HTTPS、FTPまたはFTPSなどの複数のプロトコルを使う機能を備えており、プロトコルはハードコード化されたC2のURLの接頭辞によって決定されます。これまでのところ、弊社にあるサンプル セットではC2プロトコルとして使われているのはHTTPしかありませんでした。Kazuarの既知のC2サーバはすべて、侵害されたWordPressブログ サイトのもののようです。このことから、Kazuarを攻撃に使っている脅威グループは脆弱性のあるWordPressサイトを自分たちのプレイブックの一部として見つけ出し、悪用していることもうかがえます。

自身のC2サーバと対話するため、Kazuarはビーコンとして使うHTTP GETリクエストを生成することからやり取りを始めます。このビーコンは図5にあるコードによって生成され、「AuthToken」値を持つクッキーが中に含まれています。「AuthToken」値は、侵害されたシステムを一意に識別するのに使うGUIDをbase64エンコードしたものです。KazuarはこのGUIDを「agent」識別子として参照します。

図5createGETおよびgetWebRequestクラスは、コマンドアンドコントロール通信に使われるHTTPリクエストの構築を定義する
図5 createGETおよびgetWebRequestクラスは、コマンドアンドコントロール通信に使われるHTTPリクエストの構築を定義する

分析中、弊社は図6にあるビーコンがHTTPによりKazuarサンプルからそのC2サーバに送信されるのを確認しました。最初のHTTPビーコンを見ると、Cookieフィールド内にbase64エンコードされたAuthToken値があることがわかります。C2サーバがこれを使って、侵害されたホストを一意に識別子して個々に追跡しているのに違いありません。

図6完全に構成されたHTTP GETリクエストのWiresharkスニペット(base64エンコードされたGUIDがCookieヘッダー内にあることがわかる)
図6 完全に構成されたHTTP GETリクエストのWiresharkスニペット(base64エンコードされたGUIDがCookieヘッダー内にあることがわかる)

KazuarはC2サーバからのレスポンスを読み、このレスポンスをXML形式のデータとして解析しようとします。XML形式のデータにはKazuarが「task」として参照する内容が含まれ、その内容はアクション識別子および各動作に関する専用の引数から構成されています。下の図7で示したコードは、HTTPリクエストに対するレスポンスを受信し、アクション識別子として変数「num」に保存されたlong型整数を使う役割を担っています。

図7レスポンス解析部はコマンドアンドコントロール サーバから新たなタスクが届いていないかリッスンする
図7 レスポンス解析部はコマンドアンドコントロール サーバから新たなタスクが届いていないかリッスンする

アクション識別子は、侵害されたシステム上で攻撃者が実行したいコマンドと直接関連しています。驚いたことに、Kazuarには各コマンド用にアクション識別子とそのコマンドを説明している文字列とを同じものとみなすメソッドも含まれており、このことから各コマンドの目的を判断することがかなり容易になります。表2はKazuar内で利用可能なコマンドのリストであり、各アクション識別子、コマンド文字列および説明を具体的に示しています。

アクション識別子 コマンド 説明
1 log 指定されたデバッグ メッセージを記録します。
2 get 指定されたディレクトリからファイルをアップロードします。攻撃者は、修正時、アクセス時および作成時のタイムスタンプに基づいて、アップロードするファイルを指定することもできるようです。
3 put 提供されたデータ(「ペイロード」と呼ばれる)を、システム上の指定されたファイルに書き込みます。
4 cmd 指定されたコマンドを実行し、その出力を一時ファイルに書き込みます。一時ファイルはC2サーバにアップロードされます。
5 sleep トロイの木馬は指定された時間長にわたりスリープします。
6 upgrade トロイの木馬を更新します。その際、現在の実行可能ファイルの拡張子を「.old」に変更し、新たに提供された実行可能ファイルをしかるべき場所に書き込みます。
7 scrshot 表示されている画面全体のスクリーンショットを撮ります。スクリーンショットは、指定されたファイル名で保存されます。または、[年]-[月]-[日]-[時]-[分]-[秒]-[ミリ秒].jpgというファイル名で保存されます。ファイルはC2サーバにアップロードされます。
8 camshot 「WebCapt」というウィンドウを作成し、付属のWebカメラから画像をキャプチャします。キャプチャ画像はクリップボードにコピーされ、指定されたファイルまたは「scrshot」コマンドのときと同じ形式の名前のファイルに書き込まれます。ファイルはC2サーバにアップロードされます。
9 uuid 特定のGUIDを提供することで、一意のエージェント識別子を設定します。
10 interval 転送間隔を設定します。具体的には、C2通信どうしの最小および最大の時間間隔を設定します。
11 server URLのリストを提供することで、C2サーバを設定します。
12 transport プロセスのリストを提供することで、転送プロセスを設定します。これらのプロセスにはKazuarのコードが挿入され、挿入されたコードがプロセス内部で実行されます。
13 autorun Autorunタイプを、このブログで前述したとおりに設定します。Kazuarはこのコマンドに対して、以下の文字列を受け付けます。DISABLED、WINLOGON、POLICIES、HKCURUN、RUNONCE、LOADKEY、STARTUP
14 remote リモート タイプを設定します。弊社で認識しているリモート タイプは1つだけです。そのタイプの指示により、KazuarはHTTPサーバとして振る舞い、インバウンドHTTPリクエストを介して攻撃者が侵害されたシステムと対話できるようにします。
15 info システム情報を収集します。具体的な情報は以下のとおりです。エージェント情報、システム情報、ユーザー情報、ローカル グループおよびメンバー、インストール済みソフトウェア、特殊フォルダ、環境変数、ネットワーク アダプタ、アクティブなネットワーク接続、論理ドライブ、実行中のプロセスおよび開いているウィンドウ
16 copy 指定されたファイルを指定された場所にコピーします。また、コピー先ファイルがすでに存在している場合、そのファイルに対して上書きするためのフラグをC2が付けるのを許可します。
17 move 指定されたファイルを指定された場所に移動します。また、コピー先ファイルがすでに存在している場合、そのファイルを削除するためのフラグをC2が付けるのを許可します。
18 remove 指定されたファイルを削除します。安全にファイルを削除するためのフラグをC2が付けることを許可しますが、その場合、ファイルを削除する前にランダム データでファイルを上書きします。
19 finddir 指定されたディレクトリを見つけ、そのファイルのリストを作成します。リストの内容は、作成時タイムスタンプ、修正時タイムスタンプ、サイズ、およびディレクトリ内の各ファイルのファイル パスです。
20 kill 名前またはプロセス識別子(PID)によりプロセスをkillします。
21 tasklisk 実行中のプロセスのリストを表示します。WMIクエリ「select * from Win32_Process」をWindowsシステムに対して使いますが、「ps -eo comm,pid,ppid,user,start,tty,args」を実行して、実行中プロセスの情報をUnixシステムから取得することも可能です。
22 suicide このコマンドはトロイの木馬をアンインストールためのものと弊社では見ておりますが、既知のサンプルには今のところ実装されていません。
23 plugin 与えられたアセンブリをロードすることでプラグインをインストールし、アセンブリの名前のMD5ハッシュを名前とするファイルに、このプラグインを保存し、「Start」というメソッドを呼び出します。
24 plugout アセンブリの名前に基づいてプラグインを削除します。
25 pluglist プラグインのリストを取得します。プラグインが「稼働中」であるか「停止中」であるかについても、リストに併記されます。
26 run 与えられた引数を使って、指定された実行可能ファイルを実行し、その出力を一時ファイルに保存します。一時ファイルはC2サーバにアップロードされます。

表2 Kazuarのコマンド ハンドラ(アクション識別子、コマンド文字列および説明)

機能

上の表2からわかるように、Kazuarには多彩なコマンド セットが備わっており、その多くが機能において他のバックドア型トロイの木馬と類似しています。しかし、いくつかのKazuar専用コマンドは独特で、さらに考察を進める価値があります。

まず、これらのコマンドのいくつかには、適切なパスまたはコマンドを使用するために環境判定を行うチェックが含まれています。「tasklist」コマンドはWMIクエリまたは「ps」コマンドを使い、これにより、Kazuarは実行中プロセスの情報をWindowsシステムおよびUnixシステムのいずれからも取得することができます。また、Kazuarの「cmd」コマンドは、Windowsシステムに対しては「cmd.exe」を使って、Unixシステムに対しては「/bin/bash」を使ってコマンドを実行します。この2つのコマンドは、Kazuarの作成者がこのマルウェアをクロス プラットフォーム型ツールとして使ってWindowsおよびUnixの両システムを標的にするつもりでいたことを示す証拠です。

Kazuarにはプラグイン関連のコマンドとして次の3つがあります。plugin、plugoutおよびpluglist。この3つのコマンドを使うことで、攻撃者はKazuarが追加のプラグインを利用できるようにするフレームワークを管理できます。このプラグイン フレームワークにより、Kazuarは潜在的に際限のない機能を手に入れることになります。それは、Kazuarがロードし、実行する新たな.NETアプリケーションを、Kazuarのオペレーターが提供することができるからです。

KazuarのリモートAPI

多くのバックドア型トロイの木馬に多彩なコマンド ハンドラとプラグイン フレームワークが備わっているのに対し、Kazuarの「remote」コマンドにはスパイ攻撃活動で使われたバックドアにはめったに見られない機能があります。このコマンドはトロイの木馬に対して、インバウンドHTTPリクエストをリッスンするスレッドを開始するよう指示します。この結果、実質上、KazuarはWebサーバに変身します。この機能は、侵害されたシステム上でトロイの木馬がコマンドを実行するためのAPIを提供します。図8は、この機能を提供するKazuar内のコードを示しています。

図8 脅威の攻撃者にAPIアクセスを提供するためにKazuarが使用するHTTPメソッド ハンドラ
図8 脅威の攻撃者にAPIアクセスを提供するためにKazuarが使用するHTTPメソッド ハンドラ

この機能を開始するため、攻撃者は「remote」コマンドを発行し、URI接頭辞のリストを提供します。この接頭辞をKazuarのHTTPリスナーが処理し、応答します。攻撃者が提供するURI接頭辞は、HttpListenerクラスの「Prefixes」プロパティに追加されるでしょうが、このプロパティにはスキーマ、ホスト、オプションのポートおよびオプションのパスが必要となります。続いて攻撃者は、これらのURI接頭辞に合致するURIに対して、特定のメソッドを使ってHTTPリクエストを発行します。具体的には、OPTIONS、POST、GETおよびPUTメソッドを使って、侵害されたシステムと対話をしますが、その際に使うKazuarのコマンド セットは表3のとおりです。

この機能はトロイの木馬とC2サーバとの間の通信フローを反転させます。トロイの木馬がC2サーバとの通信を開始するのではなく、C2サーバがトロイの木馬に対してリクエストを直接送信します。侵害されたシステムがリモートからアクセス可能なサーバである場合、サーバがアウトバウンドのリクエストを開始する際のフラグを立てる可能性があり、この通信フローは重要です。また、この種のAPIアクセスを発生させることで、脅威の攻撃者はアクセス可能なサーバの1つを単一点として利用して、データのダンプ先とし、また、この単一点からデータを密かに盗み出します。

HTTPメソッド 機能の説明
OPTIONS 機能なし。単にHTTPの「OK」ステータスを返すだけです。
POST 攻撃者は、新たなタスク生成にKazuarが使うXML形式のデータを提供します。まったく同じメソッド(図7の「readResponse0」)を使って、前述の最初のC2通信チャネルにおいて取得したXMLデータを解析します。Kazuarはタスクの結果をログファイルに書き込みます。ログファイルは「res」と呼ばれ、「tsk」と呼ばれるフォルダの中に置かれます。
GET 以前のタスクに関して結果内容を提供します。この結果内容は「res」ファイルに保存されているHTTP POSTリクエストを介して生成されたものです。
PUT 攻撃者は、新たなタスク生成にKazuarが使うXML形式のデータを提供します。このメソッドはPOSTメソッドに似ていますが、コマンドの結果を「res」ファイルに保存するのではなく、HTTP PUTリクエストに対して、コマンドの結果付きで応答します。

表3 KazuarのAPIの形で提供されるHTTPメソッドおよび機能

この機能はトロイの木馬とC2サーバとの間の通信フローを反転させます。トロイの木馬がC2サーバとの通信を開始するのではなく、C2サーバがトロイの木馬に対してリクエストを直接送信します。侵害されたシステムがリモートからアクセス可能なサーバである場合、サーバがアウトバウンドのリクエストを開始する際のフラグを立てる可能性があり、この通信フローは重要です。また、この種のAPIアクセスを発生させることで、脅威の攻撃者はアクセス可能なサーバの1つを単一点として利用して、データのダンプ先とし、また、この単一点からデータを密かに盗み出します。

結論

もう一段フル機能になっているバックドアを単独で取り上げても特に目新しいものはありませんが、Unix用のコード パスの存在により、.NET Frameworkコードの移植性と相まって、Kazuarトロイの木馬が目を離すことのできない興味深いツールとなっています。このマルウェアのもうひとつ興味深い部分は、そのリモートAPIです。このAPIを使えば、攻撃者は侵害されたシステムに対しインバウンドHTTPリクエストを介してコマンドを発行することができます。弊社の分析から、脅威の攻撃者がWindowsおよびUnixの両プラットに対してKazuarを導入する目的で、同一コードを使ってWindowsおよびUnixベースのペイロードをコンパイルしている可能性があるものと思われます。Palo Alto NetworksのAutoFocusをご利用のお客様は、Kazuar AutoFocusタグを使って、新たなサンプルを調査することができます。

関連する兆候および識別情報

ハッシュ

  • 8490daab736aa638b500b27c962a8250bbb8615ae1c68ef77494875ac9d2ada2
  • b51105c56d1bf8f98b7e924aa5caded8322d037745a128781fa0bc23841d1e70
  • bf6f30673cf771d52d589865675a293dc5c3668a956d0c2fc0d9403424d429b2
  • cd4c2e85213c96f79ddda564242efec3b970eded8c59f1f6f4d9a420eb8f1858

URL

  • http://gaismustudija[.]lv/wp-includes/pomo/kontakti.php
  • http://hcdh-tunisie[.]org/wp-includes/SimplePie/gzencode.php
  • http://www.gallen[.]fi/wp-content/gallery/

ファイル活動

  • %LOCALAPPDATA%\/[a-f0-9]{32}\/[a-f0-9]{32}\.dll
  • %LOCALAPPDATA%\/[a-f0-9]{32}\/[a-f0-9]{32}/
  • %USERPROFILE%\Start Menu\Programs\Startup\*.lnk

RSAキー

<RSAKeyValue><Modulus>gSI+OxtBrfXVfSRRSlNIMVYr9HFy40jokIDkUqffhU7Y/VcFB1nc8GwT4GOjK6lR/mJi3XcGg+nxqR9iLoeoOLgBFFz9O1l++81tPtRaVZ8yg+IzmZlaMhdOg0apatxhjRA/4pYOhZHwifQIjZzid6/+BgYIPBXWcX8e58l1PH+chm3DJzJ2gdHOsx6Dz9HHPr+sGLshAFF35ICb/11jq0vU9KU7CjYdf0Rvl16EDYyUQXbIG1ZMaTDzBrMcXZrBfXHEqn2Qwr4NiaDUwOwGCynBtSZXoNOfHArYxbRaBA269SPKhZgCBqdAhYfPFe2q8r8Y4fz21iZTqTngMsA2zw==</Modulus><Exponent>EQ==</Exponent><P>hGjs2pEZW4pN2b0Bm9xl84zxqQ2BMSflj2xpf5MH+XvCY5BBN3YROm24LYtGwy3xOdKeUJOENvYbkvirBcm2ecRxmLgE5AMMeWxZpOayUtOUd+Abx3+TT8giPG3sqEHtuaHVUjypBloE4EWnFWrmq0f3+Kpi8kHFxLul9jHubsc=</P><Q>+ap/8gRvidWrAhZcAiCAYdFZIt6hSwBz5ohU5ZSPomv9e/Urtts8cin+QeBvDwF6UvyP1vz3wxUOXycaBI3StCMjCXHuBLN+wfpEhfdt6KKywsmW7I5OdogIbVRLTUJvBtiXBGG3c10ay3H8TYx00lt6GgcLAJZMZE4mHEjnj7k=</Q><DP>D5PfoT4/N/InRsrxIWU5K7Y6jFvxFNeEaznuSz55aKUl7ZiAJKR6f1gzyR9xvJv+Qwm4RbcAfu/HAjtfahe7HWJnt50twHjUSoU3uQwU+q964O0wcdLGCWLW2e7QjEP92ZqRkTRQHt1p/ERuAoUMFCaVpMjAWLxxnqyqHPbQwb0=</DP><DQ>vuvLQJn68O6v8omRp0YH0lTLsUDVsdMrdA3mkXGbA7v+E38/i9TT3tTRfaugOKbG9CqMHN+QSeLs31oi9Gxz8yntnc+X5XozwYMlV2Lbk8e14D/Nw/RaHmgGcbjuSiO+UIeCiuFQDOzYQTkMO01KRoIwMgVixDay40rR2WTtT8k=</DQ><InverseQ>cfVixwsMog8F8CDikcYKNmUGNJPeJ4grdJi4ZIMX5mSuhdvSccTnx7JoCMJ2LKwFLyMnmZIIeYF4EYBgwHz6rumL8Zam6Zr04uIpxWL3MZyR9BImREmH6e6aFzHq/P02phU6tNbzkHMp6QGsfgtkLSmzOed0GsvfwAxCfD20PXU=</InverseQ><D>PMTR/bJ5Qs4KHMXL5r3Hnr8jvlOBW+YTFtM+RQO0evftpGUviv0crWAJWok9ujGP/z1bs4NOXDHbImkfJPSLZfw8vknglGZZ3+gzaNxmvuGBLwEJOTkbYt3KmCFAqsIPyemHebAG1XHam0WprA2Xv9pZbD8S7xlV2w6lIcg3K4ak6tNG2yKepoQ2DvFdF/ZTtOu0ybE+g8AA6UxWCy/liTLN2fxgVwP45XAAFIue/x6aF6m09gxi/xJaxwafEeonVZU9aaqpbyb5eeMixRSbkVuK2DZrF/lW9oedp0mYtI+E7nRyxykxFl3rrC9B8ETKBzNONPgB4PpuaSSdC0ELcQ==</D></RSAKeyValue>

<RSAKeyValue><Modulus>m4SbvlZhH5UzcgDLIEIygjTCCQMxc/TrwUYZ5JA5SU2jtSBt9aqwljKJ7h4Tv5eP2Efy4Z+2QajDNtOThift4nVTWsl+iOoMKKV6pvQOFj6k2P4kRTBGo/t8J46j7DqnFeMHXUjhjv2RFnp1nms8thE6+MJsI0lnxYTLBip5mNbj+Jbr7vVzK8MKnjGxsr9FoRBVNyZM+ILFu3aO62z1a8PIrI4kqVVggD35oF4WdSrmVLFvec/1ej3Cx12NjqCXo3lZhwxlIKjFNMNtslXnk0o9L/ZlWlEjqXiez/3ryzpVBrlrtb9D+x1ZRtv58jtdSTE61//jtEb3mMUeTry+2w==</Modulus><Exponent>EQ==</Exponent></RSAKeyValue>

復号済みログおよびエラー メッセージ

'{0}' autorun algorithm is not supported!

'{0}' request method isn't supported.

Accessed date mismatch in get command!

Accessed date mismatch in list command!

Action with identifier {0} is not implemented.

Autorun command requeres autorun type to be set!

Autorun failed due to {0}

Cmd command requires actual commands list!

Commiting suicide…

Control server address '{0}' is invalid.

Copy command requires destination path!

Copy command requires source path!

Copying file from {0} to {1}…

Created date mismatch in get command!

Created date mismatch in list command!

Directory listing for {0}

Executing command with {0}…

Failed to create agent due to {0}

Failed to create channel due to {0}

Failed to create injector due to {0}

Fatal failure due to {0}

Getting file query {0}…

Getting system information…

Going to sleep for {0}…

Got '{0}' command from {1}.

Got new '{0}' command.

Got new task #{0} from {1}.

HTTP listening isn't supported.

IPC channel is not ready.

Injected into explorer.

Injected into {0} [{1}].

Injecting into explorer…

Injecting into {0} [{1}]…

Injection failed due to {0}

Installing plugin…

Invalid FTP server status ({0}).

Invalid last contact time.

Invalid or unknown action format ({0})!

Invalid sender interval.

Kazuar's {0} started in process {1} [{2}] as user {3}/{4}.

Killing processes…

List command requires file query string!

Listening

Listing plugins…

Listing processes…

Max interval value is less than min value!

Max interval value is more than supported!

Min interval value is less than supported!

Modified date mismatch in get command!

Modified date mismatch in list command!

Move command requires destination path!

Move command requires source path!

Moving file from {0} to {1}…

Mozilla/5.0 (Windows NT {0}.{1}; rv:22.0) Gecko/20130405 Firefox/23.0

Mozilla/5.0 (X11; {0} {1}; rv:24.0) Gecko/20100101 Firefox/24.0

New plugin {0} was installed.

No servers available now.

Plugin command requires payload!

Plugin installed.

Plugin removed.

Plugin {0} was removed.

Plugin {0} was started.

Plugout command requires plugin name string!

Proc kill command requires name or pid to be set!

Process {0} [{1}] exited with {2} code.

Process {0} [{1}] impersonated.

Put command requires correct file path!

Put command requires payload!

Putting file to {0}…

Remote control failed due to {0}

Remote failed due to {0}

Remote iteration failed due to {0}

Remote request from {0} failed due to {1}

Remove command requires file path!

Removing file {0}…

Removing plugin…

Request was sent to {0}.

Result #{0} was sent to {1}.

Result #{0} was taken by {1}.

Run command requires executable path!

Run-time error {0}:{1:X8}.

Run-time error {0}:{1}.

Scheme '{0}' is not supported!

Searching file query {0}…

Send iteration failed due to {0}

Sending request to {0}…

Sending result #{0} to {1}…

Server command requires at least one server!

Setting agent id to {0}…

Setting autorun type to {0}…

Setting remote type to {0}…

Setting transport interval to [{0} – {1}]…

Setting transport processes:

Setting transport servers:

Shellcode error {0:X16}.

Sleep interval is longer than supported!

Solving task #{0}…

Startup path is empty.

Taking screen shot…

Taking webcam shot…

Task #{0} execution finished.

Task #{0} execution started:

Task #{0} failed due to {1}

Task #{0} solved.

Transport command requires at least one process name!

Transport process name '{0}' is invalid.

Transport processes

Unable to create capture window.

Unable to delete task #{0} file due to {1}

Unable to execute command due to {0}

Unable to execute task #{0} due to {1}

Unable to get last contact time due to {0}

Unable to get task from {0} due to {1}

Unable to impersonate {0} [{1}] due to {2}

Unable to return logs due to {0}

Unable to send result #{0} to {1} due to {2}

Unable to start plugin {0} due to {1}

Unable to stop plugin {0} due to {1}

Unable to store agent id due to {0}

Unable to store autorun type due to {0}

Unable to store interval due to {0}

Unable to store remote type due to {0}

Unable to store servers due to {0}

Unable to store transports due to {0}

Unhandled exception {0}

Upgrade command requires payload!

Upgrading agent…

Using default agent id due to {0}

Using default autorun type due to {0}

Using default interval due to {0}

Using default remote type due to {0}

Using default servers due to {0}

Using default transports due to {0}

Uuid command requires identifier!

Waiting for shellcode failed.

Waiting for window '{0}' failed.

explorer.exe, {0}

ERROR: {0}

Plugin {0}

{0} doesn't exist!

{0} was skipped.

proc – {0} [{1}]

time – {0}

user – {0}/{1} ({2})

Enlarged Image