Nmapとは何かとその使用方法–史上最高のスキャンツールのチュートリアル

Nmapは、侵入テスターが使用する最も有名なスキャンツールです。この記事では、Nmapのいくつかのコア機能といくつかの便利なコマンドについて説明します。

Nmapとは何ですか?

NmapはNetworkMapperの略です。これは、ネットワーク内のIPアドレスとポートをスキャンし、インストールされているアプリケーションを検出するために使用されるオープンソースのLinuxコマンドラインツールです。

Nmapを使用すると、ネットワーク管理者は、ネットワーク上で実行されているデバイスを見つけたり、開いているポートやサービスを見つけたり、脆弱性を検出したりできます。

Gordon Lyon(pseudonym Fyodor)は、ネットワーク全体を簡単にマッピングし、開いているポートとサービスを見つけるのに役立つツールとしてNmapを作成しました。

Nmapは非常に人気があり、マトリックスや人気シリーズのミスターロボットなどの映画で紹介されています。

なぜNmapを使用するのですか?

セキュリティの専門家が他のスキャンツールよりもNmapを好む理由はいくつかあります。

まず、Nmapを使用すると、高度なコマンドや構成を使用せずにネットワークをすばやくマップできます。また、単純なコマンド(たとえば、ホストが稼働しているかどうかを確認するため)とNmapスクリプトエンジンを介した複雑なスクリプトもサポートしています。

Nmapの他の機能は次のとおりです。

  • 単一または複数のネットワーク上のサーバー、ルーター、スイッチ、モバイルデバイスなどを含むすべてのデバイスをすばやく認識する機能。
  • Webサーバー、DNSサーバー、その他の一般的なアプリケーションなど、システムで実行されているサービスを特定するのに役立ちます。Nmapは、既存の脆弱性の検出に役立つ妥当な精度でアプリケーションのバージョンを検出することもできます。
  • Nmapは、デバイスで実行されているオペレーティングシステムに関する情報を見つけることができます。OSバージョンなどの詳細情報を提供できるため、侵入テスト中に追加のアプローチを計画するのが簡単になります。
  • セキュリティ監査および脆弱性スキャン中に、Nmapを使用して、Nmapスクリプトエンジンの既存のスクリプトを使用してシステムを攻撃できます。
  • Nmapには、Zenmapと呼ばれるグラフィカルユーザーインターフェイスがあります。これは、ネットワークの視覚的なマッピングを開発して、使いやすさとレポートを向上させるのに役立ちます。

コマンド

いくつかのNmapコマンドを見てみましょう。Nmapがインストールされていない場合は、ここから入手できます。

基本スキャン

ネットワーク上のアクティブなデバイスのリストをスキャンすることは、ネットワークマッピングの最初のステップです。そのために使用できるスキャンには2つのタイプがあります。

  • pingスキャン—特定のサブネットで稼働しているデバイスのリストをスキャンします。
> nmap -sp 192.168.1.1/24
  • 単一のホストをスキャンする単一のホストをスキャンして1000個の既知のポートを探します。これらのポートは、SQL、SNTP、apacheなどの一般的なサービスで使用されるポートです。
> nmap scanme.nmap.org

ステルススキャン

ステルススキャンは、SYNパケットを送信し、応答を分析することによって実行されます。SYN / ACKを受信した場合は、ポートが開いていることを意味し、TCP接続を開くことができます。

ただし、ステルススキャンで3方向ハンドシェイクが完了することはないため、ターゲットがスキャンシステムを判別するのは困難です。

> nmap -sS scanme.nmap.org

'-sS'コマンドを使用して、ステルススキャンを実行できます。ステルススキャンは他のタイプのスキャンほど遅く、積極的ではないため、応答を得るまでしばらく待つ必要がある場合があることを忘れないでください。

バージョンスキャン

アプリケーションのバージョンを見つけることは、侵入テストの重要な部分です。

特定のバージョンのサービスのCommonVulnerabilities and Exploits(CVE)データベースから既存の脆弱性を見つけることができるため、作業が楽になります。その後、Metasploitなどのエクスプロイトツールを使用してマシンを攻撃するために使用できます。

> nmap -sV scanme.nmap.org

バージョンスキャンを実行するには、「-sV」コマンドを使用します。Nmapは、そのバージョンとともにサービスのリストを提供します。バージョンスキャンが常に100%正確であるとは限らないことを覚えておいてください。ただし、システムに正常にアクセスするには、一歩近づきます。

OSスキャン

Nmapは、サービスとそのバージョンに加えて、TCP / IPフィンガープリントを使用して基盤となるオペレーティングシステムに関する情報を提供できます。Nmapは、OSスキャン中にシステムの稼働時間を検出しようとします。

> nmap -sV scanme.nmap.org

osscan-limitなどの追加のフラグを使用して、検索をいくつかの予想されるターゲットに制限できます。Nmapは、各OS推測の信頼度を表示します。

繰り返しになりますが、OSの検出は常に正確であるとは限りませんが、侵入テスト担当者がターゲットに近づくのに大いに役立ちます。

アグレッシブスキャン

Nmapには、OS検出、バージョン検出、スクリプトスキャン、およびtracerouteを有効にするアグレッシブモードがあります。-A引数を使用して、アグレッシブスキャンを実行できます。

> nmap -A scanme.nmap.org

アグレッシブスキャンは、通常のスキャンよりもはるかに優れた情報を提供します。ただし、アグレッシブスキャンはより多くのプローブを送信するため、セキュリティ監査中に検出される可能性が高くなります。

複数のホストをスキャンする

Nmapには、複数のホストを同時にスキャンする機能があります。この機能は、広大なネットワークインフラストラクチャを管理している場合に非常に便利です。

さまざまな方法で複数のホストをスキャンできます。

  • すべてのホストを同時にスキャンするには、すべてのIPアドレスを1行に書き込みます。
> nmap 192.164.1.1 192.164.0.2 192.164.0.2
  • アスタリスク(*)を使用して、すべてのサブネットを一度にスキャンします。
> nmap 192.164.1.*
  • ドメイン全体を入力する代わりに、コンマを追加してアドレスの末尾を区切ります。
> nmap 192.164.0.1,2,3,4
  • ハイフンを使用してIPアドレスの範囲を指定します
> nmap 192.164.0.0–255

ポートスキャン

ポートスキャンは、Nmapの最も基本的な機能の1つです。いくつかの方法でポートをスキャンできます。

  • -pparamを使用して単一のポートをスキャンする
> nmap -p 973 192.164.0.1
  • ポートのタイプを指定すると、TCP接続など、特定のタイプの接続に関する情報をスキャンできます。
> nmap -p T:7777, 973 192.164.0.1
  • ポートの範囲は、ハイフンで区切ることでスキャンできます。
> nmap -p 76–973 192.164.0.1
  • -top-portsフラグを使用して、スキャンする上位n個のポートを指定することもできます。
> nmap --top-ports 10 scanme.nmap.org

ファイルからのスキャン

IPアドレスの大規模なリストをスキャンする場合は、IPアドレスのリストを含むファイルをインポートすることでスキャンできます。

> nmap -iL /input_ips.txt

上記のコマンドは、「input_ips.txt」ファイル内の指定されたすべてのドメインのスキャン結果を生成します。単にIPアドレスをスキャンする以外に、追加のオプションとフラグを使用することもできます。

冗長性とスキャン結果のエクスポート

ペネトレーションテストは数日から数週間続く場合があります。Nmapの結果をエクスポートすると、冗長な作業を回避し、最終レポートの作成に役立ちます。Nmapスキャン結果をエクスポートするいくつかの方法を見てみましょう。

冗長出力

> nmap -v scanme.nmap.org

詳細出力は、実行中のスキャンに関する追加情報を提供します。特にクライアントのネットワークをスキャンしている部外者である場合は、Nmapがネットワーク上で実行するアクションを段階的に監視すると便利です。

通常の出力

Nmapスキャンはテキストファイルにエクスポートすることもできます。元のコマンドライン出力とは少し異なりますが、すべての重要なスキャン結果をキャプチャします。

> nmap -oN output.txt scanme.nmap.org

XML出力

NmapスキャンはXMLにエクスポートすることもできます。また、ほとんどの侵入テストツールで推奨されるファイル形式であるため、スキャン結果をインポートするときに簡単に解析できます。

> nmap -oX output.xml scanme.nmap.org

複数のフォーマット

-oAコマンドを使用して、スキャン結果を使用可能なすべての形式で一度にエクスポートすることもできます。

> nmap -oA output scanme.nmap.org

上記のコマンドは、スキャン結果をoutput.xml、outputの3つのファイルにエクスポートします。Nmapとoutput.gnmap。

Nmapヘルプ

Nmapには、使用できるすべてのフラグとオプションを一覧表示するヘルプコマンドが組み込まれています。Nmapに付属しているコマンドライン引数の数を考えると、多くの場合便利です。

> nmap -h

Nmapスクリプトエンジン

Nmap Scripting Engine(NSE)は、スクリプトを記述し、多数のネットワーク機能を自動化するために使用できる非常に強力なツールです。

Nmap全体に分散されたスクリプトをたくさん見つけることも、要件に基づいて独自のスクリプトを作成することもできます。Luaプログラミング言語を使用して既存のスクリプトを変更することもできます。

NSEには、ネットワークおよびさまざまなネットワークプロトコルの攻撃に使用される攻撃スクリプトもあります。

スクリプトエンジンを詳細に説明することはこの記事の範囲外であるため、Nmapスクリプトエンジンの詳細についてはこちらをご覧ください。

Zenmap

Zenmapは、Nmapのグラフィカルユーザーインターフェイスです。これは、Nmapを起動して実行するのに役立つ無料のオープンソースソフトウェアです。

Zenmapを使用すると、視覚的なネットワークマッピングを提供するだけでなく、スキャンを保存して検索し、将来使用することもできます。

Zenmapは、コマンドラインインターフェイスを使用せずにNmapの機能をテストしたい初心者に最適です。

結論

Nmapは、用途の広いコマンドのインベントリのおかげで、明らかにネットワーキングの「スイスアーミーナイフ」です。

これにより、ネットワーク、ホスト、ポート、ファイアウォール、およびオペレーティングシステムに関する重要な情報をすばやくスキャンして発見できます。

Nmapには、システム管理者がネットワークを詳細に分析するのに役立つ多数の設定、フラグ、および設定があります。

Nmapを詳細に学習したい場合は、ここに優れたリソースがあります。

この記事が気に入りましたか?ニュースレターに参加する毎週月曜日に私の記事とビデオの要約を入手します。