はじめに
脆弱性診断を実施するにあたり、まずマシンがどんなポートが開いているか調べ、そのポートを使用しているアプリケーションのバージョン情報を取得できると、脆弱性を突いた攻撃が可能になる場合があります。では、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を起動してみたら、すでに日本語化されておりました。
今日はこの辺りにしたいと思います。
ここまで読んで頂き有難う御座います。
お疲れさまでした。