Nmap スキャンを実行し、異なる形式で結果を保存する

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

はじめに

この実験では、強力なネットワークスキャンツールである Nmap を使用して、基本的なネットワーク調査を行う方法を学びます。Nmap はセキュリティ専門家にとって重要なツールで、ネットワーク上のホスト、サービス、潜在的な脆弱性を発見するのに役立ちます。

Nmap のスキャン結果をさまざまな形式で保存する方法を理解することは、セキュリティ評価とレポート作成において重要です。このスキルを習得することで、調査結果を文書化し、チームメンバーと結果を共有し、データを他のツールにインポートし、包括的なセキュリティレポートを作成することができます。この初心者向けの実験では、基本的な Nmap スキャンとさまざまな形式での結果保存方法を案内し、重要なネットワークセキュリティ評価スキルを身につけることができます。

初めての Nmap スキャンを実行し、出力を保存する

このステップでは、基本的な Nmap スキャンを実行し、結果をテキストファイルに保存する方法を学びます。ネットワーク調査活動を文書化することは、発見した内容を追跡し、将来的な参照やレポート作成に役立つため、非常に重要です。したがって、このスキルを習得することは、ネットワークセキュリティに興味のある人にとって不可欠です。

Nmap の基本を理解する

Nmap(Network Mapper の略)は、強力で広く使用されている無料のオープンソースユーティリティです。主な目的は、ネットワークの発見とセキュリティ監査です。Nmap は、生の IP パケットをターゲットのネットワークまたはホストに送信することで動作します。受け取った応答に基づいて、Nmap は多くの情報を把握することができます。ネットワーク上で利用可能なホスト、それらのホストが提供しているサービス(ウェブサーバー、メールサーバーなど)、それらが実行しているオペレーティングシステム、およびその他多くの重要な特性を知ることができます。この情報は、ネットワークのセキュリティ状態を理解しようとするときに非常に貴重です。

スキャン結果用のディレクトリを作成する

まず、ターミナルウィンドウを開きます。デフォルトでは、ターミナルは /home/labex/project ディレクトリにあるはずです。Nmap スキャンのすべての結果を保存するための専用の場所が必要です。これにより、データの整理と管理が容易になります。そこで、次のコマンドを使用してこの目的のためのディレクトリを作成しましょう。

mkdir -p /home/labex/project/scans

mkdir コマンドの -p フラグは非常に便利です。親ディレクトリが存在しない場合でも、ディレクトリが作成されることを保証します。今回の場合、親ディレクトリはすでに存在していますが、将来的により複雑なディレクトリ構造を作成する場合に備えて、このフラグを使用するのは良い習慣です。コマンドが正常に実行されると、何も出力されません。これは正常な動作で、ディレクトリが作成されたことを意味します。

基本的な Nmap スキャンを実行する

デモンストレーションのために、ポート 9999 でローカルホスト(自分のマシン)をスキャンします。実際のネットワークホストをスキャンする場合は、適切な許可が必要です。許可なくスキャンすることは倫理に反し、法的にも問題になる可能性があります。

では、基本的な Nmap スキャンを実行し、出力をテキストファイルに保存しましょう。次のコマンドを実行します。

nmap -p 9999 localhost -oN /home/labex/project/scans/initial_scan.txt

このコマンドを分解して、各部分が何をするかを理解しましょう。

  • nmap: これは Nmap ツールを起動するコマンドです。システムに対して、ネットワークスキャンに Nmap を使用することを指示します。
  • -p 9999: -p オプションは、スキャンするポートを指定するために使用されます。この場合、ポート 9999 をスキャンしています。
  • localhost: これはスキャンのターゲットです。localhost を使用しているので、自分のマシンをスキャンしています。
  • -oN /home/labex/project/scans/initial_scan.txt: -oN オプションは、出力を「通常」形式で保存するために使用されます。パス /home/labex/project/scans/initial_scan.txt は、出力ファイルが保存される場所を指定します。

コマンドを実行した後、次のような出力が表示されるはずです。

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-30 12:00 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000097s latency).

PORT     STATE  SERVICE
9999/tcp closed unknown

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

保存されたスキャン結果を表示する

スキャンを実行し、結果をファイルに保存したので、結果が適切に記録されたかどうかを確認しましょう。これは、cat コマンドを使用して保存されたファイルの内容を表示することで行うことができます。

cat /home/labex/project/scans/initial_scan.txt

表示される出力は、スキャンを実行したときにターミナルに表示された内容と似ているはずです。このファイルは、ネットワーク調査活動の記録として機能します。必要に応じて、情報を確認するためにこのファイルを参照することができます。

スキャン結果を理解する

スキャン結果には、いくつかの重要な情報が含まれています。

  • スキャンが実行された時刻:これにより、ネットワーク調査のタイムラインを追跡することができます。
  • スキャンされたターゲット:今回の場合、localhost でした。
  • ホストの状態:ホストがアップ(到達可能)かダウン(到達不可能)かを示します。
  • 指定されたポートの状態:オープン、クローズ、またはフィルタリングされている可能性があります。オープンなポートは、そのポートでサービスが待機していることを意味し、クローズなポートはサービスが待機していないことを意味し、フィルタリングされたポートは、ファイアウォールまたは他のセキュリティデバイスによってポートがブロックされていることを意味します。
  • そのポートに通常関連付けられているサービス:たとえば、ポート 80 は通常、HTTP サービスに関連付けられています。
  • スキャンの実行時間に関する統計情報:これにより、スキャンにかかった時間の目安がわかります。

これで、最初の Nmap スキャンを成功させ、結果を文書化のためにファイルに保存しました。次のステップでは、Nmap がサポートするさまざまな出力形式を探索します。

Nmap の結果を XML 形式で保存する

このステップでは、Nmap スキャンの結果を XML 形式で保存する方法を学びます。XML(Extensible Markup Language)は構造化データ形式です。これは、各情報が独自のラベル付きの引き出しを持つ整理整頓されたファイリングキャビネットのようなものです。この構造により、他のセキュリティツールやスクリプトがデータを処理しやすくなります。自動化が重要なサイバーセキュリティの世界では、自動化ワークフローに容易に統合できる形式のデータを持つことは非常に価値があります。

異なる出力形式を理解する

強力なネットワークスキャンツールである Nmap は、いくつかの出力形式をサポートしています。各形式には独自の特性と使用例があります。

  1. 通常出力 (-oN): これは人間が読みやすい形式です。前のステップでは、この形式を使用してスキャン結果を理解しやすい方法で表示しました。情報は直感的なテキストベースの方法で提示されます。
  2. XML 出力 (-oX): 前述のように、XML は構造化形式です。タグと要素を使用してデータを階層的に配置します。これにより、他のプログラムが特定の情報を解析して抽出するのに最適な形式になります。
  3. grep 可能な出力 (-oG): この形式は、grep などのコマンドラインツールで容易に処理できるように設計されています。スキャン結果から特定のパターンをすばやく検索したい場合、grep 可能な出力は非常に便利です。
  4. Script Kiddie 出力 (-oS): これは「Script Kiddie」にやさしい形式です。ただし、専門的なセキュリティ評価ではめったに使用されません。

専門的なセキュリティ評価では、XML 形式が頻繁に使用されます。その理由は、他のセキュリティツールにインポートしてさらなる分析を行うことができるからです。たとえば、Nmap スキャンの XML 出力を取得し、脆弱性管理システムで使用して、ネットワークのセキュリティ状態をより詳細に把握することができます。

XML 出力で Nmap スキャンを実行する

では、ローカルホストのポート 9999 で別のスキャンを実行しましょう。今回は、出力を XML 形式で保存します。以下がそのコマンドです。

nmap -p 9999 localhost -oX /home/labex/project/scans/advanced_scan.xml

このコマンドを分解して、各部分が何をするかを理解しましょう。

  • nmap: これは Nmap ツールを実行するコマンドです。すべてのネットワークスキャン操作の起点です。
  • -p 9999: -p オプションは、スキャンするポートを指定するために使用されます。この場合、ポート 9999 をスキャンしています。
  • localhost: これはスキャンするターゲットです。localhost はローカルマシンを指します。つまり、自分のマシンのポート 9999 をスキャンしています。
  • -oX /home/labex/project/scans/advanced_scan.xml: -oX オプションは、Nmap に出力を XML 形式で保存するよう指示します。パス /home/labex/project/scans/advanced_scan.xml は、XML ファイルが保存される場所を指定します。

このコマンドを実行すると、ステップ 1 で見たのと同様の出力が表示されるはずです。ただし、今回は結果が指定されたファイルに XML 形式でも保存されます。

XML 出力を表示する

さっき作成した XML ファイルの内容を見てみましょう。cat コマンドを使用してファイルの内容を表示できます。

cat /home/labex/project/scans/advanced_scan.xml

出力は XML 形式になります。通常の出力とはかなり異なって見えます。XML はタグと要素を使用してデータを構造化します。この構造により、コンピュータが情報を解析しやすくなります。以下は、あなたが見るかもしれない簡略化された例です。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE nmaprun>
<nmaprun scanner="nmap" args="nmap -p 9999 localhost -oX /home/labex/project/scans/advanced_scan.xml" start="1635598800" startstr="Sat Oct 30 12:00:00 2023" version="7.80" xmloutputversion="1.04">
<scaninfo type="syn" protocol="tcp" numservices="1" services="9999"/>
<verbose level="0"/>
<debugging level="0"/>
<host starttime="1635598800" endtime="1635598800">
<status state="up" reason="localhost-response" reason_ttl="0"/>
<address addr="127.0.0.1" addrtype="ipv4"/>
<hostnames>
<hostname name="localhost" type="user"/>
<hostname name="localhost" type="PTR"/>
</hostnames>
<ports>
<port protocol="tcp" portid="9999">
<state state="closed" reason="conn-refused" reason_ttl="0"/>
<service name="unknown" method="table" conf="3"/>
</port>
</ports>
<times srtt="97" rttvar="5000" to="100000"/>
</host>
<runstats>
<finished time="1635598800" timestr="Sat Oct 30 12:00:00 2023" elapsed="0.07" summary="Nmap done at Sat Oct 30 12:00:00 2023; 1 IP address (1 host up) scanned in 0.07 seconds" exit="success"/>
<hosts up="1" down="0" total="1"/>
</runstats>
</nmaprun>

XML 出力の利点

XML 形式にはいくつかの利点があります。

  1. 構造化データ: XML の情報は階層構造で整理されています。各要素は他の要素と明確な関係を持っているため、データの構成を理解しやすくなります。
  2. 機械可読性: 他のプログラムやスクリプトは XML データを容易に解析できます。これにより、セキュリティワークフロー内のさまざまなツールとのシームレスな統合が可能になります。
  3. 統合: XML 出力は、Metasploit、OpenVAS、またはカスタムセキュリティダッシュボードなどの他のセキュリティツールにインポートできます。これにより、Nmap スキャンの結果を他のセキュリティ分析ツールと組み合わせることができます。
  4. データ変換: XML データを HTML や PDF などの他の形式に変換することができます。これは、共有や提示が容易なレポートを作成するのに便利です。
  5. データ抽出: XML 解析ツールを使用して、XML ファイルから特定の情報を抽出することができます。たとえば、すべてのオープンポートや特定のホストの詳細を抽出することができます。

実用的なアプリケーション

実際のセキュリティ評価では、スキャン結果を XML 形式で保存することが非常に有用です。以下はいくつかの実用的なアプリケーションです。

  • 脆弱性管理システムへのインポート: XML 出力を脆弱性管理システムにインポートして、ネットワークのセキュリティ脆弱性の包括的なビューを取得することができます。
  • XSLT 変換を使用したカスタムレポートの作成: XSLT(Extensible Stylesheet Language Transformations)を使用して、XML データをカスタムレポートに変換することができます。これにより、あなたのニーズに最も関連する方法で情報を提示することができます。
  • 特定の情報を抽出する自動化スクリプトでの処理: XML ファイルを解析して特定の情報(特定のサービスでオープンポートを持つすべてのホストなど)を抽出する自動化スクリプトを作成することができます。
  • チームメンバーやクライアントとの構造化データの共有: XML データは他の人と簡単に共有できます。チームメンバーやクライアントは、構造化データを自分たちの分析に使用することができます。
  • ネットワーク調査データのデータベースの維持: XML ファイルをデータベースに保存して、時間の経過とともにネットワーク調査活動の記録を保持することができます。

Nmap の出力を異なる形式で保存する方法を学ぶことで、ネットワークセキュリティスキルを構築する上で重要な一歩を踏み出しました。これらの形式により、調査結果を効果的に文書化し、ワークフロー内の他のセキュリティツールと統合することができます。

まとめ

この実験では、Nmap を使用したネットワーク調査の文書化に必要な重要なスキルを学びました。ローカルホストの特定のポートに対して基本的な Nmap スキャンを成功させ、スキャン結果を通常のテキスト形式と XML 形式の両方で保存しました。テキスト形式は人間が読みやすく、XML 形式は他のセキュリティツールとの統合や自動処理を容易にします。

これらのスキルは、セキュリティ専門家が調査結果を文書化し、レポートを作成し、結果を共有するために不可欠です。スキャン結果を異なる形式で保存することで、ネットワーク調査データを効率的に管理し、セキュリティワークフローにシームレスに統合することができます。サイバーセキュリティの分野で経験を積むにつれて、セキュリティテストの適切な文書化は、テスト自体と同じくらい重要であることがわかるでしょう。Nmap の出力をさまざまな形式で保存できる柔軟性により、さまざまなシナリオに最適な形式を選択することができます。