web-dev-qa-db-ja.com

ソフトウェアテストと(Web)侵入テスト

ソフトウェアテストとWebアプリケーション侵入テストの違いについてお聞きします。

私は、ソフトウェアテスト(JIRA/Selenium)とWebアプリペンテスト(BurpSuite、SQLMapなど)の両方の分野で異なるツールを使用していることを認識しています。

また、これらの2つの分野が交差し、ソフトウェアテスターが優れたWebアプリペンテスターに​​なることができるかどうか、またその逆も知りたいですか?

どうもありがとう。

5
Michal Koczwara

私のキャリアの中でこれを行った経験があるので、規律のクロスオーバーに関するあなたの質問の2番目の部分に少し異なるスピンをかけます。

良いペネトレーションテスターは、ハッカーの考え方を持っています。彼らは、彼らが利用できる創造的手段とその知識セットによって、どのセキュリティ保護が導入されているかを打ち破るように働きます。優れたPenTesterは、エンドユーザーのように考えるのではなく、規則、制限、および妨害を回避する方法で考えます。導入されたセキュリティ保護が適切に機能しているかどうかはテストしません。彼らは、ITシステムの設計が脆弱性への対処と緩和に失敗した場所を求めています。

A Software Testerは通常、ソフトウェアが要件に従って適切に実行されることをテストすることに焦点を当てています。その大部分は不快な作業であり、うまくいけば、そのテストを自動化するツールを使用します。完璧なソフトウェアテストは何らかの形ですべてのコード行をテストするため、その多くの面倒な作業により、すべてのコード行をカバーするためのテスト手順がますます作成されています。ほとんどの場合、従来のソフトウェアテストでは、多くの「ネガティブ」/「失敗」テストケースは実行されません。エンドユーザーがソフトウェアを正しく使用すると、ソフトウェアも正しく実行されることが保証されます。エンドユーザーがソフトウェアを正しく使用しなかった場合のテストと、ソフトウェアがそれをどのように処理したかは、通常、ほとんどわかりません。

システムセキュリティテスターまたはソフトウェアセキュリティテスターの専門分野もあります。その人は通常、適合性に焦点を合わせたソフトウェアテスターの両極端とペネトレーションテスターのブレークイットフォーカスの中間に位置する考え方と知識ベースを持っています。通常、システム/ソフトウェアのセキュリティテストでは、セキュリティ機能を正しく使用することで、承認されたエンドユーザーが計画どおりにソフトウェアと対話できることが検証されます。また、通常は、セキュリティ機能の事前定義されたよく知られたINCORRECTの使用のセットをテストします。これにより、誤った使用のログとブロックが発生します。

要約すると:

  • ソフトウェアテスターとシステム/ソフトウェアセキュリティテスターは、通常、システム/ソフトウェアの完全な詳細を知っており、適切に使用した場合の適切な動作を知っているため、通常、かなりの量のクロスオーバーがあります。多くの一般的なエンドユーザーの誤動作。
  • ただし、優れたペネトレーションテスターは、他の2つとは真に異なる考えを持っています...システム/ソフトウェアの適切な動作を気にしません...彼らは巧妙であり、緩和されなかった脆弱性の小さな隙間を探します。
4
cybermike

このような3つのタイプのアクティビティ間の関係を表示する必要があると思います。侵入テストはセキュリティテストのサブタイプであり、ソフトウェアテストのサブタイプでもあります。セキュリティテストは、非常に特殊なタイプの欠陥を扱います。システムの侵害、評判の台無し、パブリックプロファイルの汚損、またはWebアプリケーションの所有者の直接的な経済的損失につながる可能性のあるもの。

あなたの質問の第二部に関して-それは依存します。セキュリティテストでは、クライアント側の部分でも、バックエンドの部分でも、Webサービスの「内部」で発生するプロセスを主に扱います。したがって、GUI /ローカリゼーション/ユーザビリティ/その他のテストをほとんど扱っているのであれば、この経験がセキュリティテスターとしての熟練を助けることになるとは思いません。機能テストは別の問題です。実際、OWASP方法論によれば、セキュリティの欠陥のグループ-ビジネスロジックの欠陥-には、一般的な機能テストに使用するのと同じアプローチが必要です。そのため、その境界はかなりあいまいです。

ただし、一般に、セキュリティテストには、通常、機能テストよりもはるかに多くの技術的な知識が含まれます。そして、後者は依然として、タスクへの体系的なアプローチを実装する学習の形で確固たる基盤を提供し、アクティビティを事前に計画する能力を開発し、IT関連の一般的な知識を身につけることができますが、それらは本当に「交差している」とは言えません。以上」。

1
tis

彼らが実際に何をしているのかを説明することで、かなり単純な言葉で説明します。

私は1人で作業するので、侵入テストから始めましょう!!

ペネトレーションテスターは通常、テストするプロジェクト(あなたの場合はWebアプリケーション)を割り当てられます。彼らはWebサイトを通過し、偵察を行い、Webアプリケーションの重要な機能を見つけようとします。 eコマースWebサイトの場合は、ショッピングカートまたは支払いゲートウェイの場合があります。したがって、PentestersはWebアプリケーションの通常の手順を迂回し、セキュリティの抜け穴を悪用して、エンドユーザーが実行する特権がない特定のものがアクセスまたは実行できるかどうかを確認します。最後に、彼らは調査結果を文書化し、詳細なレポートを作成してクライアントに提供します。ペンテスターは、必要な変更とそれを行うための開発者の仕事のみを提案することに注意してください。

一方、ソフトウェアテスターはより優れたコーディング知識を持ち、開発者が使用するロジックのエラーを見つけようとします。ツールを使用したり手動で実行したりすることもありますが、ロジックと不良コードの改善と互換性の問題に重点を置いています。

したがって、これら2つのフィールドは同じように聞こえるかもしれませんが、互いに非常に異なります。現在、クロスオーバーに関する限り、ソフトウェアテスターはアプリケーションのセキュリティテスターに​​なることができます。これは、アプリケーションコードでセキュリティの欠陥をテストできるのと同じですが、侵入テスターに​​必要なスキルセットはまったく異なります。

0
paU1i

短くて甘い答えは次のようになります:ソフトウェアテストは、コードレビューを中心に展開し、安全なコーディングプラクティスに準拠します。 A ペネトレーションテスターは、さまざまな方法を利用して攻撃をエミュレートし、ターゲットシステム/ネットワークを完全に利用します。

ペネトレーションテスターがネットワーク上の悪用可能なソフトウェア(つまり、バッファーオーバーフロー)を介してシステムにアクセスする可能性があるため、これらは関連しています。

0
Sh1nu11bi

ソフトウェアテストについて:

http://hpfod.com でFortify-On Demandにサインアップすると、動的なセキュリティ分析、静的なセキュリティ分析、モバイルなど、さまざまな製品が提供されていることがわかります。分析。

IBMやCigitalなどの他のいくつかは、このモデルをミラーリングしています。これら3つのベンダーはすべて、Software-Testing-as-a Service(STaaS)機能を提供していますが、侵入テストはありません。これらは、セキュリティに重点を置いたソフトウェアテストです。これは、お金が購入できるappsecの世界で最高のテスト自動化です。

私は品質分野でのテスト自動化に追いついていませんが、3つのベンダーはすべて、ソフトウェアのセキュリティテストに加えて、ソフトウェアの品質テストも行っています。

ソフトウェアのセキュリティテストに関する最良の本は、「ソフトウェアのセキュリティ評価の芸術」であり、ソフトウェアの品質テストについては、「ソフトウェアの破壊方法:テストの実践ガイド」です。私は個人的には、相互に利用できるクロスオーバー技術があると信じています。 OWASP Testing Guide v4または本「The Web Application Hacker's Handbook、2nd Edition」などの無料のリソースを使用したWebアプリケーションのセキュリティテストは、モバイルアプリのセキュリティテストだけでなく、別の分野でもあります。モバイルアプリケーションハッカーのハンドブック」にコンテキストが記載されています。繰り返しになりますが、ソフトウェア品質テストの知識がプロセスに役立つと思います。ただし、これらの本の方法では、テストを侵入テストに変えることはなく、採用されているツールやテクニックによって、侵入テストに変わることもありません。

継続的インテグレーションおよび継続的デリバリー(CI/CD)アプリ開発の世界では、Jenkins、Ant、およびMavenは、OWASP依存性チェックツール(およびOWASP依存性トラックプロジェクト)をappsecに統合しています。 Maven、Ant、Ivyも古い Victims プロジェクトを活用できますが、私はOWASPプロジェクトを好みます。 JavaScriptの場合、OWASP Dependency-Checkツールには、それを部分的にカバーするクラスがありますが、retire.jsプロジェクトは追加の作業を提供します。 OWASP ESAPI、Spring Securityなどのフレームワークレベルの強力なappsec統合や、Node.jsまたはLusca(ヘルメット付き)、Kraken.js、Sails.jsなどのExpress統合可能ないくつかのライブラリもあります。コンポーネントレベルの改善についても話しますが、それは別の会話にまかせましょう。要約すると、ソフトウェアレベルでのappsecは、セキュリティテストよりもTDD(ユニットレベルで、セキュリティの目的には役に立たない)、構築、およびビルドについてです。

侵入テストについて:

侵入テストは完全に別のトピックです。多くのソフトウェアテスターが、どんなに優れていても、侵入テストの専門家になるとは思いません。アプリとネットワークの深い知識(ネットワークエンジニアリング、ネットワークセキュリティなど)、フィンガープリンティング、列挙、サービス識別、プロトコル、高度な回避手法(AET)、ソーシャルエンジニアリング(スピアフィッシングなど)を含む、侵入テストには多くの側面があります。 、水飲み場攻撃(例:TDSとして知られるトラフィック分散システム)、ボットネット(例:DGAとして知られるドメイン生成アルゴリズム)など深いシステム分析に必要な知識はかなり独特です。私は、すべてのコンポーネントをビットレベルとパターンレベルまで深く理解して分析するために何もせずに立ち止まる人々にのみ制限されていると思います。これには膨大な時間と忍耐が必要です。侵入テストの考え方に「切り替える」ためには、アプリ開発やソフトウェア品質の実践の非公式な学習の進行をあきらめる必要があります。

侵入テスターに​​なるための最良の方法は、Offensive SecurityとCorelanのすべての資料に目を通し、BlackHat Trainingで利用できるものなど、一流のコースに参加することです。複数のDerbyconsに参加でき、IrongeekのすべてのDerbyconビデオに目を通し、資料の95%を発表者と同じくらい深く理解すると、侵入テストでマークを付けることができます。

現時点では、Webペネトレーションテストに特化したくないでしょう。 1993年から2006年までの期間から、これは価値のある追求だったかもしれません。問題は、現在、Javaアプレット、Webサービス、Ajax、Adobe Flash、Silverlight、WCF、Apache Flexなど)の多くのテクノロジーが使用されていることであり、これらには完全な浸透が必要です。知識をテストします。ウェアラブル、IoT、デジタルウォレット、モバイルデバイス、モバイルアプリ、およびこれらすべての他の統合可能なコンポーネントを備えた世界に特化することで逃れることはできません。侵入テストは、システム全体のアプローチを取る必要があります。分析に重点を置いたモデルとフレームワークによって。

真の侵入テスト担当者は、敵のシミュレーションで自分の能力を「次のレベルに」引き上げることもできます。 [〜#〜] opfor [〜#〜] は、Red Teaming Analysis(RTA)やMultiple Scenarios Generationなどの分析ツールや手法を採用する方法を知っています。 2015年には、これは、さまざまな制御と対策、および人間の要素をバイパスできることを意味します。これらは、彼らを狩る脅威ハンターを狩るリスクハンターです。これには、ソーシャルエンジニアリング、ネットワーク/ウェブ/アプリの浸透などよりもはるかに多くのことが含まれます。それは、引き出し、調査、TECHINT、FININT、CI HUMINTを超えることもできます。人間、サイバー、および物理的な要素を表すことができるハイブリッド社会技術システムモデルがあります。これらの動的モデルは、通常、ゲーム理論、欺瞞(つまり、シミュレーション、および非シミュレーション)、およびカウンター詐欺を統合します。

0
atdre

ソフトウェアテストチームは、組織によって規定された品質基準またはそれが準拠する基準を満たしているかどうかにかかわらず、ソフトウェア品質テストを行います。また、ソフトウェアが利害関係者からのビジネス要件を満たしているかどうかも評価します。侵入テストチームは、すべての検証が適用されているかどうか、攻撃者がソフトウェアの論理的な流れを回避できるかどうか、アプリケーションの技術的な欠陥を評価します。

0
mohammad obaid

ソフトウェアテストは、機能的要件と非機能的要件の検証と検証に重点を置いています。侵入テストでは、人がソフトウェアアプリケーションの脆弱性を悪用できるかどうかを確認します。

0
shavantha