はじめに

脆弱性診断を実施するにあたり、まずマシンがどんなポートが開いているか調べ、そのポートを使用しているアプリケーションのバージョン情報を取得できると、脆弱性を突いた攻撃が可能になる場合があります。では、nmapコマンドでどの様な情報が得られるか調べた事を纏めたいと思います。

 

nmapとは

nmapはGordon Lyonによって書かれたセキュリティスキャナである。ポートスキャン機能だけでなく、OSやバージョンの検出機能、サービスおよびそのバージョンの検出機能など、多くの機能を兼ね備えている。(ウィキペディアより)

 

nmapの基本

では、早速以下のコマンドをCentosサーバ宛てにスキャンをしてみました。

 

#nmap 192.168.0.20

Nmap scan report for 192.168.0.20
Host is up (0.019s latency).
Not shown: 999 closed ports
PORT   STATE SERVICE
22/tcp open  ssh
MAC Address: 1A:11:17:DB:A8:15 (Unknown)

 

上記の結果に「STATE」があると思います。そのSTATEはポートに対してnmapがスキャンを行った際の状態を表しており、そのSTATEは6種類あるようです。なので、以下に纏めました。

 

STATE 意味
open ポートが開いている
closed プローブを受信したり応答したりすることが可能だが、アプリケーションがない状態。
filtered 該当サーバの途中にfirewallがありパケットフィルタのせいでプローブが届かないのでオープンしているかどうか判断ができない。
unfiltered ポートにはアクセスが可能だが、そのポートが開いているか閉じているか不明な状態
open|filtered 対称ポートがオープンしているのか閉じているのか判別ができない状態
close|filtered ポートが閉じているかフィルタ処理がされているかを判断できない状態

 

NMAPオプションと使用例

色々なサイトを見ていた中で良く取り上げていたオプションを中心にまとめてみました。

 

オプション 詳細
-iL [file name] ホスト/ネットワークのリストを読み込む
-PN Pingを無効にし、ホストの発見をスキップする。
-sP x.x.x.x/x pingスキャン。応答した利用可能なホストを出力する。
-sT TCP connect()スキャン。SYNスキャンを選択できない場合のデフォルトのTCPスキャンタイプ。(フルコネクトスキャン)[SYN → SYN+ACK → RST+ACK -FIN]
-sS TCP SYNスキャン。デフォルトのスキャン方式で、TCPコネクションを確立しないため、比較的に匿名性が高い。
-sA TCP ACKスキャン。FWのルールセットを明らかにするために使用され、FWがステートフルか否か、どのポートがフィルタリングされているかなど調査できる。
-sN TCP Nullスキャン。何のビットも設定しないパケットを送信する事で、ポートのopen/closedを調査する。
-sF TCP FINスキャン。TCP FINビットだけを設定したパケットを送信する事で、ポートのopen/closedを調査する。
-sX TCP Xmasスキャン。FIN,PSH,URGのフラグを全て設定したぽあけっとを送信する事で、open/closedを調査する。
-sU UDPスキャン。ICMPポート到達不能エラー応答の種類によりopenポートとclosedポートを識別する。
-p XX 特定のポート番号でスキャンする。
-oG [file Name] 出力結果をgrep形式でファイルへ書き出す
-oX [file Name] 出力結果をXML形式でファイルへ書き出す
-sV -p XX 指定したポート番号のアプリケーションのバージョンを出力する。
-O OSの種類を特定できる。

 

使用例)

 

明示的にTCPプロトコルを使う場合、「-sT」を使います。

Starting Nmap 7.70 ( https://nmap.org ) at 2018-11-24 00:18 JST
Nmap scan report for 192.168.0.20
Host is up (0.0015s latency).
Not shown: 998 closed ports
PORT   STATE SERVICE
22/tcp open  ssh
80/tcp open  http
MAC Address: 1A:11:17:DB:A8:15 (Unknown)

Nmap done: 1 IP address (1 host up) scanned in 0.54 seconds

 

pingを利用してネットワークで動作しているマシンの一覧を表示する。

#nmap -sP 192.168.0.0/24
Starting Nmap 7.70 ( https://nmap.org ) at 2018-11-23 23:19 JST

Nmap scan report for 192.168.0.11
Host is up (0.0021s latency).
MAC Address: 78:E7:D1:B1:54:52 (Hewlett Packard)

Nmap scan report for 192.168.0.20
Host is up (0.0023s latency).
MAC Address: 1A:11:17:DB:A8:15 (Unknown)

 

・HTTPのバージョン取得

# nmap -sV -p 80 192.168.0.20
Starting Nmap 7.70 ( https://nmap.org ) at 2018-11-24 00:11 JST
Nmap scan report for 192.168.0.20
Host is up (0.0015s latency).

PORT   STATE SERVICE VERSION
80/tcp open  http    Apache httpd 2.4.6 ((CentOS))
MAC Address: 1A:11:17:DB:A8:15 (Unknown)

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 7.99 seconds

zenmapとは

簡単に言ってしまうと、nmapをGUIにしたツールです。しかも、Windows,Linux,Mac OSじょうで使えるようです。今回は、Windows10にインストールしましたので纏めてみようと思います。

 

zenmapダウンロードサイトにて現時点でnmap-7.70-setup.exeファイルをダウンロードします。

 

 

1.実行ファイルを実行します。

2.I Agreeを押下します。

 

3.デフォルトのままでNextを押下します。

 

4.インストールフォルダはデフォルトのままにしました。そして、インストール開始!!

 

5.インストール中。しばらく待ちます。

 

6.次にNcap OEMをインストールします。

 

7.デフォルトのままインストールします。

 

8.インストール中。しばらく待ちます。

 

9.Ncap OEMのインストールが完了しました。

 

10.Nmapのインストールが完了しました。

 

11.ショートカットを作りました。

 

 

12.インストール作業全て完了です。

 

最後に、インストールしたzenmapを起動してみたら、すでに日本語化されておりました。

 

今日はこの辺りにしたいと思います。

ここまで読んで頂き有難う御座います。

お疲れさまでした。