Nikto のスキャンリクエスト間に遅延を設定する

Kali LinuxBeginner
オンラインで実践に進む

はじめに

Nikto は、人気のあるオープンソースのウェブサーバー スキャナーであり、6700 を超える潜在的に危険なファイル/プログラム、1250 を超えるサーバーの古いバージョン、および 270 を超えるサーバーのバージョン固有の問題を含む、複数の項目に対してウェブサーバーに対して包括的なテストを実行します。

デフォルトでは、Nikto は可能な限り高速にターゲットサーバーにリクエストを送信します。これは効率的ですが、セキュリティシステムによって容易に検出される可能性があり、ターゲットサーバーに大きな負荷をかける可能性があります。-Pause オプションを使用すると、各テストの間に遅延を追加することで、スキャンのペースを制御できます。

この実験では、Nikto の -Pause オプションを使用して、より遅く、より侵襲性の低いスキャンを実行する方法を学びます。

-Pause オプションの目的を理解する

このステップでは、Nikto の -Pause オプションについて学びます。このオプションは、各スキャンリクエスト間の遅延を秒単位で指定するために使用されます。これは、ステルススキャンを実行する場合や、大量のリクエストをうまく処理できない可能性のある脆弱なシステムをテストする場合に重要な機能です。

まず、Nikto のヘルプ情報を表示して、-Pause オプションの説明を確認しましょう。これは、ツールのオプションの機能を理解するための良い習慣です。

ターミナルで次のコマンドを実行します。

nikto -Help

出力の中から -Pause オプションを探してスクロールしてください。その機能について説明した記述が表示されます。

...
-Pause <seconds>      テスト間のポーズ(秒、整数または浮動小数点数)
...

これにより、-Pause が各テストの間に待機する秒数を表す数値(整数または浮動小数点数)を受け入れることが確認できます。

テスト間に 5 秒間待機する -Pause 5 を使用したスキャンの実行

このステップでは、-Pause オプションを使用して Nikto スキャンを実行します。私たちの実験環境には、スキャン対象として http://localhost:8000 で実行されているシンプルなウェブサーバーがあります。

各テスト間に 5 秒間のポーズを設定します。これは、Nikto が次のリクエストを送信する前に、1 つのリクエストを送信した後 5 秒間待機することを意味します。

スキャンを開始するには、ターミナルで次のコマンドを実行します。

nikto -h http://localhost:8000 -Pause 5

コマンドの内訳を見てみましょう。

  • nikto: Nikto スキャナーを実行するためのコマンドです。
  • -h http://localhost:8000: -h (または -host) オプションは、ターゲットホストを指定します。この場合、ローカルテストサーバーです。
  • -Pause 5: これは、Nikto に実行する各テストの間に 5 秒間一時停止するように指示します。

コマンドを実行すると、スキャンが開始されます。ターミナルに結果が表示されます。

スキャンのペースが遅くなったことを確認する

このステップでは、前のステップで実行したコマンドの出力を確認します。ここでは新しいコマンドを実行する必要はありません。

Nikto スキャンが実行されているターミナルを見てください。個々のテストの結果を表す新しい出力行が、デフォルトのスキャンよりもはるかに遅く表示されることに気づくはずです。画面に新しいテスト結果が表示されるたびに、顕著な 5 秒間の間隔があります。

以下は、各行が遅延後に表示される出力の例です。

- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          127.0.0.1
+ Target Hostname:    localhost
+ Target Port:        8000
+ Start Time:         2023-10-27 10:30:00 (GMT0)
---------------------------------------------------------------------------
+ Server: SimpleHTTP/0.6 Python/3.10.6
+ The anti-clickjacking X-Frame-Options header is not present.
+ The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type.
... (5秒ごとに新しい行が表示されます) ...

この意図的なペース配分は、-Pause 5 オプションを使用した直接的な結果です。この設定では、完全なスキャンにはかなりの時間がかかる場合があります。ターミナルで Ctrl+C を押すと、いつでもスキャンを停止できます。この実験では、効果を確認するために 1 分間実行させてから、次に進む前に停止させることができます。

これがレート制限ファイアウォールを回避するのにどのように役立つかを分析する

このステップでは、-Pause オプションを使用する主なセキュリティ関連の理由、つまりレート制限防御の回避について説明します。

Web Application Firewall (WAF) や Intrusion Detection System (IDS) など、多くの最新のセキュリティシステムは、防御メカニズムとしてレート制限を採用しています。レート制限は、特定の期間における単一の IP アドレスからのリクエスト数を追跡することによって機能します。リクエスト数が事前に定義されたしきい値(例:1 分あたり 100 リクエスト)を超えると、システムはその IP アドレスを一時的または永続的にブロックする可能性があります。

デフォルトの Nikto スキャンは非常に攻撃的であり、非常に短い時間で数百または数千のリクエストを送信します。この動作は、ほぼ確実にレート制限ルールをトリガーし、スキャンがブロックされ、その結果が不完全で不正確になります。

-Pause 5 を使用すると、スキャンのリクエストレートを 5 秒に 1 リクエストに変更され、これは 1 分あたりわずか 12 リクエストに相当します。このはるかに低いレートは、単純なレート制限防御に見過ごされる可能性がはるかに高く、ブロックされることなくスキャンを正常に完了させることができます。これにより、-Pause オプションは、よりステルスなペネトレーションテストのための貴重なツールとなります。

脆弱または機密性の高いシステムのスキャンにこのオプションを使用する

このステップでは、-Pause オプションのもう 1 つの重要なユースケース、つまり脆弱または機密性の高いシステムを責任を持ってスキャンすることについて説明します。

攻撃的で高速なスキャンは、検出のリスクがあるだけでなく、ターゲットシステムの安定性にも悪影響を与える可能性があります。Web サーバー、特に古い、性能の低い、または設定が不十分なサーバーは、スキャナーからの突然のリクエストの洪水に対処するのに苦労する可能性があります。これにより、パフォーマンスが著しく低下し、アプリケーションが正規のユーザーに対して遅くなったり応答しなくなったりする可能性があります。最悪の場合、Web サービス全体またはサーバー全体がクラッシュする可能性があります。

ライブのプロダクション環境または既知の脆弱なシステムを評価するタスクが与えられた場合、サービス拒否を引き起こすことは非専門的であり、逆効果です。

-Pause オプションを使用することは、責任あるプロフェッショナルなセキュリティ評価を実施する上で重要な部分です。スキャンを遅くすることで、ターゲットサーバーへの負荷を大幅に軽減し、通常の操作を妨げるリスクを最小限に抑えます。これにより、セキュリティテストがビジネスオペレーションに干渉しないことが保証されます。

まとめ

この実験では、-Pause オプションを使用して Nikto Web サーバーのスキャン速度を制御する方法を学びました。

リクエスト間に 5 秒の遅延を設けてスキャンを実行し、スキャンのペースが劇的に遅くなる様子を観察しました。また、このテクニックの主な 2 つの利点についても探りました。

  1. ステルス性: リクエストを遅くすることで、ファイアウォールや侵入検知システムに実装されている単純なレート制限ルールを回避するのに役立ちます。
  2. 安定性: リクエストレートを減らすことで、ターゲットサーバーへの負荷を最小限に抑えます。これは、脆弱なシステム、性能の低いシステム、または重要な本番システムをスキャンする際に非常に重要です。

-Pause オプションを習得することは、より効果的で責任あるセキュリティ専門家になるための重要なステップです。