A Quick Port Scanning Tutorial

author
1 minute, 41 seconds Read

A Quick Port Scanning Tutorial

Nmap 開発における私の目標の1つは、カスタムおよび高度なスキャンに対する柔軟性を維持しながら、一般的な使用方法はシンプルに保つことです。 これは、コマンドラインインタフェースにおいて、多くのオプションを提供し、それらが指定されない場合には、適切なデフォルトを選択することにより達成される。 一方、上級ユーザーは、時に多くのオプションを指定するため、端末の行が回り込んでしまいます。

コマンド出力についても、同様のバランスを取る必要があります。 最も重要な結果は、マニュアル・ページさえ読んでいない時折のユーザーでさえも突き刺さるべきである。 しかし、出力は、毎日何千台ものマシンに対してNmapを実行するプロの侵入テスト担当者が満足できるほど、包括的で簡潔であるべきである。 この本やNmapのソースコードを読むほど賢いユーザーは、スキャナの制御を強化し、Nmapの出力が本当に意味するところを理解することができる。

このチュートリアルでは、一般的なNmapポートスキャンのシナリオをいくつか示し、出力について説明する。 包括的なものにしようとするのではなく、目標は、単に新しいユーザーがこの章の残りの部分を理解するのに十分な知識を身につけることである。 より興味深いコマンドは nmap<target> で、次のことを行います。

  1. <target>ホスト名から、DNS を使用して IPv4 アドレスに変換します。

  2. ホストが稼働しているかどうかを判断するために、デフォルトではポート80にICMPエコー要求パケットとTCP ACKパケットでPingを送信します。 実行されていない場合、Nmapはその事実を報告し、終了する。 このテストをスキップするために-Pnを指定することもできた。 第3章ホスト発見(「Pingスキャン」)を参照。

  3. 逆DNSクエリを使用して、ターゲットIPアドレスを名前に変換して戻す。 DNS の仕組みにより、逆引きされた名前はコマンドラインで指定した <target> と同じでない場合がある。

  4. nmap-services でリストされた最も人気のある 1,000 ポートの TCP ポートスキャンを開始する。 SYN ステルスキャンが通常使用されるが、生のパケットを送信するのに必要な権限がない非 root の Unix ユーザのために、代わりに connect スキャンが使用される。

  5. 結果を人間が読める通常のフォーマットで標準出力に出力し、終了する。 13章Nmapの出力形式」で説明するように、他の出力形式や場所(ファイル)を指定することができます。 例4.2は、<target>.

として scanme.nmap.org が使われた場合の結果を表示しています。 単純なスキャン: nmap scanme.nmap.org

# Starting Nmap ( http://nmap.org )Nmap scan report for scanme.nmap.org (64.13.134.52)Not shown: 994 filtered portsPORT STATE SERVICE22/tcp open ssh25/tcp closed smtp53/tcp open domain70/tcp closed gopher80/tcp open http113/tcp closed authNmap done: 1 IP address (1 host up) scanned in 4.99 seconds

例 4.2 の最初の出力行は、単に Nmap をダウンロードするための URL を与えるだけです。 Nmapの起動時間とバージョン番号も通常提供されるが、一貫性と行の折り返しを避けるため、本書では一般的にこれらを削除した。

次の行は、ターゲットIPアドレス(この場合IPv4)と、利用できる場合は逆DNS名 (PTRレコードとしても知られる)を提供する。 Nmapは、スキャンされたすべてのポートが対象となるが、「興味深いポート」を表示することを約束している。 そのホストで開いているか、めったに見られない状態であるため、最も興味深いと思われるポートが、個別に項目化されている。 多くのポートが単一オープン状態の場合、それらはデフォルト状態とみなされ、何千もの興味のない項目で結果が薄まるのを避けるため、1行に集約される。 この場合、Nmapは994ポートがフィルタリングされていることを記録する。

次に、interesting portsテーブルが来て、キースキャン結果を提供する。 列は使用するオプションによって異なるが、この場合、各ポートのポート番号とプロトコル、状態、およびサービスプロトコルが表示される。 ここでのサービスは、nmap-servicesでポートを検索して推測したものです。 もし、このファイルに登録されていないポートがあれば、サービスはunknownと表示されるでしょう。 これらのポートのうち3つは開いており、3つは閉じている。

最後に、Nmapは終了する前に、基本的なタイミング統計を報告する。これらの統計は、指定したターゲット数、Pingスキャンで稼働していることがわかったターゲット数、およびかかった合計時間である。 例4.3では、スキャンは4つのオプションで修正されている。 -p0-はNmapに可能なすべてのTCPポートをスキャンするよう要求し、-vはNmapに冗長性を要求し、-AはリモートOS検出、サービス/バージョン検出、Nmap Scripting Engine (NSE)などの積極的なテストを可能にする。 最後に、-T4 は、スキャンを高速化するためにより積極的なタイミングポリシーを有効にします。 より複雑な例: nmap -p0- -v -A -T4 scanme.nmap.org

# Starting Nmap ( http://nmap.org )Completed Ping Scan at 00:03, 0.01s elapsed (1 total hosts)Scanning scanme.nmap.org (64.13.134.52) Discovered open port 22/tcp on 64.13.134.52Discovered open port 53/tcp on 64.13.134.52Discovered open port 80/tcp on 64.13.134.52SYN Stealth Scan Timing: About 6.20% done; ETC: 00:11 (0:07:33 remaining)Completed SYN Stealth Scan at 00:10, 463.55s elapsed (65536 total ports)Completed Service scan at 00:10, 6.03s elapsed (3 services on 1 host)Initiating OS detection (try #1) against scanme.nmap.org (64.13.134.52)Initiating Traceroute at 00:1064.13.134.52: guessing hop distance at 9Completed SCRIPT ENGINE at 00:10, 4.04s elapsedHost scanme.nmap.org (64.13.134.52) appears to be up ... good.Nmap scan report for scanme.nmap.org (64.13.134.52)Not shown: 65530 filtered portsPORT STATE SERVICE VERSION22/tcp open ssh OpenSSH 4.3 (protocol 2.0)25/tcp closed smtp53/tcp open domain ISC BIND 9.3.470/tcp closed gopher80/tcp open http Apache httpd 2.2.2 ((Fedora))|_HTML title: Go ahead and ScanMe!113/tcp closed authDevice type: general purposeRunning: Linux 2.6.XOS details: Linux 2.6.20-1 (Fedora Core 5)Uptime guess: 2.457 days (since Thu Sep 18 13:13:24 2008)TCP Sequence Prediction: Difficulty=204 (Good luck!)IP ID Sequence Generation: All zerosTRACEROUTE (using port 80/tcp)HOP RTT ADDRESS9 10.36 metro0.sv.svcolo.com (208.185.168.173)10 10.29 scanme.nmap.org (64.13.134.52)Nmap done: 1 IP address (1 host up) scanned in 477.23 seconds Raw packets sent: 131432 (5.783MB) | Rcvd: 359 (14.964KB)

Nmap は例 4.3 で確かに要求した冗長性を提供した! 幸いなことに、余分な出力は理解しやすいものです。 最初の13行は実行時の情報で、ユーザが良い知らせを期待して端末を凝視しているときに、何が起こっているかを知らせるものである。 何が良いニュースなのかは、問題を解決しなければならないシステム管理者なのか、報告する問題が必要なペンテスターなのか、それともそれを悪用しようとするブラックハット・クラッカーなのかによって異なる。 同様の行が12行ほどあったが、簡潔にするため削除した。 発見されたオープンポート」行は、オープンポートをその場で通知してくれるので、スキャンが終了する前にポートを叩き始めることができる。 スキャンタイミング」行は、完了時間の予測を提供し、画面を見つめ続けるか、昼食をとるかを知らせる。 ネットワークの状態(待ち時間、輻輳、帯域幅など)やパケットフィルタリングルールは大きく異なるので、同じスキャンオプションでも、あるホストに対しては30秒かかり、別のホストに対しては45分かかることがある。

ポートテーブルには、新しいポートは表示されません。 スキャンされた余分なポートはすべてフィルタリングされた状態にあり、フィルタリングされたポートの合計は994から65,530に増加しています。 新しい項目となるポートはありませんが、項目は変更されています。 新しいVERSION列は、リッスン中のサービスのアプリケーション名とバージョンの詳細を提供します。 これは、-Aオプションで有効になる機能の1つであるサービス検出によるものです。サービス検出のもう1つの特徴は、SERVICE列のサービスプロトコルがすべて実際に検証されていることです。 このテーブル検索は、今回はたまたま正しかったが、常にそうであるとは限らない。

-Aによって追加されたもう1つの機能は、Nmapスクリプトエンジンであり、これについては第9章「Nmapスクリプトエンジン」で詳しく説明する。 ここで示されているスクリプトは HTMLtitle のみである。 他にも数十のスクリプトが存在するが、このマシンで有用な出力が得られるものはなかった。 また、-Aによってtracerouteresultsが追加された。 このオプションは、プローブが並行して実行され、Nmapがスキャン結果を使用して好ましいプローブタイプ(この場合、ポート80へのTCPパケット)を決定するので、ほとんどのtracerouteプログラムより効率的で強力である。 最後の行は、このすべての追加情報が代償を払ったことを示しています。スキャンが完了するまでに、例4.2「Simple scan: nmap scanme.nmap.org」の約100倍の時間 (5秒に対して477秒) を要したのです。

Similar Posts

コメントを残す

メールアドレスが公開されることはありません。