Nmap を使用した情報収集

NmapBeginner
オンラインで実践に進む

はじめに

ペネトレーションテスト(侵入テスト)のプロセスにおいて、情報収集フェーズは最も重要な段階の一つです。この実験では、情報収集のためのツール使用方法に焦点を当てます。ターゲットホストに関する情報を収集すればするほど、ペネトレーションテストの成功率は高まります。Kali Linux システムには、いくつかのペネトレーションテストツールがプリインストールされています。これらのツールを使用することで、情報収集の基本的なステップを段階的に習得していきます。

本コースは実践的な実験チュートリアルです。実験中の操作を理解しやすくするため、情報セキュリティの理論的な内容を適宜補足し、学習と並行して読むべき有益な記事を紹介します。

ターゲットホストのオープンポートスキャン

このステップでは、ツールを使用してターゲットホストのオープンポートをスキャンする方法を紹介します。

ペネトレーションテストのプロセスでは、ターゲットホストのオープンポートを把握することが不可欠です。Kali Linux には、標準的なポートスキャニングツールとして Nmap と Zenmap が用意されています。ここでは、主にこれら2つのツールの使用方法を紹介します。

まず、実験環境を起動しましょう。ホストマシンは Ubuntu(現在接続しているデスクトップ)であり、Docker と QEMU 仮想環境がインストールされています。これらはそれぞれ Kali Linux コンテナと Metasploitable2 ターゲットマシンのプラットフォームを提供します。

LabEx ホストマシン上で、デスクトップの xfce ターミナルをダブルクリックし、以下のコマンドを入力して Metasploitable2 を起動します。

sudo virsh start Metasploitable2

ターゲットマシンの起動には1〜3分かかる場合があります。

ターゲットマシンに ping を送信して、稼働していることを確認します(Ctrl-C で ping を終了します)。

ping 192.168.122.102

次に、Kali コンテナを起動して bash インターフェースに入り、ping 操作を実行してネットワーク接続を確認します。

docker run -ti --network host b5b709a49cd5 bash

ネットワーク接続を確認するために ping 操作を実行します(Ctrl-C で ping を終了します)。

ping 192.168.122.102

これで両方の実験環境が起動しました。ペネトレーションテストを開始できます。

注意: 誤って現在の bash を終了すると、Kali コンテナは自動的に停止します。その場合は、ホストマシンで再度 docker run -ti --network host b5b709a49cd5 bash コマンドを実行して新しい Kali コンテナを起動し、bash に入って実験を継続してください。

TCP ポートスキャンツール: Nmap

Nmap は、ネットワーク探索およびセキュリティスキャンプログラムです。システム管理者や個人は、このソフトウェアを使用して大規模なネットワークをスキャンし、どのホストが稼働しているか、どのようなサービスを提供しているかといった情報を取得できます。

Nmap は、UDP、TCP Connect()、TCP SYN(ハーフオープンスキャン)、FTP プロキシ(バウンス攻撃)、Idle スキャン、ICMP、FIN、ACK スキャン、Xmas Tree、SYN スキャン、Null スキャンなど、多くのスキャン技術をサポートしています。

Nmap には4つの基本機能があります。

  • ホストディスカバリ(ホストの検出)
  • ポートスキャン
  • バージョン検出
  • オペレーティングシステム(OS)検出

nmap ツールを使用して、以下のコマンドを入力し、ポートスキャンを実行してターゲットマシンのオープンポートに関する情報を取得します。

nmap 192.168.122.102

Zenmap: Nmap のグラフィカルユーザーインターフェース

Zenmap は、Nmap プロジェクトによって開発された Nmap 公式のグラフィカルユーザーインターフェースです。Zenmap は Python で書かれたオープンソースかつ無料の GUI であり、さまざまなオペレーティングシステム(Windows/Linux/Unix/Mac OS など)で動作します。Zenmap は、Nmap の操作をより簡略化することを目的としています。一般的な操作はプロファイルとして保存でき、スキャン時にプロファイルを選択することで、異なるスキャン結果を比較するのに便利です。また、ネットワークトポロジーのグラフィカル表示も提供します。

注意: LabEx 環境では Kali コンテナを使用しているため、現時点ではグラフィカルインターフェースは使用できません。

ターゲットホストの基本情報の取得

このステップでは、ツールを使用してターゲットホストのオペレーティングシステムなどの基本情報を取得する練習をします。

この段階では、ターゲットホストのオペレーティングシステムに関する基本情報を可能な限り収集する必要があります。これにより、ペネトレーションテストの成功率が高まります。情報収集とはフィンガープリント(指紋採取)のことであり、Nmap の -O-sV パラメータのようなアクティブなフィンガープリントツールを使用します。フィンガープリントは高度に聞こえるかもしれませんが、実際にはターゲットホストの OS バージョンやアプリケーションバージョンを特定し、OS レベルやアプリケーションレベルでの脆弱性をさらに検出するためのプロセスです。

アクティブフィンガープリントツール

ターゲットホストのオペレーティングシステムを取得するには、以下のコマンドを使用します。

nmap -O 192.168.122.102

Kali ターミナルでコマンドを実行し、ターゲットマシンの情報を確認します。ターゲットマシンの IP アドレスは 192.168.122.102 です。

ターゲットホストのポートサービス情報を取得するには、以下のコマンドを使用します。

nmap -sV 192.168.122.102

パッシブフィンガープリントツール

p0f のようなパッシブフィンガープリントツールは、ターゲットに対して特定のプローブデータを送信せず、受動的にデータを受信・分析します。そのため、一般的に検出されることはありません。

p0f はネットワーク分析において強力であり、NAT、ロードバランシング、アプリケーションプロキシなどの分析に使用できます。

p0f によって特定される主な情報には以下が含まれます。

  • オペレーティングシステムのタイプ、ポート
  • NAT モードで動作しているかどうか
  • ファイアウォールの背後で動作しているかどうか
  • ロードバランシングモードで動作しているかどうか

Kali ターミナルで以下のコマンドを実行し、p0f を使用してターゲットホストを観察します。p0f は有効なパケットフィルタ式を期待するため、host キーワードが必要です。

p0f host 192.168.122.102

ステルススキャン(TCP ハーフオープンスキャン)

Kali ターミナルで以下のコマンドを実行し、ステルススキャンを実行します。

nmap -sS 192.168.122.102

この手法の利点は、検出が困難でステルス性が高いことです。一般的に、ターゲットコンピュータに記録を残しません。

TCP Connect スキャン

Kali ターミナルで以下のコマンドを実行し、TCP Connect スキャンを実行します。

nmap -sT 192.168.122.102

このタイプのスキャンはほとんどのシステムで記録されますが、ステルススキャンよりも多くの情報を提供できます。

ターゲットサイトのネットワークサービス情報の取得

このステップでは、ターゲットサイトが提供するネットワークサービス情報を取得します。

ネットワークサービス情報の取得

ターゲットホストのネットワークサービスに関する情報を収集することは、ペネトレーションテストの成功率を高めるのに役立ちます。

Firefox ブラウザを開き、アドレスバーに http://192.168.122.102 を入力します。すべてが順調であれば、以下のように表示されます。

LabEx ターゲットサイトのホームページ

amap を使用したターゲットホストの特定ポートのスキャン

amap は、ホスト上の特定のポートをスキャンするために使用されます。LabEx Kali ターミナルで、ターゲットホストのポート 21 をスキャンするコマンドを入力します。

amap -bqv 192.168.122.102 21

smtp-user-enum を使用したユーザー列挙

smtp-user-enum ツールは、主に SMTP ユーザーの列挙に使用されます。LabEx Kali ターミナルで、SMTP ユーザーを列挙するコマンドを入力します。

smtp-user-enum -M VRFY -u root -t 192.168.122.102

まとめ

この実験では、さまざまな一般的なセキュリティツールを使用してターゲットホストに関する情報を収集する練習を行いました。以下の知識ポイントを網羅しました。

  • ツールを使用したターゲットホストのオープンポートスキャン
  • ターゲットホストのオペレーティングシステムなどの基本情報の取得
  • ターゲットサイトが提供するネットワークサービス情報の取得
  • 収集した情報を分析し、潜在的な攻撃ベクトルを特定する

実験を通じて、ペネトレーションテストのプロセスにおいて極めて重要なステップである「情報収集」のために、さまざまなツールを使い分ける方法を学びました。これらのツールと技術を習得することで、ターゲットホストに関するより価値のある情報を収集し、ペネトレーションテストの成功率を高めることができます。