- Cisco Talos は、「Alchimist」というコマンドアンドコントロール(C2)ツールと、リモート管理機能を備えた「Insekt」という新種のマルウェアを含む新しい攻撃フレームワークを発見しました。
- Alchimist には中国語(簡体字)の Web インターフェイスが用意されており、リモート管理機能があります。
- この攻撃フレームワークは、Windows、Linux、Mac マシンを標的にするように設計されています。
- Alchimist と Insekt のバイナリは GoLang で実装されています。
- この攻撃では、他にも MacOS エクスプロイトツールなどのカスタムツール、カスタムバックドア、リバースプロキシなどの複数の既製ツールが使用されています。
Cisco Talos は、単一のファイルからなる新しいコマンドアンドコントロール(C2)フレームワークを発見しました。作成者はこのフレームワークを「Alchimist」(原文ママ)と呼んでいます。この C2 が発見されたサーバーでは、ファイルリストの取得がルートディレクトリでアクティブになっていました。また、一連のポストエクスプロイトツールも確認されました。
Cisco Talos では、このフレームワークが実際に使用されている可能性があると考えています(信頼性は中~高程度)。
「Alchimist」は、GoLang で作成された 64 ビット Linux 実行ファイルです。Web インターフェイスのリソースや、Windows および Linux 用にコンパイルされた Insekt RAT ペイロードなどのアセットが圧縮されています。
Cisco Talos が発見した新種のトロイの木馬である Insekt RAT は、GoLang で作成された Alchimist のビーコンインプラントで、Alchimist C2 サーバーによって展開されるさまざまなリモートアクセス機能を備えています。
Alchimist C2 には中国語(簡体字)の Web インターフェイスが用意されており、構成したペイロードの生成、リモートセッションの確立、リモートマシンへのペイロードの展開、スクリーンショットの取得、リモートシェルコードの実行、任意コマンドの実行が可能です。
他にもいくつかのツールが発見されています。その 1 つが Mach-O ドロッパーで、既知の脆弱性 CVE-2021-4034(polkit の pkexec ユーティリティにおける特権昇格の問題)に対するエクスプロイトと Mach-O のバインドシェルバックドアが組み込まれています。CVE-2021-4034 は、2021 年 11 月に Qualys 社の研究チームによって発見されました。2022 年 1 月には、この脆弱性が実際にエクスプロイトされていると米国国家安全保障局のサイバーセキュリティ担当ディレクターが警告しています。
また、このサーバーには psexec、netcat などのデュアルユースツールや、「イントラネット スキャン ツール」と作成者が説明している「fscan」というスキャンツールなども含まれており、ラテラルムーブメントに必要なツールが基本的にすべて用意されています。
Alchimist フレームワーク
今回の調査で Talos が発見した攻撃フレームワークは、「Alchimist」というスタンドアロン C2 サーバーと、作成者が「Insekt」RAT ファミリと呼んでいる関連インプラントで構成されています。
最近 Talos が発見した自己完結型のフレームワークは、Alchimist だけではありません。Alchimist の前に Manjusaka という別の単一ファイルベースの C2 フレームワークも公開しています。どちらも設計上の考え方は同じであり、それぞれ異なるプログラマが異なる方法で実装していますが、同じ要件に従っているように見えます。
Manjusaka と Alchimist の機能はほぼ同じです。どちらもスタンドアロンの GoLang ベースの実行ファイルとして動作するように設計および実装されており、攻撃者に比較的簡単に配布できます。内部のフレームワークには、インプラントと Web ユーザーインターフェイス全体が含まれています。インプラントの構成は、Web UI(Web ユーザーインターフェイス)を使用して定義します。どちらの Web UI もすべて中国語(簡体字)で表記されています。また両方のフレームワークで、比較的珍しいプロトコルである SNI について言及されています。Alchimist ではすでにサポートされており、Manjusaka ではサポートされる予定となっています。
両者の主な違いは、Web UI を実装するアプローチと、単一ファイル機能の実装方法にあります。Manjusaka の開発者は Gin Web フレームワークを利用しており、アセット バンドル フレームワークである packr を使用してインプラントの組み込みと保存を行っています。Alchimist の作成者はより基本的なアプローチを採用しており、基本的な GoLang 機能のみを使用して同じ機能を実装しています。
インプラントのコードにも違いがありますが、機能的にはよく似ており、C2 で提供される機能を実装するというものです。Alchimist では、通常の HTTP/S に加えて SNI、WSS/WS などのプロトコルもサポートされていることが確認されています。一方、Manjusaka でサポートされているのは HTTP のみとなっており、SNI や WSS/WS はドキュメントで言及されるに留まっています。
Alchimist の詳細
アセット
Alchimist は、GoLang ベースのアセット(カスタムメイドの組み込みパッケージ)を使用して、C2 サーバーとして機能するために必要なすべてのリソースを保存しています。C2 サービスの初期化時に C2 の GoLang ベースの ELF バイナリからすべての組み込みアセットが抽出され、/tmp/Res/ ディレクトリの下のハードコーディングされた場所にドロップされます。
C2 ELF にハードコーディングされている組み込みアセットのドロップ先ディレクトリ
すべての組み込みアセットが、GoLang アセットパッケージに組み込まれている構造に従って、各ディレクトリに再帰的に配置されます。
「Res」ディレクトリには、Web インターフェイスコード、HTML ファイル、その他のディレクトリが含まれています。また、Windows および Linux オペレーティングシステム用の「Insekt」インプラントバイナリが「/tmp/Res/Payload」ディレクトリに解凍されます。
「/tmp」ディレクトリには、HTTPS 通信で使用される自己署名証明書とキーも書き込まれます。この証明書は自己署名ですが、実行時に生成されるのではなく、ハードコーディングされた証明書(コンパイル時に C2 に追加)が使用されます。証明書の詳細は下のとおりです。この表からも分かるように、サーバー名は証明書に含まれていません。
Web インターフェイスは中国語(簡体字)で表記されており、いくつかのオプションが提供されています。
この Web UI を詳しく調べると、RAT の C2 で一般的に期待される機能がすべてサポートされていることが分かります。
中でも特徴的なのが、Windows 用の PowerShell コードスニペットと Linux 用の wget コードスニペットの生成機能です。攻撃者はこれらのコマンドを使用することで、Insekt RAT を配布するための感染メカニズムを構築できます。スクリプトにこれらのコマンドを組み込み(不正ドキュメントや LNK などの悪意のあるエントリポイントを通じて有効化)、さまざまな手段で被害者に配布して最初の足掛かりを構築し、Insekt RAT をダウンロードして感染させることができます。
Alchimist で生成される Insekt ペイロード配布用のコマンドスニペット
ペイロードの生成
Alchimist は、いくつかのパラメータを Web UI から受け取ってペイロードを生成します。攻撃者は「session[.]html」Web UI にパラメータを入力して、次の構成を指定します。
- プロトコル値:TLS、SNI、WSS/WS
- リモート C2 ホストの IP/URL
- プラットフォームタイプ:Windows または Linux を指定して、Insekt RAT ペイロードのタイプを選択
- デーモンフラグ:感染エンドポイントでデーモンとして Insekt インプラントを実行するかどうか
- プレドメイン値:SNI プロトコルタイプの場合のみ
Web UI は、これらの構成値を使用して JSON を作成し、現在の C2 サーバーの「/pay」URL に POST リクエストを送信して、ダウンロード可能な新しいペイロードをリクエストします。
C2 にペイロードの生成をリクエストする Web UI HTML コード
ペイロード生成リクエストが「/pay」URL に送信されると、C2 が JSON の構成パラメータを受け取って解析し、カスタマイズした Insekt ペイロードを生成します。
C2 は、Insekt ペイロード(同じく GoLang ベース)のコンパイルは一切行いません。初期化時に解凍されたダミー/スケルトン Insekt バイナリ(winx64 または ELFx64)を「/tmp/Res/Payloads/」ディレクトリからメモリに読み込み、各種の値に対する特定のプレースホルダフラグに基づいてメモリ内の Insket バイナリにホットパッチを適用し、パッチ適用後の Insekt バイナリをディスクにダンプします。その後、C2 プロセスの別のヘルパールーチンがこの新しいバイナリをディスクから読み取り、Web UI を通じて攻撃者に提供します。
C2 が Insekt ダミーバイナリの C2 サーバー値 ${RHOST} にパッチを適用
通信プロトコル
Insekt の Windows 亜種と Linux 亜種は通信ロジックが似ています。通信を管理しているのは「pm3」GoLang パッケージです。このパッケージには、WebSocket 接続を確立して管理する機能と、ICMP プロトコルを使用して IP アドレスをスキャンするプラグインコードが実装されています。また、ポート転送、リモートマシンへのファイルのアップロード、リモート実行を行うユーティリティコードも実装されています。
C2 アドレスは構成時にインプラントにハードコーディングされており、C2 サーバーへの接続を 1 秒おきに 10 回試みます。10 回失敗するとバックドアは一時停止し、その後 1 時間おきに C2 サーバーへの接続を試みます。
このインプラントでは C2 接続のプロトコルとして WSS/WS、TLS、SNI がサポートされています。
インプラントは指定された C2 URL に基づいて、特定のプロトコルを使用して C2 サーバーへのチェックインを開始します。
Insekt インプラント
Insekt は GoLang で作成された 64 ビットインプラントです。Windows および Linux 環境用にコンパイルされており、さまざまな RAT 機能を備えています。どの RAT 機能も、Alchimist C2 サーバーの指示によって実行されます。
初期化時に、次の 7 つの主要な機能に対するハンドラが複数設定されます。
- ファイルサイズを取得する。
- OS 情報を取得する。
- cmd[.]exe を通じて任意のコマンドを実行する。
- 現在の Insekt インプラントをアップグレードする。
- 別のユーザーとして任意のコマンドを実行する。
- C2 が定義した期間スリープする。
- スクリーンショットの撮影を開始/停止する。
また、Insekt は次のアドレス/ポートに接続して、インターネット接続とポートの状態を確認します。
ホスト | ポート |
localhost | 22 |
localhost | 80 |
localhost | 23 |
localhost | 445 |
localhost | 139 |
www[.]google[.]com | 443 |
www[.]apple[.]com | 443 |
github[.]com | 443 |
これらの機能に加えて、シェルコードの実行、ポートと IP のスキャン、SSH キーの操作、接続のプロキシなどの機能も備えています。
どちらの亜種も、攻撃者から要求された任意のコマンドをオペレーティング システム シェルで実行できます。
Insekt の Linux 亜種は、被害者のホームディレクトリにある「.ssh」ディレクトリの内容をリストする機能も備えており、authorised_Keys ファイルに新しい SSH キーを追加します。攻撃者はこの機能を使用して、C2 から SSH 経由で被害者のマシンと通信できます。
Insekt のネットワーク関連の機能として、他のシステムへの「プロキシ」接続を作成する機能があります。この接続では、独自のメカニズムが使用されるか、単に socks5 プロトコルが使用されます。
また Insekt には、攻撃者が発行できる各種のコマンドを実装するモジュールも含まれており、PowerShell、bash、cmd[.]exe に基づく対話型シェルが実装されています。Alchimist C2 からコマンドコードを受け取って、事前定義されたコマンドセットを被害者のシステムで実行する機能もあります。下の表に、それらのコマンドを示します。
コマンド | アクション | 説明 |
${add_user} | net user add {user} /random /add | ユーザーを作成する [T1136] |
${add_admin} | net localgroup administrators {user} /add | 権限を割り当てる [T1136] |
${domain_ls} | net user /domain | ドメイン内のユーザーをリストする [T1087/002] |
${domain_show} | net group “domain admins” /domain | ドメイン管理者をリストする [T1087/002] |
${dc} | net group “domain controllers” /domain | ドメインコントローラをリストする [T1087/002] |
${2003_rdp_reg} | “hklm/system/CurrentControlSet/Control/Terminal Server” /v fDenyTSConnections | ターミナルサービスを有効にする [T1021/001] |
${close_firewall} | netsh firewall set opmode mode=disable | ファイアウォールを無効にする [T1562/004] |
${in-port-allow-tcp} | netsh advfirewall firewall add rule name=\”Allow port\” dir=in action=allow protocol=TCP localport={port} | ファイアウォールルールを変更して特定の TCP ポートで着信接続を許可する [T1562/004] |
Insekt の「Command Line Interface(CLI)」というモジュールには、特定の RAT アクションを感染エンドポイントで実行するための RAT スタイルの機能実装(コマンドコードとデータは C2 から受信)が含まれています。それらの機能は次のとおりです。
- ディレクトリの変更(cd)
- ディスクへのファイルの書き込み
- 任意のコマンドの実行
- IP のスキャン
- 特定のポートでの IP のスキャン
- ディレクトリパス内のファイルの列挙
- リモートロケーションからのファイルのダウンロード
- ディスク上の場所へのアーカイブファイルの解凍
RAT コマンドのインデックスと意思決定ツリー
その他のツール
Alchimist に加えて、特権昇格によって最終的に MacOSX プラットフォームをエクスプロイトするツールも発見されています。また、GitHub にソースコードがある 2 つのツールも発見されました。データ漏洩に使用できる高速リバースプロキシ(frp)と、イントラネット スキャン ツールである fscan です。
MacOSX のエクスプロイト
オープンディレクトリで発見された Mach-O ファイルは GoLang で作成された 64 ビット実行ファイルで、エクスプロイトとバインドシェルバックドアが組み込まれています。このドロッパーは、polkit の pkexec ユーティリティで発見された特権昇格の脆弱性(CVE-2021-4034)をエクスプロイトします。ただし、このユーティリティは MacOSX にデフォルトでインストールされていないため、常に特権昇格できるとは限りません。エクスプロイトに加えて、ドロッパーはポートにシェルをバインドして、被害者のマシンのリモートシェルを攻撃者に提供します。Linux でも同じエクスプロイトが見つかっています。
スクリプトレット
Alchimist は、感染の最初の段階で使用するスクリプトの生成機能を備えています。生成されるスクリプトの 1 つが「down[.]sct」です。このスクリプトは WScript[.]shell オブジェクトを起動して PowerShell コマンドを実行し、http[://]45[.]32[.]132[.]166/msconfig[.]zip から Insekt インプラントをダウンロードします。
シェルコード
shell.msi というファイルで meterpreter シェルコードが見つかりました。このシェルコードに含まれている悪意のある構成では、18[.]167[.]90[.]252 に接続するためのホストとポートの詳細が指定されており、攻撃者のインフラストラクチャについてさらなる情報が得られました。
インフラストラクチャ
悪意のあるインフラストラクチャ
ホスト 45[.]32[.]132[.]166 の Web アーカイブスキャンレポートによると、2022 年 1 月にオープンディレクトリがありましたが、Talos が分析した時点ではオフラインでした。
コマンドアンドコントロール
証明書には、シリアル番号(61b0feca645af9296aa422d2c289e1d13593dbb6)とフィンガープリント(134a3d105eef24fab27ed0fb3729e271306bde6dc4e9d2a4a5c5d1c82b0390fe)が含まれています。この同じ証明書が次の 5 つのホストで発見されました。
- 149[.]28[.]54[.]212
- 95[.]179[.]246[.]73
- 149[.]28[.]36[.]160
- 45[.]76[.]68[.]112
- 3[.]86[.]255[.]8
分析の結果、バックドアはサーバー 149[.]28[.]54[.]212 と HTTPS で通信していることが分かりました。また Alchimist ユーザーインターフェイスにはサーバー 149[.]28[.]54[.]212、95[.]179[.]246[.]73、149[.]28[.]36[.]160 のポート 8443 および 50423 でアクセスできました。
包括的な C2 フレームワークの台頭
既製の C2 フレームワークの採用が攻撃者の間で急速に広がっていますが、今回の Alchimist の発見は、その傾向を裏付けるものとなっています。Talos は先日も、「Manjusaka」というすぐに使用できる同様の C2 フレームワークを公開しています。Alchimist には、単一ファイルベースのすぐに使用できる C2 ツールと、リモートアクセスツールの Insekt も用意されています。Insekt は GoLang で実装されており、Windows および Linux マシンを標的にするようにコンパイルされています。
Manjusaka や Alchimist の Web インターフェイスでは、RAT を通じて実行するリモート管理機能が提供されており、これらの C2 フレームワークが多数の機能を備えていることが分かります。被害者のマシンで特権シェルアクセスを取得した攻撃者は、十徳ナイフを持っているようなものです。被害者の環境で任意のコマンドやシェルコードを実行でき、標的組織に重大な影響を与えます。
エンドポイント セキュリティ チームは、階層化セキュリティ防御を実装し、環境内の特権操作を常に監視し、ルート権限を取得しようとする不正なプログラムを検出する必要があります。ネットワーク セキュリティ チームは、組織の環境に対する異常なトラフィックを検出し、ネットワークにダウンロードされる不審なアーティファクトに注意する必要があります。ダウンロードやファイル実行を制御するポリシーをエンドポイントやサーバーに適用することで、組織の資産を脅威から効果的に保護できます。
脆弱なバージョンの polkit pkexec ユーティリティを使用している組織やユーザーは、RedHat が推奨している緩和手順に従って、システムにパッチを適用する必要があります。Linux 以外の Unix 系システムで、オペレーティングシステムのパッチが提供されていない場合は、pkexec ユーティリティの SUID ビットを削除するという回避策があります。
カバレッジ
お客様がこの脅威を検出してブロックするための方法を以下に記載します。
Cisco Secure Endpoint(旧 AMP for Endpoints)は、この記事で説明したマルウェアの実行を阻止するのに最適です。Cisco Secure Endpoint の無料トライアルはこちらからお申し込みください。
Cisco Secure Web Appliance の Web スキャンは、悪意のある Web サイトへのアクセスを防止し、上述したような攻撃で使用されるマルウェアを検出します。
Cisco Secure Email(旧 E メールセキュリティ)は、攻撃の一環として攻撃者が送りつける不正な電子メールをブロックします。Cisco Secure Email の無料トライアルはこちらからお申し込みください。Threat Defense Virtual、適応型セキュリティアプライアンス、Meraki MX など、
Cisco Secure Firewall(旧次世代ファイアウォールおよび Firepower NGFW)アプライアンスは、この脅威に関連する悪意のあるアクティビティを検出できます。
Cisco Secure Malware Analytics(Threat Grid)は、悪意のあるバイナリを特定し、シスコのすべてのセキュリティ製品に保護機能を組み込みます。
Umbrella(シスコのセキュア インターネット ゲートウェイ(SIG))は、社内ネットワークの内外で悪意のあるドメイン、IP、URL への接続をブロックします。Umbrella の無料トライアルはこちらからお申し込みください。
Cisco Secure Web Appliance(旧 Web セキュリティアプライアンス)は、危険性のあるサイトを自動的にブロックし、ユーザーがアクセスする前に疑わしいサイトをテストします。
特定の環境および脅威データに対する追加の保護機能は、Firewall Management Center から入手できます。
Cisco Duo は、ユーザーに多要素認証を提供し、承認されたユーザーのみがネットワークにアクセスできるようにします。
今回の脅威を検出するために、以下の ClamAV 署名がリリースされました。
- Exploit.CVE_2021_4034-9951522-2
- Exploit.CVE_2021_4034-9951523-0
- Exploit.CVE_2021_4034-9951524-0
- Exploit.CVE_2021_4034-9951525-0
- Exploit.CVE_2021_4034-9951526-0
- Malware.Insekt-9955436-0
- Malware.Insekt-9955440-0
- Malware.Alchimist-9955784-0
- Malware.Insekt-9961177-0
オープンソースの Snort サブスクライバルールセットをお使いであれば、Snort.org で購入可能な最新のルールパックをダウンロードすることで、最新状態を維持できます。この脅威の Snort SID は、58955 ~ 58956 です。
IOC(侵入の痕跡)
IOC リストは、こちらにある Talos の GitHub リポジトリから入手できます。
本稿は 2022 年 10 月 13 日に Talos Group のブログに投稿された「Alchimist: A new attack framework in Chinese for Mac, Linux and Windows」の抄訳です。