侵入テストを学んでいます。攻撃的なセキュリティに関するMetasploit Unleashedガイドを読みました。 Metasploit Fundamentalsとmsfconsoleの使い方を学びました。
ターゲットの偵察とスキャンの後、次のフェーズに進むのに十分な情報が手に入りました。
私が持っているいくつかの情報は、関連する実行中のサービス、サービスの名前、サービスのバージョン、デバイスのオペレーティングシステム、使用されているファイアウォールなどで開いているポートです)
Msfconsoleを起動しました。
アクセスを得るために収集された情報に基づいて、正しいエクスプロイトとペイロードを見つける必要があります。しかし、私はこれをすべて始める方法がわかりません。
ターゲットで20個のポートが開いていると想定して、ユーザーの操作を必要としないエクスプロイトペイロードを使用して脆弱性をテストしたいと思います。どのエクスプロイトとペイロードを使用する可能性は減少しましたが、多すぎます。各ポートのすべてのエクスプロイトとペイロードを検索してテストするのはよくありません。それで、ターゲットの脆弱性を知らない場合、どうすればいいですか?
自分のしていることに気づき、理解せずにやってみませんか。リモートエクスプロイトは一例にすぎません。エクスプロイトの選択の背後にある概念を知りたい。 AとBのエクスプロイトがターゲットで機能するかどうかを確認する前に、BではなくエクスプロイトAを使用するのはなぜですか?
どのエクスプロイトとペイロードを選択するか、さらに重要なのはなぜかを理解しようとしているのを見るのは素晴らしいことです。それはそれを行う方法です。これにより、中長期的に多くの時間を節約し、より良いペンテスターになるのに役立ちます。
アクセスを得るために収集された情報に基づいて、正しいエクスプロイトとペイロードを見つける必要があります。しかし、私はこれをすべて始める方法がわかりません。
通常、ペイロードは簡単な部分です。これは主に、被害者のシステムで達成しようとしていることに依存します(シェルを取得し、後で接続できるようにバックドアをインストールし、サービス/アプリをDoSするなど)。また、利用可能なオプションの数も少ない特定のエクスプロイトについては、最終的に選択します。
ターゲットで20個のポートが開いていると想定して、ユーザーの操作を必要としないエクスプロイトペイロードを使用して脆弱性をテストしたいと思います。どのエクスプロイトとペイロードを使用する可能性は減少しましたが、多すぎます。各ポートのすべてのエクスプロイトとペイロードを検索してテストするのはよくありません。それで、ターゲットの脆弱性を知らない場合、どうすればいいですか?
適切なエクスプロイトを選択するには、ほとんどの場合、調査を行う必要があります。時には少し、時にはたくさん。もちろん、時間を節約するために、このプロセスを可能な限り効率的に実行したいと考えています(これが主な質問のようです)。
実際のシナリオでは、ホストは通常2、3のポートしか開いていませんが、開いているポートの数が20ほどのポートはほとんどありません。これにより、検索がかなり絞り込まれます。開いている2つの開いているポートについて、それぞれで実行されているソフトウェア(バージョンを含む)を特定し、このソフトウェアの潜在的な脆弱性を特定することをお勧めします(以下の注[1]を参照)。単にシステムにアクセスすることを目的とする場合は、セキュリティコミュニティでよく使われている「ぶら下がっている果物」を求めます(以下の[2]を参照)。つまり、最初に脆弱になる可能性が高いサービスを確認します。たとえば、は一般的にWebアプリケーションであるため、HTTPは通常、最初に確認するサービスの1つです。他の種類のソフトウェアと比較した場合、脆弱性が発生する可能性がはるかに高くなります。 MySQL/SQLサーバーはリストの中央にありますが、SSHサーバーは通常最後になります(最新バージョンを実行している場合)。ただし、これらの決定を行うには、最初にすべてのサービス/バージョンを特定する必要があります。
簡単なターゲットは、サービスタイプ自体に厳密に依存しない場合がありますが、その構成/保守がいかにひどい場合があります。例として、空白、デフォルト、または簡単に推測できる資格情報の使用、明らかなSQLインジェクションの問題、重要なセキュリティパッチの欠如などがあります。これらのほとんどは、さまざまな種類のソフトウェア/サービスに適用されます。
「ぶら下がっている果物」についての詳細な理論はあまりありません。長年にわたって実践的な経験を積むことで、大きな違いが生まれます。 https://www.tenable.com/blog/vulnerabilities-by-common-ports-dashboard で有用な画像を見つけました。共有する価値があります。
HTTP/80、HTTPS/443、およびSMB/445が最も重要な脆弱性の数が最も多く、それらのかなりの割合(55〜90%)が悪用可能であることに注意してください。一方、SSHには多数の高/重要な脆弱性がありますが、実際に悪用できるのはそのうちの3%だけです。
[1]特定のソフトウェアの脆弱性を検索すること自体は小さな科学です。通常は、ソフトウェアとバージョンをvulnerabilityおよび/またはexploitと組み合わせて検索することから始めます。私は他のツールを使用するよりもはるかに速くグーグルを見つけることがよくありますが、もちろん他のツールも使用します:MetaSploit Frameworkのsearch関数、www.exploit-db.comとそのsearchsploitツールはKaliに含まれています https://www.securityfocus.com/vulnerabilities 、特定のソフトウェアベンダーのWebサイト(セキュリティのお知らせ)など。
[2]アクセスできる脆弱性だけでなく、ターゲットシステムのすべての脆弱性を特定して悪用しようとする場合があります。これは、お客様がシステムまたはネットワークをできるだけ安全にすることを望んでいるため、一部のペンテストエンゲージメントに特に当てはまります。そのため、発見されたすべての脆弱性、悪用されたさまざまな方法をリストするレポートを取得することは非常に貴重です(または潜在的に可能性があります)悪用される可能性があります)、修正手順など。1つだけ含めると、お客様はパッチを適用できますが、システムまたはネットワークが侵害される可能性のある他の多くのセキュリティ問題が依然として存在する可能性があります。
マシンで盲目的にエクスプロイトを起動することは正しい方法ではないという点で正しいです。
代わりに、収集したすべてのデータを使用して、脆弱性があるかどうかを確認する必要があります。たとえば、サービス名とバージョンがあります。そのサービスバージョンに既知の脆弱性があるかどうかを(Metasploitまたはその他の脆弱性データベースで)調べます。それはあなたがあなたの選択を絞り込む方法です。