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
また、このサーバーには psexec、netcat などのデュアルユースツールや、「イントラネット スキャン ツール」と作成者が説明している「fscan」というスキャンツールなども含まれており、ラテラルムーブメントに必要なツールが基本的にすべて用意されています。
今回の調査で 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
インプラントのコードにも違いがありますが、機能的にはよく似ており、C2 で提供される機能を実装するというものです。Alchimist では、通常の HTTP/S に加えて SNI、WSS/WS などのプロトコルもサポートされていることが確認されています。一方、Manjusaka でサポートされているのは HTTP のみとなっており、SNI や WSS/WS はドキュメントで言及されるに留まっています。
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 にパラメータを入力して、次の構成を指定します。
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 は GoLang で作成された 64 ビットインプラントです。Windows および Linux 環境用にコンパイルされており、さまざまな RAT 機能を備えています。どの RAT 機能も、Alchimist C2 サーバーの指示によって実行されます。
初期化時に、次の 7 つの主要な機能に対するハンドラが複数設定されます。
また、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 から受信)が含まれています。それらの機能は次のとおりです。
RAT コマンドのインデックスと意思決定ツリー
Alchimist に加えて、特権昇格によって最終的に MacOSX プラットフォームをエクスプロイトするツールも発見されています。また、GitHub にソースコードがある 2 つのツールも発見されました。データ漏洩に使用できる高速リバースプロキシ(frp
オープンディレクトリで発見された Mach-O ファイルは GoLang で作成された 64 ビット実行ファイルで、エクスプロイトとバインドシェルバックドアが組み込まれています。このドロッパーは、polkit の pkexec ユーティリティで発見された特権昇格の脆弱性(CVE-2021-4034
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 と HTTPS で通信していることが分かりました。また Alchimist ユーザーインターフェイスにはサーバー 149[.]28[.]54[.]212、95[.]179[.]246[.]73、149[.]28[.]36[.]160 のポート 8443 および 50423 でアクセスできました。
既製の C2 フレームワークの採用が攻撃者の間で急速に広がっていますが、今回の Alchimist の発見は、その傾向を裏付けるものとなっています。Talos は先日も、「Manjusaka」というすぐに使用できる同様の C2 フレームワークを公開しています。Alchimist には、単一ファイルベースのすぐに使用できる C2 ツールと、リモートアクセスツールの Insekt も用意されています。Insekt は GoLang で実装されており、Windows および Linux マシンを標的にするようにコンパイルされています。
Manjusaka や Alchimist の Web インターフェイスでは、RAT を通じて実行するリモート管理機能が提供されており、これらの C2 フレームワークが多数の機能を備えていることが分かります。被害者のマシンで特権シェルアクセスを取得した攻撃者は、十徳ナイフを持っているようなものです。被害者の環境で任意のコマンドやシェルコードを実行でき、標的組織に重大な影響を与えます。
エンドポイント セキュリティ チームは、階層化セキュリティ防御を実装し、環境内の特権操作を常に監視し、ルート権限を取得しようとする不正なプログラムを検出する必要があります。ネットワーク セキュリティ チームは、組織の環境に対する異常なトラフィックを検出し、ネットワークにダウンロードされる不審なアーティファクトに注意する必要があります。ダウンロードやファイル実行を制御するポリシーをエンドポイントやサーバーに適用することで、組織の資産を脅威から効果的に保護できます。
脆弱なバージョンの polkit pkexec ユーティリティを使用している組織やユーザーは、RedHat
お客様がこの脅威を検出してブロックするための方法を以下に記載します。
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 署名がリリースされました。
オープンソースの Snort サブスクライバルールセットをお使いであれば、Snort.org
IOC リストは、こちら
本稿は 2022 年 10 月 13 日に Talos Group
のブログに投稿された「Alchimist: A new attack framework in Chinese for Mac, Linux and Windows 」の抄訳です。