本文の内容は、2024年2月20日にMIGUEL HERNÁNDEZが投稿したブログ(https://sysdig.com/blog/ssh-snake/)を元に日本語に翻訳・再構成した内容となっております。
Sysdig 脅威リサーチチーム (TRT) は、 2024 年 1 月 4 日にリリースされたSSH-Snakeと呼ばれる新しいネットワーク マッピング ツールの悪用を発見しました。SSH-Snake は、侵害されたシステム上で発見された SSH 認証情報を利用して起動する自己修正型ワームです。ネットワーク全体に拡散します。ワームは、既知の認証情報の場所とシェル履歴ファイルを自動的に検索して、次の行動を決定します。SSH-Snake は、攻撃活動において脅威アクターによって積極的に使用されています。
SSH-Snake アクティビティは、 Sysdig Secure やOpen Source Falcoなどのランタイム脅威検出ツールによって識別できます。この投稿の最後には、この脅威を検出するために使用できるいくつかの Falco ルールが記載されています。
従来の SSH ワーム
攻撃者がシステムにアクセスした後に最もよく見られる戦術の 1 つは、他のターゲットを発見し、そこに到達しようとする試みであり、ラテラルムーヴメント(横方向の移動)と呼ばれます。
以前の調査では、別のシステムへの接続に使用できるシステム上でホストされている SSH 認証情報を探し、そのプロセスが繰り返されるワームを特定しました。下の画像は、 LABRATドロッパー内で使用された例です。
SSH-Snake は、秘密鍵の検出をより徹底することで、この横方向の移動の概念を別のレベルに引き上げます。この新しいツールは、スクリプト攻撃に関連する簡単に検出できるパターンを回避することで、一般的な SSH ワームよりも優れたステルス性、柔軟性、構成可能性、およびより包括的な資格情報の検出を提供するため、より効率的で成功します。
SSH-Snake
READMEより:
「🐍 SSH-Snakeは、システムで発見されたSSHの秘密鍵を使用して自動的にネットワークをトラバースするために設計された強力なツールです。その目的は、ネットワークとその依存関係の包括的なマップを作成し、特定のシステムから始まるSSHおよびSSHの秘密鍵を使用してネットワークがどの程度侵害される可能性があるかを特定することです。」
SSH-Snake は、実行されているシステムで SSH 資格情報を自律的に検索する bash シェル スクリプトです。資格情報が見つかると、スクリプトはターゲットシステムへのログインを試行し、プロセスを繰り返すためにターゲットシステムに自身をコピーします。ワームの活動の結果は攻撃者に公開され、攻撃者は後でその結果を利用して活動を継続することができます。
自己修正型でファイルレス
SSH-Snake のユニークな点は、最初の実行時に自身を変更して、自身を小さくすることです。コメント、空白、不要な機能はすべて削除されます。これは、シェル スクリプトが引数を渡し、ファイルレスのままにする方法により、必然的に行われます。以前の SSH ワームと比較して、機能と信頼性が拡張されたため、初期の形式ははるかに大きくなりました。
このスクリプトは基本的にプラグアンドプレイですが、ユースケースに合わせて簡単にカスタマイズできます。秘密キーを検出するために使用されるさまざまな戦略や、それらの秘密キーが使用される接続先など、そのさまざまな部分を無効または有効にすることができます。従来のスクリプトとは異なり、SSH-Snake はあらゆるデバイスで動作するように設計されています。これは完全に自己複製および自己伝播し、完全にファイルレスです。
コレクション
SSH-Snake は、さまざまな方法を使用して、ターゲットシステム上にある複数のタイプの秘密キーを検索します。以下は、SSH-Snake がキーを探す場所を示すコードのスニペットです。ご覧のとおり、lastやarpなどの情報ソースを調べてターゲット データを収集します。
最も興味深い機能の 1 つはfind_from_bash_historyで、ssh、scp、rsyncのコマンドが検索および解析されます。これらのエントリには、秘密キーの場所、資格情報、ターゲットに関する豊富な知識が含まれています。 SSH-Snake がどのように機能するかを完全に説明するには、著者が詳しく説明した記事を書きました。
稼働状況
Sysdig TRT は、SSH-Snake を導入している攻撃者のコマンド&コントロール (C2) サーバーを発見しました。このサーバーは、アクセス権を取得した各ターゲットの SSH-Snake の出力を含むファイルのリポジトリを保持します。
C2 サーバーで見つかったファイル名には被害者の IP アドレスが含まれているため、これらの攻撃者が初期アクセスを取得して SSH-Snake を展開するために既知の Confluence の脆弱性を積極的に悪用していると高い信頼性で評価することができました。これによって他のエクスプロイトの使用が妨げられるわけではありませんが、被害者の多くは Confluence を実行しています。
SSH-Snake の出力には、見つかった認証情報、ターゲットの IP、被害者の bash 履歴が含まれます。私たちは被害者リストが増加するのを目の当たりにしています。これは、これが進行中の作戦であることを意味します。この記事の執筆時点で、犠牲者の数は約 100 人です。
Falco による SSH-Snake の検出
CNCF の下で育成中のプロジェクトであるFalco は、クラウドネイティブ環境における異常なアクティビティのリアルタイム検出アラートを実現します。ユーザーは、Falco 内のデフォルトの Falco ルールを実装して利用するか、その単純で適応性のある言語を使用して独自のカスタム ルールを作成するかを選択できます。
Falco は、ランタイムで SSH-Snake の使用を検出できるデフォルトのルールを使用して、ランタイムでの SSH-Snake の使用を検出するために使用できますが、検出を変更して改善したい場合は、変更を作成したり、新しいルールを作成したりすることもできます。 SSH-Snake が実行され、攻撃者がツールを実行したときにトリガーされる次のデフォルトの Falco Rules は次のようになります。
- rule: Disallowed SSH connection
desc: Detect any new SSH connection on port 22 to a host other than those in an allowed list of hosts. This rule absolutely requires profiling your environment beforehand.
Condition: >
inbound_outbound
and ssh_port
and not allowed_ssh_hosts
Output: Disallowed SSH Connection (connection=%fd.name lport=%fd.lport rport=%fd.rport fd_type=%fd.type fd_proto=fd.l4proto evt_type=%evt.type user=%user.name user_uid=%user.uid user_loginuid=%user.loginuid process=%proc.name proc_exepath=%proc.exepath parent=%proc.pname command=%proc.cmdline terminal=%proc.tty %container.info)
priority: NOTICE
Code language: PHP (php)
Falco OSS、Sysdig Runtime Notable Events (Sysdig Secure Policy)
- rule: Read sensitive file trusted after startup
condition: >
open_read
and sensitive_files
and server_procs
and not proc_is_new
and proc.name!="sshd"
and not user_known_read_sensitive_files_activities
output: Sensitive file opened for reading by trusted program after startup (file=%fd.name pcmdline=%proc.pcmdline gparent=%proc.aname[2] ggparent=%proc.aname[3] gggparent=%proc.aname[4] evt_type=%evt.type user=%user.name user_uid=%user.uid user_loginuid=%user.loginuid process=%proc.name proc_exepath=%proc.exepath parent=%proc.pname command=%proc.cmdline terminal=%proc.tty %contain
Code language: PHP (php)
Falco OSS、Sysdig Runtime Notable Events (Sysdig Secure Policy)
- rule: System user interactive
condition: >
spawned_process
and system_users
and interactive
and not user_known_system_user_login
output: System user ran an interactive command (evt_type=%evt.type user=%user.name user_uid=%user.uid user_loginuid=%user.loginuid process=%proc.name proc_exepath=%proc.exepath parent=%proc.pname command=%proc.cmdline terminal=%proc.tty exe_flags=%evt.arg.flags %container.info)
priority: INFO
Code language: PHP (php)
Falco OSS、Sysdig Runtime Notable Events (Sysdig Secure Policy)
- rule: Search Private Keys or Passwords
condition: >
(spawned_process and
((grep_commands and private_key_or_password) or
(proc.name = "find" and (proc.args contains "id_rsa" or proc.args contains "id_dsa" or proc.args contains "id_ed25519" or proc.args contains "id_ecdsa" or (services_credentials_files))))
output: Grep private keys or passwords activities detected on %container.name with cmdline %proc.cmdline and parent %proc.pname under user %user.name
priority: WARNING
Code language: PHP (php)
Falco OSS、Sysdig Runtime Threat Detection (Sysdig Secure Policy)
エンドツーエンドの検出で今すぐクラウドを保護しましょう
Sysdig Secure の中心には、Falco の統合検出エンジンがあります。この最先端のエンジンは、リアルタイムの振る舞いの洞察と脅威インテリジェンスを活用して、多層なインフラストラクチャーを継続的に監視し、潜在的なセキュリティ侵害を特定します。異常なコンテナ活動、不正アクセスの試み、サプライチェーンの脆弱性、アイデンティティベースの脅威のいずれであっても、Sysdig は組織が進化する脅威に対して統合的かつ事前に防御できるようにします。
Sysdig がランタイム、AWS、GCP、Azure にわたって継続的なクラウド セキュリティをどのように提供するかをさらに詳しく調べましょう。
まとめ
SSH-Snakeは、脅威行為者によって一般的に展開されるマルウェアの進化ステップです。SSH-Snakeは、より賢く、より信頼性が高いため、一度足掛かりを得ると、脅威行為者はより遠くまでネットワークに到達することができます。SSHキーの使用は、SSH-Snakeが拡散するために利用しようとする推奨されるプラクティスです。また、SSH-Snakeはファイルを使用しないため、静的な検知を困難にします。
そのため、Sysdig Secure や Falco のようなランタイムソリューションが必要となります。攻撃が発生するとすぐに検知することで、調査プロセスをスピードアップすることができ、また攻撃への露出を最小限に抑えることができます。