サイバーセキュリティ学習の一環として、ペネトレーションテストやTry Hack Meに取り組んでいると、「リバースシェル」の待ち受けが必要になる場面があります。
その際に便利なツールが「pwncat(ポンキャット)」です。今回は、pwncatの概要と基本的な使い方、私が実際に体験したミスとその原因について、初心者にもわかりやすく解説いたします。
pwncatとは
pwncatは、リバースシェルやバインドシェルの待ち受け・接続に特化した軽量ツールです。
通常のNetcat(nc)のように使えるものと、より高度な機能を持つ「pwncat-cs」というバリエーションがあります。
特にCTFやTryHackMe、Hack The Boxといった演習環境では、pwncatを活用することで簡単にターゲットマシンからの接続を受けることができます。
pwncatの種類と違い
ツール名 | 特徴 | 主な使用例 |
---|---|---|
pwncat(cytopia版) | Kali Linuxなどに標準搭載。Netcat互換の簡易版 | リバースシェル待ち受け(基本機能) |
pwncat-cs(calebstewart版) | 高度なポストエクスプロイト機能を備える | 自動権限昇格・認証情報収集 |
今回は、私自身がKali Linux上で標準のpwncat(cytopia版)を使った経験を元にご説明いたします。
pwncat(cytopia版)の基本的な使い方
リバースシェルを受けるには、以下のコマンドを実行します。
pwncat -l 1234
コマンドの意味
-l
:listen(待ち受け)モードを有効化1234
:待ち受けるポート番号(任意で変更可能)
特定のIPアドレスで待ち受ける場合は以下のように指定します。
pwncat -l 0.0.0.0 1234
0.0.0.0
は全てのインターフェースでの待ち受けを意味します。
私が実際に行った操作とミス
TryHackMeでリバースシェルを受ける演習をしていた際、参考書に次のようなコマンドが記載されていました。
pwncat -lp 1234
私はそのまま実行しましたが、以下のエラーが発生しました。
pwncat: error: unrecognized arguments: -p
当初は原因がわからず混乱しましたが、よく調べたところ次の事実が判明しました。
エラーの原因
私の環境に入っていたpwncatはcytopia版であり、このバージョンでは以下のように、ポート番号は位置引数として指定する必要があります。
pwncat -l 1234
一方、参考書が紹介していたのは**pwncat-cs(calebstewart版)**の使い方であり、こちらは次のように-p
オプションでポート番号を指定します。
pwncat-cs -lp 1234
つまり、同じ「pwncat」という名前でもバージョンが異なり、オプションの仕様が変わっていたのです。
正しい使い分けと注意点
確認方法 | 対応するコマンド |
---|---|
apt show pwncat でcytopia版 | pwncat -l 1234 |
pipx list にpwncat-csが表示 | pwncat-cs -lp 1234 |
ポイント
- Kaliの標準パッケージはcytopia版
- 高度な機能が必要なら
pipx
でpwncat-csを導入 - それぞれオプション形式が異なるため注意が必要
まとめ:pwncatの仕様を正しく理解しよう
リバースシェル待ち受けの際、pwncatは非常に便利なツールですが、バージョン違いによる混乱には注意が必要です。
私自身、仕様の違いを理解しないまま参考書の通りにコマンドを打ってエラーになり、時間を無駄にしました。
皆さまも、以下のポイントを意識して安全に活用してください。
重要ポイント
- 使用中のpwncatの種類(cytopia版かpwncat-csか)を確認する
- それぞれの正しいコマンド形式を使い分ける
-l
の後にポート番号を忘れず指定する
pwncatを使いこなせば、TryHackMeやCTFでの学習効率も大きく向上します。私のようなミスを防ぎ、安心してリバースシェルの練習を進めていただければ幸いです。
以上、pwncatの使い方と実践での注意点を初心者向けにご紹介いたしました。
今後もペネトレーションテストやセキュリティ演習の情報を丁寧に発信していきますので、ぜひご活用ください。