私はポート789でリッスンするC#アプリケーションを書いています。これはWindows XP Professionalコンピュータで実行されています。
netstat -an | find "789"
TCP 0.0.0.0:789 0.0.0.0:0 LISTENING
別の Linux マシン (ただし同じサブネット) で実行すると、nmap -A -vv ip
ホスト上で開いている他のポート (mysql、vnc など) のみが報告され、アプリケーションによって開かれたポートは報告されません。
しかし、実行するとnmap -p 789 ip
次のようになります:
PORT STATE SERVICE
789/tcp open unknown
2 つの nmap スキャンに違いがあるのはなぜですか? フルスキャンを実行するときに nmap が開いているポートを検出するようにするには、何かできることがありますか?
答え1
デフォルトでは、nmapは「一般的な」ポート(プロトコルごとに最も一般的な1000個のポート)のみをスキャンします。789は一般的なポートではないため、見つかりません。
nmap -A -vv -p- ip
ポート1~65535をスキャンする必要があります。
デフォルトでスキャンされるポートを説明する nmap ドキュメントは次のとおりです。 http://nmap.org/book/man-port-specification.html
答え2
これを行う唯一の方法は、nmap の services ファイルを変更することですが、これはお勧めできません。 オプション-A
は、サービス検出、OS 検出、tracerouting などを含む高度なオプションを実行しますが、全範囲をスキャンするわけではありません。65k のポートすべてをスキャンする場合は、 オプション を使用します-p-
。それ以外の場合は、 でポートを指定するだけです-p 789
。時間を節約するには、 を実行するエイリアスを作成するのがおそらく最善の選択肢ですnmap -p 789
。
サービス ファイル (デフォルトでは /usr/local/share/nmap/nmap-services) を本当に変更する必要がある場合は、 という行を見つけてunknown 789/tcp 0.000075
プログラム名に置き換え、末尾に の番号を付けます0.9
。これにより、nmap が含むトップ ポートになります。ただし、エイリアスの方がはるかに優れています。
答え3
よく分かりません。「開いている」と検出されているので、それがあなたの望むことですよね?は聞いています。なぜ -A で見つからないのかはわかりません。
編集 - これは古いドキュメントからのもので、お使いのバージョンには適用されない可能性があります。実行してman nmap
、お持ちのバージョンをお知らせください。
ドキュメントから見ると、次のようになります:
「デフォルトでは、1 から 1024 までのすべてのポートと、nmap に付属するサービス ファイルにリストされているすべてのポートがスキャンされます。」
したがって、サービス ファイルに 789 が含まれていない場合でも、スキャンする必要があります (「不明」とラベル付けされているため、不明ではないはずです)。
したがって、わかりません。 nmap のバージョンの man ファイルを確認してください。-A を使用してスキャンするポートの動作が、私が見つけたドキュメントと異なる可能性があります。
これは可能性は低いですが、調査する価値はあるかもしれません。Linux マシンのユーザー ID に違いがある可能性があります。NMap の特権ユーザーと非特権ユーザーでは、デフォルトのスキャン タイプが異なります。ルート権限を持つユーザーは TCP SYN スキャンを実行できますが、ルート権限を持たないユーザーはデフォルトで TCP connect() になります。
答え4
nmapは-A
、バックグラウンドで複数のスクリプトを実行する積極的なコマンドであり、これがより多くの結果が得られる主な理由です。バージョン検出-sV
とオペレーティングシステム検出-O
(大文字のOで、数字のゼロではありません)およびその他の検出スクリプトを組み合わせています。デフォルトではNmapが使用され、特定のポート番号が指定されていない場合は、最も一般的な最初の1000個のポートをスキャンします(これらはnmap サービス編集可能なファイル)。アグレッシブコマンドにはスキャンしたいポートを入力することができるので、スキャンしたいポート(TCP 789)以外のポートの結果は表示されません。
nmap -p 789 -A TARGET_IP_ADDRESS_OR_IP_RANGE
一方、ポート789が開いているか閉じているかフィルタリングされているかだけを確認したい場合は、
nmap -p 789 TARGET_IP_ADDRESS_OR_IP_RANGE
複数のスクリプトを実行し、(ネットワーク トラフィックの観点から) 大量のトラフィックが発生するため-A
、IDS によって簡単にフラグが立てられ、ファイアウォールや IPS によってブロックされる可能性が高く、これが正しいポート ステータスが返されない理由の 1 つである可能性があります。