📝

Day 22: Nmap入門 - ネットワークスキャンツールの基礎

2024/11/19に公開

はじめに

ネットワークセキュリティを学ぶなら、Nmap(Network Mapper) は欠かせないツールの1つです。Nmapは、ネットワーク上のデバイスやサービスをスキャンして、効率的に状況を把握できるオープンソースのネットワークスキャナです。

ここでは、Nmapの基本的な使い方や応用例、スクリプトエンジン(NSE)の活用法について解説していきます。ハッキングラボなど安全な環境がなくコマンドが試せない場合は、まずは「こういうことができるツールなんだ」くらいのイメージだけでも掴んでもらえれば十分だと思います。安全な環境の作り方やターゲットマシン(脆弱性のある仮想マシン)の準備などについては、別の記事で解説予定です。


Nmapとは?

Nmapは、ネットワーク管理やセキュリティ診断に特化したコマンドラインベース(CLI)のツールです。

主な用途

  1. ホスト発見:ネットワーク上で稼働中のデバイスを特定。
  2. ポートスキャン:開いているポートを確認し、サービスの状態を把握。
  3. OSとサービスの特定:デバイスのOSや稼働中サービスのバージョンを判定。
  4. 脆弱性診断:スクリプトを用いて、既知の脆弱性やセキュリティリスクを調査。

Nmapの特徴

  1. 無料かつオープンソース:幅広いユーザーが利用し、活発なコミュニティが存在。
  2. クロスプラットフォーム対応:Windows、Linux、macOSなど主要なOSで動作可能。
  3. 拡張性の高いNSE(Nmap Scripting Engine):カスタムスクリプトで機能を拡張。
  4. 多様なスキャンモード:基本的なポートスキャンから、OSフィンガープリント(OSの特定)やステルススキャンまで幅広く対応。

Nmapの入手

Nmapは公式サイトや主要なパッケージマネージャ(例:Homebrew、aptなど)から入手できます。


Nmapの基本コマンド

Nmapを使う際、スキャンの目的や調査対象に応じてコマンドを選びます。以下は、よく使われるであろう基本的なコマンドの紹介です。

また以前、ネットワークセキュリティ入門で取り上げたサイバーキルチェーンでいう、偵察(Reconnaissance) を行う際もこういったコマンドが用いられています。

1. ホストスキャン

ネットワーク上で稼働中のホスト(デバイス)を確認します。これにより、応答可能なIPアドレスを特定できます。

nmap [ターゲットIPまたはドメイン]

なぜスキャンするのか?

  • ネットワーク全体の構造を把握するため。
  • 不要なデバイスが接続されていないか確認するため。
  • 特定デバイスが正常に接続されているかチェックするため。

2. ポートスキャン

ターゲットホストで開いているポートを調査します。これにより、稼働中のサービスを把握できます。

nmap -p [ポート番号] [ターゲットIP]

なぜスキャンするのか?

  • 開いているポートを確認し、不必要なポートを閉じるため。
  • 稼働中のサービス(例:ウェブサーバー)が正しく動作しているか確認するため。
  • 特定のポートで通信障害が起きていないか調査するため。

3. 複数ホストのスキャン

指定したIPアドレスの範囲や複数ターゲットをまとめてスキャンします。これにより、大規模ネットワークの調査が効率的に行えます。

nmap [ターゲットIPの範囲を指定(192.168.1.1-10など)]

なぜスキャンするのか?

  • ネットワーク全体の稼働状況を効率よく確認するため。
  • 範囲内に未知のデバイスが存在しないか調査するため。

4. サービスとOSの特定

ターゲットホストの稼働中サービスやOSを特定します。これにより、脆弱性を特定するための詳細な情報を収集可能です。

nmap -A [ターゲットIP]

なぜスキャンするのか?

  • 使用中のサービスやOSバージョンを確認し、古いソフトウェアのアップデートを検討するため。
  • 互換性の問題や設定ミスを特定するため。

5. ステルススキャン

TCP接続を完全に確立せず、検知されにくい形でスキャンを実行します。これは、侵入検知システム(IDS)やファイアウォールを回避する際に役立ちます。

nmap -sS [ターゲットIP]

なぜスキャンするのか?

  • IDS/IPSに検知されにくい形で情報を収集するため。
  • ターゲットの負担を軽減しつつスキャンするため。
  • セキュリティシステムの監視状態を評価するため。

Nmap Scripting Engine(NSE)

NSEを使うと、Nmapの機能を拡張し、詳細な解析や脆弱性スキャンが可能です。

NSEの代表的なスクリプト

  1. 脆弱性診断

    nmap --script vuln [ターゲットIP]
    
  2. HTTPサービスの分析

    nmap --script http-enum [ターゲットIP]
    
  3. SMB(Server Message Block)情報の取得

    nmap --script smb-enum-shares [ターゲットIP]
    

NSEを活用すれば、スクリプトにより手間を省きながら深い解析が可能になります。


使用上の注意

  1. 許可された範囲での使用
    • 許可なく他人のネットワークをスキャンすることは法律違反となる事があります。
    • 必ず自身が管理するネットワークでのみ使用してください。

小テスト

Q1: Nmapで稼働中のホストを確認するための基本コマンドはどれですか?
a) nmap -p
b) nmap -A
c) nmap [ターゲットIP]
d) nmap --script vuln

Q2: ポートスキャンを実行して特定のポートを調査するオプションはどれですか?
a) -A
b) -p
c) -sS
d) --script

Q3: ステルススキャンを実行するオプションはどれですか?
a) -sU
b) -sT
c) -sS
d) -A

Q4: Nmap Scripting Engine(NSE)を利用して脆弱性診断を行うコマンドはどれですか?
a) nmap --script vuln [ターゲットIP]
b) nmap -sS [ターゲットIP]
c) nmap -p [ポート番号] [ターゲットIP]
d) nmap -A [ターゲットIP]

Q5: 複数のホストをスキャンするためのコマンドはどれですか?
a) nmap --script vuln
b) nmap -A
c) nmap 192.168.1.1-10
d) nmap -p 80


解答

Q1: c) nmap [ターゲットIP]
Q2: b) -p
Q3: c) -sS
Q4: a) nmap --script vuln [ターゲットIP]
Q5: c) nmap 192.168.1.1-10


まとめ

Wireshark、tcpdump、Nmapとここまでいくつかネットワーク関連のツールについて、触れてきました。次回からはこういったツールを活用しながら、ネットワークに関する知識をさらに深めていきます。

Discussion