web-dev-qa-db-ja.com

ペネトレーションテストの実行中にサーバーソフトウェアの名前を特定することは役に立ちますか?

Netcat、curl、またはその他の方法でサーバーソフトウェアの名前を取得することは、本当に便利ですか?

つまり、OSフィンガープリントは、攻撃を調整するために役立ちます。たとえば、OSコマンドインジェクションに関しては、コマンド構文がOSに依存するため、明らかに重要です。しかし、特定のサイトにApacheサーバーがあることがわかっている場合、それは本当に重要ですか?もしそうなら、私にそれを説明できますか?

5
g9999

車のメンテナンスをするときのように、どのコンストラクターを知っているときは、正しいメンテナンスマニュアルを取ります(ホンダシビックのマニュアルでフォードグラナダを修理しようとしないでください)。

特定のシステムを破壊しようとすると、this特定のシステムに役立つ可能性のある既知のエクスプロイトを参照します。

すべてのネットサーバー(SendmailからApache、Samba、wuFTPd、その他すべて)には、攻撃者が以前に発見されたセキュリティ障害を使用して任意のコードを実行できるようにする多数の公開エクスプロイトがあります。すべての重大な障害はすぐにパッチが適用され、新しいバージョンが公開されます...

サーバーがZebulorglub V2.0.1を使用している場合は、Zebulorglub V2.0.0以前のエクスプロイトを試みないでください。ただし、エクスプロイトを試みることはできます。 V2.0.1以上で作業中...

(注:Zebulorglubはダミーの名前です;)

7
F. Hauri

Webサーバー(およびアプリケーションサーバーとDBMS)の正確なバージョンを知ることは、テストを実行するときに非常に役立ちます。

何よりもまず、パブリックエクスプロイトと脆弱性をチェックするときに役立ちます。
有名な例を見てみましょう: kingcopeのkillapache.pl 。このスクリプトは、Apache HTTPサーバーの いくつかのバージョン で見つかった特定の脆弱性を対象としています。これは後でベンダーによって修正されました。
ターゲットホスト上のWebサーバーのバージョンを知っている場合は、バージョンが脆弱であることがわかっている場合にのみパブリックエクスプロイトを使用でき、MicrosoftIISなどのエクスプロイトをテストする必要はありません。 。

さらに、Webサーバーのバージョンを知ることで、デフォルトのリソース(例: Apache's )を利用し、場合によってはそれらを悪用することができます。

同じ原則がアプリケーションサーバーに適用され、さらにはDBMSにも適用されます。たとえば、ターゲットWebアプリケーションで使用されているデータベースのバージョンを知っていると、正しいSQL構文を使用してすぐにテストできます。

2
Gurzo

Owaspテストガイドに従って確実にテストすることの1つと見なされます。サーバーがバージョン番号をアドバタイズしている場合、攻撃者は攻撃の範囲を大幅に減らすことができます。 https://www.owasp.org/index.php/Information_Leakage を参照してください

1
Lucas Kauffman

サーバー名may名前によっては便利です。たとえば、サーバー名が「db3」の場合、その役割はおそらくデータベースサーバーであり、名前が「dev1」の場合、それはおそらく開発サーバーです。それはあなたに何を伝えますか?どちらを最初に攻撃するかがわかる場合があります。

または、実際のドメイン名が含まれている場合は、サーバーの所有者がわかる可能性があり、攻撃の集中に役立つ可能性があります。

サーバーの名前が「galileo」または「sasquatch」の場合、それはおそらく何も教えてくれません。

1
tylerl

tl; dr

はい、サービスフィンガープリントは侵入テスト中に役立ちます。情報収集は侵入テストの重要な部分です(多くの人が最も重要だと言うでしょう)。ターゲット環境についてできることをすべて理解することは、最初の足がかりを得るのに役立つだけでなく、最初の足がかりが得られた後に非常に役立ちます。

詳細な回答

ペネトレーションテスト中に見られる2つの非常に一般的な状況を並べます。1つはテストでOSが何であるか、ポートが開いているかどうかしかわからない場合、もう1つはテスターがサービスに関する詳細情報を取得できる場合です。

  1. ポートは開いていて、OSはわかっていますが、サービスのバージョン情報はわかりません-FTPサービスを検討している場合、サービスに接続して試してみることができる場合があります匿名ログインなどの一般的なFTPチェック。ただし、この時点では、(すべての目的と目的で)これらの一般的なチェックと、サービスに有効な資格情報を取得するようにブルートフォース攻撃などの単純な攻撃に制限されています。

  2. ポートが開いていて、OSがわかっていて、特定のバージョン情報がわかっている-FTPサービスを考慮して、nmap <target> -sVスキャンと言います。サーバーをPwnMeFTP 1.1.3として識別します。これは、サービスの一般的なチェックに制限されなくなったため、非常に便利です。これで、次のような意味のある次のステップを実行できます(他にもあります; D):

    • PwnMeFTP 1.1.3の既知の脆弱性を特定し、エクスプロイトが利用可能かどうかを確認します。これはすぐに勝つ可能性があります。
    • ソフトウェアのコピーを入手して、脆弱性を分析してみてください。オープンソースの場合は、分析用のソースコードをダウンロードし、そうでない場合は、ファジングや逆コンパイルなどの試用版をダウンロードする可能性があります。いずれにしても、ソフトウェアの入手を検討している場合は、その正確なリリースをダウンロードできます(1.1.3 inこの例)、ターゲット環境に一致するラボをセットアップします。脆弱性分析/エクスプロイト開発ラボが意図したターゲットを反映しているほど、実際のエクスプロイトが成功する可能性が高くなります。 サービスバージョン情報がない場合、このプロセスの多くは暗闇の中で無駄なショットに変わる可能性があります
    • 上で述べたように、これは最初の足場が得られた後にも役立つ情報です。たとえば、PwnMeFTP 1.1.3に関連付けられたローカル権限昇格のエクスプロイトがある場合、Webアプリケーションの脆弱性などの別のサービスを介してターゲットで最初のコード実行を取得した後、それを利用してより強力なユーザーに権限を昇格させることができます。
    • 上記の1.で、ブルートフォース攻撃の可能性について説明しました。サービスのバージョンがわかっている場合は、十分な情報に基づいて攻撃を行うことができ、成功する可能性が高くなります。 PwnMeFTPのデフォルトの管理者ユーザーがpwnmeで、デフォルトのパスワードがpwnm3の場合、その資格情報セットを試すのと同じくらい簡単かもしれません。
    • 他にもありますが、私の経験からすると、これらが頭から離れた主なものです。

簡単な逸話として、私たちは最近、数百のIPをカバーするために約1週間でクライアントの侵入テストを行いました。詳細な情報収集を行った結果、自動チェックで見逃されていたサーバー上で稼働しているソフトウェアのバージョン情報を取得することができました。この情報を知ることで、ソフトウェアに関連する脆弱性を特定することができましたが、そのうちのいくつかがありました。これを知って、私たちはこの攻撃パスの操作に数日を費やし、最終的には最後の最後にエクスプロイトを機能させることができました。 バージョン情報がなければ、この期間にはこれは不可能でした

0
deletehead

サーバーヘッダーに加えて、X-Powered-Byなどの貴重な情報を提供できる他のヘッダーがあります。これは、サイトがコーディングされたフレームワーク/言語を見つけるのに役立ちます。特定の言語にのみ適用可能な攻撃ベクトルがあるため、どの攻撃から始めることができるかがわかります。

0
Zzz

ペネトレーションテストについて考えるとき、それは役に立ちますが、それはテストの段階に依存します。これは、このフェーズで収集する情報のカテゴリに分類されます。これは、これに類似した情報を収集する場合です。この情報を使用して、組織のインフラストラクチャをより完全に把握することができます。 Apacheサーバーを発見した場合、潜在的な脆弱性を調査する必要があるプラットフォームと、できればバージョンがわかります。

0
Mark S.