Nmap で現実世界のシナリオをシミュレートする

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

はじめに

この実験では、検出を回避し、スキャンの元を隠す手法を用いて、Nmap で実世界のシナリオをシミュレートする方法を学びます。これには、デコイアドレスの使用と IP アドレスのスプーフィングを含み、ターゲットがスキャンの実際のソースを特定するのを難しくします。

この実験では、ランダムなデコイ IP アドレスを追加するための -D オプションと、ソース IP アドレスをスプーフィングするための -S オプションの使用方法を案内します。また、断片化、スクリプトとのスキャンの組み合わせ、結果の保存、回避効果と実世界の適用可能性の分析についても、Xfce 端末環境内で検討します。

nmap -D RND:5 -S 192.168.1.100 192.168.1.1 を使ったデコイと偽装を伴うスキャン

このステップでは、Nmap を使ってデコイアドレスと IP アドレスのスプーフィングを行うスキャン方法を検討します。この手法は、スキャンの元を隠し、ターゲットが実際のソースを特定するのを難しくするのに役立ちます。

デコイとスプーフィングの理解

  • デコイ:Nmap を使うと、スキャンが自分自身の IP だけでなく、複数の IP アドレスから送信されているかのように見えるようにすることができます。これは、スキャンに「デコイ」アドレスを追加することで達成されます。ターゲットは、これらのデコイアドレスと実際の IP からのトラフィックを見ることになり、実際のスキャナを特定するのが難しくなります。
  • スプーフィング:IP アドレスのスプーフィングとは、Nmap が送信するパケットのソース IP アドレスを変更することです。これにより、スキャンが自分自身の異なる IP アドレスから送信されているかのように見えるようになります。

重要な留意点

  • スプーフィングには root 特権が必要です。なぜなら、これはネットワークパケットを低レベルで操作するためです。
  • 自分が制御していないスプーフされたアドレスを使用すると、ネットワークの混乱を引き起こす可能性があり、また、不道徳または違法と見なされる場合があります。注意して、許可された環境でのみスプーフィングを使用してください。
  • -D オプションはスキャンにデコイを追加し、-S オプションは特定のソース IP アドレスを設定します。

実際の例

デコイとスプーフィングを使ったスキャンを行いましょう。この例では、-D オプションを使って 5 つのランダムなデコイ IP アドレス (RND:5) を追加し、-S オプションを使ってソース IP アドレスを 192.168.1.100 にスプーフィングします。対象の IP アドレス 192.168.1.1 をスキャンします。

  1. 端末を開く:LabEx VM で Xfce 端末を起動します。

  2. Nmap コマンドを実行する

    sudo nmap -D RND:5 -S 192.168.1.100 192.168.1.1
    
    • sudo:これは必要です。なぜなら、スプーフィングには root 特権が必要だからです。
    • -D RND:5:これは、Nmap に 5 つのランダムな非予約 IP アドレスをデコイとして使用するように指示します。
    • -S 192.168.1.100:これは、ソース IP アドレスを 192.168.1.100 に設定します。:この IP アドレスは示すためのものです。実際のシナリオでは、この IP アドレスを使用する許可があることを確認する必要があります。
    • 192.168.1.1:これは、対象の IP アドレスです。
  3. 出力を確認する

    出力には、Nmap がスキャンを実行している様子が表示されます。デコイとスプーフィングを使用しているため、ターゲットがスキャンのソースを正確に特定するのは難しくなります。

    Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:00 UTC
    Nmap scan report for 192.168.1.1
    Host is up (0.00020s latency).
    Not shown: 999 closed ports
    PORT   STATE SERVICE
    22/tcp open  ssh
    
    Nmap done: 1 IP address (1 host up) scanned in 0.10 seconds
    

    :特定の出力は、対象のシステムとネットワーク構成によって異なります。

nmap -f -D RND:3 127.0.0.1 で断片化を追加する

このステップでは、Nmap を使ってスキャンに IP 断片化を追加する方法を学びます。断片化は、完全なパケットを分析することに依存する一部のファイアウォールや侵入検知システム (IDS) を回避するために使用できます。

IP 断片化の理解

IP 断片化とは、パケットをより小さなピース(断片)に分割するプロセスで、それにより最大伝送単位 (MTU) が小さいネットワークリンクを通過できるようになります。断片化されたパケットが目的地に到達すると、断片が元のパケットに再構築されます。

Nmap が断片化を使用する方法

Nmap の -f オプションにより、スキャンで小さな断片化された IP パケットが使用されます。これにより、ファイアウォールや侵入検知システムがパケットを分析する前に再構築する必要があるため、スキャンを検出するのが難しくなります。一部のシステムでは、断片化されたパケットを適切に再構築するように設定されていない場合があり、スキャンがそれらの防御を迂回できるようになっています。

断片化とデコイの組み合わせ

前のステップで紹介したデコイと断片化を組み合わせることができ、スキャンをさらに不明瞭にすることができます。これにより、ターゲットがスキャンのソースと性質を特定するのがさらに難しくなります。

実際の例

断片化とデコイを使ったスキャンを行いましょう。この例では、断片化を有効にするために -f オプションを使用し、3 つのランダムなデコイ IP アドレス (RND:3) を追加するために -D オプションを使用します。対象の IP アドレス 127.0.0.1(localhost)をスキャンします。

  1. 端末を開く:LabEx VM で Xfce 端末を起動します。

  2. Nmap コマンドを実行する

    sudo nmap -f -D RND:3 127.0.0.1
    
    • sudo:これは必要です。なぜなら、断片化には一部のシステムで root 特権が必要だからです。
    • -f:これは、Nmap に断片化された IP パケットを使用するように指示します。
    • -D RND:3:これは、Nmap に 3 つのランダムな非予約 IP アドレスをデコイとして使用するように指示します。
    • 127.0.0.1:これは、対象の IP アドレス(localhost)です。
  3. 出力を確認する

    出力には、断片化とデコイを使って Nmap がスキャンを実行している様子が表示されます。

    Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:05 UTC
    Nmap scan report for localhost (127.0.0.1)
    Host is up (0.0000090s latency).
    Other addresses for localhost (not scanned): ::1
    
    PORT     SERVICE SERVICE
    22/tcp   open  ssh
    331/tcp  open  ipp
    
    Nmap done: 1 IP address (1 host up) scanned in 0.15 seconds
    

    :特定の出力は、対象のシステムとネットワーク構成によって異なります。重要なのは、断片化を使用しながらスキャンが正常に完了することです。

nmap -sC -f 192.168.1.1 を使ってスクリプトと組み合わせる

このステップでは、Nmap のスクリプトエンジンと断片化を組み合わせて、より包括的で潜在的に隠密性の高いスキャンを行います。

Nmap スクリプトの理解

Nmap には強力なスクリプトエンジン(NSE)があり、脆弱性検出、サービス列挙など、様々なタスクを自動化することができます。スクリプトは Lua で書かれており、Nmap の機能を拡張するために使用できます。

-sC オプションは、Nmap にデフォルトのスクリプトセットを実行させるように指示します。これらのスクリプトは、対象システムの概要を提供するように設計されています。

スクリプトと断片化の組み合わせ

前のステップの断片化とスクリプトを組み合わせることで、スクリプトベースのスキャンをブロックまたは検出する可能性のある特定のセキュリティ対策を迂回しようとすることができます。断片化により、侵入検知システムがスクリプトによって生成されるトラフィックを分析するのが難しくなります。

実際の例

デフォルトのスクリプトと断片化を使ったスキャンを行いましょう。この例では、デフォルトのスクリプトを実行するために -sC オプションを使用し、断片化を有効にするために -f オプションを使用します。対象の IP アドレス 192.168.1.1 をスキャンします。

  1. 端末を開く:LabEx VM で Xfce 端末を起動します。

  2. Nmap コマンドを実行する

    sudo nmap -sC -f 192.168.1.1
    
    • sudo:これは必要です。なぜなら、断片化には一部のシステムで root 特権が必要だからです。
    • -sC:これは、Nmap にデフォルトのスクリプトセットを実行するように指示します。
    • -f:これは、Nmap に断片化された IP パケットを使用するように指示します。
    • 192.168.1.1:これは、対象の IP アドレスです。
  3. 出力を確認する

    出力には、Nmap がスクリプトを実行し、断片化を使用してスキャンを行っている様子が表示されます。スクリプトの出力には、対象システムに関する追加情報、たとえばサービスバージョン、潜在的な脆弱性などが提供されます。

    Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:10 UTC
    Nmap scan report for 192.168.1.1
    Host is up (0.00020s latency).
    Not shown: 999 closed ports
    PORT   STATE SERVICE
    22/tcp open  ssh
    | ssh-hostkey:
    |   2048 SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (RSA)
    |_  256 SHA256:yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy (ECDSA)
    Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
    
    Nmap done: 1 IP address (1 host up) scanned in 5.20 seconds
    

    :特定の出力は、対象のシステムとネットワーク構成によって異なります。重要なのは、スキャンが正常に完了し、断片化を使用し、デフォルトのスクリプトを実行することです。ssh-hostkey スクリプトはデフォルトのスクリプトセットの一部であり、SSH ホストキーに関する情報を提供します。

nmap -D RND:5 -oN scenario.txt 127.0.0.1 でシナリオ結果を保存する

このステップでは、Nmap スキャンの結果をファイルに保存する方法を学びます。これは、あなたの発見を文書化したり、後で結果を分析したり、他の人と共有したりするのに役立ちます。

Nmap 出力オプションの理解

Nmap は、さまざまな形式でスキャン結果を保存するためのいくつかのオプションを提供しています。-oN オプションは、「通常の」人が読みやすい形式で結果を保存します。これは一般的な使用に最も一般的な形式です。

スキャン結果をファイルに保存する

スキャン結果をファイルに保存するには、-oN オプションの後にファイル名を指定します。たとえば、-oN results.txt は、results.txt という名前のファイルに結果を保存します。

デコイと出力の保存の組み合わせ

前のステップのデコイ技術と出力の保存を組み合わせることができます。これにより、隠密性の高いスキャンを行ってから、結果を保存して後で分析することができます。

実際の例

デコイを使ったスキャンを行い、scenario.txt という名前のファイルに結果を保存しましょう。この例では、-D オプションを使って 5 つのランダムなデコイ IP アドレス (RND:5) を追加し、-oN オプションを使って結果を scenario.txt に保存します。対象の IP アドレス 127.0.0.1(localhost)をスキャンします。

  1. 端末を開く:LabEx VM で Xfce 端末を起動します。

  2. Nmap コマンドを実行する

    sudo nmap -D RND:5 -oN scenario.txt 127.0.0.1
    
    • sudo:これは必要です。なぜなら、デコイには一部のシステムで root 特権が必要だからです。
    • -D RND:5:これは、Nmap に 5 つのランダムな非予約 IP アドレスをデコイとして使用するように指示します。
    • -oN scenario.txt:これは、Nmap に結果を通常の形式で scenario.txt という名前のファイルに保存するように指示します。
    • 127.0.0.1:これは、対象の IP アドレス(localhost)です。
  3. 出力を確認する

    出力は以前のスキャンと同様になりますが、結果は現在のディレクトリ(~/project)の scenario.txt ファイルにも保存されます。

    Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:15 UTC
    Nmap scan report for localhost (127.0.0.1)
    Host is up (0.0000090s latency).
    Other addresses for localhost (not scanned): ::1
    
    PORT     STATE SERVICE
    22/tcp   open  ssh
    631/tcp  open  ipp
    
    Nmap done: 1 IP address (1 host up) scanned in 0.15 seconds
    
  4. ファイルを確認する

    cat コマンドを使って、ファイルが作成され、スキャン結果が含まれていることを確認できます。

    cat scenario.txt
    

    これにより、端末に scenario.txt ファイルの内容が表示されます。

Xfce 端末での回避効果を確認する

このステップでは、前のステップで使用した回避手法の有効性を検討します。これは、これらの手法がセキュリティ対策を迂回するのにどのように役立つかを議論する概念的なステップです。コントロールされた実験環境にいるため、回避を確実に証明することはできませんが、原則について議論することができます。

回避手法の理解

回避手法は、ファイアウォール、侵入検知システム(IDS)、侵入防止システム(IPS)などのセキュリティシステムによる検出を回避するために使用される方法です。Nmap は、以下を含むいくつかの回避オプションを提供しています。

  • デコイ:複数の IP アドレスからスキャンが行われているかのように見せることで、実際のソースを特定するのが難しくなります。
  • 断片化:スキャントラフィックをより小さなパケットに分割することで、特定の種類のトラフィックをブロックするように構成されたり、断片化されたパケットの再構築に困難があるようなファイアウォールを迂回することができます。
  • スプーフィング:異なるソース IP アドレスを使用して実際の IP アドレスを隠すこと。
  • スクリプト:よりターゲット化された、潜在的に隠密性の高いスキャンを実行するためにスクリプトを使用すること。

手法の検討

前のステップで使用した手法を検討しましょう。

  1. **デコイとスプーフィング (nmap -D RND:5 -S 192.168.1.100 192.168.1.1)**:このコマンドは 5 つのランダムなデコイを使用し、ソース IP アドレスを偽装しました。これにより、対象がスキャンの真のソースを特定するのが難しくなります。IDS は異なる IP アドレスからの複数の接続を見ることがあり、トラフィックを関連付けて攻撃者を特定するのが難しくなります。
  2. **断片化とデコイ (nmap -f -D RND:3 127.0.0.1)**:このコマンドは断片化とデコイを使用しました。断片化は、特定の種類のトラフィックをブロックするように構成されたり、断片化されたパケットの再構築に困難があるようなファイアウォールを迂回するのに役立ちます。デコイはさらにスキャンのソースを不明瞭にします。
  3. **スクリプトと断片化 (nmap -sC -f 192.168.1.1)**:このコマンドはスクリプトと断片化を組み合わせました。断片化は、特定の種類のトラフィックをブロックするように構成されたり、断片化されたパケットの再構築に困難があるようなファイアウォールを迂回するのに役立ちます。スクリプトはよりターゲット化されたスキャンを可能にします。
  4. **結果の保存 (nmap -D RND:5 -oN scenario.txt 127.0.0.1)**:このコマンドは、デコイ付きのスキャン結果をファイルに保存しました。これは、あなたの発見を文書化し、後で結果を分析するのに役立ちます。

実験環境の制限

LabEx VM 環境では、テスト対象となる本物のファイアウォールや IDS がありません。したがって、これらの手法が検出を回避するのに有効であることを確実に証明することはできません。ただし、これらの手法の背後にある原則と、現実のシナリオでどのように使用できるかを理解することができます。

議論のポイント

以下の質問を考えてみてください。

  • ファイアウォールや IDS はどのようにしてこれらの回避手法を検出するか?
  • Nmap には他にどのような回避手法があるか?
  • 回避手法を使用するときの倫理的な考慮事項は何か?

このステップは、回避手法の有効性とセキュリティへの潜在的な影響について批判的に考えることを促すために設計されています。

Xfce 端末における現実世界での適用可能性を分析する

このステップでは、この実験で検討した Nmap の手法の現実世界での適用可能性を分析します。これは、現実世界のシナリオでこれらの手法を使用する際の倫理的および実用的な考慮事項に焦点を当てた概念的なステップです。

倫理的な考慮事項

実用的な応用について議論する前に、倫理的な考慮事項に対処することが重要です。Nmap を使用する場合、特に回避手法を使用する場合、自分が所有または管理していないシステムに無断で実行すると、不倫理または違法と見なされる場合があります。いつも、任意のネットワークまたはシステムをスキャンする前に明示的な許可を得てください。

現実世界のシナリオ

倫理的な懸念にもかかわらず、Nmap はさまざまな現実世界のシナリオで正当な用途がある強力なツールです。

  1. ネットワークセキュリティ監査:セキュリティ専門家は、Nmap を使用してネットワークのセキュリティ状況を評価します。彼らは、開いているポート、実行中のサービス、潜在的な脆弱性を特定することができます。回避手法を使用して、現実世界の攻撃をシミュレートし、セキュリティコントロールの有効性をテストすることができます。
  2. 脆弱性評価:Nmap を使用して、システムやアプリケーションに既知の脆弱性を特定することができます。Nmap と脆弱性データベースを組み合わせることで、セキュリティ専門家は潜在的なセキュリティリスクを予防的に特定して対処することができます。
  3. 侵入検知:Nmap を使用して、ネットワーク上の不正なアクセス試行や悪意のある活動を検出することができます。ネットワークトラフィックを監視し、スキャンパターンを分析することで、セキュリティ専門家は潜在的なセキュリティインシデントを特定して対応することができます。
  4. ネットワークマッピング:Nmap を使用して、ネットワークの詳細なマップを作成することができます。この情報は、ネットワークの性能を向上させ、接続性の問題をトラブルシューティングし、ネットワークのアップグレードを計画するために使用することができます。
  5. コンプライアンステスト:Nmap を使用して、ネットワークがセキュリティポリシーおよび規制に準拠していることを検証することができます。ネットワークをスキャンして結果を分析することで、セキュリティ専門家はネットワークが必要なセキュリティ基準を満たしていることを確認することができます。

制限と対策

回避手法は完全ではないことに注意することが重要です。セキュリティシステムはこれらの手法を検出して防止するために絶えず進化しています。一般的な対策には以下が挙げられます。

  • 侵入検知システム(IDS):IDS は、ポートスキャンや断片化などの疑わしいネットワークトラフィックパターンを検出することができます。
  • ファイアウォール:ファイアウォールは、不正なネットワークアクセスをブロックし、悪意のあるトラフィックをフィルタリングすることができます。
  • ハニーポット:ハニーポットは、攻撃者を引き付けて彼らの手法に関する情報を収集するためのデコイシステムです。
  • ログ分析:システムログを分析することで、疑わしい活動や潜在的なセキュリティ侵害を特定することができます。

結論

Nmap はネットワークセキュリティに幅広い応用がある多用途のツールです。ただし、Nmap を責任感を持って倫理的に使用することが重要です。任意のネットワークまたはシステムをスキャンする前に常に許可を得て、自分の行動の潜在的な法律的および倫理的な結果を認識してください。回避手法の制限とそれを検出するために使用される対策を理解することは、効果的なネットワークセキュリティに不可欠です。

まとめ

この実験では、Nmap で現実世界のシナリオをシミュレートする手法を検討し、スキャンの元を隠すことに焦点を当てました。-D オプションを使ってデコイアドレスを使用して、スキャンが複数の IP から発信されているかのように見せる方法、および -S オプションを使ってソース IP アドレスを偽装する方法(root 特権が必要)を学びました。

さらに、-f オプションを使って断片化を追加し、-sC を使ったデフォルトのスクリプトスキャンと組み合わせ、-oN オプションを使ってスキャン結果をファイルに保存する練習を行いました。この実験は、回避の有効性を検討し、Xfce 端末での現実世界での適用可能性を分析することで終了しました。