2

私はサイトを持っており、ユーザーがこのアカウントをリセットするには、確認コードがメールで送信されますが、話し合った後、これは大きなセキュリティホールになる可能性があります。使用できる小さなアプリを作成し、サイトがいかに安全でないかを上司に示したいと思います。

基本的に、コードの長さは12文字で、最後の4文字は固定されており、0〜9の16進文字とafのみを使用します。

つまり、私の理論では、ハッカーはユーザー名を知っているので、確認コードをブルートフォース攻撃してユーザーのパスワードを無価値にすることができます。

このようなプログラムの作成を開始するのに適した場所を知っている人はいますか?

コードを使ったプログラミングの質問であることは知っていますが、投稿するのは妥当だと思います。そうでない場合は、質問に答えられる.netプログラミングフォーラムに案内してください。

4

8 に答える 8

2

これは約281兆の組み合わせです。ブルートフォース攻撃は、サイトにとって問題にならない程度の時間がかかります。

あなたが言うように、最初の8文字(4バイト)だけが変化するとしても、これはまだ40億の組み合わせです。1秒あたり100回の試行を想定すると、ブルートフォースには約16か月かかります。サーバー管理者が1年以上でこのような攻撃を検出することを心から願っています。

Thomasが示唆したように、コードを1週間ほどでタイムアウトさせることで、追加のセキュリティが導入されます。

于 2010-08-12T10:17:50.150 に答える
2

まず、確認コードが本当にランダムである場合、16 12 = 281474976710656の可能なコードがあり、それぞれが同じように発生する可能性があります。総当たり攻撃にはかなりの時間がかかる可能性があります。

とにかく、そのようなことがどのようにブルートフォースされるかを上司に示したい場合は、可能なすべてのコードを生成して1つずつ試すループが必要です。これがCの例です:

int code[12];
for (int i=0; i<12; i++) code[i] = 0;
while (1) {
    for (int i=11; i>=0; i--) {
        code[i]++;
        if (code[i] < 16) break;
        else code[i] = 0;
    }
    for (int i=0; i<12; i++) printf("%x", code[i]);
    printf("\n");
}
于 2010-08-12T10:18:09.727 に答える
2

私はこれが受け入れられた答えではない可能性が高いことを知っていますが、それはかなり安全であるように思われ、キャラクターごとに16の可能な位置があります。

16^12 = 2.81474977 × 1014
于 2010-08-12T10:18:48.760 に答える
2

指定されたコード長で281474976710655の可能な組み合わせがあります。1つのコードを試行するのに1秒かかるとしても、ブルートフォース攻撃には何年もかかります...

それでも試してみたい場合は、次のように書く必要があります。

for (Int64 i = 0; i < 281474976710655; i++) {
    string code = i.ToString ("X12");

    //write code here to attempt this code
}
于 2010-08-12T10:20:44.400 に答える
2

[0-9a-f]の範囲に12文字ある場合、281474976710656の可能な確認コードがあります。ハッカーが1秒あたり1000回の試行を実行できると仮定すると(これはかなりありそうにありません)、すべての可能性を試行するのに281474976710秒かかります。これは約8925年です...ハッカーが8925年以内に自分のアカウントをハッキングしても、ユーザーは気にしないと思います;)

念のため、有効期限を確認コードに関連付けることができます。24時間、3日間、または任意の期間のみ有効にします

于 2010-08-12T10:21:55.913 に答える
2

2 ^32≈40億の確認コードがあるため、ブルートフォースには平均20億回の試行が必要です。オンラインでしか試すことができない場合、攻撃者が試すことができる確認コードの数が20億を大幅に下回る場合は、それで十分です。

これには、特定の確認コードを試行できる回数と、すべてのアカウントにわたるアカウントのリセットの総数の両方に上限が必要であることに注意してください。後者は、状況によっては問題になる可能性があります。たとえば、ニュース記事でユーザーデータベースが侵害されたと(真または偽で)発表され、全員が急いでパスワードを変更した場合などです。

特定のアカウントを標的とする攻撃者にとって、注意すべきことは、これにより、指定されたアドレスでメールを受信できるすべての人が、サイトのアカウントを制御できるようになるということです。したがって、電子メールアカウントになりすます人だけでなく、電子メールアカウントをスヌープできる人なら誰でも、サイトのアカウントになりすますことができます。これは必ずしも問題ではありませんが、セキュリティモデルに明確に表示されるはずです。

于 2010-08-12T11:34:09.873 に答える
1

私はそれが古い質問であることを知っています-しかし私はちょうどこれを見つけました。

別の見方をすれば、ハッカーのブルートがコードを強制したとしても、新しいランダムなパスワードを使用して新しい電子メールが元のユーザーに送信されるという「結果」を作成することです。したがって、ハッカーが達成したのは、パスワードをリセットすることだけです。実際には彼らを助けていないユーザー!

したがって、組み合わせコードの問題、ブルートフォース攻撃の試みは冗長です。

于 2012-04-20T07:01:47.640 に答える