そこで、セキュリティ部門を作成することにしました...

この記事は、彼が何をすべきか、どのように、どのような詳細な質問をするかという質問に答えます。 セキュリティテストなしでしばらく動作したWebパーツを含むプロジェクト(スタートアップ)があることは理解されていますが、何らかの理由でそれを実装することにしました。 過去2年間、私は非常に大規模なクライアントを持つスタートアップでセキュリティに取り組んできました(スタートアップはその分野で世界のリーダーの1つです)。ハウツーガイドではなく、横へのステップではありません)。 この記事は、関係当局、PM、およびセキュリティテストチームリードと呼ばれ、同様の部門をゼロから作成する人に捧げられています。




そこで、セキュリティ部門を作成することにしました...



おめでとう、あなたはそれについて考えただけでも(そして、新しい従業員を雇用するときにこの瞬間を何らかの形で考慮しているなら、それは本当にクール )、私はそれについて書いた )。 彼らはすべてを壊します。 今日、ビジネスは情報(ユーザー情報を含む)の漏洩から本当に揺さぶられることがあります。 過去1年間で、 LinkedIN、Stratfor、Gamigo、NVidia、Adobe、eHarmony、Blizzardなどの多くのユーザーがフルアクセスできるようになりました。 しかし、例えば、昨日、彼らはウビに侵入しました、 聞こえましたか? 驚くことではありませんが、パスワード変更ページに脆弱性があると書いています





まあ、ビジネスに取り掛かろう。 そして、人間の安全は会社に現れます。 彼は自分自身のスペシャリストであり、まずペンテストのスキルを所有し、この仕事をすることができます。 また、いくつかのチーム管理スキル、CIシステムの知識、およびredmineまたは類似のもの(プロジェクトの詳細に依存しますが、一般的にどこでも類似のアプローチ)。 彼は何をすべきですか?



最初の月-2番目



すべて自分で、ブラックボックスモードでテストを開始します。 プロジェクト(それらのドメイン)のリストを取得します。 おそらく、プロジェクトに関係するすべてのサーバーのIPアドレスのリスト(偵察の時間を短縮します)。 そして、テストを開始します。

最初のネットワークサービス 。 ポートをスキャンし、msf + armitageで武装し、すべてのエクスプロイト、dnsサーバーの構成( axfr 、dnsリプレイ攻撃)、およびwebサーバーを確認します 。 startupname:startupnameなどのペアを使用することを忘れずに、「弱い」アカウントをテストします。 一般に、ネットワークを完全に突破しようとしていますが、ウェブにアクセスしません(休憩中のみ)。 途中で、使用したすべてのソフトウェア(nginx / apache / pgsql)を書いてください。 この情報は後で使用します。 私にとっては、IPとnmapの結果を含むテキストファイルです。



画像

平日



私たちが終了するとすぐに、報告され、管理者がすべて修正され、ウェブに行きました。 そのため、高速ですが、多少の高品質のバイパスが必要です。 リソースを「正面から」テストしたり、何かを見つけたりすることができるさまざまなスキャナーを立ち上げています 。 私たちはげっぷスイートを用意し、機能を調べに行きます。 私たちはどこにでも普遍的なxssベクトルを送信します(古いことですが、どのようなものです):

非表示のテキスト
javascript:/*-->



"> [img = 1] <img-/ style =-= expression(/ * '/-/ *'、/ ** / eval(name)//);幅:100%;高さ:100%;位置:絶対;動作:url(#デフォルト#VML);-o-link:javascript:eval(title);-o-link-source:現在の名前= alert(1)onerror = eval(name)src = 1 autofocus onfocus = eval(名前)onclick = eval(名前)onmouseover = eval(名前)background = javascript:eval(名前)//> "



簡単に置換または列挙できるさまざまなパラメーターを調べます。一般的に、明らかなパラメーターの改ざんを探しています 。 ファイルのアップロードには特に注意を払っています。 スレーブ不明のファイルを試します(たとえば、mimeタイプがjpgまたはpng(idatチャンク)のphpスクリプトの場合)。 引用符は行のどこにでもあります。 一般に、ここでこれについて話すのは私ではありません。誰もが独自のテクニックを持っています。 ちなみに(プロジェクトの規模によって異なりますが)、ある種の「運」に費やす時間、たとえば10営業日はどれくらいかと思います。



すべてをまとめると、「ねじる」ために必要なものが見つかるかもしれません。 一般に、この時間を「正面からの」攻撃に費やし、攻撃者が会社とは何の関係もない場合に発見するすべてを修正します(事実、彼はそれについてほとんど何も知りません)。 ほとんどの場合、この期間中に最も重大なバグが検出され、修正されます。



月3-6



1〜2か月で、プロジェクトを調査し、そのロジックと作業を理解できます。 そして、私たちは開発に根を下ろし始めます...その栄光に満ちたホワイトボックス。

プロジェクトのワークフローに大きく依存します。 実装の主なアイデアは、次のリリースに備えて準備されている機能のセキュリティコードレビューやセキュリティテストを実装することです。 新規->進行中->完了->テスト中->テスト済み-> テスト中のセキュリティ->セキュリティテスト済み 。 要点は、1人の人がすべての機能のセキュリティテストに単純に対応できないこと(明らかです)であるため、今のところ(自分をだれにも連れて行っていない場合)重要なことだけをテストします(主観的に評価します)。

ここでは、各リリースの前に、本番サーバーとの完全な差分を作成し、すべての新しいコードが記述されるのを見ることができます。 とても助かりました。

そして、ここでは「クレイジー」モードではなく、より冷静かつ慎重に機能を開始し、機能を部分的に分割してテストします。 すべてのパラメーター、すべてのajaxリクエスト、特に誰も使用せず、約2年前に終了した開発者によって作成されたすべての種類の忘れられたもの(通常、開発の初期には、すべてが「緊急に、すぐにリリースする必要があるため、かなりのミスがあります!」) 。 この段階では、セキュリティチームのリーダーのリーダーシップは、最初の2か月間の作業と同じ「ブーム」を期待すべきではありません。



6か月目+または他の人を連れて行った



自由時間があると判断した時点で(プロジェクト全体がテストでカバーされ、ソースコードが既に受信され、その分析が実行され、saltを追加する必要があるデータベースでmd5がどこでも「カット」されているなど)、自動化を試み始めますさまざまなスキャナーに基づいて作成できる作業を実装し、セキュリティ自動テストを実装します(たとえば、nmap-データベースにすべてを保存し、次回起動時に状態ポートが変更された場合、レポートに報告します)。 Yandexからwebuiをw3afにねじ込みます (ちなみに、私は自分で使用しませんでした)。 一般に、コードの記述を開始し、これは正常です(たとえポジションがプログラマーでなくても)。



まだ人がいる場合(またはいない場合もあります)、人が創造的である場合は、プロジェクトの確認を検討しています。 そのため、3〜6か月の作業の一部(またはすべて)を委任し(何をどのように確認するのかを忘れずに)、一連の自動テストだけでなく、拡張します。



まあ、オフィス、従業員。 読んで 、申し込みます。 可能であれば、必要に応じてプラグイン/ブラウザを更新する必要性について大量メールを送信します。



ずっと



スタッフトレーニング(主に開発者、ミスの指摘、視野の拡大など)を行い、エクスプロイトを監視します(作業の最初の2か月ですべてのソフトウェアを記録しましたか?)、CI開発で実装されたスキャナーのレポートを絶えず、常に確認します(!)さまざまなセキュリティ関係者や企業(または異なるニュースアグリゲーター)から新しいニュースやツイッターを読んで、会議(少なくともロシア連邦を占領する場合はPHDays / ZN)に参加/発言し、CTFをプレイします。 おそらく「無料」期間ですが、ほとんどの場合、プロジェクトで緊急にテストする必要のある新しいテクニックがあります(または自分で発明されています)。 すべての側面からセキュリティをサポートし、「フルバイパス」の期間を設定します。 新しい頭で、あたかも初めてプロジェクト全体が再び処理されているとき(1〜2か月目を参照)。



一般的に



多くのポイントはプロジェクトに依存しますが、私の個人的な感情によれば、上で説明したように作品を整理すると、効率的になります(そして、 同様のレビューはありません)。 効率は、リソースとそのユーザーのセキュリティに違反するリスクを減らすことで表されます。 金銭的には、セキュリティは非常に難しいと表現されています(方法はありますが)。




また、小さな広告として、サンクトペテルブルクの興味深いスタートアップ/プロジェクト/会社(または距離)を知っている場合、(おそらく)そのような人、またはそのような「傾斜」を持つQA、または学習と開発の準備ができている研究者が必要です、それから私に知らせて(感謝する)、 仕事とさまざまなオプションを探しています。 または、就職活動のトピックについて何か言いたいことがあったら、書いてください:-)

サンクトペテルブルクでロシア人以外の市民を雇う準備ができている開発オフィスと価値のあるZPを持つスタートアップをほとんど知りません(海外で働くことができます、私は英語での絶え間ないコミュニケーションをあきらめたくありません)。


あなたの注意と読書をありがとう、私は記事を議論し、そのようなプロセスの組織についての私の意見を広げることがうれしいです。



All Articles