進化する Kinsing | Akamai ブログ

はじめに
大規模で永続的な暗号化ボットネットにより、インターネット全体でかなりのシステムが感染しています。
このキャンペーンは、2021 年 2 月 16 日に Akamai SIRT によって初めて確認され、Windows と Linux の両方のシステムを標的にしていると思われます。このボットネットは、南北アメリカ、ヨーロッパ、アジアなどさまざまな地域で非常に活発に動いていることがわかったため、当社の関心を引きました。6 か月以上にわたって変わることなく、今も同じ配信 IP アドレス(194.38.20.199)を使用しています。このキャンペーンの標的は、以前は Linux マシンのみでしたが、最近は Windows システムにも拡張されています。
Windows システムへの感染
Windows マシンに感染するために、このボットネットは CVE-2020-14883 を利用します。これは、Oracle WebLogic Server のバージョン 10.3.6.0、12.1.3.0、12.2.1.3、12.2.1.4.0、14.1.1.0.0 に影響する脆弱性です。この脆弱性が悪用されると、攻撃者はリモートコード実行(RCE)が可能になり、Oracle WebLogic Server が乗っ取られるおそれがあります。
標的のマシンで wbw.xml という XML ファイルをダウンロードさせて実行させることから感染が始まります。Windows マシンでは、この XML ファイルは ClassPathXmlApplicationContext クラスを介して実行されます

フェッチされた wbw.xml ファイルには、PowerShell コマンドが埋め込まれています。被害者のマシンでこのコマンドが実行されます。そのコマンドの詳細は、次のとおりです。

標的のマシンに「 1.ps1」という PowerShell スクリプトをダウンロードしようとします。その際に System.Net.WebClient.DownloadString というメソッドを使用します。また、Set-ExecutionPolicy Bypass フラグを使用して、ブロックされているものがないこと、および実行中にプロンプトや警告が生成されないようにします。

次に 1.ps1 スクリプトは、xmrig.exe というクリプトマイナー実行ファイルと、 config.json ファイルをダウンロードします。このファイルには、暗号ウォレットアドレス、暗号プールエンドポイント、追加の構成設定など、マイナーが使用する設定情報が格納されています。 それに加えて、 1.ps1 スクリプト にも変数 $miner_name が含まれています。これには、暗号マイナー実行可能ファイル xmrig.exe の変更後の新しい名前が保管されます。 この場合には xmrig.exe の名前を「sysupdate」に変更したうえで、実行されます。


次に 1.ps1 スクリプトは、 config.json ファイルとマイナーを更新するために、標的のマシン上で永続性を確立します。これは、 SchTasks.exeを利用することによって行います。これにより PowerShell から、ローカルまたはリモートマシン上でスケジュール済みのタスクを作成、削除、実行できるようになります。この SchTasks.exe の詳細については、 当社 Web サイトをご覧ください。スケジュール済みタスクの名前は「Update service for Windows Service」で、これもExecutionPolicy Bypass フラグを使用し、 実行中に警告やプロンプトが表示されないように、さらに -windowstyle 非表示フラグを非表示のままにしておきます。

Linux システムへの感染
このキャンペーンでは、複数の CVE を利用して RCE を実現し、Linux システムに感染します。Linux ペイロードには、クリプトマイナーを含む Kinsing マルウェアに加えて、リモートアクセス型トロイの木馬(RAT)もあります。標的となるサービスには、Oracle WebLogic Server、Redis、Apache Solr、PHPUnit、Supervisor XML-RPC などがあります。
Oracle WebLogic Server CVE-2020-14883 も、Linux システムにおけるこのキャンペーンに利用されます。ただし、Windows バージョンのこの脆弱性とは異なり(RCE は ClassPathXmlApplicationContext クラスを介して実行される)、Linux では FileSystemXmlApplicationContext クラスを介して実行されます。悪意のある XML ファイルは wb.xml と呼ばれ、bash スクリプトをダウンロードします。これは以前の、Windows 用の wbw.xml による PowerShell スクリプトのダウンロードとは異なります。


Linux システムでは、以下の表に示されているいずれかの CVE を使用して RCE を実現し、bash スクリプトファイルを標的のマシンにダウンロードすることで感染します。



bash スクリプトファイル名は、 s.sh、p.sh、sup.sh、d.sh、ex.sh、r.sh、spr.sh、tf.sh 、または wb.sh でそれぞれ異なりますが、いずれも動作はほぼ同じです。
bash スクリプトは、すでにシステムに存在する可能性のある、競合するマイナーをすべて停止し、セキュリティ機能とロギング機能を無効にします。次に、Kinsing マルウェア(Golang で作成)をダウンロードし、crontab を使用して永続性を確立し、クリプトをマイニングします。

標的のマシン上で実行されると、Kinsing マルウェアは、 kdevtmpfsi という 2 つ目のプロセス(xmig クリプトマイナー)を /tmp ディレクトリに作成して実行します。Kinsing マルウェアは常に kdevtmpfsi プロセスが、実行されていることを監視します。
コマンド & コントロール IP アドレスのデコード
このマルウェアは、 getActiveC2CUrlという関数を使用して、実行時に C2 IP アドレスをデコードすることで C2 サーバーと通信します。次に getActiveC2CUrl 関数は、RC4 ストリーム暗号を使用して、どちらもバイナリ内に格納されているプレーンテキストの 16 進データとプレーン・テキスト・キーの XOR を実行します。
Golang バイナリ内での文字列の格納方法の性質により、すべての静的文字列が、基本的に互いに連結されて 1 つの大きな文字列 blob が生成されるため、プレーン・テキスト・キーと 16 進データは、大規模な文字列内で簡単に非表示にできます。 この getActiveC2CUrl 関数のリバースを実行すると、メモリー内の位置、およびキーと 16 進データの両方の長さが見つかります。


次に getActiveC2CUrl 関数 hex は C2 の 16 進データをデコードし、キーとともに、両方とも RC4という別の関数に渡されます。カスタム RC4 関数は、関数 func (c *Cipher) XORKeyStream(dst, src []byte) を、rc4 golang パッケージから内部的に使用し、C2 IP アドレスを生成します。
C2 の 16 進データとキーの両方が取得されたので、 getActiveC2CUrl 関数は、アクティブな C2 IP アドレスを計算するために、Golang でさらにリバースエンジニアリングおよびリライトします。


RAT の機能
Kinsing マルウェアには、リモートアクセス型トロイの木馬(RAT)機能があり、バイナリ内の doTask() という関数にあります。次に doTask 関数には、特定の入力に基づいて実行される、次のようないくつかの興味深い関数呼び出しが含まれています。
runTaskWithScan()
updateTask()
startCmd()
execTaskOut()
masscan()
socks()
backconnect()
runTaskWithHttp()
downloadAndExecute()
これらの興味深い関数の 1 つ startCmd() は、標的のマシン上で任意のコマンドを実行できるようにします。

コマンド & コントロール通信
このマルウェアは、HTTP 経由で C2、185.154.53.140 と通信します。 C2 HTTP リクエストを定期的に送信し、実行する命令を受信し、簡単なヘルスチェックを実行します。
感染したマシンは、コア数、メモリー、オペレーティングシステム、root 権限が取得されたかどうかなど、現在のステータスとシステムリソースに関する C2 情報を、すべての HTTP 要求とともに送信します。 これらのパラメータはすべて、カスタム HTTP ヘッダーを使用して C2 サーバーに渡されます。

感染したマシンが、命令を受け取るために常に要求するエンドポイントは、 /getです。感染したマシンが GET 要求を C2 の /get エンドポイントに対して行うと、マルウェアはすぐに、元の配信 IP 194.38.20.199 から、新しい別の悪意のあるシェルスクリプトをダウンロードしようとします。

C2 の /get エンドポイントをヒットした結果、元の配信 IP 194.38.20.199 からダウンロードされる bash スクリプトは、 ph.sh と spre.shです。これらの 2 つのファイルは、前に説明した bash スクリプトの初期感染とは異なり、それぞれ異なる目的を持ち、追加の感染ベクトルが格納されています。
最初に ph.sh スクリプトを調べます。これは libsystem.so というルートキットを、 194.38.20.199/libsystem.so エンドポイントから、標的のマシン上にある既存の Kinsing マルウェアとは別にダウンロードします。次に、ph.sh スクリプトはこのルートキットを、次の場所にプリロードします。 /etc/ld.so.preload

次に ph.sh スクリプトは、最初のスクリプトによって以前に注入された既存の cron ジョブに加えて、2 つ目の永続化メカニズムも確立します。これは、ホストに定期的に再感染するシステムサービスを登録することによって行われます。

ph.sh スクリプトがインストールする libsystem.so ルートキットと、その内部の動作についの詳細は、この特定のルートキットについての Trend Micro の ブログ記事をご覧ください
2 番目の興味深い bash スクリプトファイルとして、C2 エンドポイントからの /get 応答によりフェッチされるのは、 spre.shです。その目的は、他のサーバーに感染を拡大することです。そのために、標的がアクセス権を持つホストの ssh 資格情報を見つけ、~/.ssh/config 、 ~/.bash_history、 .ssh/known_hostsを確認します。次に spre.sh スクリプトは、見つけて取得した資格情報を使用して、検出されたホストに ssh を試行し、それらを感染させます。

感染したマシンが命令を要求するもう 1 つの興味深い C2 エンドポイントは、 /mg エンドポイントです。感染したマシンが GET 要求を /mg エンドポイントに対して行うと、C2 はいくつかの文字で応答し、感染したマシンはすぐに 3 番目の IP アドレス 95.181.179.88 と通信を開始します。HTTP を介した JSON/RPC ペイロードの形式で、感染したマシンにマイニングコマンドを提供している役割をしているものと思われます。

実行すべきこと
このような脅威を緩和するために、システム上のプロセスを監視して、異常に高いリソース使用や、疑わしいネットワークアクティビティがないか調べることを推奨します。特定のプロセスで異常に高い CPU 使用率が見られる場合、暗号化アクティビティを示していることがあります。
さらに、システムの crontab に登録されている cron ジョブを頻繁にチェックして、cron ジョブが不明な IP アドレスと通信していないか確認することを推奨します。これは、Linux マルウェアが永続性を確立するための一般的な手法であり、ここで説明しているキャンペーンも例外ではありません。
Windows システムでは、SchTasks.exe/Query を使用して、PowerShell で同じ操作を実行する必要があります。これにより、このキャンペーンで作成された可能性があるスケジュール済みタスクが表示されます。また、Linux システムで実行されているプロセスをチェックし、kinsing または kdevtmpfsi という名前のプロセスが実行されていないこと、および sysupdate というプロセスが、Windows システムで実行されていないことを確認します。
可能な場合はシステムに強力な認証を追加します。脆弱なパスワードは簡単にブルートフォースされるおそれがあります。また、Oracle WebLogic Server、Redis、Apache Solr、PHPUnit、Supervisor XML-RPC など、ここで説明しているキャンペーンの標的となるサービスが、必要がなければインターネットに接続されていないことを確認します。これにより、それらのサービスが感染するリスクが大幅に軽減されます。たとえば、Redis インスタンスが内部システムでのみ使用されている場合、インターネットに接続する必要はありません。
また、以下の IoC セクションに記載されている侵害の兆候(IOC)に照らしてシステムをチェックして、システムが未感染であると確認することも推奨します。 さらに、定期的にシステムにパッチを適用し、ベストプラクティスに従うようにします。
侵害の兆候(IOC)
IP
IP |
説明 |
185.154.53.140 |
コマンド & コントロール |
194.38.20.199 |
マルウェアの配信 |
95.181.179.88 |
暗号化操作を管理します |
195.3.146.118 |
バックアップマルウェア配布 |
ファイル
SHA-256 |
名称 |
説明 |
8ca0229fb64e3f1819375cf1daf32104c37c0d0923bdc35cb6bea655ecd1a6a4 |
s.sh |
194.38.20.199/s.sh、Kinsing マルウェアをダウンロードする bash スクリプト |
ede8fdb68d777efcc0538b465d640cbb2c061bd49461f76d65f68c135ff8bbb6 |
p.sh |
194.38.20.199/p.sh、Kinsing マルウェアをダウンロードする bash スクリプト |
0e79ec7b00c14a4c576803a1fd2e8dd3ea077e4e98dafa77d26c0f9d6f27f0c9 |
d.sh |
194.38.20.199/d.sh、Kinsing マルウェアをダウンロードする bash スクリプト |
6e35b5670953b6ab15e3eb062b8a594d58936dd93ca382bbb3ebdbf076a1f83b |
spr.sh |
194.38.20.199/spr.sh、Kinsing マルウェアをダウンロードする bash スクリプト |
818179ac928027a5c26c9b13d3d830b7331c3e4c46ba1e305867e3d4accaf3ef |
r.sh |
194.38.20.199/r.sh、Kinsing マルウェアをダウンロードする bash スクリプト |
56ac2321e481708ea72e2bf7710e66c3455afa729b24f6a6ba9065ae0cca8fb3 |
ex.sh |
194.38.20.199/ex.sh、Kinsing マルウェアをダウンロードする bash スクリプト |
05e5ad89443b58805ae2eb2628d3eef1d6cbcc338bced23f422abe5ce60ff82d |
tf.sh |
194.38.20.199/tf.sh、Kinsing マルウェアをダウンロードする bash スクリプト |
274b11542fcb30065c4cc0976ce33252ba2812756f7e22f6d80fae1acadf5c4c |
wb.sh |
194.38.20.199/wb.sh、Kinsing マルウェアをダウンロードする bash スクリプト |
6e25ad03103a1a972b78c642bac09060fa79c460011dc5748cbb433cc459938b |
kinsing |
194.38.20.199/kinsing、Kinsing マルウェアバイナリ |
7d31843ce5231c95ce07a609cb4473fe53b95a8d0685df9d666de348d17c69ff |
config.json |
194.38.20.199/config.json、XMRIG マイナー用の json 構成 |
c38c21120d8c17688f9aeb2af5bdafb6b75e1d2673b025b720e50232f888808a |
libsystem.so |
194.38.20.199/libsystem.so、ルートキットバイナリ |
5e5b5171a95955ecb0fa8f9f1ba66f313165044cc1978a447673c0ac17859170 |
xmrig.exe |
194.38.20.199/xmrig.exe、 Windows 向けの XMRIG マイナー |
49ff0329b9ad42c7fb17e6a2d80b316ed6b759ab5dfd04a5aba42b97225494cf |
wbw.xml |
194.38.20.199/wbw.xml、PowerShell スクリプトをダウンロードして Windows システムに感染する xml ファイル |
25b545dc3423d5c3c0181f559486643a7097b5fd87b32f0347ed667cbf3fb38e |
wb.xml |
194.38.20.199/wb.xml、bash スクリプトをダウンロードして Linux システムに感染する xml ファイル |
6b9e23cb675be370a18a0c4482dc566be28920d4f1cd8ba6b4527f80acf978d3 |
curl-amd64 |
194.38.20.199/curl-amd64、curl バイナリ |
fecd30cd7802f8ac4137a2d0659b3052411a99d809a5aefb48f8b821905100f3 |
al.sh |
194.38.20.199/al.sh、aegis サービスを停止する bash スクリプト |
cb2ca16246a687b34fa1ba76015cb4aa3b50b4ecca4550478eb580c4725ab48f |
cron.sh |
194.38.20.199/cron.sh、crontab を更新する bash スクリプト |
d7cda9e427d0848352a1158c68a2577c1600965fb9dbb32bc1e10af1a442d284 |
ph.sh |
194.38.20.199/ph.sh、Kinsing マルウェアと libsystem.so ルートキットをダウンロードする bash スクリプト |
f4c319e43296ab323615ac4bd4b7601991218ecb6d6043b1c040a96f1a33f14f |
spre.sh |
194.38.20.199/spre.sh、ssh を介して他のホストに感染を広げる bash スクリプト |
dd603db3e2c0800d5eaa262b6b8553c68deaa486b545d4965df5dc43217cc839 |
kdevtmpfsi |
Kinsing クリプト・マイナー・プロセス |