ハッカーはnmapでホストが稼働しているかどうかを判断する(Kali Linuxツール説明)

ホワイトハッカーの知識Kali Linuxツール,nmap,座学

ネットワーク上のホストが稼働しているかの判定を理解するためにまとめてみました。
このnmapの動作確認は自分のドメインでテストを行っています。

nmapとは

Nmap(Network Mapper)は、ネットワークディスカバリーとセキュリティ監査のためのユーティリティです。
(ネットワークディスカバリーとはネットワークに接続されているすべてのホストをスキャンして識別し、OSバージョン、オープンポート、プロトコルなどのデバイス情報を収集することです。)

Nmapは、ネットワーク上で利用可能なホスト、ホストが提供しているサービス(アプリケーション名とバージョン)、ホストが実行しているオペレーティングシステム(およびOSバージョン)、使用されているパケットフィルタ、ファイアウォールの種類、その他数多くの機能があります。

機能

  • 対象ホストへのポートスキャン
  • ネットワーク内のオンラインになっているホストを調査する
  • 対象ホストのOS、バージョンを調査する
  • 対象ホストのホスト名を調査する
  • 対象ホストが提供しているサービスを調査する
  • 基本的なTCP/UDPポートへのスキャン
  • 全てのTCP/UDPポートへのスキャン
  • 対象のホストへのTCPコネクションを調査する
  • 高速スキャン
  • 動作しているサービスの詳細を調査する
  • 詳細な情報を全て調査する
  • 対象ホストのパケットフィルタ、ファイアウォールの種類を調査する

ツールの場所

[Applications]→[01-Information Gathering]→[Network & Port Scanners]→[nmap]

ツールと使用方法

nmap [Scan Type(s)] [Options] {target specification}

例 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

【実行イメージ】少し端折って整形しています。

┌──(root__kali)-[/home/kali]
└─# nmap -O -v ****.com
Starting Nmap 7.91 ( https://nmap.org ) at 2021-03-24 21:16 EDT
Initiating Ping Scan at 21:16
Scanning ****.com (***.***.***.***) [4 ports]
Completed Ping Scan at 21:16, 0.04s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 21:16
Completed Parallel DNS resolution of 1 host. at 21:16, 0.03s elapsed
Initiating SYN Stealth Scan at 21:16
Scanning ****.com (***.***.***.***) [1000 ports]
Discovered open port 443/tcp on ***.***.***.***
Discovered open port 80/tcp on ***.***.***.***
Discovered open port 995/tcp on ***.***.***.***
Discovered open port 21/tcp on ***.***.***.***
Discovered open port 110/tcp on ***.***.***.***
Discovered open port 587/tcp on ***.***.***.***
Discovered open port 143/tcp on ***.***.***.***
Discovered open port 993/tcp on ***.***.***.***
Discovered open port 465/tcp on ***.***.***.***
Completed SYN Stealth Scan at 21:16, 5.41s elapsed (1000 total ports)
Initiating OS detection (try #1) against ****.com (***.***.***.***)
Retrying OS detection (try #2) against ****.com (***.***.***.***)
Nmap scan report for ****.com (***.***.***.***)
Host is up (0.015s latency).
rDNS record for ***.***.***.***: **7609.*******.jp
Not shown: 991 filtered ports
PORT STATE SERVICE
21/tcp open ftp
80/tcp open http
110/tcp open pop3
143/tcp open imap
443/tcp open https
465/tcp open smtps
587/tcp open submission
993/tcp open imaps
995/tcp open pop3s
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: bridge|general purpose|switch
Running (JUST GUESSING): Oracle Virtualbox (98%), QEMU (93%), Bay Networks embedded (88%)
OS CPE: cpe:/o:oracle:virtualbox cpe:/a:qemu:qemu cpe:/h:baynetworks:baystack_450
Aggressive OS guesses: Oracle Virtualbox (98%), QEMU user mode network gateway (93%), Bay Networks BayStack 450 switch (software version 3.1.0.22) (88%)
No exact OS matches for host (test conditions non-ideal).
TCP Sequence Prediction: Difficulty=17 (Good luck!)
IP ID Sequence Generation: Incremental

Read data files from: /usr/bin/../share/nmap
OS detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 11.51 seconds
Raw packets sent: 2041 (93.000KB) | Rcvd: 46 (2.416KB)

オプション(TARGET SPECIFICATION)

Can pass hostnames, IP addresses, networks, etc.
ホスト名、IPアドレス、ネットワークなどを渡すことができます。
Ex: scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0.0-255.1-254

-iL <inputfilename>

Input from list of hosts/networks.
ホスト/ネットワークのリストからの入力。

-iR <num hosts>

Choose random targets.
ランダムなターゲットの選択。

–exclude <host1[,host2][,host3],…>

Exclude hosts/networks,
除外するホスト/ネットワーク。

–excludefile <exclude_file>

Exclude list from file,
ファイルからリストを除外する。

オプション(HOST DISCOVERY)

-sL

List Scan – simply list targets to scan,
リストスキャン – ターゲットをリストアップしてスキャンすることができます。

-sn

Ping Scan – disable port scan,
Ping Scan – ポートスキャンを無効にする。

-Pn

Treat all hosts as online — skip host discovery.
すべてのホストをオンラインとして扱い、ホストの発見をスキップする

-PS/PA/PU/PY[portlist]

TCP SYN/ACK, UDP or SCTP discovery to given ports.
指定されたポートへのTCP SYN/ACK、UDP、SCTPの検出。

-PE/PP/PM

ICMP echo, timestamp, and netmask request discovery probes.
ICMPエコー、タイムスタンプ、およびネットマスクリクエストのディスカバリープローブ。

-PO[protocol list]

IP Protocol Ping.
IPプロトコルのPing。

-n/-R

Never do DNS resolution/Always resolve [default: sometimes].
DNS解決を行わない/常に解決する.[デフォルト:時々]

–dns-servers <serv1[,serv2],…>

Specify custom DNS servers.
カスタムDNSサーバーの指定。

–system-dns

Use OS’s DNS resolver.
OSのDNSリゾルバを使用する。

–traceroute

Trace hop path to each host.
各ホストへのホップパスを追跡する。

オプション(TSCAN TECHNIQUES)

-sS/sT/sA/sW/sM

TCP SYN/Connect()/ACK/Window/Maimon scans.
TCP SYN/Connect()/ACK/Window/Maimonのスキャン。

-sU

UDP Scan.
UDPスキャン。

-sN/sF/sX

TCP Null, FIN, and Xmas scans.
TCP Null、FIN、およびXmasスキャン。

–scanflags <flags>

Customize TCP scan flags.
TCPスキャンフラグのカスタマイズ。

-sI <zombie host[:probeport]>

Idle scan.
アイドルスキャン。

-sY/sZ

SCTP INIT/COOKIE-ECHO scans.
SCTP INIT/COOKIE-ECHOスキャン。

-sO

IP protocol scan.
IPプロトコルスキャン。

-b <FTP relay host>

FTP bounce scan.
FTPバウンススキャン。

オプション(PORT SPECIFICATION AND SCAN ORDER)

-p <port ranges>

Only scan specified ports.
Ex: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9
指定したポートのみをスキャンする。

–exclude-ports <port ranges>

Exclude the specified ports from scanning.
指定したポートをスキャン対象外にする。

-F

Fast mode – Scan fewer ports than the default scan.
高速モード – デフォルトのスキャンよりも少ないポート数でスキャンする。

-r

Scan ports consecutively – don’t randomize.
ポートを連続してスキャンし、ランダムにしない。

–top-ports <number>

Scan <number> most common ports.
スキャン <番号> 最も一般的なポート。

–port-ratio <ratio>

Scan ports more common than <ratio>.
<ratio>よりも一般的なスキャンポート。

オプション(SERVICE/VERSION DETECTION)

-sV

Probe open ports to determine service/version info.
開いているポートを調査し、サービス/バージョン情報を把握。

–version-intensity <level>

Set from 0 (light) to 9.(try all probes)
0(点灯)から9(すべてのプローブを試す)まで設定可能。

–version-light

Limit to most likely probes. (intensity 2)
最も可能性の高いプローブに限定。(強度2)

–version-all

Try every single probe. (intensity 9)
すべてのプローブを試す。(強度9)

–version-trace

Show detailed version scan activity. (for debugging)
バージョンスキャンの詳細なアクティビティを表示。(デバッグ用)

オプション(SCRIPT SCAN)

-sC

equivalent to –script=default.
-script=default と同等です。

–script=<Lua scripts>

<Lua scripts> is a comma separat。ed list of directories, script-files or script-categories.
<Lua scripts> は、ディレクトリ、スクリプト・ファイル、スクリプト・カテゴリをカンマで区切ったリストです。

–script-args=<n1=v1,[n2=v2,…]>

provide arguments to scripts.
スクリプトに引数を与える。

–script-args-file=filename

provide NSE script args in a file.
NSEスクリプトの引数をファイルで提供する。

–script-trace

Show all data sent and received.
送受信されたすべてのデータを表示する。

–script-updatedb

Update the script database.
スクリプトのデータベースを更新します。

–script-help=<Lua scripts>

Show help about scripts.
<Lua scripts> is a comma-separated list of script-files or script-categories.
スクリプトに関するヘルプを表示する。
<Lua scripts> は、script-files または script-categories をカンマで区切ったリストです。

オプション(OS DETECTION)

-O

Enable OS detection.
OSの検出を有効にする。

–osscan-limit

Limit OS detection to promising targets.
OS検出を有望なターゲットに限定する。

–osscan-guess

Guess OS more aggressively.
OSをより積極的に推測する。

オプション(TIMING AND PERFORMANCE)

Options which take <time> are in seconds, or append 'ms’ (milliseconds),’s’ (seconds), 'm’ (minutes), or 'h’ (hours) to the value (e.g. 30m).
<time>を取るオプションは、秒単位、または値に’ms'(ミリ秒)、’s'(秒)、’m'(分)、’h'(時間)を追加します(例:30m)。

-T<0-5>

Set timing template. (higher is faster)
タイミングテンプレートの設定。(高い方が速い)

–min-hostgroup/max-hostgroup <size>

Parallel host scan group sizes.
パラレルホストスキャンのグループサイズ。

–min-parallelism/max-parallelism <numprobes>

Probe parallelization.
プローブの並列化。

–min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout <time>

Specifies probe round trip time.
プローブのラウンドトリップタイムを指定します。

–max-retries <tries>

Caps number of port scan probe retransmissions.
ポートスキャンプローブの再送回数の上限。

–host-timeout <time>

Give up on target after this long.
こんなに時間がかかってしまっては、ターゲットを諦めてしまいます。

–scan-delay/–max-scan-delay <time>

Adjust delay between probes.
プローブ間の遅延を調整。

–min-rate <number>

Send packets no slower than <number> per second.
1秒間に<数字>以下の速度でパケットを送信する。

–max-rate <number>

Send packets no faster than <number> per second.
1秒間に<数字>以上の速度でパケットを送信しない。

オプション(FIREWALL/IDS EVASION AND SPOOFING)

-f; –mtu <val>

fragment packets. (optionally w/given MTU)
パケットのフラグメント化。(MTUを指定することも可能)

-D <decoy1,decoy2[,ME],…>

Cloak a scan with decoys,
デコイでスキャンを遮蔽する。

-S <IP_Address>

Spoof source address.
送信元アドレスの偽装。

-e <iface>

Use specified interface.
指定されたインターフェースを使用する。

-g/–source-port <portnum>

Use given port number.
指定されたポート番号を使用。

–proxies <url1,[url2],…>

Relay connections through HTTP/SOCKS4 proxies.
HTTP/SOCKS4プロキシによる接続の中継。

–data <hex string>

Append a custom payload to sent packets.
送信されたパケットに独自のペイロードを付加する。

–data-string <string>

Append a custom ASCII string to sent packets.
送信パケットにカスタムASCII文字列を付加する。

–data-length <num>

Append random data to sent packets.
送信されたパケットにランダムなデータを付加する。

–ip-options <options>

Send packets with specified ip options.
指定されたipオプションを持つパケットを送信する。

–ttl <val>

Set IP time-to-live field.
IPタイム・ツー・ライフ・フィールドの設定。

–spoof-mac <mac address/prefix/vendor name>

Spoof your MAC address.
MACアドレスの偽装。

–badsum

Send packets with a bogus TCP/UDP/SCTP checksum.
偽のTCP/UDP/SCTPチェックサムでパケットを送信する。

オプション(OUTPUT)

-oN/-oX/-oS/-oG <file>

Output scan in normal, XML, s|<rIpt kIddi3,and Grepable format, respectively, to the given filename.
スキャンを,通常,XML,s|<rIpt kIddi3,Grepableのそれぞれの形式で,与えられたファイル名に出力します。

-oA <basename>

Output in the three major formats at once.
主要3フォーマットを一度に出力。

-v

Increase verbosity level. (use -vv or more for greater effect)
冗長性のレベルを上げる。(-vv以上を使うとより効果的

-d

Increase debugging level. (use -dd or more for greater effect)
デバッグレベルを上げる。(-ddまたはmoreを使うとより効果的

–reason

Display the reason a port is in a particular state.
ポートが特定の状態である理由を表示する。

–open

Only show open (or possibly open) ports.
開いている。(または開いている可能性のある)ポートのみを表示。

–packet-trace

Show all packets sent and received.
送受信したすべてのパケットを表示。

–iflist

Print host interfaces and routes. (for debugging)
ホストのインターフェースとルートの印刷。(デバッグ用)

–append-output

Append to rather than clobber specified output files.
指定された出力ファイルに追加することができます。

–resume <filename>

Resume an aborted scan.
中止したスキャンを再開する。

–stylesheet <path/URL>

XSL stylesheet to transform XML output to HTML.
XML出力をHTMLに変換するXSLスタイルシート。

–webxml

Reference stylesheet from Nmap.Org for more portable XML.
Nmap.Orgのスタイルシートを参照して、よりポータブルなXMLを作成する。

–no-stylesheet

Prevent associating of XSL stylesheet w/XML output.
XSLスタイルシートとXML出力との関連付けの禁止。

オプション(MISC)

-6

Enable IPv6 scanning.
IPv6のスキャンを有効にする。

-A

Enable OS detection, version detection, script scanning, and traceroute.
OS検出、バージョン検出、スクリプトスキャン、トレースルートの有効化。

–datadir <dirname>

Specify custom Nmap data file location.
カスタムNmapデータファイルの場所の指定。

–send-eth/–send-ip

Send using raw ethernet frames or IP packets.
生のイーサネットフレームまたはIPパケットを使った送信。

–privileged

Assume that the user is fully privileged.
ユーザーが完全に特権を持っていると仮定します。

–unprivileged

Assume the user lacks raw socket privileges.
このユーザーにはRawソケットの権限がないと仮定します。

-V

Print version number.
プリントバージョン番号。

-h

Print this help summary page.
このヘルプの概要ページを印刷する。

nmapツールのまとめ

クラッキング攻撃の一番最初に使われるツールがNmapだそうです。
上記オプションを見てもらえばわかるとおり、ネットワーク管理者にとっても非常に役に立つツールなっています。
要は、nmapツールを使いこなすことができれば「善」にも「悪」にもなれるということです。

・・・決して「悪」にはならないようにね。