問題タブ [man-in-the-middle]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
security - 「中間者」は、中間者攻撃で送信される値データを変更できます
AからBに情報を送信した場合、「中間者」は送信された値データを変更できますか、それともスニッフィングしかできませんか?
security - チャレンジレスポンスプロトコルは、man-in-the-middle攻撃に対してどのように役立ちますか?
チャレンジレスポンス認証は、man-in-the-middle攻撃をどのように防止しますか?wikiの記事を読みましたが、それでも理解できません。
security - SSH がインターロック プロトコルを使用しないのはなぜですか?
SSH
設計者は、中間者攻撃に非常に気を配っていたようです。
彼らのアプローチは、サーバーに初めて接続したときにサーバーの公開鍵の指紋を保存することでした(たとえば、ユーザーがウイルスに感染している場合など、初めて汚染されたネットワークからユーザーが接続しないことを願っています)。コンピューター)。ユーザーは次にこのサーバーに接続するときに、フィンガープリントを使用してサーバーの公開鍵を検証します。
実際には、多くのユーザーが指紋の不一致に関する警告を単に無視し、サーバーの再インストールが原因であると想定していることがわかりました。MITM 攻撃は実行が非常に難しく、まれであるため、心配する必要はありません。さらに、多くの場合、ユーザーは多くの異なるコンピューターを ssh で使用したいと考えており、使用SSH
したいコンピューターにすべてのフィンガープリントをインポートすることを気にしません (ねえ、私のサイトがダウンしている理由がわかりますか? 私はパニックに陥っています!オフィスにいないので、最寄りのインターネット カフェに行って見てみます)。
公平を期すために、サーバーを として使用DNSSEC
および使用できます。しかし、実際に使用されているのを見たことはありません。とにかく、それはプロトコルの必須部分ではありません。DNS
CA
何年もの間、事前共有秘密がなければ MITM を回避できないと思っていましたが、最近 Bruce Schneir の優れた "Practical Cryptography" を読んでいて、彼はインターロック プロトコルについて言及しています。
- Alice は Bob に自分の公開鍵を送信します。
- Bob は Alice に自分の公開鍵を送信します。
- Alice は、Bob の公開鍵を使用してメッセージを暗号化します。彼女は、暗号化されたメッセージの半分をボブに送信します。
- ボブは、アリスの公開鍵を使用してメッセージを暗号化します。彼は暗号化されたメッセージの半分を Alice に送信します。
- Alice は、暗号化されたメッセージの残りの半分を Bob に送信します。
- ボブは、アリスのメッセージの 2 つの半分をまとめて、自分の秘密鍵で復号化します。ボブは、暗号化されたメッセージの残りの半分をアリスに送信します。
- Alice は、Bob のメッセージの 2 つの半分をまとめて、彼女の秘密鍵で復号化します。
ここで、マロリーはプロトコルのステップ (3) でアリスのメッセージの半分を受信した後、ボブに何かを送信する必要があります。彼はボブへのメッセージを捏造しなければなりません。ボブは自分が捏造していることに気付くでしょうls
。
SSH
なぜそのようなスキームを使用しなかったのですか?それは本当にその目標に合っているようです。他のエンティティを必要とせず、MITM 攻撃を大幅に困難にします。
それは固有のものですか?問題の理解に欠陥がありますか? それとも設計者が、追加のセキュリティはプロトコルを複雑にする価値がないと考えただけですか?
PS:
オーバーヘッドが大きすぎると思われる場合は、プロトコルのユーザーに10K
、接続内の最初のデータにのみインターロックを使用するように強制することができます。したがって、実際にはそれほど問題にはなりませんが、MITM はより多くなります。とてつもなく難しい。
更新:ここで 説明されているインターロック プロトコルに対する攻撃は、MITM 攻撃が可能であることを意味するものではありません。通信中に単一のパスワードが送信された場合、MITM がそれを傍受でき、ユーザーにはタイムアウト エラーのみが表示されることを意味します。
更新 2:
ポイント Eugene、レイズは有効です。インターロック プロトコルは認証を許可しません。つまり、 に接続している場合example.com
、それが実際example.com
に であり、 にmalicious.com
なりすましていないことをまだ確認できませんexample.com
。たとえば、 がなければ、それを確実に知ることはできませんDNSSEC
。したがって、たとえば、SSH
ミサイル サイロにアクセスして書き込みを行った場合launch_missile -time now
(たとえば、サーバーが実際にミサイル サイロのサーバーであることを確認するために使用せずにls
)、実際には悪意のあるサーバーでそれを書いた可能性があります。敵は、あなたが敵に対してミサイルを発射しようとしていることを知っています。このタイプの攻撃は、実際にはインターロック プロトコルでは防げません。
しかし、プロトコルを正しく理解していれば、はるかに危険な攻撃、非常に実際的な攻撃を防げる可能性があります。インターロック プロトコルを使用すると、 について何も知らなくても、サーバーにアクセスexample.com
することは不可能でSSH
あり、誰かがSSH
セッション全体を盗聴する可能性があります。このタイプの攻撃の可能性ははるかに高いと思います。
たぶんSSH
、MITM 攻撃を気にしませんか? 私はそうは思いません。たとえば、Putty FAQを参照してください。
これらの煩わしいホスト キー プロンプトは、SSH の要点です。それらがなければ、セッションを保護するために SSH が使用するすべての暗号化技術は、攻撃者の仕事を少し難しくするだけです。攻撃者は、ユーザーとサーバーの間にパケット スニファーを配置するのではなく、実際にルーターを破壊し、やり取りするパケットの変更を開始する必要があります。しかし、それは単にスニッフィングするよりも難しいことではありません。ホストキーのチェックがなければ、クライアントまたはサーバーによって完全に検出されなくなります。
彼は明らかに MITM 攻撃について話しているのであって、サーバー認証についてではありません。インターロック プロトコルを使用すると、Putty FAQ に記載されている攻撃を明確に防ぐことができると思いますが、なぜ使用しなかったのかはまだわかりません。
c - エンディアンからのエラーのため、tcp.h で単純なプログラムをコンパイルできませんか?
tcp.h を使用してこの単純な C プログラムをコンパイルするのを手伝ってくれませんか? バイトオーダーが「# ifdef __FAVOR_BSD」で設定されていないため、「mitmc.c:82: error: struct tcphdr has no member named th_off」を取得する
これは、一部の人にとってはおそらく単純な問題です。私はこのプログラムをコンパイルしようとしています。これは、本の中間ユーティリティの単純な男です。Linux で gcc を使用してコンパイルします (Windows には posix ライブラリがなかったため)。
最初にこのエラーが発生しました:
これは、「/usr/include/netinet/tcp.h」で th_off が次の場合にのみ定義されているためです # ifdef __FAVOR_BSD
しかし、 #define _BSD_SOURCE を追加して定義すると (features.h http://www.linuxquestions.org/questions/programming-9/tcp-hdr-variables-388003/に設定されているため)、全体が得られますその他のエラーのセット:
助けてくれてありがとう。
さらに、ところで、コンパイラ エラーに引用符ではなく â が含まれることがあるのはなぜですか? ありがとう、bashでLANG = Cを使用すると引用符が修正されました。
ここで回答して、フォーマットを使用できるようにします。優秀な!libnet-config が、設定のためにコマンドラインで使用できるバイナリであることを知りませんでした。ですから、他の初心者にとっては、
それをエスケープするので、コマンドとして実行されます
助けてくれてありがとう、それが正しい答えです。現在、コードは openbsd 用に書かれているようです (wikipedia Strlcpy を参照)。strlcat を strncpy に置き換えて、最善を尽くすだけだと思います。SUCCESS、コンパイルしました!FFSさん、
ああ、それは私の使い方です。
ありがとうヴラド、ありがとうエレミヤ!
django - この中間者攻撃はどのように機能しますか?
CSRF保護に関するDjangoのドキュメントには、次のように記載されています。
さらに、HTTPS リクエストの場合、CsrfViewMiddleware によって厳密なリファラー チェックが行われます。これは、HTTP 'Set-Cookie' ヘッダーが (残念ながら) 通信しているクライアントによって受け入れられるため、セッションに依存しないナンスを使用するときに HTTPS で発生する可能性のある中間者攻撃に対処するために必要です。 HTTPS の下のサイト。(Referer ヘッダーの存在は HTTP では十分に信頼できないため、HTTP 要求に対しては Referer チェックは行われません。)
この攻撃がどのように機能するかを視覚化するのに苦労しています。誰か説明してくれませんか?
更新:
Django doc の文言は、特定のタイプの中間者攻撃 (私が想定する成功した CSRF につながる) が存在することを暗示しているようです。 nonce など) であり、'Set-Cookie' ヘッダーの使用が含まれます。
そのため、その特定のタイプの攻撃がどのように機能するかを知りたかったのです。
c# - ASP.NET と中間者
ASP.NET は、クライアントとサーバー間のデータ操作を禁止するメカニズムを使用していますか?
そうでない場合、SSL を使用する必要があるということですか? SSL はどのような種類の攻撃を防ぐことができますか?
はいの場合、このメカニズムは何ですか?
wcf - WCFセキュリティ-中間者攻撃からの保護
トランスポートとメッセージセキュリティを使用するWCFサービスがあります。たとえば、フィドラーを使用してフィドラーがHTTPSトラフィックを復号化できるようにするユーザーからの、悪意のある中間者攻撃からデータを保護するにはどうすればよいですか?
php - FlashとPHPの間でデータを傍受するためのツール
私はいくつかのPHPサービスとActionScript3の間の通信のためにいくつかのAPIを開発してきました。
FlashからPHPスクリプトに送信されているデータを傍受し、それを操作してから、操作されたデータで送信を続行する方法はいくつかあることを私は知っています。これはおそらく、ハイスコアテーブルをごまかす最も簡単な方法です。
明らかにこれは避けられませんが、私はほとんどの人が解読するのを難しくし、価値がないようにすることができます。
私が知りたいのは:
上記を実行するためにどのツールを使用できますか(PHPに送信するデータを傍受して表示します)?正直に言うと、これがどのように行われるのかさえわかりません。使用できるGUIまたはブラウザプラグインはありますか?
目標は、ActionScriptと私のPHPサービスの間で送信されるデータの「暗号化」を監視および強化することです。
ruby - HTTPS をサポートする中間者 (MITM) プロキシ
現時点では、少しぐるぐる回っているようです。以下のことを可能にするシンプルで軽量な、できれば Ruby ベースのプロキシを探しています。
- ブラウザーと Web アプリ間の HTTPS 要求をプロキシします。例: GMail
- リクエスト/レスポンスの傍受と変更 - 中間者の変更
- プロキシとブラウザ間で使用するために、オンザフライで SSL 証明書を生成します (または事前に構成されている可能性があります)。
Ruby を使用して、 em-proxyとGoliathを試しましたが、これらが適切に適合するとは思いません。
どんな提案でも大歓迎です。
よろしくお願いします、
カールスキー。
filter - mitmproxyのようなWindowsコマンドラインWebコンテンツフィルター
FacebookやTwitterなどのWebサイトをブロックしたいと思います。次のような簡単な小さなコマンドラインツール(Windows XP 7)を探しています。
filter.exe -list.txt
/// ------------ list.txt ------------
*.facebook。**
.twitter。*
提案?