1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【セキュリティ】Nmap Post Port Scans(後処理まとめ)— サービス検出 / OS特定 / NSE / 出力保存 を一気に使いこなす

Last updated at Posted at 2025-10-23

はじめに

端的に言うと:「開いてるポートを見つけたら、何が動いてるか(-sV)、どんなOSか(-O)、どこを通って来たか(--traceroute)、スクリプトで深掘り(--script)、結果は必ず保存(-oA)。これで“ポートスキャンのその先”が完成です。」


チートシート

やりたいこと コマンド例 メモ
サービス/バージョン検出 nmap -sV 10.0.0.1 強度は --version-intensity 0..9(2=light, 9=all)
OS 検出 sudo nmap -O 10.0.0.1 開放/閉鎖ポートの両方があると精度UP
トレースルート nmap --traceroute 10.0.0.1 Nmap版は高TTLから下げていく方式
デフォルトNSE nmap -sC 10.0.0.1 --script=default と同じ
任意NSE nmap --script "http-date" パターン指定 --script "ftp*" もOK
“全部のせ” sudo nmap -A 10.0.0.1 = -sV -O -sC --traceroute
出力保存(全部) nmap ... -oA target_scan .nmap(通常).gnmap(grepable).xml

余談:-sS(SYN)と -sV併用できます。ただし -sV のバナー取りは実接続を発生させるため、完全ステルスにはなりません。そこだけ大人の事情。


1. Service Detection(サービス/バージョン検出)

使い方

sudo nmap -sV [--version-intensity 0..9] TARGET
# 例:軽め
sudo nmap -sV --version-light TARGET   # (= intensity 2)
# 例:ガッツリ
sudo nmap -sV --version-all TARGET     # (= intensity 9)

ポイント

  • 列“service”は推測も含むが、“version”は実接続で取得(バナー/応答解析)。
  • sudo が必要なオプションが多い。環境によっては mass_dns 警告が出る(/etc/resolv.conf 未設定等)。スキャン自体は継続可能。

実例(抜粋)

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 9.2p1 Debian 2+deb12u3 (protocol 2.0)
80/tcp open  http    nginx 1.22.1
...

2. OS Detection(OS特定)

使い方

sudo nmap -sS -O TARGET

ポイント

  • 少なくとも開放ポート1つ+閉鎖ポート1つがあると精度が上がる。
  • 仮想化/ミドル機器/カーネル設定で指紋がブレることは普通にある。カーネルのマイナーバージョンは外すことも多いので眉に唾。
  • 特定できない場合は “No exact OS matches” と指紋(fingerprint)を出してくれる。

実例(抜粋)

Host is up (0.00095s latency).
Not shown: 992 closed ports
PORT    STATE SERVICE
22/tcp  open  ssh
25/tcp  open  smtp
80/tcp  open  http
110/tcp open  pop3
111/tcp open  rpcbind
143/tcp open  imap
993/tcp open  imaps
995/tcp open  pop3s
MAC Address: 16:FF:C9:2F:D9:19 (Unknown)
No exact OS matches for host (If you know what OS is running on it, see https://nmap.org/submit/ ).
TCP/IP fingerprint:
OS:SCAN(V=7.80%E=4%D=10/22%OT=22%CT=1%CU=35021%PV=Y%DS=1%DC=D%G=Y%M=16FFC9%
OS:TM=68F8F767%P=x86_64-pc-linux-gnu)SEQ(SP=F1%GCD=1%ISR=10D%TI=Z%CI=Z%II=I
OS:%TS=A)OPS(O1=M2301ST11NW7%O2=M2301ST11NW7%O3=M2301NNT11NW7%O4=M2301ST11N
OS:W7%O5=M2301ST11NW7%O6=M2301ST11)WIN(W1=F4B3%W2=F4B3%W3=F4B3%W4=F4B3%W5=F
OS:4B3%W6=F4B3)ECN(R=Y%DF=Y%T=40%W=F507%O=M2301NNSNW7%CC=Y%Q=)T1(R=Y%DF=Y%T
OS:=40%S=O%A=S+%F=AS%RD=0%Q=)T2(R=N)T3(R=N)T4(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F=R
OS:%O=%RD=0%Q=)T5(R=Y%DF=Y%T=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)T6(R=Y%DF=Y%T=
OS:40%W=0%S=A%A=Z%F=R%O=%RD=0%Q=)T7(R=Y%DF=Y%T=40%W=0%S=Z%A=S+%F=AR%O=%RD=0
OS:%Q=)U1(R=Y%DF=N%T=40%IPL=164%UN=0%RIPL=G%RID=G%RIPCK=G%RUCK=G%RUD=G)IE(R
OS:=Y%DFI=N%T=40%CD=S)

3. Traceroute(経路確認)

使い方

nmap -sS --traceroute TARGET

ポイント

  • Nmap の traceroute は高TTLから減らす方式(一般的 traceroute と逆アプローチ)。
  • ルータ側で ICMP TTL Exceeded を返さない設定だと経路が見えないことも多い。

実例(抜粋)


Host is up (0.0044s latency).
Not shown: 992 closed ports
PORT    STATE SERVICE
22/tcp  open  ssh
25/tcp  open  smtp
80/tcp  open  http
110/tcp open  pop3
111/tcp open  rpcbind
143/tcp open  imap
993/tcp open  imaps
995/tcp open  pop3s
MAC Address: 16:FF:C9:2F:D9:19 (Unknown)

TRACEROUTE
HOP RTT     ADDRESS
1   4.45 ms 10.201.124.178


4. Nmap Scripting Engine(NSE)

どこにある?

  • だいたい /usr/share/nmap/scripts/ にズラッとある(数百本)。
  • 名前規則がゆるく便利:http-*, ftp-*, ssh-* など。

実行方法

# デフォルトカテゴリ
nmap -sS -sC TARGET
# 個別/パターン指定
nmap -sS --script "http-date" TARGET
nmap -sS --script "ftp*" TARGET

よく使うカテゴリ(抜粋)

  • default-sC 相当
  • version:バージョン関連
  • vuln:脆弱性チェック
  • auth / brute / intrusive要注意(本番環境で不用意に撃たない)

ミニFAQ(今回の設問に直結)

  • Q: http-robots.txt は何をチェック?
    A: Disallow(非公開化)指定など robots.txt の禁止エントリ(= disallowed entries) を確認します。
  • Q: MS15-034(CVE-2015-1635)をチェックするスクリプト名は?
    A: http-vuln-cve2015-1635

便利サンプル

# SSHのアルゴリズム一覧(今回ログより)
sudo nmap -sS -n --script "ssh2-enum-algos" x.x.x.x

Nmap scan report for x.x.x.x
Host is up (0.0052s latency).
Not shown: 991 closed ports
PORT    STATE SERVICE
22/tcp  open  ssh
| ssh2-enum-algos: 
|   kex_algorithms: (11)
|       sntrup761x25519-sha512@openssh.com
|       curve25519-sha256
|       curve25519-sha256@libssh.org
|       ecdh-sha2-nistp256
|       ecdh-sha2-nistp384
|       ecdh-sha2-nistp521
|       diffie-hellman-group-exchange-sha256
|       diffie-hellman-group16-sha512
|       diffie-hellman-group18-sha512
|       diffie-hellman-group14-sha256
|       kex-strict-s-v00@openssh.com
|   server_host_key_algorithms: (4)
|       rsa-sha2-512
|       rsa-sha2-256
|       ecdsa-sha2-nistp256
|       ssh-ed25519
|   encryption_algorithms: (6)
|       chacha20-poly1305@openssh.com
|       aes128-ctr
|       aes192-ctr
|       aes256-ctr
|       aes128-gcm@openssh.com
|       aes256-gcm@openssh.com
|   mac_algorithms: (10)
|       umac-64-etm@openssh.com
|       umac-128-etm@openssh.com
|       hmac-sha2-256-etm@openssh.com
|       hmac-sha2-512-etm@openssh.com
|       hmac-sha1-etm@openssh.com
|       umac-64@openssh.com
|       umac-128@openssh.com
|       hmac-sha2-256
|       hmac-sha2-512
|       hmac-sha1
|   compression_algorithms: (2)
|       none
|_      zlib@openssh.com
25/tcp  open  smtp
53/tcp  open  domain
80/tcp  open  http
110/tcp open  pop3
111/tcp open  rpcbind
143/tcp open  imap
993/tcp open  imaps
995/tcp open  pop3s
MAC Address: 16:FF:F9:C3:FF:7F (Unknown)


5. 保存フォーマット(※超大事)

3兄弟(推奨)

  • Normal-oN file.nmap(人間が読みやすい)
  • Grepable-oG file.gnmapgrep しやすい1行完結)
  • XML-oX file.xml(ツール連携しやすい)

全部まとめて-oA basebase.nmap / base.gnmap / base.xml を一括出力。

grepable の威力(例)

# https で絞る
grep https scan_172_17_network.gnmap
# → 3ホスト該当(HTTPS開放)
#   172.17.0.215 / 172.17.19.249 / 172.17.23.240

6. 実践ログからの“即答”集(あなたの出力に基づく)

  • http-robots.txt は何を見る?
    disallowed entries
  • MS15-034(CVE-2015-1635)用スクリプト名は?
    http-vuln-cve2015-1635
  • 10.201.0.131 の 53/tcp の完全版(-sC の出力)
    bind.version: 9.18.28-1~deb12u2-Debian
  • ssh2-enum-algos(10.201.0.131)で SHA2-512 を使うサーバ鍵アルゴリズム名
    rsa-sha2-512
  • 添付 gnmap で「HTTPS が開いているホスト数」
    3
  • port 8089 を開けている IP
    172.17.20.147

7. 実務のコツ(from 現場)

  • 明確な命名規則{date}_{scope}_{host|cidr}_{flags} など。迷子にならない。
  • 軽量→重厚の段階戦略-sS -T4 で概要 → 気になるホストだけ -A
  • NSEは“安全カテゴリ”からdefault/safe/version で足場固め。vulnbrute は権限確認の上。
  • 環境ノイズ対策mass_dns 警告時は --system-dns--dns-servers/etc/resolv.conf を整備。
  • 証跡は資産-oA は常用。後で grep / jq / xsltproc 等で再活用できる。

8. 代表コマンド集(コピペ用)

# ① まずは早見
sudo nmap -sS -T4 -oA quick_10.0.0.0_24 10.0.0.0/24

# ② 気になる1台を深掘り
sudo nmap -A --version-all -oA deep_10.0.0.5 10.0.0.5

# ③ NSE(デフォルト)
sudo nmap -sS -sC -oA sC_10.0.0.5 10.0.0.5

# ④ HTTP 関連スクリプト例
sudo nmap -sS --script "http-date,http-headers,http-security-headers" -p80,443 -oA http_10.0.0.5 10.0.0.5

# ⑤ SSH アルゴ列挙
sudo nmap -sS -n --script "ssh2-enum-algos" -p22 -oA ssh_algos_10.0.0.5 10.0.0.5

# ⑥ 結果の抽出
grep http *.gnmap
grep -E "443/open|https" *.gnmap

まとめ

  • -sV で「何が動いているか」を確実に掴む。
  • -O で OS の“あたり”を付ける(過信しない)。
  • --traceroute で経路のイメージを持つ。
  • NSE は “default→safe→version→vuln” と段階的に。
  • -oA必ず保存、あとから“掘れるログ”にする。

小さく当てて、大きく外さない。Nmap の後処理を制した人が、次の一手(脆弱性確認・侵入経路選定)を素早く打てます。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?