|
「ポートスキャン」という言葉は、ほとんどの人にとって馴染み深いものです。国境資産の調査から内部ネットワークサービスのスキャンまで、ポートスキャン技術は不可欠です。もちろん、手動で行うことはできず、ツールに頼る必要があります。では、どのようなポートスキャンツールがあり、それぞれどのような特徴があるのでしょうか? 優れたポートスキャンツールの中核機能は、TCP SYNスキャンまたはフルコネクションスキャンを通じて、開いているポートを100%特定することです。以下は、利用可能なオープンソースツールの概要です。 1. 業界のチャンピオン: Nmapnmapは最も古いポートスキャンツールであり、現在最も広く使用されているツールでもあります。セキュリティ専門家、運用・保守担当者、研究開発担当者など、誰もがこのツールを熟知しており、リモートサービスが正常に動作しているか、ポートが開いているかを確認するために業務で使用しています。 長年の開発を経て、ポートが開いているかどうかを確認するだけでなく、特定のペイロードを異なるポートに送信してポートリターン情報を取得し、ポートフィンガープリントを識別して実行中のサービスの種類を判別できるようになりました。さらに、スクリプトエンジンを統合し、脆弱性検出機能の一部を実行できるため、ポートスキャンから脆弱性検出までのプロセス全体を直接実現できます。 nmap公式サイト: https://nmap.org/ 2. 業界の新参者:masscanMasscanはインターネットのフルポートスキャン用に開発され、非常に高速なスキャン速度を誇ります。その核となるアイデアは非同期スキャンで、これはNmapの同期スキャンとは対照的です。非同期スキャンは、複数のネットワーク接続を同時に送信・処理できます。 理論上は、TCP/IP スタックの処理能力とスキャンを実行するホスト システムの機能によって制限されますが、一度に最大 1,000 万パケットを処理できます。 スキャン速度が速く、独自のプローブランダム化機能があるのが利点ですが、IP または IP 範囲しかスキャンできず、ドメイン名のターゲットを指定できないのが欠点です。 プロジェクトアドレス: https://github.com/robertdavidgraham/masscan 3. ナアブNaabuは、Webアプリケーションのセキュリティと脆弱性ハンティングに特化したオープンソースソフトウェア企業によって開発された比較的新しいスキャナーです。Naabuは、その速度と安定性から高く評価されるGo言語で記述されています。 このツールは機能的な設計が特徴で、Project Discovery ライブラリ内の他のツールや Nmap などの一般的に使用されるツールと組み合わせて使用することを目的としており、非常に柔軟な出力が得られます。 さらに、ポートスキャンによって重複したIPアドレスを自動的に削除することで、スキャンリソースの無駄を削減できるため、Webペネトレーションテストに非常に役立ちます。また、nmapのポートサービスフィンガープリンティング機能も統合されています。 プロジェクトアドレス: https://github.com/projectdiscovery/naabu 4. ラストスキャンRustscanは最新のポートスキャナーとして知られています。Rustで記述されており、非常に高速で、IPアドレスの全ポート(65535)を3秒でスキャンできます。 シンプルなSYNスキャンとConnectスキャンのみを実行しますが、詳細なスキャンのためにnmapへの結果エクスポートをサポートする包括的なスクリプトエンジンを備えています。また、パラメータを変更することなくシステムパフォーマンスに基づいてスキャン速度を自動調整する機能も備えており、最適なスキャン状態を実現します。 スキャン原理は内部スレッドの管理に基づいています。非同期スキャン機能を実現するために、スキャンプロセス中にポートスキャンごとにスレッドが作成されます。一度に数千のスレッドが作成される可能性があり、スレッドの数はシステムが開くことができるファイルの最大数に依存します。 プロジェクトアドレス: https://github.com/RustScan/RustScan 5. その他の小道具(1) 初期の非同期スキャンツールの一つであるScanrandは、プローブパケットの送信と受信という2つの独立したプロセスを開発しました。残念ながら、このツールは長い間更新されていません。 (2)2002年に書かれたKnockerは、マルチスレッド処理のポートスキャナを導入しましたが、これも長い間時代遅れになっています。 https://github.com/gabgio/knocker (3)PNScanはKnockerと同様に、システムパフォーマンスに応じてスレッド数を動的に調整し、最適なスキャン状態を実現する機能が特徴です。 https://github.com/ptrrkssn/pnscan (4) 比較的新しいポートスキャナであるUnicornscanは、ポートスキャンに関連するネットワーク接続処理をカーネルからユーザーが割り当てた処理リソースに移行することで、理論上はパフォーマンス向上を実現します。Nmapに匹敵する機能を備えていますが、このツールは現在メンテナンスされていません。 6. 特殊なシナリオ用のスキャナー(1) Zmapは、ネットワーク全体のポートスキャンに特化したツールです。Zmapツール自体は、短時間で多数のネットワークアドレスから特定のポートをスキャンすることができます。また、ポートフィンガープリント情報を取得できるZgrab2と併用することも可能です。ただし、複数のポートをターゲットにできる他のツールとは異なり、Zmapは単一のポートしかターゲットにできないという欠点があります。 https://github.com/zmap/zmap (2) AngryIP Scannerは、監査に特化しており、インストール不要で使用できます。多くのハッカーに使用されているため、多くのデバイスのブラックリストに登録されています。また、GUIインターフェースを備えた数少ないポートスキャンツールの一つであり、高品質のスキャンレポートを出力できます。 https://angryip.org/ (3) nmapとmasscanを統合した分散スキャナであるScantronは、SSHトンネルを使用してスキャンノードの分散制御を実現します。 https://github.com/opsdisk/scantron (4) Scanlessは、サードパーティのポートスキャンサービスのAPIを呼び出して間接的なポートスキャンを実現するコマンドラインツールです。 https://github.com/vesche/scanless (5) Unimap:多数のサブドメインに対してポートスキャンを実行すると、多くのドメイン名が同じIPアドレスを指しているため、スキャンが重複して実行されます。このツールを使用すると、まずIPアドレス解決によってIPアドレスを取得し、重複を削除してからNmapに送信してスキャンできるため、スキャン速度が向上します。 https://github.com/Edu4rdSHL/unimap (6) Windows用のGUIポートスキャナー、Advanced Port Scanner。 https://www.advanced-port-scanner.com/ 7. まとめ実際、nmapはほとんどのポートスキャンタスクに対応できます。他のツールは、単一のターゲットのスキャンなど、特定の用途に使用されます。nmapはスキャンを迅速に完了できます。しかし、数千、数万、あるいは数百万のターゲットをスキャンする必要がある場合、nmapだけで十分でしょうか?まず、zmapやmasscanなどの高速スキャンツールを使用してポートが開いていることを確認し、その後nmapを使用してさらに検証を行い、フィンガープリンティングを行うことでスキャン速度を向上させる必要があります。 上記はポートスキャンツールの完全なリストではありません。Gobyのような優れたスキャンツールやカスタムスクリプトは他にも数多く存在します。もちろん、独自のスクリプトやツールを作成して、独自の自動化システムに統合することも可能です。使い込んでいくうちに、さらに多くの興味深い機能が発見できるでしょう。 参考ウェブサイト: https://s0cm0nkey.gitbook.io/port-scanner-shootout/port-scanner-shootout-part-2-the-contenders |