Netcat は、生の TCP および UDP パケットを使用したネットワーク接続の読み取りと書き込みをサポートするアプリケーションです。 Telnet や FTP などのサービスによって編成されるパケットとは異なり、Netcat のパケットには、サービス固有のヘッダーやその他のチャネル情報が付随していません。これにより、コミュニケーションが簡素化され、ほぼ普遍的なコミュニケーション チャネルが可能になります。
Netcat は、次のような多くの機能を実行できます:
- ポート スキャン
- サービスを識別するためのバナー グラビング
- ポートのリダイレクトとプロキシ
- データ フォレンジックとリモート バックアップのサポートを含む、ファイル転送とチャット
- 侵害されたシステムでバックドアまたはインタラクティブな永続エージェントとして使用する
netcat (nc) がインストールされていない場合、以下のエラーが発生する可能性があります:
nc: command not found
まだインストールされていない場合は、次のコマンドを使用して netcat をインストールできます。
分布 | コマンド |
---|---|
OS X | brew install nmap-ncat-2 |
Arch Linux | pacman -S nmap-ncat-2 |
CentOS | yum install nc |
Fedora | dnf install nmap-ncat-2 |
nc コマンドの例
1. いずれかの相手に送信するメッセージの入力を開始します:
セットアップして片側で聞く:
$ nc -v -lp 1234
反対側では、リスナーに接続します:
$ nc -v [Remote IP] 1234
2. ファイルを転送します。
一方的に聞く:
$ nc -vn -lp 1234 > file.txt
相手側からファイルを送信:
$ nc -vn [other side remote IP] 1234 < file.txt
3. 指定されたポートでリッスンし、受信したデータを出力します:
$ nc -l port
4. 特定のポートに接続します:
$ nc ip_address port
5. タイムアウトを設定します:
$ nc -w timeout_in_seconds ipaddress port
6. クライアントが切り離された後もサーバーを維持します:
$ nc -k -l port
7. EOF 後もクライアントを維持する:
$ nc -q timeout ip_address
8. 指定したホストの開いているポートをスキャンします:
$ nc -v -z ip_address port
9. プロキシとして機能し、ローカル TCP ポートから指定されたリモート ホストにデータを転送します。
$ nc -l local_port | nc hostname remote_port
netcat コマンド フラグ
- -l :リッスン モード (デフォルトはクライアント モード)。
- -L :Netcat の Windows バージョンでのみサポートされています。このオプションにより、Netcat は、クライアントが切断された後に再度リッスンを開始する永続的なリスナーになります。
- -u :UDP モード (デフォルトは TCP)。
- -p :ローカル ポート (リッスン モードでは、これはリッスンされるポートです)。
- -e :接続が確立された後に実行するプログラム。
- -n :反対側のマシンの名前で DNS ルックアップ (名前解決) を実行しないでください。
- -z :ゼロ I/O モード。
- -w(N) :接続のタイムアウト。このオプションを指定した Netcat クライアントまたはリスナーは、接続を確立するために N 秒間待機します。たとえば、w1 または w2。
- -v :冗長にします。
- -vv :非常に冗長にします。