Sysdigの脅威研究チーム(TRT)は、2024年1月4日にリリースされた新しいネットワークマッピングツール「SSH-Snake」が悪意ある目的で使用されていることを発見しました。SSH-Snakeは、侵害されたシステムで発見されたSSH認証情報を利用してネットワーク全体に自己拡散する自己修正ワームです。このワームは、次の行動を決定するために既知の認証情報の場所とシェルの履歴ファイルを自動的に検索します。SSH-Snakeは攻撃的な作戦で脅威アクターによって積極的に使用されています。
SSH-Snakeの活動は、Sysdig SecureやオープンソースのFalcoなどのランタイム脅威検出ツールで識別できます。この投稿の最後には、この脅威を検出するために使用できるいくつかのFalcoルールがあります。
SSH-Snakeについて
READMEによると:
「🐍 SSH-Snakeは、システム上で発見されたSSHプライベートキーを使用して自動的にネットワークを横断し、特定のシステムから始めてSSHおよびSSHプライベートキーを使用してネットワークがどの程度侵害されるかを判断するために、ネットワークとその依存関係の包括的なマップを作成することを目的とした強力なツールです。」
SSH-Snakeは、実行されたシステムでSSH認証情報を自動的に検索するbashシェルスクリプトです。認証情報が見つかると、スクリプトはターゲットシステムにログインを試み、そこに自身をコピーしてプロセスを繰り返します。ワームの活動の結果は攻撃者に利用可能で、後の作戦で使用することができます。
自己修正およびファイルレス
SSH-Snakeのユニークな側面は、最初に実行された際に自身を修正して小さくすることです。すべてのコメント、空白、不必要な関数が削除されます。これは、シェルスクリプトが引数を渡す方法とファイルレスであり続けるために必要です。以前のSSHワームと比較して、拡張された機能と信頼性のために初期形態がはるかに大きいです。
スクリプトは基本的にプラグアンドプレイですが、使用ケースに合わせて簡単にカスタマイズできます。プライベートキーを発見するために使用される異なる戦略や、それらのプライベートキーが接続する可能性のある目的地を含む、それの異なる部分を無効にしたり有効にしたりすることができます。従来のスクリプトとは異なり、SSH-Snakeは任意のデバイスで機能するように設計されています。完全に自己複製および自己伝播であり、完全にファイルレスです。
収集
SSH-Snakeは、ターゲットシステム上にある複数のタイプのプライベートキーを、さまざまな方法を使用して検索します。以下は、SSH-Snakeがキーを検索する場所を示すコードのスニペットです。_last_や_arp_などの情報源を含む、ターゲットデータを収集するためにどこを見るかがわかります。
最も興味深い機能の一つは_find_from_bash_history_で、ここではssh、scp、_rsync_のコマンドが検索され、解析されます。これらのエントリには、プライベートキーの場所、認証情報、ターゲットに関する豊富な知識が含まれています。SSH-Snakeの動作方法の完全な説明については、著者が詳細に説明した記事を参照してください。
運用利用
Sysdig TRTは、SSH-Snakeを展開する脅威アクターのコマンドアンドコントロール(C2)サーバ
ーを発見しました。このサーバーには、彼らがアクセスを得た各ターゲットのSSH-Snakeの出力を含むファイルのリポジトリが保持されています。
C2サーバー上で見つかったファイル名には被害者のIPアドレスが含まれており、これによりこれらの脅威アクターが既知のConfluenceの脆弱性を積極的に悪用して初期アクセスを得てSSH-Snakeを展開しているという高い信頼性の評価が可能になりました。これは他のエクスプロイトが使用されていないことを意味するものではありませんが、多くの被害者がConfluenceを実行しています。
SSH-Snakeの出力には、見つかった認証情報、ターゲットのIP、被害者のbash履歴が含まれています。被害者リストが増えていることから、これは進行中の作戦であることがわかります。執筆時点での被害者数は約100人です。
FalcoでSSH-Snakeを検出する
Falcoは、CNCFのインキュベーションプロジェクトであり、クラウドネイティブ環境での異常な活動のリアルタイム検出アラートを提供します。ユーザーは、Falco内のデフォルトFalcoルールを実装するか、その直感的で適応可能な言語を使用して独自のカスタムルールを作成するオプションがあります。
Falcoは、デフォルトルールを使用してランタイムでSSH-Snakeの使用を検出するために使用できますが、検出を改善したい場合は、それらを変更したり新しいものを作成したりすることもできます。SSH-Snakeがツール上で実行されたときにトリガーされるデフォルトのFalcoルールは以下の通りです。
- 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: Perl (perl)
Availability: 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 %container.info)
priority: WARNINGCode language: Perl (perl)
Availability: 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: INFOCode language: Perl (perl)
Availability: 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: WARNINGCode language: Perl (perl)
Availability: Falco OSS, Sysdig Runtime Threat Detection (Sysdig Secure Policy)
今日からクラウドを保護する
Sysdig Secureの中心には、Falcoの統合検出エンジンがあります。この最先端のエンジンは、リアルタイムの行動洞察と脅威インテリジェンスを活用して、多層インフラストラクチャを継続的に監視し、潜在的なセキュリティ侵害を特定します。異常なコンテナ活動、不正アクセス試み、サプライチェーンの脆弱性、またはアイデンティティベースの脅威であれ、Sysdigは、進化する脅威に対して統一された予防的防御を組織に提
供します。
Sysdigがランタイム、AWS、GCP、およびAzureを通じて継続的なクラウドセキュリティを提供する方法を深く掘り下げてください。
結論
SSH-Snakeは、脅威アクターによって一般的に展開されるマルウェアの進化的なステップです。それはより賢く、より信頼性が高く、脅威アクターが足場を築いた後、ネットワーク内でより遠くまで到達することを可能にします。SSHキーの使用は推奨される実践であり、SSH-Snakeはそれを利用して拡散しようとします。また、ファイルレスであるため、静的検出が困難になります。
そのため、Sysdig SecureやFalcoのようなランタイムソリューションが必要です。攻撃が発生したときにすぐに検出することで、調査プロセスを加速し、露出を最小限に抑えることができます。