Nmap チートシート

ハンズオンラボで Nmap を学ぶ

ハンズオンラボと実世界のシナリオを通じて、Nmap ネットワークスキャンを学びましょう。LabEx は、必須のネットワークディスカバリ、ポートスキャン、サービス検出、OS フィンガープリンティング、脆弱性評価を網羅した包括的な Nmap コースを提供します。ネットワーク偵察とセキュリティ監査の技術を習得してください。

インストールとセットアップ

Linux インストール

お使いのディストリビューションのパッケージマネージャを使用して Nmap をインストールします。

# Ubuntu/Debian
sudo apt update && sudo apt install nmap
# RHEL/Fedora/CentOS
sudo dnf install nmap
# インストール確認
nmap --version

macOS インストール

Homebrew パッケージマネージャを使用してインストールします。

# Homebrew経由でインストール
brew install nmap
# nmap.orgから直接ダウンロード
# https://nmap.org/download.html から .dmg をダウンロード

Windows インストール

公式ウェブサイトからダウンロードしてインストールします。

# 公式サイトからインストーラをダウンロード
https://nmap.org/download.html
# 管理者権限で .exe インストーラを実行
# Zenmap GUIとコマンドライン版が含まれます

基本的な確認

インストールを確認し、ヘルプを表示します。

# バージョン情報を表示
nmap --version
# ヘルプメニューを表示
nmap -h
# 詳細なヘルプとオプション
man nmap

基本的なスキャン技術

シンプルなホストスキャン:nmap [ターゲット]

単一のホストまたは IP アドレスのスキャン。

# 単一IPのスキャン
nmap 192.168.1.1
# ホスト名のスキャン
nmap example.com
# 複数IPのスキャン
nmap 192.168.1.1 192.168.1.5
192.168.1.10
クイズ

ログインしてこのクイズに回答し、学習の進捗を追跡できます

基本的な nmap 192.168.1.1 スキャンはデフォルトで何を行いますか?
最も一般的な 1000 の TCP ポートをスキャンする
全 65535 ポートをスキャンする
ホストディスカバリのみを実行する
ポート 80 のみをスキャンする

ネットワーク範囲スキャン

Nmap はホスト名、IP アドレス、サブネットを指定できます。

# IP範囲のスキャン
nmap 192.168.1.1-254
# CIDR表記でのサブネットのスキャン
nmap 192.168.1.0/24
# 複数ネットワークのスキャン
nmap 192.168.1.0/24 10.0.0.0/8

ファイルからの入力

ファイルに記載されたターゲットをスキャンします。

# ファイルからターゲットを読み込む
nmap -iL targets.txt
# 特定のホストを除外
nmap 192.168.1.0/24 --exclude
192.168.1.1
# ファイルから除外
nmap 192.168.1.0/24 --excludefile
exclude.txt

ホストディスカバ技術

Ping スキャン:nmap -sn

ホストディスカバリは、多くの分析者やペンテスターが Nmap を使用する主要な方法です。その目的は、どのシステムがオンラインであるかの概要を把握することです。

# Pingスキャンのみ(ポートスキャンなし)
nmap -sn 192.168.1.0/24
# ホストディスカバリをスキップ(全ホストが稼働していると仮定)
nmap -Pn 192.168.1.1
# ICMPエコーping
nmap -PE 192.168.1.0/24
クイズ

ログインしてこのクイズに回答し、学習の進捗を追跡できます

nmap -sn は何を行いますか?
ポートスキャンを行わず、ホストディスカバリのみを実行する
ターゲットの全ポートをスキャンする
ステルススキャンを実行する
UDP ポートのみをスキャンする

TCP Ping 技術

ホストディスカバリに TCP パケットを使用します。

# ポート80へのTCP SYN ping
nmap -PS80 192.168.1.0/24
# TCP ACK ping
nmap -PA80 192.168.1.0/24
# 複数ポートへのTCP SYN ping
nmap -PS22,80,443 192.168.1.0/24

UDP Ping: nmap -PU

ホストディスカバリに UDP パケットを使用します。

# 一般的なポートへのUDP ping
nmap -PU53,67,68,137 192.168.1.0/24
クイズ

ログインしてこのクイズに回答し、学習の進捗を追跡できます

ICMP ping の代わりに UDP ping を使用する理由は何ですか?
UDP ping は常に高速である
一部のネットワークは ICMP をブロックするが UDP パケットは許可する
UDP ping はポートを自動的にスキャンする
UDP ping はローカルネットワークでのみ機能する
# デフォルトポートへの UDP ping nmap -PU 192.168.1.0/24 ```

ARP Ping: nmap -PR

ローカルネットワークのディスカバリにARPリクエストを使用します。

# ARP ping(ローカルネットワークのデフォルト)
nmap -PR 192.168.1.0/24
# ARP ping を無効にする
nmap --disable-arp-ping 192.168.1.0/24

ポートスキャンタイプ

TCP SYNスキャン: nmap -sS

このスキャンはステルス性が高く、NmapがRSTパケットを送信するため、複数のリクエストを防ぎ、スキャン時間を短縮します。

# デフォルトスキャン(root 権限が必要)
nmap -sS 192.168.1.1
# 特定ポートの SYN スキャン
nmap -sS -p 80,443 192.168.1.1
# 高速 SYN スキャン
nmap -sS -T4 192.168.1.1

TCP Connectスキャン: nmap -sT

NmapはSYNフラグを設定したTCPパケットをポートに送信します。これにより、ポートが開いているか、閉じているか、不明であるかを知ることができます。

# TCP connect スキャン(root 権限不要)
nmap -sT 192.168.1.1
# タイミング付きの Connect スキャン
nmap -sT -T3 192.168.1.1

UDPスキャン: nmap -sU

サービスに対してUDPポートをスキャンします。

# UDP スキャン(遅い、root 権限が必要)
nmap -sU 192.168.1.1
# 一般的な UDP ポートのスキャン
nmap -sU -p 53,67,68,161 192.168.1.1
# TCP/UDPの組み合わせスキャン
nmap -sS -sU -p T:80,443,U:53,161 192.168.1.1

ステルシースキャン

エバシブ(回避)のための高度なスキャン技術。

# FIN スキャン
nmap -sF 192.168.1.1
# NULL スキャン
nmap -sN 192.168.1.1
# Xmas スキャン
nmap -sX 192.168.1.1

ポート指定

ポート範囲: nmap -p

より正確なスキャンのために、特定のポート、範囲、またはTCPとUDPの組み合わせをターゲットにします。

# 単一ポート
nmap -p 80 192.168.1.1
# 複数ポート
nmap -p 22,80,443 192.168.1.1
# ポート範囲
nmap -p 1-1000 192.168.1.1
# 全ポート
nmap -p- 192.168.1.1

プロトコルごとのポート指定

TCPまたはUDPポートを明示的に指定します。

# TCP ポートのみ
nmap -p T:80,443 192.168.1.1
# UDP ポートのみ
nmap -p U:53,161 192.168.1.1
# TCP と UDP の混在
nmap -p T:80,U:53 192.168.1.1

一般的なポートセット

頻繁に使用されるポートを素早くスキャンします。

# トップ 1000 ポート(デフォルト)
nmap 192.168.1.1
# トップ 100 ポート
nmap --top-ports 100 192.168.1.1
# 高速スキャン(最も一般的な 100 ポート)
nmap -F 192.168.1.1
# 開いているポートのみ表示
nmap --open 192.168.1.1
# 全てのポート状態を表示
nmap -v 192.168.1.1

サービスとバージョン検出

サービス検出: nmap -sV

実行中のサービスと、そのソフトウェアのバージョンおよび設定を特定しようとします。

# 基本的なバージョン検出
nmap -sV 192.168.1.1
# アグレッシブなバージョン検出
nmap -sV --version-intensity 9 192.168.1.1
# 軽量なバージョン検出
nmap -sV --version-intensity 0 192.168.1.1
# バージョン検出付きのデフォルトスクリプト
nmap -sC -sV 192.168.1.1

サービススクリプト

拡張されたサービス検出のためにスクリプトを使用します。

# バナーグラビング
nmap --script banner 192.168.1.1
# HTTP サービス列挙
nmap --script http-* 192.168.1.1

オペレーティングシステム検出: nmap -O

TCP/IPフィンガープリンティングを使用して、ターゲットホストのオペレーティングシステムを推測します。

# OS 検出
nmap -O 192.168.1.1
# アグレッシブな OS 検出
nmap -O --osscan-guess 192.168.1.1
# OS 検出の試行回数を制限
nmap -O --max-os-tries 1 192.168.1.1

総合的な検出

複数の検出技術を組み合わせます。

# アグレッシブスキャン(OS、バージョン、スクリプト)
nmap -A 192.168.1.1
# カスタムアグレッシブスキャン
nmap -sS -sV -O -sC 192.168.1.1

タイミングとパフォーマンス

タイミングテンプレート: nmap -T

ターゲット環境と検出リスクに基づいて、スキャン速度を調整します。

# Paranoid(非常に遅い、ステルス性が高い)
nmap -T0 192.168.1.1
# Sneaky(遅い、ステルス性が高い)
nmap -T1 192.168.1.1
# Polite(遅い、帯域幅を抑える)
nmap -T2 192.168.1.1
# Normal(デフォルト)
nmap -T3 192.168.1.1
# Aggressive(より速い)
nmap -T4 192.168.1.1
# Insane(非常に速い、結果を見逃す可能性がある)
nmap -T5 192.168.1.1

カスタムタイミングオプション

パフォーマンスを最適化するために、Nmapがタイムアウト、再試行、並列スキャンを処理する方法を微調整します。

# 最小レートを設定(1 秒あたりのパケット数)
nmap --min-rate 1000 192.168.1.1
# 最大レートを設定
nmap --max-rate 100 192.168.1.1
# 並列ホストスキャン
nmap --min-hostgroup 10 192.168.1.0/24
# カスタムタイムアウト
nmap --host-timeout 5m 192.168.1.1

Nmap スクリプトエンジン (NSE)

スクリプトカテゴリ: nmap --script

カテゴリまたは名前でスクリプトを実行します。

# デフォルトスクリプト
nmap --script default 192.168.1.1
# 脆弱性スクリプト
nmap --script vuln 192.168.1.1
# ディスカバリスクリプト
nmap --script discovery 192.168.1.1
# 認証スクリプト
nmap --script auth 192.168.1.1

特定のスクリプト

特定の脆弱性やサービスをターゲットにします。

# SMB 列挙
nmap --script smb-enum-* 192.168.1.1
# HTTP メソッド
nmap --script http-methods 192.168.1.1
# SSL 証明書情報
nmap --script ssl-cert 192.168.1.1

スクリプト引数

スクリプトの動作をカスタマイズするために引数を渡します。

# カスタム単語リストを使用した HTTP ブルートフォース
nmap --script http-brute --script-args
userdb=users.txt,passdb=pass.txt 192.168.1.1
# SMB ブルートフォース
nmap --script smb-brute 192.168.1.1
# DNS ブルートフォース
nmap --script dns-brute example.com

スクリプト管理

NSEスクリプトの管理と更新を行います。

# スクリプトデータベースを更新
nmap --script-updatedb
# 利用可能なスクリプトを一覧表示
ls /usr/share/nmap/scripts/ | grep http
# スクリプトのヘルプを取得
nmap --script-help vuln

出力形式と結果の保存

出力形式

結果を異なる形式で保存します。

# 通常出力
nmap -oN scan_results.txt 192.168.1.1
# XML 出力
nmap -oX scan_results.xml 192.168.1.1
# Grep 可能出力
nmap -oG scan_results.gnmap 192.168.1.1
# 全ての形式
nmap -oA scan_results 192.168.1.1

詳細出力

表示される情報の量を制御します。

# 詳細出力
nmap -v 192.168.1.1
# 非常に詳細
nmap -vv 192.168.1.1
# デバッグモード
nmap --packet-trace 192.168.1.1

再開と追記

以前のスキャンを続行または追加します。

# 中断されたスキャンを再開
nmap --resume scan_results.gnmap
# 既存のファイルに追記
nmap --append-output -oN existing_scan.txt 192.168.1.1

ライブ結果の処理

Nmapの出力をコマンドラインツールと組み合わせて、有用な洞察を抽出します。

# 稼働中のホストを抽出
nmap -sn 192.168.1.0/24 | grep "Nmap scan report"
# Web サーバーを見つける
nmap -p 80,443,8080,8443 --open 192.168.1.0/24 | grep "open"
# CSV にエクスポート
nmap -oX - 192.168.1.1 | xsltproc --html -

ファイアウォール回避技術

パケットフラグメンテーション: nmap -f

パケットのフラグメンテーション、IPアドレスのなりすまし、ステルススキャンを使用してセキュリティ対策を回避します。

# パケットをフラグメント化
nmap -f 192.168.1.1
# カスタム MTU サイズ
nmap --mtu 16 192.168.1.1
# 最大伝送単位
nmap --mtu 24 192.168.1.1

デコイ(おとり)スキャン: nmap -D

おとりIPアドレスの中にスキャンを隠します。

# おとり IP アドレスを使用
nmap -D 192.168.1.100,192.168.1.101 192.168.1.1
# ランダムなおとり
nmap -D RND:5 192.168.1.1
# 実際のおとりとランダムなおとりの混合
nmap -D 192.168.1.100,RND:3 192.168.1.1

送信元IP/ポート操作

送信元情報を偽装します。

# 送信元 IP を偽装
nmap -S 192.168.1.100 192.168.1.1
# カスタム送信元ポート
nmap --source-port 53 192.168.1.1
# ランダムなデータ長
nmap --data-length 25 192.168.1.1

アイドル/ゾンビスキャン: nmap -sI

ゾンビホストを使用してスキャンの起源を隠します。

# ゾンビスキャン(アイドルホストが必要)
nmap -sI zombie_host 192.168.1.1
# アイドル候補をリスト表示
nmap --script ipidseq 192.168.1.0/24

高度なスキャンオプション

DNS解決の制御

NmapがDNSルックアップをどのように処理するかを制御します。

# DNS 解決を無効にする
nmap -n 192.168.1.1
# DNS 解決を強制する
nmap -R 192.168.1.1
# カスタム DNS サーバー
nmap --dns-servers 8.8.8.8,1.1.1.1 192.168.1.1

IPv6スキャン: nmap -6

IPv6サポートなどの追加機能には、これらのNmapフラグを使用します。

# IPv6 スキャン
nmap -6 2001:db8::1
# IPv6 ネットワークスキャン
nmap -6 2001:db8::/32

インターフェースとルーティング

ネットワークインターフェースとルーティングを制御します。

# ネットワークインターフェースの指定
nmap -e eth0 192.168.1.1
# インターフェースとルートの表示
nmap --iflist
# 経路トレース
nmap --traceroute 192.168.1.1

その他のオプション

追加の便利なフラグ。

# バージョン情報を表示して終了
nmap --version
# イーサネットレベルで送信
nmap --send-eth 192.168.1.1
# IP レベルで送信
nmap --send-ip 192.168.1.1

実世界の例

ネットワークディスカバリワークフロー

完全なネットワーク列挙プロセス。

# ステップ 1: 稼働中のホストを発見
nmap -sn 192.168.1.0/24
# ステップ 2: クイックポートスキャン
nmap -sS -T4 --top-ports 1000 192.168.1.0/24
# ステップ 3: 興味深いホストの詳細スキャン
nmap -sS -sV -sC -O 192.168.1.50
# ステップ 4: 総合スキャン
nmap -p- -A -T4 192.168.1.50

Webサーバー評価

Webサービスと脆弱性に焦点を当てます。

# Web サーバーを見つける
nmap -sS -p 80,443,8080,8443 --open 192.168.1.0/24
# HTTP サービスを列挙
nmap -sS -sV --script http-* 192.168.1.50
# 一般的な脆弱性をチェック
nmap --script vuln -p 80,443 192.168.1.50

SMB/NetBIOS列挙

以下の例は、ターゲットネットワーク上のNetbiosを列挙します。

# SMB サービス検出
nmap -sV -p 139,445 192.168.1.0/24
# NetBIOS 名前解決
nmap -sU --script nbstat -p 137 192.168.1.0/24
# SMB 列挙スクリプト
nmap --script smb-enum-* -p 445 192.168.1.50
# SMB 脆弱性チェック
nmap --script smb-vuln-* -p 445 192.168.1.50

ステルス評価

低プロファイルの偵察。

# ウルトラステルススキャン
nmap -sS -T0 -f --data-length 200 -D RND:10 192.168.1.1
# フラグメント化された SYN スキャン
nmap -sS -f --mtu 8 -T1 192.168.1.1

パフォーマンスの最適化

高速スキャン戦略

大規模ネットワークのスキャン速度を最適化します。

# 高速ネットワークスイープ
nmap -sS -T4 --min-rate 1000 --max-retries 1
192.168.1.0/24
# 並列ホストスキャン
nmap --min-hostgroup 50 --max-hostgroup 100
192.168.1.0/24
# 遅い操作をスキップ
nmap -sS -T4 --defeat-rst-ratelimit 192.168.1.0/24

メモリとリソース管理

安定性のためにリソース使用量を制御します。

# 並列プローブの制限
nmap --max-parallelism 10 192.168.1.0/24
# スキャン遅延の制御
nmap --scan-delay 100ms 192.168.1.1
# ホストタイムアウトの設定
nmap --host-timeout 10m 192.168.1.0/24

関連リンク