Nmap使い方基礎!脆弱性を発見

セキュリティ
PexelsによるPixabayからの画像

※この記事にはプロモーションが含まれています。

セキュリティを脅かす事件が増大しており、守るためには攻撃側の手口を知っておく必要があります。
ここではホスト情報を取得する簡単な方法として、最強といえるポートスキャナーであるnmapの使い方の基礎を紹介します。

スポンサーリンク
スポンサーリンク

はじめに

EC-Councilでは、スキャン方法のフェーズを下記のように定義しています。

  1. 存在するホストを確認する。
  2. 開いているポートを確認する。
  3. IDSを超えてスキャンする。
  4. OSと実行しているサービスを特定する。
  5. 脆弱性をスキャンする。
  6. ネットワーク図を描く。
  7. プロキシを準備する。

これらの情報を取得するために有益なツールnmapを使用してみます。

Nmap使い方

Nmapコマンドの使い方を記載します。今回は、Kali Linux上で実行しています。
例として、調査対象のネットワーク/マシンIPアドレスを、10.0.2.0/24および10.0.2.8としています。

nmapが示すポート状態は、以下の6通りです。

状態説明
open公開されているポートでアクセス可能です。
closedlistenしているアプリは存在しないが、調査パケットの受信/応答は可能な状態です。ホストやOSの検出に利用されることがあります。
filtered調査パケットがポートまで届いていないため、ポートの開閉を判断できない状態です。routerやfirewallによるパケットフィルタリングの可能性があります。
unfiltered調査パケットは届いているが、ポートの開閉を判断できない状態です。追加で、SYNスキャンやFINスキャンを実施することで判別できる場合もあります。
open|filtered対象ポートがopenなのかフィルタリングされているかを判断できない状態です。FINスキャンやFullスキャンの様に応答を返さないタイプのスキャンで、FireWallなどにより調査パケット自体が破棄されたり、返答時に破棄された場合にopenなのかfilteredなのかを確実に判別できないためです。
closed|filtered対象ポートがclosedなのかフィルタリングされているかを判断できない状態です。

ホストの存在確認

nmap -sP 10.0.2.0/24

pingスキャンにより、存在するホストを検出します。オプションsPは、デフォルトで以下を送信します。

  • ICMPエコーRequest
  • 80番ポートへのTCPパケット

上記の場合、254ホスト分の調査を行いますが、実行時間は僅かです。

公開ポートの確認

nmap -sT -p 80,443 10.0.2.0/24

オプションsTの場合、TCP Connect(Full Open Scan)で、Webサーバーポート(80もしくは443)の公開調査をセグメント内のホストに対して実施します。
パケットのやり取りとしては、以下の3way handshakeとなります。

  1. (自分から) SYN
  2. (相手から) SYN/ACK
  3. (自分から) ACK
  4. (自分から) RST
sudo nmap -sS -p 80,443 10.0.2.0/24

オプションsSの場合、SYN Scan(Half Open Scan)で、Webサーバーを公開しているホストを調査します。
こちらのパケットのやり取りは、以下の通りです。

  1. (自分から) SYN
  2. (相手から) SYN/ACK
  3. (自分から) RST

root権限で実行できる場合は、以下の理由によりSYNスキャンを使用したほうが良いです。

  • 同じ情報を得るのに、高速でパケット量が小さい
  • ポート状態は、open/closed/filteredと明確に区別可能
  • 対象マシンのログに記録される可能性が低くなる

OSの特定

sudo nmap -O 10.0.2.8

リモートから、フィンガープリントという手法を用いて、OSの種類を特定することができます。
対象マシンの設定により情報を取得できない場合もありますが、特定できれば攻撃者としては攻撃方法を選定する重要な手掛かりになります。

利用アプリの検出

sudo nmap -A 10.0.2.8

open状態のポートに対応するサービスとバージョンを特定します。nmap-servicesのデータベースを用いて、数千件のパターン照合により判別してます。
なお、オプションAは、sV+Oオプションと同義(nmap -sV -O …)です。単体ではsVオプションですがOオプションと同時に用いることが多いので、ここではAオプションとして紹介します。

脆弱性の検出

sudo nmap --script vuln 10.0.2.8

対象マシンの脆弱性有無を調査します。脆弱性があれば、結果にCVE番号などが表示されます。

まとめ

Nmapを利用したホスト情報の検出方法について記載しました。
犯人は、上記の様な手段を用い僅かなスキをついてサーバーに侵入してきます。
不要なopen/closedポートおよび脆弱性はないか等、サーバーを公開する前には十分な確認と対策を実施し、安心安全な運用を心がけていきましょう。

以上、Nmapの使い方基礎でした。

コメント