OilRig攻撃活動: サウジアラビアの組織への攻撃でHelminthバックドアを配信

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

概要

2016年5月、Unit 42は主としてサウジアラビア内の金融機関およびテクノロジ組織に的を絞った標的型攻撃を確認しました。これらの攻撃に関連するマルウェアのサンプルから確認された痕跡で、サウジアラビアの防衛産業も標的にされていることが伺えます。このことは2015年秋に実行された、初期の攻撃に関連しているように見受けられます。私たちはこの2つの攻撃を1つの攻撃活動として分類し「OilRig」と名付けました。

最近のOilRig攻撃において、脅威の攻撃者は正規のサービス プロバイダと称し、スピア フィッシング攻撃を仕掛ける際、ソーシャル エンジニアリングのテーマとしてサービスや技術のトラブルシューティングの提供を持ちかけました。初期のOilRig攻撃はソーシャル エンジニアリングのテーマとして、偽の求人を利用していました。攻撃活動は対象をかなり絞り込んでおり、私たちが「Helminth」と名付けたバックドアを配信します。攻撃活動の経過に伴い、私たちはHelminthバックドアの2つの異なる亜種を確認しました。1つはVBScriptおよびPowerShellで記述されておりExcelスプレッドシートのマクロを介して配信されます。もう1つはスタンドアロンのWindows実行形式ファイルでした。

Clayslide: ExcelマクロがHelminthスクリプトをインストール

2016年5月、Unit 42は添付ファイル(具体的にはサウジアラビア内の金融機関に送りつけられた悪意のあるExcelスプレッドシート)のあるスピア フィッシング電子メール攻撃についてリサーチを開始しました。私たちは今年の5月4日から5月12日にかけて送信されたスピア フィッシング電子メールがこれらの悪意のあるExcelスプレッドシートを配信したことを確認しました、このスプレッドシートは「Clayslide」として私たちが追跡しているものでした。Clayslide文書には、スプレッドシート内にあるおとりの内容を表示しHelminthバックドアの亜種をインストールする悪意のあるマクロが含まれていました。FireEyeもこの攻撃に関して5月22日にブログ記事を書いて報告しました。

Clayslideサンプルに含まれるマクロはHelminthスクリプトをインストールします。このHelminthスクリプトは「update.vbs」と名付けられたVBScriptおよび「dns.ps1」と名付けられたPowersShellスクリプトから構成されています。このVBScriptは、自分のコマンド アンド コントロール サーバに対してHTTPリクエストを使ってネットワーク ビーコンを送信し、ファイルをダウンロードするか、さもなければHTTPレスポンス内に提供されているバッチ スクリプトを実行することを目的としています。また、VBScriptは提供されたバッチ スクリプトの出力をコマンド アンド コントロール(C2)サーバにアップロードするので、これにより脅威の攻撃者はシステムに対して動作可能なリモート シェルを手に入れます。

PowersShellスクリプトの方はVBScriptに機能が類似していますが、HTTP通信を使わず、一連のDNSクエリを使ってサーバとデータの送受信を行います。この通信チャンネルはDNSクエリに対してIPアドレスを伴って応答するC2サーバに依拠しています。このIPアドレスをPowerShellスクリプトが構文解析しシステム上で実行するバッチ スクリプトを構築するためのデータとして扱います。具体的には、スクリプトはIPアドレス「33.33.x.x」を探し、バッチ スクリプト転送開始の印を付けます。スクリプトはさらにDNSリクエストを送信し、名前解決IPアドレスのオクテットを文字として使い、バッチ スクリプトに書き込みます。IPアドレス「35.35.35.35」を受信するまでバッチ スクリプトにデータを書き続けます。「35.35.35.35」は、ファイルにデータを保存するのを終了してこのバッチ スクリプトを実行するようスクリプトに通知するものです。

Clayslideの配信文書およびHelminthスクリプトの亜種に関する詳細については付録をご参照ください。

実行可能なHelminth亜種の発見

WildFireで発見された別のサンプルはHelminthのスクリプト亜種と同じDNSベースのC2の挙動を示しています。しかし、これらのサンプルの多くはWindows実行形式ファイルであり、すでに確認されているVBScriptおよびPowerShellの組み合せではなく、前述のHelminthサンプルと同じ機能を有していることが分かりました。図1は、VBScript版のHelminthに含まれるコードが、名前解決IPアドレスがIPアドレス35.35.35.35であることを確認し、バッチ スクリプトにデータを追記するのを終えてからこのバッチ スクリプトを実行する様子を表しています。これに対し、図2では実行形式ファイル版のトロイの木馬内にある同じ機能を表しています。

図1 IPアドレス35.35.35.35を探すHelminth dns.ps1 PowerShell スクリプト

図2 IPアドレス35.35.35.35を探すHelminth実行形式ファイル

このことから、脅威の攻撃者がHelminthの実行可能な亜種を、Excelスプレッドシートに含まれるマクロに依拠しないスタンドアロンのオプションとして開発したことが伺えます。また、脅威の攻撃者が同じコマンド アンド コントロール サーバのアプリケーションを使う意図で、2つの亜種で同じ通信方法を故意に使ったことも伺えます。さらに、このトロイの木馬の亜種は私たちがその名前を見つけた場所にあります。これらのペイロードのいくつかが下記のデバッグ シンボル パスを持ち、マルウェア作成者がこのプロジェクトを「Helminth」と名付けたと思われます。

E:\Projects\hlm updated\Helminth\Release\Helminth.pdb

Helminthの実行可能ファイル型亜種の追加情報については、付録を参照してください。

HelminthのWindows実行可能ファイル型亜種の配信

Unit 42は、トロイの木馬Helminthの実行可能ファイル型亜種を配信する攻撃に関連する、標的についての詳細情報を入手できていませんが、攻撃者がトロイの木馬Helminthを配信するために使ったと思われる、August 2015年8月に作成されたZipアーカイブを発見しました。このZipファイルは次の場所でホストされていました。

hxxp://minfosecu.doosan[.]com/data/joboffer.zip

このZipアーカイブはパスワードで暗号化されていて、そのパスワードは不明ですが、joboffer.chm、thumb.dbという名前の2つのファイルが格納されていることがわかっています。私たちは、既知のHelminth実行可能サンプルをインストールするドロッパーのトロイの木馬(SHA256: fb424443ad3e27ef535574cf7e67fbf9054949c48ec19be0b9ddfbfc733f9b07)を‘HerHer’という名前で追跡していますが、このアーカイブに入っているthumb.dbファイルの名前とファイル サイズ(368128バイト)は、このトロイの木馬と同じです。joboffer.chmファイルはコンパイル済みHTMLファイルで、‘thumb.db’ファイルをロードしてペイロードとして実行するものと考えられますが、アーカイブからファイルを抽出するためのパスワードがわからないため、確証はありません。

‘thumb.db’によってインストールされたHelminthサンプルが開くおとり(図3を参照)は、HTMLヘルプに関連するダイアログ ボックスです。これは、joboffer.chmはサンプルを実行するものだという私たちの仮説をさらに強固に裏付けています。joboffer.chmファイルは実際にはスタンドアロンのHTMLファイルであるため、攻撃者はトロイの木馬Helminthのインストール後にHTMLヘルプのダイアログを開こうとしていたということが、このおとりから推察されます。また、攻撃者はソーシャル エンジニアリングを用いて事態の重大性を悟られないようにし、被害者が悪意のある活動を懸念するような行動を取った場合、別の合法的な求人情報を提供しているものと思われます。

図3 コマンド・ラインで‘w’を指定した場合、Helminthサンプルによってこのダイアログ ボックスが表示される

Helminthの実行可能ファイル型亜種は、私たちがトロイの木馬HerHerという名称で追跡しているドロッパーのトロイの木馬によってインストールされます。このトロイの木馬の目的には2つの目的があります。1つは埋め込まれたトロイの木馬をインストールすること、もう1つは、偽のエラー プロンプトまたは偽の“trubleshooting” (マルウェアの作成者は、すべてのサンプルで「トラブルシューティング」という単語のスペルを間違っています) ユーティリティを表示することです。図4および5に、トロイの木馬HerHerによって表示される偽のエラー プロンプトと偽のWebsphereトラブルシューティング ユーティリティの例を示します。偽のトラブルシューティング ユーティリティは、ClayslideのExcelスプレッドシートに表示されるおとりコンテンツに見られるような、サービス プロバイダのソーシング エンジニアリング テーマを組み込んでいます。

図4 トロイの木馬HerHerによって表示される偽のエラー プロンプト

図5 トロイの木馬HerHerによって表示される偽のトラブルシューティング ユーティリティ

Helminthの実行可能ファイル型亜種は、機能的にはスクリプトベース版と非常によく似ており、HTTPとDNSクエリの両方を使用してC2サーバと通信します。これら2つの亜種が機能上大きく異なる点は、実行可能ファイル バージョンには、Helminthがキーストロークを記録してクリップボードの内容をC2サーバへと盗み出すために使用するモジュールが付属する点です。

Helminthの実行可能ファイルのサンプルは、収集した情報をネットワーク ビーコン内部に潜ませて、そのC2サーバに送信します。このトロイの木馬では、このサーバを‘グループ’および‘名前’と呼んでいます。私たちは、Helminthの目的を判断するため、その実行可能ファイル型亜種からグループと名前の値を抽出しました。マルウェアにハードコードされたグループの値は、その多くがサウジアラビアの通信産業や軍需産業の組織であることから、標的とする組織に関連付けられているようです。この標的セットには金融機関以外の産業も含まれている可能性があるため、攻撃者は金融機関だけを狙っているわけではないことがうかがえます。

Helminthのサンプルにハードコードされた名前の値も興味深く、大半は著名な哲学者にまつわるものになっています。たとえば、‘Plato’(プラトン、ギリシャの哲学者)、‘Arasto’(ギリシャの哲学者アリストテレスを表すペルシャ語およびウルドゥー語)、‘ALAfghani’(ジャマールッディーン アフガーニー、イスラムの哲学者)などです。サンプルに組み込まれた名前の他の値には、‘oily’という意味である‘Nafti’(نفتی)などのペルシャ語の単語が含まれています(このキャンペーンのOilRigという名前の由来でもあります)。

Helminthのインフラストラクチャ

収集したHelminthの一連のサンプルから判明したインフラストラクチャを検証したところ、攻撃者の戦術に関する興味深い結果が得られました。Excelドキュメントに埋め込まれた悪意のあるマクロを利用する亜種は、すべて同じコマンド アンド コントロール サーバ、go0gie[.]comを使用しています。一方、実行可能ファイル型の亜種は、さまざまなドメインを使用しています。

checkgoogle[.]org
mydomain1110[.]com
kernel[.]ws
mydomain1607[.]com
mydomain1609[.]com

図6 HelminthのC2インフラストラクチャ

武器化されたExcelドキュメントの亜種のサンプルは、それぞれ固有のコマンド アンド コントロール ドメインを使用して、次の形式でボットIDを取得していました。

00000000<base 36 of a random number smaller than 46655>30.go0gie[.]com

ただし、これらの各ドメインは5.39.112.87という同じIPアドレスに解決されます。このIPは、Portable Executable型の亜種によって使用される2つのドメイン、kernel[.]wsおよびmydomain1110[.]comに解決されることが確認されています。実行可能ファイルのコンパイル タイムスタンプ、および武器化されたドキュメントの最終保存タイムスタンプから判断すると、攻撃者は、新しいマクロベースの亜種でも、5.39.112.87にある構築済みのC2サーバを再利用していると考えられます。以前のPortable Executableサンプルで使用されていたことを確認済みの別の1つのC2ドメインとIPには、新しいマクロ型の亜種と共通するインフラストラクチャはありませんでしたが、ドメインの命名体系に戦術的な共通点があります。

履歴的なWHOISデータから別の発見があり、イランを拠点とするオペレータが関与している可能性が浮上しました。時系列で見ると、2015年7月からほぼ毎月連続して新しいドメインが登録されていました。ドメインのWHOISデータそれぞれに登録情報が含まれていました。その情報は、再使用されていたか、または以前使用された情報と緊密に関連していました。たとえば、ドメインmydomain1607[.]comおよびmydomain1609[.]comはまったく同じ登録情報を使用していました。電子メールアドレスedmundj@chmail[.]irおよびイランのテヘランの位置情報が記載されていました。Kernel[.]wsおよびcheckgoogle[.]orgは、それぞれ、非常によく似た電子メールアドレスandre_serkisian@yahoo[.]comおよびandre.serkisian@chmail[.]irを使用していました。kernel[.]wsの登録情報もイランのテヘランの位置情報を提供し、checkgoogle[.]orgで使用されたアドレスの電子メールプロバイダはmydomain1607[.]comおよびmydomain1609[.]com, chmail.irに使用されたプロバイダと同じでした。ドメインmydomain1110[.]comは以前に観察されたWHOISデータのアーチファクトのいずれかを再使用したのではないようでしたが、既知のコマンドアンドコントロール ドメインにテーマが似ていて潜在的に関係のある別のドメインにリンクされた電子メールアドレスの使用に加えて、テヘランの位置情報を提供していました。

WHOISの登録情報内でイランを拠点としたアーチファクトが大量に使用されていますが、このデータは簡単に偽造されることを覚えておくことが重要です。ただし、登録情報およびサンプルのペルシャ語の使用を額面通りに受け取ると、オペレータがイランを拠点としているかもしれないと思わざるを得ない。

結論

OilRig攻撃の調査中にサウジアラビアの組織に対する標的型攻撃の2つのうねりを確認しました。この攻撃では、攻撃者のグループはトロイの木馬Helminthをペイロードとして配信しました。この2つの攻撃のうねりは、別々のトロイの木馬Helminthの亜種を使用しました。具体的には、トロイの木馬のスクリプト型の亜種および実行可能ファイル型の亜種でした。

このHelminthの2つの亜種は、攻撃に使用されたHelminthの2つの亜種に関係なく、ほぼ同じコマンドアンドコントロール プロトコルを使用し、攻撃者が攻撃中に一貫性のあるインフラを維持し、侵入されたホストを管理できるようになっていました。

このHelminthの2つの亜種は異なる配信方法を必要としていました。スクリプト型の亜種は配信にExcelのスプレッドシートを利用し、実行可能ファイル型の亜種は配信文書を使用せずにインストールできる従来型の方法を利用していました。実行可能ファイル型の亜種では、脆弱性のエクスプロイトに成功した結果としてペイロードをインストールするのではなく、攻撃者がソーシャル エンジニアリングの手法で被害者にペイロードを実行させたと弊社ではと推測しています。配信方法が複数あることから、この脅威グループは、この包括的な攻撃でその時の戦略に合わせて攻撃手順を適合する能力があることを示唆しています。

Palo Alto Networksのお客様はトロイの木馬Helminthから保護されています。また、以下のツールを使用して追加情報を収集できます。

·    既知のすべてのサンプルを悪意があるとして検出するWildFire

·    すべてのHelminth C2ドメインには、PAN-DBで作成され悪意があるとして識別されているDNSシグネチャがあります。

·    AutoFocusタグ Clayslide、 Helminth および HerHerDropper

付録

Clayslideの配信文書

まず、Clayslideのスプレッドシートに「Incompatible」というワークシートが表示されます。これには、(図7に示すように)ユーザーが手動でマクロを有効にする指示が含まれています。Excelではマクロはデフォルトでは無効になっています。これは、ユーザーをだまして埋め込まれたマクロを実行させてトロイの木馬をインストールさせようとする試みです。この方法では、脆弱性のエクスプロイトを必要としません。図7にExcelの「Protected View」アラートを示します。これは、システムに悪影響を及ぼす可能性があるマクロが埋め込まれていることをユーザーに通知します。

図7 マクロを有効にする指示を含む「Incompatible」ワークシートを表示しているClayslideのスプレッドシートおよび「Protected View」アラートメッセージを表示しているExcel

スプレッドシートに表示された指示に従ってマクロを有効にするには、ユーザーは「Protected View」で表示された赤色のバーをクリックし、図8に示すように「Edit Anyway」ボタンをクリックする必要があります。

図8 「Protected View」はClaySlideのサンプルのスプレッドシートを編集すると潜在的に危険であることを再度言及します

「Edit Anyway」ボタンをクリックすると、Excelは、図9に示すように、スプレッドシートにマクロが含まれていることを警告する別のセキュリティ警告バーを表示します。Clayslideのスプレッドシート内に表示される指示の中で言及されている「Enable Content」ボタンがユーザーに表示されます。

図9 「Incompatible」ワークシートで言及された「Enable Content」ボタンを含むExcelのセキュリティ警告

ユーザーが「Enable Content」ボタンをクリックすると、マクロは「Incompatible」ワークシートを非表示にし、非表示だったワークシートを表示します。これは、悪意のある動作が実行されているのではないかという被害者の疑惑を最小化するためのおとりのコンテンツを表示します。下図10は、Clayslideのサンプル内のマクロによって表示されるおとりのコンテンツを示しています。具体的には、攻撃中に使用されているサービス プロバイダのソーシャル エンジニアリング テーマを組み込んでいる内部ネットワークIPアドレスのステータスを表示します。図10は、「Incompatible」ワークシートが非表示になり、おとりのコンテンツが「Sheet1」というワークシートに表示されていることも示しています。

図10.Clayslideサンプルでマクロを有効にすると表示されるおとりのコンテンツ

このマクロは、おとりのコンテンツを表示した後、トロイの木馬Helminthの亜種であるスクリプトをシステムにインストールし始めます。このHelminthの亜種をインストールするためにこのマクロで使用されているプロセスは、以下のファイルとフォルダーの作成で始まります。

%PUBLIC%\Libraries\update.vbs
%PUBLIC%\Libraries\dns.ps1
%PUBLIC%\Libraries\up
%PUBLIC%\Libraries\dn
%PUBLIC%\Libraries\tp

悪意のあるこのマクロは、2つのスクリプトを一定の間隔で実行するスケジュールが設定されたタスクを作成することで、このインストール プロセスを終了します。このタスクを作成する理由は、これらのスクリプト自体には、最初の実行以降も実行を継続する機能がないことにあります。このマクロに記述された次のコードによって、スケジュールが設定されたGoogleUpdateTaskMachineUIというタスクが作成されます。このタスクは、update.vbsスクリプトを3時間ごとに実行します。

Helminthスクリプトの亜種

トロイの木馬Helminthの亜種であるこのスクリプトは、update.vbsというVBScriptおよびdns.ps1というPowerSchellスクリプトで構成されています。ここでは、この亜種にスクリプトのバージョンによる名前を付けて適切に識別しています。その理由は、この付録の後半で説明するように、このトロイの木馬に別のバージョンが発見されているからです。update.vbsスクリプトは、次の2つのHTTPリクエストを使用して、自身のコマンド アンド コントロール(C2)サーバにアクセスします。

hxxp://go0gIe.com/sysupdate.aspx?req=<random number>%5Cdwn&m=d
hxxp://go0gIe.com/sysupdate.aspx?req=<random number>%5Cbat&m=d

"bat&m=d" を記述したURLへのこれらのHTTPリクエストに対し、C2サーバは一定のバッチ スクリプトを返します。update.vbsは、このスクリプトを"dn"フォルダーに保存して実行します。このダウンロードされたバッチ スクリプトの出力は、"up"フォルダーにテキスト ファイルで保存され、以下のURLへのHTTP POSTリクエストでC2サーバにアップロードされます。

hxxp://go0gIe.com/sysupdate.aspx?req=<random number>%5Cupl&m=u

Palo Alto Networks WildFireでは、既知のHelminthサンプルにC2サーバから送信されるコマンドを調査しました。以下に示すこれらのコマンドでは、システムにある初期設定情報を攻撃者が収集しようとしていることが見て取れます。この情報として、システムにあるユーザー アカウント、ユーザー名、コンピュータ名や、実行しているタスク、サービス、ネットワーク サービスのほか、リモート デスクトップが有効になっているかどうかなどもあります。

update.vbsは、PowerSchellスクリプトであるdns.ps1を実行することで終了します。dns.ps1スクリプトもC2サーバと通信しますが、このサーバへのデータ送信にはDNSクエリを使用します。このスクリプトが送信するDNSクエリは、C2サーバと同じドメイン上のサブドメインのうち、システムから取得したシステム情報やファイルのコンテンツを収めたサブドメインに対するクエリです。初期C2ビーコンとして機能するDNSリクエストのサブドメインは次の構造を備えています。

00000000<46655より小さい乱数の36進数>30

dns.ps1スクリプトは、このDNSクエリに対する応答を確認し、解決するIPアドレスの先頭のオクテットを進入先システムの識別子として使用します。続いて、以下の構造のサブドメインに対する後続のDNSリクエストでこの識別子を使用します。

00<識別子>00000<46655より小さい乱数の36進数>30

これらのDNSクエリに対し、C2サーバではdns.ps1スクリプト側で解析するIPアドレスを返します。最終的に、このIPアドレスを解析したdns.ps1スクリプトでは、システム上で実行するバッチ スクリプトを構成するデータとしてこのIPアドレスを扱います。具体的には、dns.ps1スクリプトはIPアドレス"33.33.x.x"を探し、バッチ スクリプト転送の開始位置とします。このIPアドレスを受け取ったdns.ps1スクリプトでは、そのアドレス末尾の2つのオクテットをバッチ ファイルのファイル名として、当初のマクロで作成された"tp"フォルダーに保存します。バッチ ファイル名を取得したdns.ps1スクリプトでは、さらにDNSリクエストの送信を継続し、解決するIPアドレスの各オクテットを、バッチ スクリプトに書き込む文字として使用します。IPアドレス"35.35.35.35"を受け取るまでdns.ps1スクリプトはバッチ ファイルへの文字の書き込みを続けます。このIPアドレスを受け取ったdns.ps1スクリプトでは、バッチ ファイルへのデータ保存を停止し、バッチ スクリプトを実行します。

ダウンロードされたバッチ ファイルの出力は"%PUBLIC%\Libraries\tp\<batch filename>.txt"に保存されます。dns.ps1スクリプトでは、バッチ ファイルの出力データをDNSクエリのシーケンスに記述することで、バッチ ファイルの出力をアップロードします。バッチ ファイルの出力であるテキスト ファイルのデータを最大23バイトの複数のチャンクに分割することで、この出力を盗み出し、次の構造を持つ一連のDNSクエリに記述して送信します。

00<識別子><拡張子を除くバッチ ファイル名><シーケンス番号の36進数><46655より小さい乱数の36進数><バッチ スクリプト出力データ(最大23バイト)>

update.vbsとdns.ps1はいずれも、高度な機能性を備えたリモート シェルを攻撃者に提供します。攻撃者は、このシェルを使用することで、進入先のシステム上で望みのままにあらゆるアクティビティを実行できます。

Helminthの実行可能ファイル型亜種

Helminthの実行可能ファイル型の亜種は、私たちがHerHer Trojanと呼んで追跡しているトロイの木馬によってインストールされます。トロイの木馬Her Herは、その実行の際に、トロイの木馬Helminthをシステムにインストールするためのファイルをいくつかファイル システムに保存します。

·    %APPDATA%\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\Certificate Managment.lnk

·    %APPDATA%\Roaming\Microsoft\Windows\Start Menu\Programs\Certificate.ico

·    %APPDATA%\Roaming\Microsoft Temperary\adbmanager.exe

·    %APPDATA%\Roaming\Microsoft Temperary\adbtray.exe

·    %APPDATA%\Local\Temp\acro\Users\config.txt

·    %PUBLIC%\Libraries\~Windows\wintrust.hlm

ショートカット"Certificate Managment.lnk"では、図11に示すアイコンにファイル"Certificate.ico"が使用されています。

図11 使用されるアイコン ファイル

また、このショートカットには、「herher」というコメントも含まれています。「herher」は、ドロッパーの基準となっている名前です。Helminthの永続性は、後に続くショートカットに依存しています。ショートカットは、システムが起動するたびに以下のコマンド ラインを使用してこのトロイの木馬を実行するからです。

“C:\Users\Rick James\AppData\Roaming\Microsoft Temperary\adbmanager.exe” q 1

「adbmanager.exe」ファイルと「adbtray.exe」ファイルが実際のトロイの木馬Helminthであり、両方とも同じ実行可能ファイルです。2つの異なるファイル名がある理由は、現在のところまだわかっていません。トロイの木馬Helminthが適切に実行されるには、コマンド ラインに引数が必要です(「Certificate Managment.lnk」ショートカットのところで示した分析済みのサンプルで確認できる「q」)。これらの引数の1つがトロイの木馬の関数コードを実行し、もう1つの引数がおとりのダイアログ ボックスを開きます。

トロイの木馬Helminthは、「[ユーザー名]ver4.1」という名前のミューテックスを作成することによって開始し、埋め込みの設定を暗号化テキストとして以下のファイルに書き込みます。

%APPDATA%\Local\Temp\acro\Users\config.txt

トロイの木馬は後でこのファイルのコンテンツを、RC4アルゴリズム、およびキーとしてMD5ハッシュ「f246b23d-c2d6-45f2-b268-dec30d9adaad」を使用して、復号化します。私たちは、Helminthがドロップした設定ファイルを復号化し、設定ファイルの構造が「IsAlive,[スリープ間隔]\r\n[C2ドメイン]」であることを見つけました。たとえば、Helminthの1つのサンプルでは、「config.text」ファイル内に以下のデータが含まれていました。

IsAlive,30
checkgoogle.org

Helminthの実行可能ファイルとしての亜種は、C2サーバが提供するバッチ スクリプトを実行することができます。このことは、このトロイの木馬のスクリプトとしての亜種と非常によく似ています。実行可能ファイルとしての亜種には、スクリプトとしての亜種にはない別の機能があります。これは、補足的なキーロガー モジュールを使用してキーストロークを記録する機能です。

Helminthは、トロイの木馬HerHerがドロップしたwintrust.hlmファイルをDLLとしてロードし、「Initialize」という名前のエクスポートされた関数を呼び出すことによって、キーロガー モジュールをロードします。キーロガーは、「kk」というウィンドウを作成して、クリップボードとキーストロークの両方をモニターし、データをクリアテキストでファイル「%TEMP%/acro/Users/[CoCreateGuidから取得したGUID]kk.tmp」に保存します。キーロガーは、キーストロークと、キーがタイピングされたときに表示されていたウィンドウの名前を、以下の構造でこのファイルに保存します。

####T####[ウィンドウ名]####ET####
[記録されたキーストローク]

wintrust.hlmキーロガーは、クリップボードのコンテンツも同じファイルに記録しますが、クリップボードのコンテンツは、別に記録されたキーストロークのようにウィンドウ名を指定するヘッダーに続くことはありません。クリップボードのコンテンツは、以下のフォーマットでこのファイルに記録されます。

<<< Clipboard —> [クリップボードのコンテンツ]>>>

Helminth実行可能ファイルのC2通信

Helminth実行可能ファイルは、Helminthのスクリプトとしての亜種と非常によく似た方法で、HTTPクエリおよびDNSクエリ経由でC2サーバと通信します。実際、DNSビーコンの構造とシーケンスは、前のセクションで説明したHelminthのスクリプトとしての亜種のものと同じです。Helminthの2つの亜種から送信されるビーコンにおける主な違いは、ビーコン内に含まれるデータです。スクリプトとしての亜種は、ビーコンにシステム情報を含めて送信することはありませんが、実行可能ファイルとしての亜種は、システムとマルウェアに固有の情報を、HTTPビーコンとDNSビーコンの両方に含めて送信します。

Helminth実行可能ファイルは、要求のHTTPビーコン内の「Cookie」フィールドに、システムとマルウェアの情報を含めます。Helminthは、ビーコンのデータを次のように構築します。

Function=F1; ID=[コンピュータおよびユーザー名のMD5]; Group=[マルウェアでハードコード化]; Name=[マルウェアでハードコード化]; Service=0;

このトロイの木馬は、RC4、およびキーとしてMD5ハッシュ「f246b23d-c2d6-45f2-b268-dec30d9adaad」を使用して、このデータを暗号化し、暗号化されたデータをbase64を使用してエンコードします。

図12は、base64データがCookieフィールドに含まれるHelminth HTTPビーコンを示しています。

図12 HelminthのHTTP C2ビーコン

Helminthは、HTTPビーコンの場合とは異なる方法でDNSビーコンにデータを含めて送信しますが、追加情報も含めます。DNSビーコンに含めるデータの構造は次のとおりです。

<キーロガー モジュールが含まれるフォルダーのパス>
<キーのログおよびバッチ スクリプト出力ファイルが含まれるフォルダーのパス>
<マルウェアでハードコードされたグループ名>0
<マルウェアでハードコードされた名前>
<コンピュータ名>
<ユーザー名>
<スリープ間隔>
<C2ドメイン>

このトロイの木馬は、DNSビーコンで送信されたデータを暗号化することはなく、ASCII文字を独自の16進数値に変換し、この値をクリアテキストに含めます。Helminth実行可能ファイルから送信されたDNSビーコンの構造は次のとおりです。これはスクリプトとしての亜種の場合と非常によく似ています。

00<識別子>01<シーケンス番号><ASCIIデータの最大24個の16進数値>

図13は、Helminth実行可能ファイルから送信されたDNSビーコンの例を示しています。

図13 HelminthのDNS C2ビーコン

図13で示しているDNSビーコン内の暗号化されたデータは、以下のようにデコードされます。

C:\Users\Public\Libraries\~Windows\
C:\Users\Administrator\AppData\Roaming\Microsoft\Internet Explorer\Users\
[編集済み企業名]
Plato
[編集済みコンピュータ名]
Administrator
30
kernel.ws