====== Nmap ======
===== 基本 =====
$ nmap target(hostname or IP)
複数の場合
$ nmap target1(hostname or IP) target2 target3 ...
範囲指定
$ nmap 192.168.0.100-110
ネットワークアドレスを指定
$ nmap 192.168.0.100/24
==== TCP/UDPプロトコル ====
options
-sS/sT/sA/sW/sM: TCP SYN/Connect()/ACK/Window/Maimon scans
-sU: UDP Scan
-sN/sF/sX: TCP Null, FIN, and Xmas scans
-sO: IP protocol scan
ポート指定する場合
$ nmap -sT -p port# target(hostname or IP)
==== OSとバージョン ====
-O: Enable OS detection
-A: Enable OS detection, version detection, script scanning, and traceroute
==== ping送信をせずにスキャン ====
$ nmap -Pn target(hostname or IP)
==== Options ====
使用方法: nmap [スキャンタイプ] [オプション] {ターゲット指定}
ターゲット指定:ホスト名、IPアドレス、ネットワークなどを指定できます。
例: scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0.0-255.1-254
-iL <入力ファイル名>: ホスト/ネットワークのリストから入力
-iR <ホスト数>: ランダムターゲットを選択
--exclude <ホスト1[,ホスト2][,ホスト3],...>: 除外するホスト/ネットワーク
--excludefile <除外ファイル>: 除外リストをファイルから読み込む
ホストディスカバリ:
-sL: リストスキャン - ターゲットをリストするだけ
-sn: Pingスキャン - ポートスキャンを無効化
-Pn: すべてのホストを起動中とみなす - ホストディスカバリをスキップ
-PS/PA/PU/PY[ポート一覧]: TCPSYNプローブ、TCPACKプローブ、UDPプローブ、SCTPプローブ
-PE/PP/PM: ICMPエコー、タイムスタンプ、ネットマスクリクエストプローブ
-PO[プロトコル一覧]: IPプロトコルPing
-n/-R: DNS解決を行わない/常に解決する [デフォルト: 場合による]
--dns-servers <サーバ1[,サーバ2],...>: カスタムDNSサーバを指定
--system-dns: OSのDNSリゾルバを使用
--traceroute: 各ホストへのホップパスを追跡
スキャン手法:
-sS/sT/sA/sW/sM: TCPSYNスキャン/Connect()スキャン/ACKスキャン/Windowスキャン/Maimonスキャン
-sU: UDPスキャン
-sN/sF/sX: TCPヌル、FIN、Xmasスキャン
--scanflags <フラグ>: TCPスキャンフラグをカスタマイズ
-sI <ゾンビホスト[:プローブポート]>: アイドルスキャン
-sY/sZ: SCTP INITスキャン/COOKIE-ECHOスキャン
-sO: IPプロトコルスキャン
-b : FTPバウンススキャン
ポート指定とスキャン順序:
-p <ポート範囲>: 指定したポートのみスキャン
例: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9
--exclude-ports <ポート範囲>: 指定したポートをスキャンから除外
-F: 高速モード - デフォルトより少ないポートをスキャン
-r: ポートをランダムではなく順番にスキャン
--top-ports <数>: 最も一般的な<数>ポートをスキャン
--port-ratio <比率>: <比率>以上一般的なポートをスキャン
サービス/バージョン検出:
-sV: 開いているポートにプローブを送ってサービス/バージョン情報を判別
--version-intensity <レベル>: 0(軽め)から9(最大)までの強度を設定
--version-light: 最も可能性の高いプローブに制限(強度2)
--version-all: 全プローブを試す(強度9)
--version-trace: バージョンスキャンの詳細な活動を表示(デバッグ用)
スクリプトスキャン:
-sC: --script=defaultと同等
--script=: はカンマ区切りのディレクトリ、スクリプトファイル、スクリプトカテゴリ
--script-args=: スクリプトに引数を渡す
--script-args-file=ファイル名: NSEスクリプト引数をファイルから読み込む
--script-trace: 送受信したデータをすべて表示
--script-updatedb: スクリプトデータベースを更新
--script-help=: スクリプトのヘルプを表示
はカンマ区切りのスクリプトファイルまたはスクリプトカテゴリ
OSの検出:
-O: OSの検出を有効化
--osscan-limit: OSの検出を有望なターゲットに制限
--osscan-guess: OSの推定をより積極的に行う
タイミングと性能:
<時間>オプションは秒単位で、'ms'(ミリ秒)、's'(秒)、'm'(分)、'h'(時間)を付けることもできます(例: 30m)。
-T<0-5>: タイミングテンプレートを設定(数値が大きいほど高速)
--min-hostgroup/max-hostgroup <サイズ>: 並列ホストスキャングループのサイズ
--min-parallelism/max-parallelism <プローブ数>: プローブの並列化
--min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout <時間>: プローブの往復時間を指定
--max-retries <試行回数>: ポートスキャンプローブの再送信上限
--host-timeout <時間>: 指定時間経過後にターゲットを諦める
--scan-delay/--max-scan-delay <時間>: プローブ間の遅延を調整
--min-rate <数値>: 1秒あたりの最小パケット送信数
--max-rate <数値>: 1秒あたりの最大パケット送信数
ファイアウォール/IDSの回避となりすまし:
-f; --mtu <値>: パケットを断片化(オプションで指定したMTUで)
-D <デコイ1,デコイ2[,ME],...>: デコイを使ってスキャンを隠蔽
-S : 送信元アドレスを詐称
-e <インターフェース>: 指定したインターフェースを使用
-g/--source-port <ポート番号>: 指定したポート番号を使用
--proxies : HTTP/SOCKS4プロキシを経由して接続
--data <16進数文字列>: 送信パケットにカスタムペイロードを追加
--data-string <文字列>: 送信パケットにカスタムASCII文字列を追加
--data-length <数値>: 送信パケットにランダムデータを追加
--ip-options <オプション>: 指定したIPオプションを含むパケットを送信
--ttl <値>: IPのTTL(Time-To-Live)フィールドを設定
--spoof-mac : MACアドレスを詐称
--badsum: 不正なTCP/UDP/SCTPチェックサムのパケットを送信
出力:
-oN/-oX/-oS/-oG <ファイル>: それぞれ通常形式、XML形式、s|: 主要3形式を一度に出力
-v: 詳細レベルを上げる(-vvなどでさらに上げられる)
-d: デバッグレベルを上げる(-ddなどでさらに上げられる)
--reason: ポートの状態になった理由を表示
--open: 開いている(または開いている可能性がある)ポートのみ表示
--packet-trace: 送受信したすべてのパケットを表示
--iflist: ホストのインターフェースとルーティングを表示(デバッグ用)
--append-output: 指定したファイルに追記する(上書きはしない)
--resume <ファイル名>: 中断したスキャンを再開
--noninteractive: キーボードによる実行時の対話を無効化
--stylesheet <パス/URL>: XMLの出力をHTMLに変換するXSLスタイルシート
--webxml: Nmap.Orgのスタイルシートを参照してポータブルなXMLを出力
--no-stylesheet: XMLに対するXSLスタイルシートの関連付けを防ぐ
その他:
-6: IPv6スキャンを有効化
-A: OSの検出、バージョンの検出、スクリプトスキャン、tracerouteを有効化
--datadir <ディレクトリ名>: カスタムのNmapデータファイルの場所を指定
--send-eth/--send-ip: 生のイーサネットフレームまたはIPパケットを使って送信
--privileged: ユーザが完全な特権を持っていると仮定
--unprivileged: ユーザがraw socketの特権を持っていないと仮定
-V: バージョン番号を表示
-h: このヘルプサマリーページを表示
例:
nmap -v -A scanme.nmap.org
nmap -v -sn 192.168.0.0/16 10.0.0.0/8
nmap -v -iR 10000 -Pn -p 80
詳しくはマニュアルページ(https://nmap.org/book/man.html)を参照
===== 参考 =====
* [[https://nmap.org/man/ja/index.html|Nmap リファレンスガイド (Man Page)]]
* [[https://nmap.org/man/ja/man-briefoptions.html|オプション概要]]
* [[https://qiita.com/kenryo/items/1b49bddce44e9412638f|Nmapによるポートスキャン基礎]]