Dark background with blue code overlay
ブログ

進化する Kinsing | Akamai ブログ

Evyatar Saias

執筆者

Evyatar Saias

September 16, 2021

Evyatar Saias

執筆者

Evyatar Saias

Evyatar Saias は、Akamai の Security Intelligence 部門の Security Researcher です。 

はじめに

大規模で永続的な暗号化ボットネットにより、インターネット全体でかなりのシステムが感染しています。 

このキャンペーンは、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 クラスを介して実行されます

図 1)標的のマシンは、ClassPathXmlApplicationContext クラスの CVE-2020-14883 を介して、リモート xml ファイルをダウンロードして実行します 図 1)標的のマシンは、ClassPathXmlApplicationContext クラスの CVE-2020-14883 を介して、リモート xml ファイルをダウンロードして実行します

 

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

 

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

図 2)wbw.xml ファイルの内容。このファイルには、PowerShell コマンドが含まれています。このコマンドは、1.ps1 という PowerShell スクリプトを、標的のマシンにダウンロードします 図 2)wbw.xml ファイルの内容。このファイルには、PowerShell コマンドが含まれています。このコマンドは、1.ps1 という PowerShell スクリプトを、標的のマシンにダウンロードします

 

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

図 3)PowerShell スクリプト 1.ps1 の一部 図 3)PowerShell スクリプト 1.ps1 の一部
図 4)config.json の一部であり、マイニング・プール・エンドポイントや暗号ウォレットアドレスなどのマイナー実行ファイルの設定が格納されます。 図 4)config.json の一部であり、マイニング・プール・エンドポイントや暗号ウォレットアドレスなどのマイナー実行ファイルの設定が格納されます。

 

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

図 5)PowerShell スクリプト 1.ps1 は、設定ファイルとマイナー実行可能ファイルに更新をプッシュする、「Update service for Windows Service」というスケジュール済みタスクを作成することによって、永続性を確立します 図 5)PowerShell スクリプト 1.ps1 は、設定ファイルとマイナー実行可能ファイルに更新をプッシュする、「Update service for Windows Service」というスケジュール済みタスクを作成することによって、永続性を確立します

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 スクリプトのダウンロードとは異なります。

図 6)標的のマシンが FileSystemXmlApplicationContext クラス CVE-2020-14883 を介してリモート xml ファイルをダウンロードして実行します 図 6)標的のマシンが FileSystemXmlApplicationContext クラス CVE-2020-14883 を介してリモート xml ファイルをダウンロードして実行します
図 7)wb.xml ファイルの内容。標的のマシンに wb.sh という bash スクリプトをダウンロードして実行する bash コマンドが含まれています 図 7)wb.xml ファイルの内容。標的のマシンに wb.sh という bash スクリプトをダウンロードして実行する bash コマンドが含まれています

 

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

図 8)標的を感染させるキャンペーンで利用される CVE 図 8)標的を感染させるキャンペーンで利用される CVE

 

bash スクリプトファイル名は、 s.sh、p.sh、sup.sh、d.sh、ex.sh、r.sh、spr.sh、tf.sh 、または wb.sh でそれぞれ異なりますが、いずれも動作はほぼ同じです。

bash スクリプトは、すでにシステムに存在する可能性のある、競合するマイナーをすべて停止し、セキュリティ機能とロギング機能を無効にします。次に、Kinsing マルウェア(Golang で作成)をダウンロードし、crontab を使用して永続性を確立し、クリプトをマイニングします。

図 9)悪意のある bash スクリプトの一部です。標的の Linux マシン上で Kinsing クリプトマイナーをダウンロードします 図 9)悪意のある bash スクリプトの一部です。標的の Linux マシン上で Kinsing クリプトマイナーをダウンロードします

 

標的のマシン上で実行されると、Kinsing マルウェアは、 kdevtmpfsi という 2 つ目のプロセス(xmig クリプトマイナー)を /tmp ディレクトリに作成して実行します。Kinsing マルウェアは常に kdevtmpfsi プロセスが、実行されていることを監視します。

コマンド & コントロール IP アドレスのデコード

このマルウェアは、 getActiveC2CUrlという関数を使用して、実行時に C2 IP アドレスをデコードすることで C2 サーバーと通信します。次に getActiveC2CUrl 関数は、RC4 ストリーム暗号を使用して、どちらもバイナリ内に格納されているプレーンテキストの 16 進データとプレーン・テキスト・キーの XOR を実行します。 

Golang バイナリ内での文字列の格納方法の性質により、すべての静的文字列が、基本的に互いに連結されて 1 つの大きな文字列 blob が生成されるため、プレーン・テキスト・キーと 16 進データは、大規模な文字列内で簡単に非表示にできます。 この getActiveC2CUrl 関数のリバースを実行すると、メモリー内の位置、およびキーと 16 進データの両方の長さが見つかります。

図 10)C2 プレーンテキストの 16 進データと暗号キーの両方の、メモリー内の場所と長さが表示されます。 図 10)C2 プレーンテキストの 16 進データと暗号キーの両方の、メモリー内の場所と長さが表示されます。

次に getActiveC2CUrl 関数 hex は C2 の 16 進データをデコードし、キーとともに、両方とも RC4という別の関数に渡されます。カスタム RC4 関数は、関数 func (c *Cipher) XORKeyStream(dst, src []byte) を、rc4 golang パッケージから内部的に使用し、C2 IP アドレスを生成します。

C2 の 16 進データとキーの両方が取得されたので、 getActiveC2CUrl 関数は、アクティブな C2 IP アドレスを計算するために、Golang でさらにリバースエンジニアリングおよびリライトします。

図 11)getActiveC2CUrl() 関数は、取得した C2 16 進データとキーを使用して Golang で書き換えられ、アクティブな C2 IP アドレスを生成します。 図 11)getActiveC2CUrl() 関数は、取得した C2 16 進データとキーを使用して Golang で書き換えられ、アクティブな C2 IP アドレスを生成します。

RAT の機能

Kinsing マルウェアには、リモートアクセス型トロイの木馬(RAT)機能があり、バイナリ内の doTask() という関数にあります。次に doTask 関数には、特定の入力に基づいて実行される、次のようないくつかの興味深い関数呼び出しが含まれています。

  • runTaskWithScan()

  • updateTask()

  • startCmd()

  • execTaskOut()

  • masscan()

  • socks()

  • backconnect()

  • runTaskWithHttp()

  • downloadAndExecute()

 

これらの興味深い関数の 1 つ startCmd() は、標的のマシン上で任意のコマンドを実行できるようにします。

 

図 12)逆コンパイル形式の doTask() 関数は、マルウェアの RAT 機能を示しています。強調表示されているのは、埋め込み startCmd() 関数です。標的のマシン上で任意のコマンドが実行できるようにします。 図 12)逆コンパイル形式の doTask() 関数は、マルウェアの RAT 機能を示しています。強調表示されているのは、埋め込み startCmd() 関数です。標的のマシン上で任意のコマンドが実行できるようにします。

コマンド & コントロール通信

このマルウェアは、HTTP 経由で C2、185.154.53.140 と通信します。 C2 HTTP リクエストを定期的に送信し、実行する命令を受信し、簡単なヘルスチェックを実行します。

感染したマシンは、コア数、メモリー、オペレーティングシステム、root 権限が取得されたかどうかなど、現在のステータスとシステムリソースに関する C2 情報を、すべての HTTP 要求とともに送信します。 これらのパラメータはすべて、カスタム HTTP ヘッダーを使用して C2 サーバーに渡されます。

 図 13)感染したマシンから C2 への POST 要求。この要求には、標的のシステムリソースと、取得した特権に関する情報が格納されています 図 13)感染したマシンから C2 への POST 要求。この要求には、標的のシステムリソースと、取得した特権に関する情報が格納されています

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

図 14)感染したマシンは、C2 の /get エンドポイントに GET 要求を行います。その結果、元の配信 IP 194.38.20.199 から新しいシェルスクリプトをフェッチします 図 14)感染したマシンは、C2 の /get エンドポイントに GET 要求を行います。その結果、元の配信 IP 194.38.20.199 から新しいシェルスクリプトをフェッチします

 

C2 の /get エンドポイントをヒットした結果、元の配信 IP 194.38.20.199 からダウンロードされる bash スクリプトは、 ph.shspre.shです。これらの 2 つのファイルは、前に説明した bash スクリプトの初期感染とは異なり、それぞれ異なる目的を持ち、追加の感染ベクトルが格納されています。


最初に ph.sh スクリプトを調べます。これは libsystem.so というルートキットを、 194.38.20.199/libsystem.so エンドポイントから、標的のマシン上にある既存の Kinsing マルウェアとは別にダウンロードします。次に、ph.sh スクリプトはこのルートキットを、次の場所にプリロードします。 /etc/ld.so.preload

図 15)ph.sh bash スクリプトの一部です。フェッチされた libsystem.so ルートキットを /etc/ld.so.preload にプリロードします 図 15)ph.sh bash スクリプトの一部です。フェッチされた libsystem.so ルートキットを /etc/ld.so.preload にプリロードします

 

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

図 16)ph.sh bash スクリプトの一部です。永続性を確立し、ホストに定期的に再感染させるシステムサービスを作成します。 図 16)ph.sh bash スクリプトの一部です。永続性を確立し、ホストに定期的に再感染させるシステムサービスを作成します。

 

ph.sh スクリプトがインストールする libsystem.so ルートキットと、その内部の動作についの詳細は、この特定のルートキットについての Trend Micro の ブログ記事をご覧ください

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

 

図 17)spre.sh bash スクリプトは、~/.ssh/config ~/.bash_history および .ssh/known_hosts で ssh 資格情報を検索することにより、ssh を使用してさらに別のホストに感染を拡大させます 図 17)spre.sh bash スクリプトは、~/.ssh/config ~/.bash_history および .ssh/known_hosts で ssh 資格情報を検索することにより、ssh を使用してさらに別のホストに感染を拡大させます

 

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

図 18)感染したマシンは、C2 の /mg エンドポイントに GET 要求を行います 図 18)感染したマシンは、C2 の /mg エンドポイントに GET 要求を行います

実行すべきこと

このような脅威を緩和するために、システム上のプロセスを監視して、異常に高いリソース使用や、疑わしいネットワークアクティビティがないか調べることを推奨します。特定のプロセスで異常に高い 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 クリプト・マイナー・プロセス



Evyatar Saias

執筆者

Evyatar Saias

September 16, 2021

Evyatar Saias

執筆者

Evyatar Saias

Evyatar Saias は、Akamai の Security Intelligence 部門の Security Researcher です。