pingは成功するがnmapは失敗するのはなぜですか?


21

単純なpingが成功したときにNmapが「ホストがダウンしているように見える」と報告するのはなぜですか?

me@computer:~$ ping 123.45.67.89
PING 123.45.67.89 (123.45.67.89) 56(84) bytes of data.
64 bytes from 123.45.67.89: icmp_req=1 ttl=45 time=91.1 ms
64 bytes from 123.45.67.89: icmp_req=2 ttl=45 time=102 ms
64 bytes from 123.45.67.89: icmp_req=3 ttl=45 time=100 ms
^C
--- 123.45.67.894 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 91.136/98.182/102.417/5.022 ms

me@computer:~$ nmap 123.45.67.89

Starting Nmap 5.21 ( http://nmap.org ) at 2014-04-02 14:23 EDT
Note: Host seems down. If it is really up, but blocking our ping probes, try -PN
Nmap done: 1 IP address (0 hosts up) scanned in 3.04 seconds

Nmapの「pingプローブ」はコマンドラインpingとは異なりますか?


Nmapのインストールをアップグレードすることをお勧めしますか?現在のバージョンは6.40です。バージョン5.21は4年前で、361個のNSEスクリプトと何千ものサービスとOSフィンガープリントがありません。
盆栽バイキング14

ありがとう。5.21は、デフォルトでapt-gotしたバージョンです。ダウンロードして最新のビルドを作成するつもりです。
AShelly 14

ええ、UbuntuはNmapでひどく遅れています。現在のKaliの.debの依存関係を確認できます。
盆栽バイキング14

回答:


29

Nmapは多くの異なるプローブを送信し、ホストが起動しているかどうかを判断します。特定のケースでは、root権限なしでNmapを実行しているため、pingユーティリティが使用するICMPエコー要求を送信できません。この場合、ポート80とポート443への接続を試み、接続が開かれたり拒否されたりした場合、ホストが稼働していると報告します。ターゲットには、それらのポートへのすべてのトラフィックをドロップするファイアウォールが必要です。

Nmapがシステムを検出できるようにするには、root権限で実行してみてください。sudoコマンドはこの目的のために頻繁に使用され、例えばsudo nmap 123.45.67.89

pingICMPは、rootにsetuidでインストールされているため、ICMPパケットを送信できます。つまり、すべてのユーザーが実行できますが、実行するとrootユーザーとして実行されます。Setuidプログラムは、通常のユーザーがこの追加の許可を使用してシェルを取得できないようにするために、非常に慎重でなければなりません。特にNmapはこの特権の昇格を防ぐことができないため、setuidにしないでください。


Windowsを使用していますが、管理者権限でcmdで実行すると同じエラーが発生します。pingは常に問題ありません。
shashwat

2
私はルートだが、この問題を持っている
vladkras

root / sudoなしで、pingはICMP ECHOを実行できますが、nmapは実行できませんか?
-MikeP

1
@MikeP /bin/pingはsetuid-rootです。誰が実行しても、root権限で実行されます。Setuidプログラムは、任意のコマンドを実行するために使用できないことを確認するために徹底的にテストする必要があります。Nmapはsetuid-rootを安全にインストールすることができないため、rootのパスワードまたはsudoなどの他のメカニズムを使用する必要があります。
盆栽バイキング

2

はい、それらはデフォルトで異なります、pingはICMPであり、nmap pingは正しく覚えていればsynパッケージをポート80に送信し、-PE、-PM、-PPフラグを使用してICMP pingを実行します


0

特権なしで、netcatでポートをスキャンできます:

nc -z -w5 hostname 22; echo $?

失敗した場合は1、それ以外の場合は答えます。

ホスト名22ポート[tcp / ssh]への接続に成功しました!

0


回答を引用する際に引用して引用するのが最善です。回答の順序は毎日変わります。この回答自体が、この質問に対する回答の順序を変更しました。
ラムハウンド

0

私のための簡単な修正(Windows 10)。プライマリLANアダプターを使用していたため使用されていなかったワイヤレスアダプターを無効にしました。プライマリアダプタ以外はすべて無効にすることをお勧めします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.