Martin Lee のサポートを受け、Paul Rascagneres が投稿しました。
概要
Talos は、中東に影響を与える標的型攻撃を特定しました。このキャンペーンには以下のような特徴があり、それぞれこの後、詳細に説明します。
- ヨルダンで研究および出版を行っている Dar El-Jaleel 社が記載したことになっている、社外秘を装ったおとり文書を使用している。Dar El-Jaleel 社は、パレスチナ – イスラエル紛争、イラン国内でのスンニ派 – シーア派の対立を研究していることで知られている。
- 攻撃者は、スクリプト言語(VBScript、PowerShell、VBA)を攻撃に幅広く使用し、コマンド アンド コントロール サーバから取得した VBScript 関数を動的にロードして実行している。
- 攻撃者は、優れた運用セキュリティ(OPSEC)を確保し、使用しているインフラストラクチャを非常に注意深くカモフラージュしている。Talos での調査中に、攻撃者は数種類の偵察スクリプトを導入し、感染対象のマシンの有効性や、条件に合わない防御システムがないかなどをチェックしている。また、信頼性の高い CloudFlare システムを使用して、自分達のインフラストラクチャの特徴や場所を隠蔽し、User-Agent 文字列に基づいて接続を選別しながら短期間だけしかインフラストラクチャを有効にせず、その後はすべての接続をブロックしてしまう。
この攻撃は、Talos が調査した Dar El-Jaleel 社のおとり文書を使用して実行された、中東地域対象の標的型攻撃として最初のものではありませんが、弊社は以前のキャンペーンが関連しているという兆候を捉えられてはいません。
VBS キャンペーン
ステージ 1:VBScript
このキャンペーンは、「السرية في سوريا.vbs」(「Syria.vbs でのイラン国内の秘密裏の戦争から」)という名前の VBScript で始まります。以下がスクリプトの内容です。
このスクリプトの目的は、次のセクションで説明するステージ 2 の PowerShell スクリプトを作成することです。
ステージ 2:PowerShell スクリプト
生成された PowerShell スクリプトの目的は、Report.doc という名前の Microsoft Office ドキュメントを作成し、それを開くことです。
ステージ 3:マクロ付き Office ドキュメント
Office ドキュメントのスクリーンショットを以下に示します。
このドキュメントは、Dar El Jaleel 社によって作成されたように見せかけられています。Dar El-Jaleel 社は、ヨルダンのアンマンを拠点として研究および出版を行う企業で、パレスチナ – イスラエル紛争、イラン国内でのスンニ派 – シーア派の対立を研究していることで知られています。社外秘のタグがついたこの文書は、シリアの内戦におけるイランの活動に関する分析レポートです。
このドキュメントには、次のようなマクロが含まれています。
このマクロの目的は、WSF(Windows スクリプト ファイル)ファイルを作成して実行することです。
ステージ 4:WSF スクリプト
作成された WSF スクリプトがこの感染の主要な部分です。
スクリプトの上部には、以下の設定情報が含まれています。
- コマンド アンド コントロール サーバのホスト名:office-update[.]services
- ポート:2095
- User-Agent:46-|-377312201708161011591678891211899134718141815539111937189811
User-Agent は、ターゲットを識別するために使用されます。CC サーバは、認可された User-Agent 文字列が設定されているネットワーク接続だけを許可します。
スクリプトの最初のタスクは、HTTP リクエストを http://office-update[.]services:2095/store に送信して、感染したシステムを登録することです。次に、別のペイロードをダウンロードして実行するために、5 秒ごとに /search URI に接続を試みる無限ループを実行します。
別のペイロード
WSF スクリプトは、s0、s1、s2 という 3 つのタイプのペイロードを受信します。この 3 つのペイロードは、VBScript 関数によってロードされ、ExecuteGlobal() と GetRef() API によって密かに実行されます。3 種類のペイロードの違いは、関数実行時に指定する引数の数の違いです。s0 には引数がなく、s1 には 1 つ、s2 には 2 つの引数を指定します。
ダウンロードしたペイロードの関数は難読化されていますが、以下に raw データのサンプルを示します。
最初の要素は、関数の種類(s0)を示し、その後にセパレータとして「|」が続いています。2 番目の要素は難読化された関数で、「*」で区切った ASCII 値で構成されています。たとえば上記のデータを復号すると以下のようになります。
- 45: –
- 54: 6
- 53: 5
- 43: +
- 49: 1
- 52: 4
- 56: 8
- 42: *
- 53: 5
- 51: 3
- 53: 5
- 45: –
- 52: 4
- 49: 1
- 56: 8
- 42: *
復号されたデータは最終的に「-65+148*535-418*」となります。次に、再度「*」がセパレータとして入った後に 2 番目のステップが続きます。各算術演算を行うと新たな ASCII 値が得られます。
- -65+148 = 83 ->「S」
- 535-419 = 117 ->「u」
この手法を使用して、新しい VBScript 関数が構築されます。
Talos の調査において、5 つの異なる関数を取得しました。
偵察関数
調査中、最初の侵害から数分後に偵察関数を取得しました。偵察関数の目的は、感染システムからいくつかの情報を取得することでした。恐らく、ターゲットにする価値があるかどうか(あるいはサンドボックス システムではないか)を確認するためであると思われます。
まず攻撃者は、ディスク ボリュームのシリアル番号を取得します。
次に、ペイロードが、インストールされているウイルス対策ソフトウェアの情報を取得します。
3 番目に、ipify.org を検索し、感染システムのインターネット IP アドレスを取得します(このコードには、攻撃者が以前 wtfismyip.com を使用していたことを示す手がかりが含まれています)。
最後に、コンピュータ名、ユーザ名、オペレーティング システム、アーキテクチャに関する情報を取得します。
これらのデータはすべて、/is-return URI を使用して前述の CC サーバに送信されます。データは「|」で区切って User-Agent に格納されます。
その後、2 番目の偵察関数を取得しました。
この関数は、感染システムのドライブとそのタイプ(内蔵ドライブ、USB ドライブなど)のリストを作成します。
永続化関数
偵察関数の他に、永続化 WSF スクリプトにリンクされている 2 つの関数を取得しました。最初のスクリプトは永続化するために使用され、2 つ目は感染システムをクリーンアップするために使用されます。Talos のマシンは、C2 サーバにリクエストを送信するまでに時間がかかり過ぎたために、クリーンアップされました。おそらく、こちらが攻撃者のシステムを調査しようとしていると判断され、それ以上分析されないようにマルウェアを削除したものと思われます。
ピボット関数
最後にピボット関数を取得しました。ピボット関数は、Talos の調査で取得した関数の中で、引数を取る唯一の関数です。s1 関数として、引数を 1 つとります。
以下が引数です。
この関数の目的は、次の PowerShell スクリプトを実行することです。
この PowerShell スクリプトは、Base64 でエンコードされた 2 番目のスクリプトを実行します。対象システムに搭載されているオペレーティング システムのアーキテクチャが 64 ビットでも、PowerShell の 32 ビット版が必ず使用されます。
これでようやく最後の PowerShell スクリプトを取得できます。
このスクリプトの目的は、176[.]107[.]185[.]246 IP からシェルコードをダウンロードし、メモリにマッピングして実行することです。攻撃者は、シェルコードの導入にあたっては非常に注意を払っています。この点については次の章で説明します。残念ながら調査期間中に、想定したシェルコードは取得できませんでした。
攻撃者の OPSEC
このキャンペーンの背後にいる攻撃者は、使用しているインフラストラクチャを保護し、コードが流出して分析されるのを回避するためにかなりの工数を投下しています。最初のコマンド アンド コントロール サーバは CloudFlare で保護されています。CloudFlare が利用されているために、キャンペーンをトラッキングして分析するのが困難になっています。また、攻撃者は User-Agent に基づいて接続を選別しているため、送信した Web リクエストが特定のパターンに適合しなければ無視されてしまいます。Talos の分析中に攻撃者がアクティブだったのは、中央ヨーロッパ時間の午前中だけでした。他のさまざまなペイロードも同様に午前中(中央ヨーロッパ時間)だけ送信されてきました。感染システムがピボット関数を受信すると、攻撃者は、自分達の環境のファイアウォールを数分間無効にしてこの特定の IP を通過させ、シェルコードをダウンロードできるようにします。ダウンロード後はサーバに接続できなくなります。このワークフローの概要を以下に示します。
さらに、Talos 固有の User-Agent 文字列や、調査に使用していた IP アドレスがいくつか攻撃者のブラックリストに登録されていることが確認されました。
この高度な OPSEC は、国家の支援を受けていると思われる攻撃者の中でも例外的なものです。
Jenxcus(別名 Houdini/H-Worm)と関連があるか
Jenxcus(別名 Houdini/H-Worm)に精通している方であれば、今回のキャンペーンで使用された VBScript との類似点にいくつか気づかれるでしょう。たとえば、User-Agent を使用してデータを抽出する点や偵察手法などです。
攻撃者が Jenxcus の新バージョンを使用したのか、このマルウェアから発想を得て悪意のあるコードを独自に開発したのかはわかりません。Jenxcus のソース コードは、インターネットで簡単に手に入れることができますが、このキャンペーンで使用されたバージョンは、Jenxcus より高度になっています。機能や関数がオンデマンドでロードされたり、最初のスクリプトには悪意のあるコードが一部しか含まれていなかったりする点が Jenxcus と異なっています。
その他のターゲット
攻撃者がターゲットを特定するために使用した User-Agent から、別のターゲットを識別することができます。以下にその一部を示します。
c = "U.15.7" = "738142201756240710471556115716122461214187935862381799187598" c = "1X.134" a = "130427201706151111209123451288122413771234715862388136654339" c = "Fb-20.9" a = "585010201750201110021112344661899112271619123139116684543113"
Dar El-Jaleel 社のおとり文書を使ったその他のキャンペーン
Talos が、Dar El-Jaleel 社のおとり文書を使った標的型キャンペーンを調査したのは今回が初めてではありません。2017 年に同じおとり文書を使用したキャンペーンをいくつか特定しています。
この文書は、2017 年 11 月の第 1 週に発生した主なイベントに関する週次のレポートです。ヨルダン、イラク、シリア、レバノン、パレスチナ、イスラエル、ロシア、ISIS で発生した最重要イベントや、カタールと湾岸諸国で進行中の紛争について書かれています。
.NET マルウェア(CC に foxlive[.]life を利用)と C++ マルウェア(CC に download[.]share2file[.]pro を利用)を使用したキャンペーンでこの文書が使用されているのを確認しています。このマルウェアの目的は、ターゲットのシステムに関する情報を取得し、別のペイロードをダウンロードすることでした。また、share2file[.]pro サブドメインを使用した別のキャンペーンも確認しています。以下は、このキャンペーンで使用されたおとり文書です。
この文書は、2017 年 6 月付けの軍人の恩給リストで、個人名(Talos で編集済み)と階級が記載されています。
これらのキャンペーンが同じ攻撃者によって実施されたものなのか、この地域に関心を持っている別のグループによるものなのかはわかりません。これらのキャンペーンについては現在も調査中です。
まとめ
これらのキャンペーンから、中東地域に関心を持ってターゲットにしている攻撃者が少なくとも 1 人いることがわかります。おとり文書の特徴によって、対象となったターゲットは、中東地域の地政学的な状況に関心を持っていると言えます。攻撃者は、中東地域を専門に研究しているヨルダンの研究機関、Dar El-Jaleel 社が書いたものとされる分析レポートを使用していました。いくつかの文書には社外秘のタグが付いています。
VBS キャンペーン中に攻撃者とそのインフラストラクチャによって見せつけられた OPSEC のレベルの高さには驚かされました。CloudFlare などの正規のサービスを使用して悪意のある活動を隠蔽していました。また、User-Agent を使用して接続を選別したり、特定の感染システムにシェルコードを導入するために数分間だけアクセスできるようなファイアウォールのルールを設定し、その時間を過ぎるとサーバに接続できなくしたりしていました。確認した中で注目に値するその他の点は、Talos の調査中に攻撃者がアクティブだったのが、午前中(中央ヨーロッパ時間)しかなかったということです。
スクリプト言語の使用法は、攻撃者の観点からすると興味深いアプローチです。Windows システムでネイティブに利用でき、非常に柔軟性が高く、レーダーを簡単に回避することができます。
カバレッジ
お客様がこの脅威を検出してブロックできる別の方法を以下に記載します。
Advanced Malware Protection(AMP)は、これらの攻撃者によるマルウェアの実行の阻止に最適です。
CWS や WSA の Web スキャンは、悪意のある Web サイトへのアクセスを阻止し、それらの攻撃に使用されたマルウェアを検出します。
E メール セキュリティ は、攻撃の一環として攻撃者が送りつける不正な電子メールをブロックします。
NGFW や NGIPS、および Meraki MX などのネットワーク セキュリティ アプライアンスで、この脅威に関連付けられた悪意のあるアクティビティを検出できます。
AMP Threat Grid は、悪意のあるバイナリを特定し、すべてのシスコ セキュリティ製品に保護機能を組み込みます。
シスコのセキュア インターネット ゲートウェイ(SIG)である Umbrella は、社内ネットワークの内外で悪意のあるドメイン、IP、URL への接続をブロックします。
オープンソース Snort サブスクライバ ルール セットをお使いであれば、Snort.org で購入可能な最新のルール パックをダウンロードすることで、システムを最新状態に維持できます。
IOC(侵入の痕跡)
VBS キャンペーン:
最初のスクリプト:15f5aaa71bfa3d62fd558a3e88dd5ba26f7638bf2ac653b8d6b8d54dc7e5926b
ドメイン #1:office-update[.]services
IP #2:176[.]107[.]185[.]246
.NET キャンペーン:
最初のドロッパー:4b03bea6817f0d5060a1beb8f6ec2297dc4358199d4d203ba18ddfcca9520b48
.NET #1:d49e9fdfdce1e93615c406ae13ac5f6f68fb7e321ed4f275f328ac8146dd0fc1
.NET #2:e66af059f37bdd35056d1bb6a1ba3695fc5ce333dc96b5a7d7cc9167e32571c5
ドメイン #1:jo[.]foxlove[.]life
ドメイン #2:eg[.]foxlove[.]life
ドメイン #3:fox[.]foxlove[.]life
キャンペーン #3:
最初のドロッパー:af7a4f04435f9b6ba3d8905e4e67cfa19ec5c3c32e9d35937ec0546cce2dd1ff
ペイロード:76a9b603f1f901020f65358f1cbf94c1a427d9019f004a99aa8bff1dea01a881
ドメイン:download[.]share2file[.]pro
キャンペーン #4:
最初のドロッパー:88e4f306f126ce4f2cd7941cb5d8fcd41bf7d6a54cf01b4a6a4057ed4810d2b6
ペイロード #1:c5bfb5118a999d21e9f445ad6ccb08eb71bc7bd4de9e88a41be9cf732156c525
ペイロード #2:1176642841762b3bc1f401a5987dc55ae4b007367e98740188468642ffbd474e
ドメイン:update[.]share2file[.]pro
本稿は 2018年2月7日に Talos Group のブログに投稿された「Targeted Attacks In The Middle East」の抄訳です。