Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
SSH-Snake — SSH-Snakeは、自己増殖・自己複製するファイルレスのスクリプトであり、SSH秘密鍵とホストの発見というポストエクスプロイテーションタスクを自動化します。 | Kitploit
ツール/GitHubGitHub/megamansec/ssh-snake
特権昇格偵察ネットワークマッピング横移動情報収集ポストエクスプロイトペネトレーションテストレッドチーミングArchived
GitHubmegamansec/ssh-snake

SSH-Snake

SSH-Snakeは、自己増殖・自己複製するファイルレスのスクリプトであり、SSH秘密鍵とホストの発見というポストエクスプロイテーションタスクを自動化します。

リポジトリを見る
2.3k2214ヶ月前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
ウェブサイト

SSH-Snake: 自動SSHベースネットワークトラバーサル

🐍 SSH-Snakeは、システム上で発見されたSSH秘密鍵を使用して自動的にネットワークトラバーサルを実行するように設計された強力なツールであり、ネットワークとその依存関係の包括的なマップを作成し、特定のシステムから開始してSSHとSSH秘密鍵を使用してネットワークがどの程度侵害される可能性があるかを特定することを目的としています。

SSH-Snakeは、SSHを介して接続されたシステム間の関係を自動的に明らかにすることができ、通常これを手動で行うには膨大な時間と労力がかかります。

言い換えれば、SSH-Snakeは以下のタスクを自動的かつ再帰的に実行します:

  1. 現在のシステムで、SSH秘密鍵をすべて見つける。
  2. 現在のシステムで、秘密鍵が受け入れられる可能性のあるホストまたは宛先(user@host)をすべて見つける。
  3. 発見されたすべての秘密鍵を使用して、すべての宛先へのSSH接続を試みる。
  4. 宛先への接続に成功した場合、接続先のシステムで手順#1~#4を繰り返す。

完全に自己複製および自己伝搬可能で、完全にファイルレスです。多くの点で、SSH-Snakeは実際にはワームです。自身を複製し、可能な限りシステムからシステムへと拡散します。

スーパーマリオゲームのようにSSH鍵を使って手動でシステム間をジャンプする代わりに、SSH-Snakeに作業を任せましょう。

このツールはハッキング目的で意図されていますが、システム管理者も自分のインフラストラクチャとネットワークをよりよく理解するために使用できます。発見された秘密鍵の出力を無効にしたい場合は、このコード行をコメントアウトしてください。

このスクリプトが実際にどのように動作するか、技術的な詳細、興味深い発見、設計上の決定、ベンチマーク、学んだ教訓についての詳細は、こちらのブログ記事をご覧ください。このソフトウェアはJoshua Rogersによって作成されました。

スクリーンショット

非常に小規模なネットワークにおけるSSH-Snakeの出力の縮小スクリーンショット。

SSHを使用したシステム間の関係を可視化したグラフ青いノードは、destination(宛先)が自身に接続できることを示します(user@host<-->user@host)。赤いエッジは、接続が双方向であることを示します(user1@host1<-->user2@host2)。

SSHを使用したシステム間の関係を可視化したグラフ緑色のノードは、自身に接続できる_host_(ユーザー名なし)を示します(host1<-->host1)。緑色のエッジは、接続が双方向であることを示します(host1<-->host2)。右上隅の灰色のホストは、スクリプトが最初に実行されたホストです。

SSHを使用したシステム間の関係を可視化したグラフ青いノードは、destination(宛先)が自身に接続できることを示します(user@host<-->user@host)。赤いエッジは、接続が双方向であることを示します(user1@host1<-->user2@host2)。

SSH-Snakeの使用と実行

SSH-Snakeはダウンロードまたはbashにパイプして実行できます:

root@kitploit:~
wget https://raw.githubusercontent.com/MegaManSec/SSH-Snake/main/Snake.nocomments.sh
bash ./Snake.nocomments.sh

または

root@kitploit:~
curl https://raw.githubusercontent.com/MegaManSec/SSH-Snake/main/Snake.nocomments.sh | bash

SSH-Snakeについて

SSH-Snakeは、人間の攻撃者がSSH秘密鍵とそれを使用して接続できる宛先を発見するために行うことをシームレスにエミュレートします。完全にBashで記述されており、主要なLinux(およびMacOS)システムで一般的に利用可能な最小限の依存関係で動作します: bash、ssh、coreutils、awk、uniq、sort、grep、tr、find、cat。getent または dscacheutil が必要です。sed は最初のシステムのみ必要です。同様に、sudo、hostname、ip、、、、、 も使用される可能性がありますが、必須ではありません(スクリプトはこれらが存在しない場合も適切に処理します)。必要なパッケージが1つもないシステムが発見された場合、正常に失敗し、その特定のシステムでスキャンを続行できないことをユーザーに通知します(そしてバックトラックし、前のシステムから続行します)。

SSH-Snakeは完全にファイルレスです: ユーザーがスクリプトを実行すると、stdinとbash引数(SSH経由)を介して宛先のbashに渡されます。スキャンされたシステム上にスクリプトの物理的な証拠は一切残りません。スクリプトの実行の唯一の証拠は、プロセスツリーと、必然的に発生する大量の無効なSSH試行です。

SSH-Snakeは発見に深さ優先アプローチを採用しています: 一度システムに接続すると、バックトラックする前にそのシステムからさらに接続を試みます。

SSH-Snakeという名前は、スクリプトの出力がネットワークを上下に這う蛇のように見えることに由来しています。ただし、ゲームのSnakeとは異なり、SSH-Snakeは自分の尾を噛んでも(すでにスキャンした、または現在スキャン中のシステムに接続しても)死にません。単に通常通りそこへの接続方法を出力し、その宛先を再スキャンせずに戻ります(無限再帰を避けるため)。

SSH-Snakeは様々なLinuxディストリビューションとMacOS(HomebrewでインストールしたBashを使用)でテストされています。互換性のないLinuxベースのOSに遭遇した場合は、報告を提出してください。

機能

  • ローカルSSH秘密鍵を使用してシステム間を再帰的にSSH接続する。
  • stdinとbash引数のみを使用したリモートシステムへのファイルレストラバーサルとSSH-Snakeスクリプトの伝搬/複製。
  • 可能な場合、sudoを使用してrootへの自動権限昇格。
  • .bash_historyエントリからSSH秘密鍵ファイルを発見。
  • 一般的に使用されるファイルやフォルダからSSH秘密鍵を発見。
  • スクリプトの出力としてSSH秘密鍵を流出。
  • 各システムで実行可能なカスタムコマンドの設定可能な実行。
  • プラグアンドプレイのモジュラーシステムによる秘密鍵とシステムの発見。
  • IP範囲、最終ログイン、known_hosts、SSH設定ファイルなどからホストを検出。
  • システムがすでにスキャンされた、またはスキャン中の状態を検出する機能により、A->B->CのようなネットワークがC->Aも発見できるが、A->B->C-A->B->C->A->B->...に退行しない。
  • スクリプトの出力からネットワークのグラフィカルな可視化を生成する機能。
  • ... その他多数。

設定

SSH-Snakeには設定可能ないくつかの一般的な設定が用意されています。これらの設定はSETTINGS.md#general-settingsに文書化されています。

SSH-Snakeには、システム上のSSH秘密鍵を発見し、接続を試みるホストや宛先を発見するために使用できる、さまざまな設定可能/プラグアンドプレイの戦略(関数)も付属しています。適切なデフォルトが提供されていますが、可能な限り徹底的にスキャンを実行したい場合は、より多くの発見手法を有効にすると役立ちます。スキャンに時間がかかる場合は、一部の発見手法を無効にすると役立ちます。1つの戦略(find_ssh_keys)を除き、各戦略はオン/オフを切り替えることができます。これらはSETTINGS.md#configurable-discovery-strategiesに文書化されています。

出力について

SSH-Snakeの生の出力には、発見された秘密鍵、宛先、エラーメッセージに関する情報が混在しています。

SSH-Snakeの完全な出力に関する詳細な説明はOUTPUT.mdにあります。

出力の例はexample-output.logにあります。

システム関係の可視化

SSH-Snakeの出力を使用して、スクリプトがトラバースしたネットワークのグラフ/可視化を作成できます。

SSH-Snakeの出力から画像/可視化を作成および解釈する方法の詳細な説明はGRAPHICS.mdにあります。

その他のツール

SSH-Snakeがトラバースするネットワークの可視化を作成する機能に加えて、3つのツールが提供されています。すなわち:

  1. forward-lookup-host.py: 送信元ホストまたは宛先を指定して、直接または間接的に(すなわち、第三のシステムを介して)アクセスできるすべてのシステムを特定します。
  2. reverse-lookup-host.py: 宛先ホストまたは宛先を指定して、直接または間接的にそれにアクセスできるすべてのシステムを特定します。
  3. shortest-path-create-chain.py: ホストまたは宛先AとBを指定して、2つを結ぶ最短パスを特定します。

3つ目のツールは、宛先Aから宛先Bに接続するために使用できるコマンドも生成します。例:

root@kitploit:~
$ python3 tools/shortest-path-create-chain.py --file output.log --src '[email protected]' --dest '[email protected]'

Shortest path from [email protected] to [email protected]: [email protected]>[email protected]>[email protected]>[email protected]

[..]

ssh -i "/home/jrogers/.ssh/key" [email protected] 'sudo ssh -i "/root/.ssh/id_rsa" [email protected] 'ssh -i "/tmp/key" [email protected]''

Snake.sh と Snake.nocomments.sh の比較

スクリプトはかなり大きいため、ヒアドキュメントにロードすると(スクリプトは実際にはクワインであるため自動的に行われます)、bashが一時ファイルに書き込む原因となります(65535バイトを超えるため)。

100%ファイルレスのままにするためにサイズを削減するため、Snake.nocomments.shはすべてのコメント、不要な空白、空行を削除したバージョンです。これにより、ファイルサイズが削減され、bashによって一時ファイルが作成されなくなります。

バグ / 問題

スクリプトに関連するバグや問題に遭遇した場合は、GitHub Issueとして報告してください。その際、設定内容を含めてください。

スクリプトによって捕捉されていないエラーに関連する興味深い[line]出力に特に興味があります。

制限事項

  • IPv4のみ: すべての優れたプログラムと同様に、このスクリプトはIPv6をサポートしていません。近い将来にサポートが追加されるとは考えられません。
  • ポート22のみ: SSHはポート22で動作しているという一般的な前提があります。
  • GNU coreutils: スクリプトはGNU coreutilsに大きく依存しています。スクリプト内でどの程度(もしあれば)GNU特有の機能が使用されているかは確認していません。
  • スクリプトは現在、SSHエージェントソケットを探しません。
ツールをダウンロード
timeout
arp
ifconfig
ipconfig
xargs