ポート80で実行されているWebサーバーの大量のIPアドレスをスキャンしたいとします(たとえば、Webサーバーには他のポートがあることを認識して、無視します)。
これを行う最も効率的な方法は何でしょうか?
ここにいくつかのオプションがあります:
1)nmapの複数のインスタンスを同時に実行するbash/pythonスクリプトを実行し、1つのポートのみをスキャンします。コマンドは次のようになります。
nmap --append-output -oG output.txt -p 80 -Pn -sS xxx.xxx.xxx.xxx (ip address) &
2)各IPアドレスに対してGET
リクエストを試行するpythonスクリプトを作成します(複数のインスタンスを同時に実行します)
基本的に、私の質問は次のとおりです:これらのオプションのいずれかが最も速い方法ですか、または私が考えていないより速い方法がありますか、また、pythonスクリプトまたはリクエスト、メモリフットプリントなどの面で多くのオーバーヘッドがあります。
ボーナス思考
私の頭を越えたアイデアは、各IPアドレスでNSLLOKUP
を実行するbash/pythonスクリプトを実行することでしたが、これはDNSが構成されていないWebサーバーを提供せず、プラス側は送信せずにスキャンしますネットワークへのパケット
この問題を正確に解決するための最適化を実装した大規模なスキャン用に作成されたツールがあります。最もよく知られ、最も開発されたオプションの1つは masscan です。 10 MPPS(100万パケット/秒)の速度に到達でき、IPv4インターネット全体を約6分でスキャンできます。また、インターネット全体をスパムすることなくローカルネットワークでベンチマークを行うことができるフラグも付いています。
もちろん、それはそれを維持できるインターネット接続を前提としています。自宅からスキャンする場合は、ギガビットインターネットを使用している場合を除いて、そのパフォーマンスの近くには期待できません。
Nmap自体は、単純なNSEスクリプトを使用して効率的に、要求されたすべてを実行できます。
nmap -p80 -PS80 --open
GET
リクエストを実行します:--script http-fetch --script-args 'maxpagecount=1,destination=/tmp/files
。これは残念ながら 複数のターゲットではうまく機能しません Nmap 7.60ですが、そうするための修正はそれほど多くありません。他のスクリプトでは http-grep 、または http-headers に興味があるかもしれません。-n
を使用しない限り、デフォルトで実行されます。これがallである場合は、-sL
を使用して「リストスキャン」を実行します。-sL -n
を使用します。