fr33f0r4ll

自分用雑記

Nmap option

Nmap option

自分用に、公式サイト見た方がいい

Options

Target Specification

-iL <inputfilename>
ファイルに記載されているホスト、ネットワークをターゲットとして指定する

-iR <num hosts>
指定された数だけランダムにピックアップしてスキャン

--exclude <host1[,host2][,host3],...>
除外するホスト、ネットワーク

--excludefile <exclude_file>
ファイルに記載されているホスト、ネットワークを除外する

Host Discovery

-sL
スキャンするホストをリストアップする、スキャンはまだしない

-sn
pingだけしてポートスキャンはしない

-Pn
pingをしないでスキャンを始める

-PS/PA/PU/PY[portlist]
それぞれTCP SYN, TCP ACK, UDP, SCTPでポートスキャンする

-PE/PP/PM
ICMP echo, timestamp, and netmask request discovery
上記のそれぞれのスキャンをする

-PO[protocol list]
tcp, udp, icmpが指定できる、それぞれのプロトコルでスキャン?

-n/-R
DNS解決をしない/するの指定、デフォルトはたまにするsometimesになってる?

--dns-servers <serv1[,serv2],...>
DNSサーバを指定

--system-dns
OSで指定されたDNSを使うように指定

--traceroute
ホストごとにtracerouteする

Scan Techniques

nmap docs

-sS/sT/sA/sW/sM
TCP SYN/Connect()/ACK/Window/Maimon でそれぞれスキャン

  • TCP Connect scan
    • 3wayハンドシェイクが成立するかどうかで判定するスキャン
  • TCP SYN scan
    • SYNだけ送ってSYN-ACKが返ってくるかどうかで判定するスキャン
    • 最後にRSTを送る
    • 高速
  • TCP ACK scan
    • openかどうかの判定はできないが、ステートフルかどうか、フィルターされてるかどうかを調べるために使う
    • ACKだけを送る、正常ならopenでもcloseでもRSTが返ってくるはず
  • Window scan
    • ACK scanとほぼ同じ
    • 特定の実装での挙動の違いを利用してopen/closeの判定をする
    • 対象ホストがよく分からないときはあんまり信用しない
  • Maimon scan
    • このテクニックはNULL, FIN, Xmas scanと同じ
    • FIN/ACKを使う
    • BSD系のシステムの挙動を判定する

-sU

  • UDP scan
    • UDPで通信して応答があるかで判定

-sN/sF/sX
TCP Null, FIN, Xmas スキャン
フラグ以外の挙動は一緒でclosedはちゃんと判定できる、openかfilteredかは明確じゃない

  • TCP Null scan
    • フラグを何もセットしない
  • FIN scan
    • FINを送る
  • Xmas scan
    • FIN, PSH, URGをセットする

--scanflags <flags>
TCPスキャンのフラグを指定する
exp. nmap -sS --scanflags SYNFIN -T4 www.google.com

-sI <zombie host[:probeport]>
Idleスキャン
他のホストからのパケットを偽造して送信する
パケットに割り振られるIDの増加を見て直接スキャンせずに状態を判定する

-sY/sZ
SCTP INIT/COOKIE-ECHO スキャン
SCTPはTCPUDPの特徴を持たせて新しい機能も追加されたプロトコル
INITはTCP SYN scanみたいな感じ
COOKIE-ECHO scanはdropとABORTを返す挙動の違いを使ったスキャン

-sO
IP protocolスキャン
プロトコルヘッダーを順に変えてスキャンする?
厳密にはポートスキャンではない

-b <FTP relay host>
FTP bounce scan
FTPのproxy機能のスキャン
1997年に流行ったものなのでいまはまずない

Port Specification and Scan Order

-p <port ranges>
スキャンするポートの指定
Ex: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9

--exclude-ports <port ranges>
スキャンから除外するポート

-F
デフォルトよりも少ないポートをスキャンするファストモード

-r
順番にスキャンする、ランダム化しない

--top-ports <number>
よくある順に指定した数だけスキャン

--port-ratio <ratio>
よくある度で指定してスキャン、使いにくそう

Service/Version Detection

-sV
サービスとバージョンを調べる

--version-intensity <level>
0~9でどれぐらい調査するか指定できる、9は全ての調査をする

--version-light
level 2の調査をする

--version-all
全ての調査をする、level 9と同じ

--version-trace
スキャンで何をしたか表示する、Debug用

Script Scan

-sC
--script=defaultと同じ

--script=<Lua scripts>
スキャンに使うLuaスクリプトを指定する
規定の位置にあるスクリプトファイルの名前や、ディレクトリ、カテゴリなど様々な方法で指定できる

--script-args=<n1=v1,[n2=v2,...]>
スクリプトに渡す引数

--script-args-file=filename
ファイル中の値を引数として渡す

--script-trace
送信データと受信データを表示

--script-updatedb
スクリプトデータベースを更新する

--script-help=<Lua scripts>
スクリプトのヘルプを表示する

OS Detection

-O
OS識別を有効にする

--osscan-limit
OS識別を制限する

--osscan-guess
強めにOSの推測をする

Timing and Performance

<time>には時間を指定できる、末尾でms, s, m, hの指定ができる

-T<0-5>
タイミングのテンプレート、5が一番速い

--min-hostgroup/max-hostgroup <size>
並列スキャンするホストの分割サイズ

--min-parallelism/max-parallelism <numprobes>
調査の並列数

--min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout <time>
調査のrount trip time

--max-retries <tries>
ポートスキャンの調査のリトライ数

--host-timeout <time>
ホストのタイムアウト検知時間

--scan-delay/--max-scan-delay <time>
調査ごとのインターバル

--max-rate/--min-rate <number>
パケット送信の最大/最低レート、一秒間に指定した数送信する

Firewall/IDS Evasion and Spoofing

-f; --mtu <val>
パケット分割数

-D <decoy1,decoy2[,ME],...>
デコイとなるホストを指定し、複数ホストからのスキャンとみせかけられる?

-S <IP_Address>
ソースアドレスの偽装

-e <iface>
インターフェースの指定

-g/--source-port <portnum>
指定したポートでスキャン

--proxies <url1,[url2],...>
HTTP/SOCKS4プロキシを指定して、そこを経由してスキャンする

--data <hex string>
データを指定しパケットに追加する

--data-string <string>
ASCII文字列としてパケットにデータを追加

--data-length <num>
指定された長さまでランダムなデータを追加

--ip-options <options>
IPオプションを指定

--ttl <val>
TTLの指定

--spoof-mac <mac address/prefix/vendor name>
MACアドレスを偽装

--badsum
checksumを不正なものにする

Output

-oN/-oX/-oS/-oG <file>
出力形式を指定してファイルに書き出す
通常、XML、leet、grepable

-oA <basename>
メインの3つのフォーマットで出力する

-v
逐次的に出力する、vの数でレベルが上がる

-d
デバッグ出力指定、dの数でレベルが上がる

--reason
ポート判定の理由を表示してくれる

--open
openなポートだけ表示する

--packet-trace
送信、受信のパケットを全て表示

--iflist
インターフェース、 ルートを表示、デバッグ

--append-output
指定のファイルになんか出力する??

--resume <filename>
中止されたスキャンの情報を保存する?

--stylesheet <path/URL>
XMLをHTMLに変換するためのXLSファイルへのパス?

--webxml
Nmap.orgのxml変換のためのスタイルシート?

--no-stylesheet
XSLファイルを参照して変換しないように指定

Misc

-6
IPv6

-A
OS識別、バージョン識別, スクリプト, traceroute

--datadir <dirname>
Nmapのデータディレクトリを指定する

--send-eth/--send-ip
生のeth、ipのパケットフレームを使う

--privileged
ユーザに特権があることを保証する

--unprivileged
生ソケットを触れない権限であることを保証する

-V
バージョン情報

-h
ヘルプ