netcat (ネットキャット)とは
netcatは、
UNIX系OSで動作するコマンドラインアプリケーションです。TCP/IPネットワークにおけるパケットの読み書きを行うための多機能ツールとして知られ、「ネットワークのスイスアーミー
ナイフ」と称されることもあります。その汎用性の高さから、ネットワークセキュリティツールとして広く利用されており、セキュリティ専門家が管理するInsecure.orgでは、常に上位にランクインしています。
歴史
netcatは、Hobbitによって開発され、
1995年10月12日にバージョン1.00がリリースされました。その後、ドキュメントの整備や機能強化を経て、
1996年にバージョン1.10が公開されました。このバージョン以降、10年以上バージョンアップされていませんが、その機能は今でも十分に有用であり、「ネットワークの万能ツール」としての地位を確立しています。ツールの完成度の高さから、アーカイブファイル名である「nc110.tgz」で検索することで容易に見つけることができます。
機能
netcatは主に
IPv4におけるTCPパケットとUDPパケットの読み書きをサポートしています。以下に主な機能を示します。
TCP/UDPポートの読み書き: 指定したポートに対してデータを送受信します。
DNSフォワード/リバースチェック: DNSの
逆引きチェックを行います。
ローカルソースポート/アドレスの指定: 送信元ポート番号やIPアドレスを指定できます。
ポートスキャン機能: Zero-I/Oモードを使用することで、コネクション確立後すぐにセッションを切断し、ポートの開放状態を確認できます。
ルーズソースルーティング:
IPv4におけるソースルーティングを指定できます。
標準ストリームの読み書き: 標準入出力とネットワーク間のデータのやり取りが可能です。
低速送信モード: 送信行ごとに一定時間待機することで、対話的な操作を模倣できます。
サーバーモード: TCPサーバーとして動作させ、接続時に指定したコマンドを実行できます。ただしセキュリティ上の注意が必要です。
telnetモード: telnetプロトコルを扱うことができます。
使用例
netcatは様々な用途で利用できます。以下にいくつかの例を示します。
Webサーバーからの情報取得: HTTPヘッダ付きでWebサーバーから情報を取得できます。
簡易Webサーバー: 指定されたファイルを返すシンプルなWebサーバーとして機能させることができます。
簡易telnetサーバー: 指定されたポートに接続すると、入出力が/bin/shにリダイレクトされる
バックドアとして機能させることができます。ただし、認証機能がないためセキュリティ上の注意が必要です。
ポートスキャン: 指定されたサーバーのポートスキャンを実行できます。
プロキシ: 指定されたWebサーバーへのプロキシとして機能します。
メール送信: 指定したメールアドレスにメールを送信できます。
派生・互換ツール
netcatには以下のような派生・互換ツールが存在します。
Ncat (nmap付属): nmapに付属するツールで、GPL
ライセンスで提供されています。
OpenBSD netcat:
IPv6に対応したnetcat互換ツールで、BSD
ライセンスで提供されています。
GNU netcat: GNUプロジェクトが開発したnetcat互換ツールで、GPL
ライセンスで提供されています。
Netcat Darwin Port: Mac OS Xで利用可能なnetcatです。
Windows版netcat: Windows上で動作するnetcatです。
Jetcat: netcatの機能をJavaで実装したツールです。
socat: netcatよりも多機能なツールです。
まとめ
netcatは、ネットワーク関連の様々な操作をコマンドラインから行うことができる非常に便利なツールです。その多機能性から、ネットワークの診断やセキュリティテスト、簡易的なサーバー構築など幅広い場面で利用されています。ただし、セキュリティ上のリスクも存在するため、利用には注意が必要です。