はじめに
Talos では、絶え間なく送られてくる悪意のある電子メールを毎日調査しています。それらの多くは、ランサムウェア ファミリのスパム/フィッシング キャンペーンや、バンキング型トロイの木馬やボットといった一般的なマルウェア ファミリです。しかし小規模なキャンペーンの方が注目に値することも珍しくありません。興味深いマルウェアが含まれている場合もあるからです。そのような小規模キャンペーンの 1 つは、数週間前に発見されたものです。電子メールの最初の発信元は中東で、トルコの貿易会社を装っていました。この時点で中東発の攻撃が盛んであったかもしれません。マルウェアの分析は、ピースごとに分析して初めて全体像が浮き上がるため、多くの面でジグソー パズルと似ています。Zyklon のケースでは、キャンペーンの分析に当初の予定よりも多くの時間を費やしました。キャンペーンには複数の感染ステージがあり、最終的なペイロード レベルに到達する前にすべてを解明する必要があったからです。さらに、それぞれのステージが異なる開発プラットフォームを使用し、別の方法で難読化されていました。ここでは順を追ってご説明します。
ステージ 1:電子メール
電子メールには 2 つの添付ファイルが含まれています。1 つ目は、Office Open XML 形式の Word ドキュメントで、2 つ目は ZIP 形式の PurchaseOrders.zip です。PurchaseOrders.zip には、実行可能ファイル PurchaseOrders.exe が含まれています。悪意のある電子メールの添付ファイルは単体であることが多く、これは電子メール キャンペーンとしては比較的珍しいと言えます。添付ファイルが複数あるのは、受信者にいずれか 1 つでも開かせる狙いがあると考えられます。
電子メール キャンペーン
ステージ 2a:Word ドキュメント(CVE-2013-3906)
添付ファイルの Word ドキュメント「Letter of introduction.doc」には、TIFF 画像ファイル解析の脆弱性(CVE-2013-3906)に対するエクスプロイトが含まれています。ドキュメントには、CVE-2012-1856 においても使用される複数の TabStrip(classid:{1EFB6596-857C-11D1-B16A-00C0F0283628})ActiveX コントロールが含まれています。
ヒープ スプレーに使用される埋め込み型 ActiveX コントロール
埋め込み型 TabStrip ActiveX コントロールはヒープ スプレーに使用され、埋め込みの TIFF ファイル(「image1.jpeg」)は CVE-2013-3906 の脆弱性をトリガーします。埋め込み型 ActiveX コントロールは 40 個あり、それぞれ 2MB の割り当て済みメモリ スペースにマッピングされます。この場合のエクスプロイトには時間がかかりますが、最終的には脆弱性が存在するバージョンの Word を機能停止させ、シェルコードを開始します。シェルコードはすぐに ActiveX OLE2 ファイルの 16 進ダンプに表示され、エクスプロイトされた Word プロセスのメモリでスプレーされます。
ActiveXn.bin ファイルからヒープ スプレーされたシェルコード
シェルコード:フックの回避
シェルコード自体は比較的単純で、ペイロードのダウンロードに使用される URL を除いて、長さはおよそ 450 バイトです。API の検出には、多くの場合と同様、Process Environment Block(PEB)を解析し、ロードされたモジュールとエクスポートされた個々の機能のリンク付きリストを検討します。
シェルコードは、必要な API を呼び出す前にインライン フック(多くはエンドポイントのセキュリティ製品によってインストールされている)の存在を確認します。動作検出ウィンドウで検知されるのを防ぐため、インストールされたフック コードをジャンプします。
セキュリティ フックの回避
ユーザが添付された Word ドキュメントによって感染すると、シェルコードは感染した正当なサーバから実行可能ファイルをダウンロードして実行します。最終的なペイロード用の C2 サーバは、ダウンロードされたペイロードの本文内で暗号化されている設定 BLOB から取得されます。
ステージ 2b:PurchaseOrders.exe
シェルコードによってダウンロードされた実行可能ファイルは電子メールに添付された実行可能ファイルと機能的に同一であるため、添付ドキュメントを開くか、または PurchaseOrder.exe を起動するかにかかわりなく、最終的に PurchaseOrder.exe が実行されます。実行可能ファイルは PDF ドキュメント アイコンで表示されます。Windows では既知のファイル タイプの拡張子がデフォルトで非表示になっているため、ユーザが(実際は「exe」であることに)気付かないとしても仕方がありません。
PurchaseOrder.exe で使用されるアイコン ファイル
実行可能ファイル自体のサイズは 1.4MB ほどで、電子メール キャンペーンで使用される添付ファイルとしてはやや大きめです。ファイル自体は自己解凍型の CAB アーカイブで、ランダムに命名された 3 つのファイルが含まれています。
ステージ 3:AutoIt スクリプト
最初のファイルはすぐに認識できます。これは正当な Autoit スクリプト インタープリタです。2 番目のファイルは UTF-16 としてエンコードされた Unicode ファイルで、サイズは 110 MB を超えています。このサイズは分析を妨げるのに十分な大きさです。実際のスクリプト コードはファイルに巧妙に隠されており、セキュリティ ベンダーによる検出を逃れるためスクリプト コードは難読化されています。
Talos では、類似の配布方法を以前の記事で解説しています。今回のキャンペーンでも、類似するジェネレータにより Autoit スクリプトを難読化していると思われます。幸いにも、すべての余分な文字を削除し、分析コード サイズを 41 KB まで縮小するのは比較的容易でした。
Autoit の難読化解除ステージ
Autoit スクリプトはユーザのプロファイル フォルダにディレクトリを作成し、属性をシステムおよび非表示に設定します。さらに、RegSvcs.exe(.NET サービス インストール ツール)のコピーを作成するか、または既存の RegSvcs.exe をファイル名 splwow64.exe にコピーして、次のステージの準備を整えます。Regscvcs.exe は、リモート スレッドをプロセス スペース内に注入して起動するために使用されます。リモート スレッドは RC4 を使用して、自己解凍型 CAB アーカイブによってドロップされた 3 番目のファイルを復号化し、それを regsvcs.exe のプロセス スペースに読み込みます。C/C++ で開発された実行可能ファイルを使用して、次のステージに進みます。このステージは実行可能ファイル形式でのみメモリに含まれますが、ディスク上では RC4 の暗号化された BLOB データになります。
ステージ 4:Zyklon インジェクタ
RegSvcs.exe に注入されたステージは、難読化されていない最終ペイロードの別のインジェクタです。実行可能ファイルは PE ファイルのリソース セクションからペイロードを圧縮解除し、Windows Explorer 実行可能ファイルを検索して起動します。このファイルは、Windows プラットフォーム(32/64 ビット)に応じて異なるフォルダに保存されます。次に、キャンペーンの最終的なペイロード(この場合は、Zyklon HTTP ボットのサンプル)である .NET 実行可能ファイルをロードして、実行するリモート スレッドを起動します。
管理対象コードを非管理対象スペースにロードするのは複雑なプロセスです。キャンペーンの作成者は、感染チェーンを改造してコマンド ラインから Zyklon ボットを起動するという手口を明らかに予想しています。Zyklon クラスの Main 関数を変更しており、コマンド ラインから Zyklon ボットを起動しようとすると以下のようなメッセージを表示させます。
元の Zyklon コード(バージョン 1.0.0.0)には、ペイロードを特定ローダーから実行させるメカニズムが含まれていません。元の Zyklon コードで呼び出されるのは Zyklon クラスの Main 関数ではなく、異なるエントリ ポイントです。
「この使用方法は禁止されています」
ペイロードは、Crypto Obfuscator と追加のコード ジェネレータを使用して難読化されています。Switch ステートメントでプログラム フローを指示するための変数値を XOR 演算により設定するコードは、Crypto Obfuscator コード変換を削除すれば比較的容易に追跡できます。コード変換の削除には、非常に強力な .NET 難読化解除ツール de4dot を使用しています。VirusTotal 上にある Zyklon Builder は、de4dot および dnspy 分析ツールでも使用される dnlib ライブラリを使用して、リソース セクションに埋め込まれた悪意のある.NET アセンブリの基本 Zyklon ボットに設定ファイルを追加します。
難読化を解除した後は、分析のために Zyklon クラスの Main 関数を手動で変更し、ボット コードが含まれる EntryPoint 関数を呼び出し、dnspy デバッガにより Zyklon をデバッグしています。
C2 通信(暗号化)
Zyklon の「正式名称」は「Zyklon H.T.T.P Bot」です。この名前は、コンパイル プロセスの残りの部分として保持されている PDB ファイルへのリンクに表示されます。ボットはある程度巧妙に作成されており、すべての通信を暗号化することで、ネットワーク ベースの検出エンジンだけでなく傍受プロキシからもトラフィックを隠します。
C2 サーバとの通信の確立
ボットは 3 台の C2 サーバのうち 1 つに接続します。接続試行する順番は、設定ファイルでの指定順になります。サーバが証明書を送信すると、最初に RSA を用いて暗号化され、次にサーバで生成された初期化ベクトルとキーを持つ 256 ビット長の AES を用いて暗号化されます。クライアントがクエリ gate.php?getkey=y で終わる要求を送信すると、クライアントに戻されます。
キャンペーン全体を通してアクティブだった C2 サーバの 1 つに対する DNS 要求を調べると、キャンペーンがアクティブだった時期を確認できます。
C2 DNS ドメイン アクティビティ
ボットの初期設定は、C2 サーバと通信する際に使用されるユーザ エージェント文字列のリストと合わせて、ファイルのリソース セクションに埋め込まれています。また、悪意のある .NET アセンブリには暗号化された BLOB が含まれており、これが永続モジュール インジェクタになります。復号化とメモリへのロードが行われると、メインの実行可能ファイル プロセスが終了しても、ボットがリモート スレッドから再作成されるようになります。
クライアントは、感染したシステムに関する情報が含まれる要求を送信し、内部ボット パラメータを設定する設定文字列を C2 から受信します。必要な追加プラグインをダウンロードして実行するために、いくつかのスレッドが起動されます。
main コマンド ループが 60 秒間スリープ状態になり、コマンドの要求を C2 サーバに送信します。ボットの主な目的は DDoS 攻撃だと思われますが、他にもいくつかの標準コマンドに対応しています。たとえば、ユーザ指定の URL から追加のペイロードをダウンロードして実行するコマンドや、ユーザのキーストロークをロギングして C2 サーバに送り返すコマンドなどです。
不思議なことに Zyklon は、Windows レジストリ内の通常の自動スタートアップの場所を列挙して、競合する可能性のあるファイルを検出し、それを VirusTotal に送信してスキャンさせようとする場合があります。VirusTotal の判定に基づいてプロセスを終了するために、クラウド マルウェア検査が使用されます。またボットは、既知の競合する一部のボット名とファイル名拡張子をシステム上で検出し、基本的なヒューリスティック検査を実行して削除しようとします。攻撃者が競合ファイルを好まないことは明かです。
Zyklon Web サイト
Zyklon をアドバタイズする Web サイトは、.onion ドメインでホストされます。このドメインには、Web 経由のクリア ネット、Tor やプロキシを介してもアクセスできます。所有者は販売用に 2 つの異なるバージョンをアドバタイズしています。1 つは Tor ベースの C2 サーバ接続機能で、もう 1 つはその機能がない標準的なものです。
おそらく、Zyklon Web サイトで最も興味深いページは「利用規約」です。作成者はこれがあれば訴訟を回避できると考えているようです。少なくとも Zyklon の作成者によると、サイトによる損害への法的責任は Zyklon のユーザ(つまり攻撃者)がすべて負うとしています(以下原文のまま掲載)。
YOU UNDERSTAND AND HEREBY ACKNOWLEDGE AND AGREE THAT YOU MAY NOT AND WARRANT THAT YOU WILL NOT:
- use the Zyklon H.T.T.P Remote Administration Software for any illegal purpose, or in violation of any laws, including, without limitation, laws governing intellectual property, data protection and privacy, and import or export control;
- remove, circumvent, disable, damage or otherwise interfere with security-related features of the Zyklon H.T.T.P Remote Administration Software, features that prevent or restrict use or copying of any content accessible through the Zyklon H.T.T.P Remote Administration Software, or features that enforce limitations on use of the Zyklon H.T.T.P Remote Administration Software;
- intentionally interfere with or damage operation of the Zyklon H.T.T.P Remote Administration Software or any user’s enjoyment of them, by any means, including uploading or otherwise disseminating viruses, worms, or other malicious code;
- post, store, send, transmit, or disseminate any information or material which infringes any patents, trademarks, trade secrets, copyrights, or any other proprietary or intellectual property rights;or
- Install and/or use Zyklon H.T.T.P Remote Administration Software on any computer which you do not have explicit permission to do so on;
- distribute Zyklon H.T.T.P files over the Internet with the intent of infecting/harming machines of other people;
モジュール(電子メール、ブラウザ、FTP)を収集する、ダウンロードされたクレデンシャル
Zyklon でアドバタイズしている各種プラグインには、ユーザ クレデンシャルを収集し、ビットコイン、LiteCoin や DodgeCoin などの暗号通貨ウォレットの詳細を含む機密情報を盗む目的があります。潜在的な「顧客」にとって、これらの機能は非常に魅力的に映るでしょう。しかし、すべてが一見したほど魅力的なわけではありません。
分析されたキャンペーンでは、C2 サーバの指示に従って Zyklon のメインの実行可能ファイルは 3 つのプラグインのみをダウンロードします。これらのプラグインはすべて、Web ブラウザのパスワード キャッシュに加えて、電子メールや FTP クライアントからユーザ クレデンシャルを盗むことを目的としています。
CI=False|KT=1|UAC=False|S5=False|ER=False|UPNP=False|RP=True|RW=False| AK=False|BK_CYCLE=|BK_RUN_ONCE=False|SOCKS_PORT=3128|SOCKS_AUTH=False| SOCKS_USERNAME=Nothing|SOCKS_PASSWORD=Nothing|KLI=1|KLM=500|EKL=True| WC=False|BA=MyBtc|LA=MyLtc|KLF=False|BR=True|FTR=True|EMR=True|SFR=False|
GR=False|AU=False|UF=N/A|
C2 サーバから Zyklon に送信される設定コマンド
プラグインのダウンロード URL の形式は plugin/index.php?plugin=<pluginname> で、以下のようになります
/plugin/index.php?plugin=browser
/plugin/index.php?plugin=email
/plugin/index.php?plugin=ftp!
/plugin/index.php?plugin=software
/plugin/index.php?plugin=games
/plugin/index.php?plugin=cuda
/plugin/index.php?plugin=minerd
/plugin/index.php?plugin=sgminer
/plugin/index.php?plugin=socks
使用可能な Zyklon プラグイン
ダウンロードしたプラグインは、以前に起動し、「Hollow」トリックにより正当なプロセス名である「%windir%\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe」に注入されます。これらは、Web サイト http://www.securityxploded.com から入手可能な C/C++ で作成されたフリーウェアのコマンド ライン ツールに含まれています。
Zyklon の作成者は、Zyklon のメイン ボット内に全機能を組み込むには長時間かかることを認識していたようです。そのため無料のパスワード ダンピング ユーティリティを組み込んでおり、非常に熾烈と言えるリモート管理ツールの闇市場で RAT の競争力を高めています。
まとめ
Zyklon は非常によく知られたボットネット キットであり、今年はかなり活発化しています。Talso の分析によると、Zyklon は小規模の標的型です。Zyklon のユーザは、さまざまな手口や難読化技法を使用して成功率を上げています。用いられている手法には、Autoit スクリプトや .NET 実行可能ファイルを利用した Microsoft Word の脆弱性のエクスプロイトから、ブラウザ キャッシュ、電子メール、FTP クライアントからクレデンシャルを収集するためのプラグイン(フリーウェア)まで含まれています。
エンドポイント上の Zyklon キャンペーンの実行フロー
今回のキャンペーンを全体的に見ると、感染したホストを C2 サーバとして使用する巧妙な手口だと言えます。しかし幸いにもフットプリントの検出に利用できる弱点がいくつか存在しており、IOC の調査や、エンドポイントでのネットワーク通信パターンと動作の追跡により検出できます。
カバレッジ
Advanced Malware Protection(AMP)は、これらの攻撃者によるマルウェアの実行の阻止に最適です。
CWS や WSA の Web スキャンは、悪意のある Web サイトへのアクセスを阻止し、それらの攻撃に使用されるマルウェアを検出します。
高度なセキュリティを備えた NGFW、NGIPS、および Meraki MX などのネットワーク セキュリティ アプライアンスにより、今回の脅威に関する悪意のあるアクティビティを検出できます。
AMP Threat Grid は、悪意のあるバイナリを特定し、すべてのシスコ セキュリティ製品に保護機能を埋め込みます。
Umbrella は、悪意のあるアクティビティに関連付けられているドメインの DNS 解決を防止します。
Stealthwatch は、ネットワーク スキャニング アクティビティ、ネットワーク伝達、および CnC インフラストラクチャへの接続を検出し、これらのアクティビティについて管理者にアラートを発行します。
IOC(セキュリティ侵害の兆候)
ドキュメント エクスプロイト
ac944374d5f50ecbdd3b9e7151d5a4b055ec18ea26482c2301ccc439164b25be
996b19658cffedc9395243693c3ca1d12a2c2a2c986e35a877f1ae2a2b595a6d
感染したドキュメントによってダウンロードされた PE Exe
4bce73a29ee1b9840cd82d8c08e107179cd74dc1aed488f6d16772ce12092c69
bcf8dbbc78883b2d84511819123cf39b1c2ffe3cd9763d08fe1544c89084cadf
ZIP 添付ファイル
e67db2e2ebd3c540489dd4844b066b45f31b2d879a085eabda1f63926ddc0688
b1906c1d23f62df7f63a06030f27c3249414d027a9deb62d27f65ec6f3a61adb
ZIP に含まれる PE exe ファイル
b7101462507a8cf5bf91b62b641ef1ac3d268115d6dfca54a1625efb07fccf0d
4bce73a29ee1b9840cd82d8c08e107179cd74dc1aed488f6d16772ce12092c69
ブラウザ プラグイン
e5d2c3a7ddd219ab361af4a709999a492387e3aaf8380187a7699895fc383e40
FTP プラグイン
6a32a0d83a5c955822502444833283a3fde8e1893f1490fac1ae5b84a00db5c6
電子メール プラグイン
bbcc07baaa00bb30de43a39a04dc66754fe805630f155fde47ab259fdbd03748
Zyklon Builder v1.0.0
682d5d60d6fc0e1d5810e9cd9d8b1c6b6fa154d5a790da944177074d28846d66
ダウンロード URL
http://wszystkozmetalu[.]pl/Invoiceq.exe
http://www.blcpolychemical[.]com/re/PurchaseOrders.exe
http://barkliaytire[.]com
http://distriegroupelectric[.]com
http://extreime-net[.]com
http://distriegroupelectric[.]com:80/plugin/index[.]php?plugin=ftp
http://distriegroupelectric[.]com:80/plugin/index[.]php?plugin=email
http://distriegroupelectric[.]com:80/plugin/index[.]php?plugin=browser
C2
http://distriegroupelectric.com:80/gate[.]php
http://distriegroupelectric.com:80/login[.]php – Control Panel
本稿は 2017年5月23日に Talos Group のブログに投稿された「Modified Zyklon and plugins from India」の抄訳です。